diff --git a/docs/deploy-process.md b/docs/deploy-process.md
index b470c12a867..bf11ef24675 100644
--- a/docs/deploy-process.md
+++ b/docs/deploy-process.md
@@ -94,3 +94,9 @@ staging O - - - - - - - O
dev O - - O - - - - O
```
+
+## More about the Release Candidate QA process
+
+The main idea behind the community QA process is to focus on the [current release changelog](https://github.com/ethereum/ethereum-org-website/releases) and check that new features or fixes applied are working as expected. During QA sessions, some notes could also be shared if we're looking for specific things to be tested.
+
+If you find any bug, please report it on the [#website-bugs](https://discord.com/channels/714888181740339261/727898649006309377) Discord channel.
diff --git a/i18n.config.json b/i18n.config.json
index 06b6c673ced..f6b9d006b66 100644
--- a/i18n.config.json
+++ b/i18n.config.json
@@ -297,7 +297,7 @@
},
{
"code": "ne-np",
- "crowdinCode": "ne-np",
+ "crowdinCode": "ne-NP",
"name": "Nepali",
"localName": "नेपाली",
"langDir": "ltr",
@@ -457,7 +457,7 @@
},
{
"code": "ur",
- "crowdinCode": "ur",
+ "crowdinCode": "ur-IN",
"name": "Urdu",
"localName": "اردو",
"langDir": "rtl",
diff --git a/netlify.toml b/netlify.toml
index 3e26ef59558..22bd377bb8e 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -22,4 +22,5 @@
"./src/intl/**/*",
"!./public/**/*",
"!./node_modules/@swc/core-linux-x64-musl/**/*",
+ "!./node_modules/@swc/core-linux-x64-gnu/**/*",
]
\ No newline at end of file
diff --git a/next-i18next.config.js b/next-i18next.config.js
index bacf8af4049..c9ea46a265b 100644
--- a/next-i18next.config.js
+++ b/next-i18next.config.js
@@ -9,9 +9,12 @@ const locales = BUILD_LOCALES
/** @type {import('next-i18next').UserConfig} */
module.exports = {
i18n: {
- defaultLocale: "en",
+ // "default" locale is a hack to always display the locale prefix in the
+ // url. Ref: https://nextjs.org/docs/pages/building-your-application/routing/internationalization#prefixing-the-default-locale
+ defaultLocale: "default",
// supported locales defined in `i18n.config.json`
- locales,
+ locales: ["default", ...locales],
+ localeDetection: false,
},
// define custom location for intl files, otherwise default to public/locales (https://github.com/i18next/next-i18next#2-translation-content)
localePath: "./src/intl",
diff --git a/next.config.js b/next.config.js
index db22e54df8e..2223e7718aa 100644
--- a/next.config.js
+++ b/next.config.js
@@ -34,6 +34,7 @@ module.exports = (phase, { defaultConfig }) => {
return config
},
i18n,
+ trailingSlash: true,
images: {
deviceSizes: [640, 750, 828, 1080, 1200, 1504, 1920],
},
diff --git a/package.json b/package.json
index 6561db6fbfb..629842197e4 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"@docsearch/react": "^3.5.2",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
+ "@radix-ui/react-navigation-menu": "^1.1.4",
"@socialgouv/matomo-next": "^1.8.0",
"clipboard": "^2.0.11",
"embla-carousel-react": "^7.0.0",
diff --git a/public/.well-known/security.txt b/public/.well-known/security.txt
index 5be3832278f..f5633e95685 100644
--- a/public/.well-known/security.txt
+++ b/public/.well-known/security.txt
@@ -2,27 +2,26 @@
Hash: SHA256
Contact: mailto:security@ethereum.org
-Expires: 2023-12-31T23:59:00.000Z
+Expires: 2026-12-31T23:59:00.000Z
Encryption: https://ethereum.org/security_at_ethereum.org.asc
Acknowledgments: https://bounty.ethereum.org
Preferred-Languages: en
Canonical: https://ethereum.org/.well-known/security.txt
Policy: https://bounty.ethereum.org
Hiring: https://ethereum.org/en/community/get-involved/#ethereum-jobs
-
-----BEGIN PGP SIGNATURE-----
-iQIzBAEBCAAdFiEErpbtlp5HmwCE8+F/6I0zNPpfagoFAmMV3bMACgkQ6I0zNPpf
-agrOjhAAgMDS9RJUbJzcAybRfp/STq4Kf50TFd3iqx/t8ECw5UGazefieHesOhZ5
-9B9l6VAIHEGqbm+ukkhT+eBofhkAGEupiH/rUTy3hpFo1Ggp9QGi464Y8RyB0hID
-BwjAsAVEdHyh8T6YrqxKRGvgELuEMZfuPfVhdIGU8CfEQozzuA9q3mChckXdTlSt
-TvOKTMdnNPMlEhp4dT93iQaXDBAncE48TkUi/c8U4qolkskuDhZ4qJkc7xcv5Uk4
-TfF83Xs87AF9ZmABWawlCx7VHhp0HGljtGUpobf2DXV0TG77/dZzMQ4xdyqvDq+v
-tm3djp3UHZVhOkDxMKpBzLnCkCvyvh/tvN4j/trdHHzXx6gEEkuiR5wPPoomCosi
-95AGNFf0vpe2HucL/bOrBySxME+hifAnmkiaXltLbyUUTBQPfkHMHMoq1dmPokm2
-4RZaZ1A/K7rirZLC4w/RmxONVqvxT0baFTcZGyKzYm6gEZ9kCwWw1tyEl472yK0H
-UR2cAhlo+Wa61cOTtwHVw0FMVyG0xZkR04y8WM3T8lE6imGLSmCDgPMZm8XnKdkY
-SMGD3+TzLxe6mymmw+1dGXCPjjkImdrhBGxlwEU74vkFQKiWv/GftiDYYcilcQbS
-OD1N7PTmpef+JEYXOpwxxUTSXu0SfVTSkx0wnHkqbib7Wwv5IwY=
-=g+49
+iQIzBAEBCAAdFiEErpbtlp5HmwCE8+F/6I0zNPpfagoFAmXYslMACgkQ6I0zNPpf
+agrlTA//Q1P+fzNaYtUUm7pg7Jz4VaEACaQZ5qNNmKl9VZ6yCS45pmqpPAAyDM2p
+ZyFOUF3Q3UmHdwmVEGrHSREhoqx5I78KH4dmx4G38RG+4SMhSCZG0Ztf9Z3Dg0o2
+ZeO7vS7mp/STyxiG1Nnkg5Ivhuhq8sdQXF7hM+9JUVri7upEH0QtdAS/jZaoLCvx
+GsWe8XnBru8aH9O2kCO4iigCphOpzaSORJH7rcuo/mo6jGvJER4J0RkjK2KMX7W/
+TFQmpR+8Sxaw+einVEQBDppcbBhOO7yAHq3TQOa01pxIQJ2togJ0Sl3pUiYeqPgf
+aITyRfzhyh+zEb7V49QOIohvazZA7gnBmgUW8xF9cfTrChsxKV8TxovGc/cHroy9
+JI8XkJaZbX1GlbIUqTKgc/MF01gXXVTyjbnQ6HtCNG4BAq3hsWDnoziodGFojn/+
+PiY9cLok8Jxy6nzV0ANLunfbNF2usjPEDFxRviCSS3NoBXhq0+Ra/MXljKB46lb5
+qkfBdsAF9IJ8Bx7knrLbpVMe8tciXcXqorCfEBZONNk9RL5OkuDQgPQXi/2sRXXN
+xxIpxkDf63104NIypjEjp5c8WkD+VF84BhNuhYsp50T2hfgtL39vOGaQ2593Rss1
+j8MNLO2xlwoHiJoTe3CFw/Yl7MtjJSxiaQ0v42JRxyjclLDX1Rc=
+=CMMm
-----END PGP SIGNATURE-----
\ No newline at end of file
diff --git a/public/_redirects b/public/_redirects
index 5ee30bff053..9d12486501d 100644
--- a/public/_redirects
+++ b/public/_redirects
@@ -1,5 +1,3 @@
-/en/ / 301!
-
/discord https://discord.gg/ethereum-org 301!
/*/discord https://discord.gg/ethereum-org 301!
@@ -74,9 +72,9 @@
/en/dart/ /en/developers/docs/programming-languages/dart/ 301!
-/developers/docs/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
+/developers/docs/consensus-mechanisms/pow/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
-/en/developers/docs/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
+/en/developers/docs/consensus-mechanisms/pow/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
/*/beginners /:splat/what-is-ethereum/ 301!
@@ -150,7 +148,7 @@
/*/eth2 /:splat/upgrades/ 301!
-/*/developers/docs/layer-2-scaling /:splat/developers/docs/scaling 301!
+/*/developers/docs/scaling /:splat/developers/docs/scaling 301!
/*/developers/docs/scaling/layer-2-rollups /:splat/developers/docs/scaling 301!
@@ -175,9 +173,3 @@
/*/staking/withdraws /:splat/staking/withdrawals/ 301!
/*/guides/how-to-register-an-ethereum-account /:splat/guides/how-to-create-an-ethereum-account/ 301!
-
-/studio /en/deprecated-software/#ethereum-studio 301!
-
-/*/studio /:splat/deprecated-software/#ethereum-studio 301!
-
-/en/stablecoins /stablecoins 301!
\ No newline at end of file
diff --git a/public/assets/manifest-homepage-screenshot-mobile.png b/public/assets/manifest-homepage-screenshot-mobile.png
deleted file mode 100644
index 319e45b3955..00000000000
Binary files a/public/assets/manifest-homepage-screenshot-mobile.png and /dev/null differ
diff --git a/public/assets/manifest-homepage-screenshot.png b/public/assets/manifest-homepage-screenshot.png
deleted file mode 100644
index a09426f4b1a..00000000000
Binary files a/public/assets/manifest-homepage-screenshot.png and /dev/null differ
diff --git a/public/content/community/code-of-conduct/index.md b/public/content/community/code-of-conduct/index.md
index 8f14a5f8c52..0d57d4a237c 100644
--- a/public/content/community/code-of-conduct/index.md
+++ b/public/content/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: The basic standards that we strive for across ethereum.org spaces.
lang: en
---
+# Code of conduct {#code-of-conduct}
+
## Mission {#mission}
To develop and maintain the most comprehensive and accessible knowledge hub for Ethereum.
diff --git a/public/content/community/events/index.md b/public/content/community/events/index.md
index 6f898d0d1f9..3a089efe45d 100644
--- a/public/content/community/events/index.md
+++ b/public/content/community/events/index.md
@@ -5,7 +5,7 @@ lang: en
hideEditButton: true
---
-## Upcoming events {#events}
+# Upcoming events {#events}
**Every month, there are major Ethereum events around the world.** Consider attending one near you to meet more people in the community, learn about employment opportunities, and develop new skills.
diff --git a/public/content/community/get-involved/index.md b/public/content/community/get-involved/index.md
index 2a581192859..ec658bedfa4 100644
--- a/public/content/community/get-involved/index.md
+++ b/public/content/community/get-involved/index.md
@@ -105,11 +105,9 @@ The Ethereum ecosystem is on a mission to fund public goods and impactful projec
- [Ethereum Foundation job board (BambooHR)](https://ethereum.bamboohr.com/jobs/)
- [JobStash](https://jobstash.xyz)
- [Cryptocurrency Jobs](https://cryptocurrencyjobs.co/ethereum/)
-- [Crypto.jobs](https://crypto.jobs/)
- [Careers at ConsenSys](https://consensys.net/careers/)
- [Crypto Jobs List](https://cryptojobslist.com/ethereum-jobs)
- [Bankless jobs board](https://pallet.xyz/list/bankless/jobs)
-- [useWeb3 Jobs](https://www.useweb3.xyz/jobs)
- [Web3 Jobs](https://web3.career)
- [Web3 Army](https://web3army.xyz/)
- [Crypto Valley Jobs](https://cryptovalley.jobs/)
diff --git a/public/content/community/grants/index.md b/public/content/community/grants/index.md
index 88a227b64ec..0b69aac8c3a 100644
--- a/public/content/community/grants/index.md
+++ b/public/content/community/grants/index.md
@@ -27,14 +27,14 @@ These programs support the broad Ethereum ecosystem by offering grants to a wide
These projects have created their own grants for projects aimed at developing and experimenting with their own technology.
- [Aave Grants Program](https://aavegrants.org/) – _[Aave](https://aave.com/) grants DAO_
-- [Balancer](https://quark-ceres-740.notion.site/Balancer-Grants-938f1b979810427f8d903a904315da41) – _[Balancer](https://balancer.fi/) ecosystem fund_
+- [Balancer](https://grants.balancer.community/) – _[Balancer](https://balancer.fi/) ecosystem fund_
- [Chainlink Grants Program](https://chain.link/community/grants) - _[Chainlink](https://chain.link/) community grants_
- [Decentraland Grants Program](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) DAO Metaverse_
- [Lido Ecosystem Grants Organisation (LEGO)](https://lido.fi/lego) – _[Lido](https://lido.fi/) finance ecosystem_
- [MetaMask Program](https://metamaskgrants.org/) - _[MetaMask](https://metamask.io/) employee-led grants DAO_
- [SKALE Network Grants Program](https://skale.space/developers#grants) - _[SKALE Network](https://skale.space/) ecosystem_
-- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _[The Graph](https://thegraph.com/) ecosystem_
-- [Uniswap Grants Program](https://www.uniswapfoundation.org/apply-for-a-grant) - _[Uniswap](https://uniswap.org/) community_
+- [The Graph](https://thegraph.com/ecosystem/grants/) – _[The Graph](https://thegraph.com/) ecosystem_
+- [Uniswap Grants Program](https://www.uniswapfoundation.org/grants) – _[Uniswap](https://uniswap.org/) community_
- [Web3 Grants](https://web3grants.net) - _An extensive list of web3/crypto related grant programs_
## Quadratic funding {#quadratic-funding}
diff --git a/public/content/contributing/adding-desci-projects/index.md b/public/content/contributing/adding-desci-projects/index.md
index 51d2b0a9b67..b7702921f78 100644
--- a/public/content/contributing/adding-desci-projects/index.md
+++ b/public/content/contributing/adding-desci-projects/index.md
@@ -8,7 +8,7 @@ lang: en
We want to make sure we show a variety of projects and give a good snapshot of the DeSci landscape.
-Anyone is free to suggest a project to list on the DeSci page on ethereum.org. Equally, anyone who notices a project that is no longer relevant or no longer meets our eligibility criteria, they are free to suggest we remove it.
+Anyone is free to suggest a project to list on the DeSci page on ethereum.org. Equally, anyone who notices a project that is no longer relevant or no longer meets our eligibility criteria is free to suggest its removal.
## The decision framework {#the-decision-framework}
@@ -16,26 +16,26 @@ Anyone is free to suggest a project to list on the DeSci page on ethereum.org. E
- **Open source code/data** - Openness of code and data is a core DeSci principle, so DeSci projects must not be closed source. The codebase should be accessible and ideally open to PRs.
- **DeSci projects should be demonstrably decentralized** - This could include being governed by a DAO, or by building with a decentralized tech stack including non-custodial wallets. It probably involves auditable smart contracts on Ethereum.
-- **Honest and accurate listing information** - it is expected that any suggested listings from projects come with honest and accurate information. Products that falsify listing information, such as declaring your product is “open source” when it is not, will be removed.
+- **Honest and accurate listing information** - It is expected that any suggested listings from projects come with honest and accurate information. Products that falsify listing information, such as declaring your product is “open source” when it is not, will be removed.
- **Demonstrable commitment to widening access to science** - A DeSci project should be able to articulate how they widen participation in science to the general public, not just to token/NFT holders.
-- **Globally accessible** - your project doesn’t have geographic limitations or KYC requirements that exclude certain people from accessing your service.
-- **Informative website and documentation** - it is important that visitors to the project website can understand what the project actually does, how it contributes to decentralization of science infrastructure and how to participate.
+- **Globally accessible** - Your project doesn’t have geographic limitations or KYC requirements that exclude certain people from accessing your service.
+- **Informative website and documentation** - It is important that visitors to the project website can understand what the project actually does, how it contributes to decentralization of science infrastructure and how to participate.
- **Project should be part of the Ethereum ecosystem** - At ethereum.org we believe Ethereum (and its Layer 2's) to be the appropriate base layer for the DeSci movement.
- **The project is fairly well established** - The project has real users that have been able to access the project's services for several months.
### Nice-to-haves
-- **Available in multiple languages** - your project is translated into multiple languages allowing users around the world to access it.
-- **Educational resources** - your product should have a well-designed onboarding experience to help and educate users. Or evidence of how-to content like articles or videos.
-- **Third party audits** - your product has been professionally audited for vulnerabilities by a trusted third party.
+- **Available in multiple languages** - Your project is translated into multiple languages allowing users around the world to access it.
+- **Educational resources** - Your product should have a well-designed onboarding experience to help and educate users. Or evidence of how-to content like articles or videos.
+- **Third-party audits** - Your product has been professionally audited for vulnerabilities by a trusted third party.
- **Point of contact** - A point of contact for the project (this might be by a representative from a DAO or community) will greatly help us get accurate information when changes are made. This will keep updating ethereum.org manageable when gathering future information.
## Maintenance {#maintenance}
As is the fluid nature of Ethereum, teams and products come and go and innovation happens daily, so we'll undertake routine checks of our content to:
-- ensure that all projects listed still fulfil our criteria
-- verify there aren't products that have been suggested that meet more of our criteria than the ones currently listed
+- Ensure that all projects listed still fulfil our criteria
+- Verify there aren't products that have been suggested that meet more of our criteria than the ones currently listed
Ethereum.org is maintained by the open source community & we rely on the community to help keep this up to date. If you notice any information about listed projects that needs to be updated, please open an issue or a pull request on our GitHub repository.
diff --git a/public/content/contributing/design/adding-design-resources/index.md b/public/content/contributing/design/adding-design-resources/index.md
index 4666100ad8e..c04ff949870 100644
--- a/public/content/contributing/design/adding-design-resources/index.md
+++ b/public/content/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Guidelines and requirements to ensure quality of design materials o
lang: en
---
+# Adding design resources {#adding-design-resources}
+
Anybody can suggest new design materials to the [Design and UX in web3 page](/developers/docs/design-and-ux/).
Be aware that the focus of this page is on providing user value to aspiring web3 designers. The design section is not there to advertise your services, products, or platforms.
diff --git a/public/content/contributing/design/index.md b/public/content/contributing/design/index.md
index d1798c4d56c..9cb9b17a4d7 100644
--- a/public/content/contributing/design/index.md
+++ b/public/content/contributing/design/index.md
@@ -12,7 +12,7 @@ Ultimately, this is a great way to build a diverse and impressive portfolio that
## How to contribute?
-### Provide feedback on early design prototypes {#design-critique}
+### Provide feedback on early design prototypes {#design-critique}
We sometimes need a help testing our raw ideas. This is a great way how to contribute without any technical knowledge.
@@ -20,7 +20,7 @@ We sometimes need a help testing our raw ideas. This is a great way how to contr
2. You will be guided through the designs to provide feedback via comments function.
3. The outcome will be shared in the GitHub issue and then closed by the team.
-### Participate in survey research {#answer-surveys}
+### Participate in survey research {#answer-surveys}
Provide feedback on our website by:
@@ -28,7 +28,7 @@ Provide feedback on our website by:
2. Clicking on the feedback widget at the bottom right corner and answering design and content-related questions.
3. Focus on the free format questions.
-### Find design related issues on the website and report them {#report-design-issues}
+### Find design related issues on the website and report them {#report-design-issues}
Ethereum.org is a fast growing website with many features and content. Some of the UI can easily become obsolete or could be improved. If you encounter any such instance, please report it so that it gets our attention.
@@ -36,7 +36,7 @@ Ethereum.org is a fast growing website with many features and content. Some of t
2. Take screenshots and notes if you see any visual or UX issues.
3. Report the found issues using a [bug report](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Propose design changes {#propose-design-changes}
+### Propose design changes {#propose-design-changes}
If you feel comfortable taking on design challenges, you can visit our GitHub issues board and filter for [design-related issues](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
@@ -45,7 +45,7 @@ If you feel comfortable taking on design challenges, you can visit our GitHub is
3. Propose the solution in the corresponding GitHub issue or [create a new one.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
4. Wait for the design team to review.
-### Build Design System together {#Contribute-to-design-system}
+### Build Design System together {#Contribute-to-design-system}
Our design system makes designing ethereum.org fun and easy. If you are an experienced designer, you can help us prepare many components for the website.
@@ -56,7 +56,7 @@ Our design system makes designing ethereum.org fun and easy. If you are an exper
5. The design team will review.
6. The Design team will incorporate the changes in the main file and publish the file to the community.
-### Write design-related content on the website {#write-design-articles}
+### Write design-related content on the website {#write-design-articles}
The Ethereum developer community is strong, but the design community is falling slightly behind. If you are a designer with web3 knowledge, please consider sharing your learnings with the larger community so that we can all grow and improve together; we have [a page on designing for Ethereum](/developers/docs/design-and-ux/) you can contribute to. You can also check our [listing policies](/contributing/design/adding-design-resources).
@@ -66,7 +66,7 @@ The Ethereum developer community is strong, but the design community is falling
4. Once approved, write the content.
5. Submit it in the corresponding GH issue.
-### Draw new illustrations {#prepare-illustrations}
+### Draw new illustrations {#prepare-illustrations}
Visualisations are one of the most powerful tools to explain abstract topics. There is an enormous potential by adding diagrams and infographics. After all, one image can say thousand words.
diff --git a/public/content/contributing/style-guide/content-standardization/index.md b/public/content/contributing/style-guide/content-standardization/index.md
index aaa30266316..1d52685f12a 100644
--- a/public/content/contributing/style-guide/content-standardization/index.md
+++ b/public/content/contributing/style-guide/content-standardization/index.md
@@ -4,6 +4,8 @@ description: Guide to use consistent terminology in content writing
lang: en
---
+# Content standardization {#content-standardization}
+
This style guide aims to standardize certain aspects of writing content to make the contribution process smoother.
## Use American English {#american-english}
@@ -155,6 +157,21 @@ Sentences using active voice are more concise and efficient, making your writing
_This isn't an easy one, especially for non-native English speakers. If you aren't sure, don't worry. We'll help with any of these._
+### Date Format {#date-format}
+
+When including dates in markdown content across Ethereum documentation, it is essential to maintain a consistent and clear presentation. In order to achieve this, we recommend the following guidelines:
+
+**Format:**
+
+Use the "D-Mon-YYYY" format for dates. This format eliminates ambiguity between the month and day, providing a standardized and easily understandable representation.
+
+**Examples:**
+
+- Preferred: 2-Nov-2023, 11-Feb-2023
+- Avoid: Nov-2-2023, 2/11/2023, 11/2/2023
+
+By adhering to these guidelines, we create a unified approach to presenting dates, fostering clarity and comprehension throughout Ethereum documentation.
+
### Linking to internal pages {#internal-links}
When linking to another page on Ethereum.org, use the relative path over the absolute path. Do not hard-code the language path (i.e. `/en/`) in any links. This maintains consistent functionality across different language versions of the site.
diff --git a/public/content/contributing/translation-program/index.md b/public/content/contributing/translation-program/index.md
index 478458ac5a3..94759801cbd 100644
--- a/public/content/contributing/translation-program/index.md
+++ b/public/content/contributing/translation-program/index.md
@@ -38,7 +38,7 @@ Read more about the ethereum.org Translation Program [mission and vision](/contr
- [**5,600 +** translators](/contributing/translation-program/contributors/)
- [**62** languages live on site](/languages/)
-- [**3 million** words translated in 2022](/contributing/translation-program/acknowledgements/)
+- [**3 million** words translated in 2023](/contributing/translation-program/acknowledgements/)
diff --git a/public/content/contributing/translation-program/translatathon/index.md b/public/content/contributing/translation-program/translatathon/index.md
index ea7a49adca1..94b42ca629f 100644
--- a/public/content/contributing/translation-program/translatathon/index.md
+++ b/public/content/contributing/translation-program/translatathon/index.md
@@ -4,6 +4,8 @@ description: Join the first ethereum.org Translatathon to contribute to ethereum
lang: en
---
+# Ethereum.org Translatathon {#introduction}
+
Welcome to the first ever ethereum.org Translatathon!
A translatathon is a collaborative and competitive hackathon-style event where individuals and teams compete for prizes by translating ethereum.org content into different languages.
diff --git a/public/content/deprecated-software/index.md b/public/content/deprecated-software/index.md
deleted file mode 100644
index e9386b322bb..00000000000
--- a/public/content/deprecated-software/index.md
+++ /dev/null
@@ -1,428 +0,0 @@
----
-title: Deprecated software
-description: Software which has been deprecated by its maintainers
-lang: en
-sidebarDepth: 2
----
-
-# Deprecated software {#summary-deprecated-software}
-
-This is a list of key Ethereum-related projects and resources which have been deprecated or are no longer maintained. It is important to highlight deprecated work so that users can find viable alternatives and to prevent malicious versions from being distributed.
-
-This list is curated by our community. If there's something missing or incorrect, please edit this page!
-
-## Proof-of-work {#pow}
-
-[Proof of work](/developers/docs/consensus-mechanisms/pow) is a consensus engine that was implemented in Ethereum until September 2022. It was deprecated when Ethereum swapped to a [proof-of-stake](/developers/docs/consensus-mechanisms/pos) based consensus mechanism. This was achieved by deprecating the parts of the client software related to proof-of-work mining, including [Ethhash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethhash) (the mining algorithm) and all the consensus logic and block gossiping functionality that was originally built in to execution clients. The clients themselves were not deprecated but several of their core components were. The concept of proof-of-work was deprecated as the total effect of removing the related components of the client software.
-
-## Software {#software}
-
-This section is for software for the desktop, command line, or server which has been deprecated. The main types are wallets, integrated development environments, languages, and Ethereum clients. Definitely be careful to not install deprecated software unless you are certain it is from the original source, e.g. a repo hosted under https://github.com/ethereum.
-
-### OpenEthereum {#open-ethereum}
-
-Deprecated July 2021
-
-**Summary**
-
-OpenEthereum was the second largest Ethereum implementation by node count. OpenEthereum played an important role in being a key piece of infrastructure for some of the largest users in Ethereum like Etherscan and Gnosis Safe. Its tracing capabilities set it apart from other clients, ensuring reliable and fast synchronization for data providers.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/openethereum/openethereum)
-
-**History**
-
-OpenEthereum was built for miners, service providers, and exchanges which need fast synchronization and maximum uptime. OpenEthereum provided the core infrastructure essential for speedy and reliable services.
-
-**Alternatives**
-
-[Compare all Ethereum execution client options](/developers/docs/nodes-and-clients/#execution-clients).
-
-### Grid {#grid}
-
-Deprecated on December 10, 2020
-
-**Summary**
-
-Grid was a JavaScript-based desktop application that allowed you to securely access Ethereum, IPFS, and other decentralized networks. It provided a user-friendly interface to assist a less technical audience in safely interacting with dapps, which increased accessibility for everyone.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/grid)
-
-**History**
-
-Grid could be seen as a successor to Mist, also a standalone, JavaScript-based desktop app which included a Geth node. Grid removed the wallet aspect, and added a plugin-style approach for running different kinds of nodes.
-
-**Alternatives**
-
-[DAppNode](https://dappnode.io/) is a platform for deploying and hosting dapps, P2P clients, and blockchain nodes.
-
-### Ethereum Studio {#ethereum-studio}
-
-Deprecated on December 7, 2020
-
-**Summary**
-
-Ethereum Studio was a web-based IDE which allowed users to create and test smart contracts, as well as build front-ends for them.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/SuperblocksHQ/ethereum-studio)
-
-**History**
-
-Ethereum Studio was developed to provide users with an IDE that had a built-in Ethereum blockchain and Solidity compiler. In addition to this it provided the ability to live edit code and export full dapps without the need for a terminal.
-
-**Alternatives**
-
-[Remix](https://remix.ethereum.org/) is an alternative web IDE for Solidity development. Additionally, the [Developer Portal](/developers/) has tools for web and local development, documentation, and more.
-
-### Meteor Dapp Wallet {#meteor-dapp-wallet}
-
-Deprecated on March 27, 2019
-
-**Summary**
-
-Meteor Dapp Wallet was a component of Mist, an Ethereum wallet for managing Ethereum accounts and interacting with smart contracts. For many years the Meteor Dapp Wallet web UI was hosted as a subdomain "wallet.ethereum.org".
-
-The Mist Multisig Contract (solidity code) was also included, and Meteor Dapp Wallet featured a user interface for configuring and deploying it.
-
-**Not deprecated: deployed Mist Multisigs**
-
-The Mist Multisig -- deployed as bytecode to Ethereum Mainnet by thousands of users -- continues to be used to store and manage value without incident. [How to Interact with a Mist Multisig Contract](https://support.mycrypto.com/how-to/sending/how-to-interact-with-a-multisig-contract) provides a good overview for how to use these smart contracts.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/meteor-dapp-wallet)
-
-**History**
-
-See Mist below.
-
-**Alternatives**
-
-See the [Ethereum Wallets](/wallets/) page on ethereum.org.
-
-### Mist {#mist}
-
-Deprecated on March 27, 2019
-
-**Summary**
-
-Mist was a specialized browser built with Electron that enabled users to manage Ethereum accounts and interact with dapps hosted on the traditional web.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/mist)
-
-**History**
-
-Mist was an important early experiment because it explored how to manage Ethereum keys, introduced users to financial tools, like multisigs, and demonstrated how the Web3 would work. It also introduced users to innovations like blockies, cute and memorable 8-bit style graphics representing Ethereum keys.
-
-**Alternatives**
-
-[MetaMask](https://metamask.io/) is an in-browser wallet enabling you to manage Ethereum keys and interact with dapps. It is available as an extension for Google Chrome and Firefox, and is included in [Brave Browser](https://brave.com/).
-
-### Mix {#mix}
-
-Deprecated on August 11, 2016
-
-**Summary**
-
-Mix was an IDE built in C++ that allowed developers to build and deploy smart contracts to Ethereum.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/mix)
-
-**History**
-
-Mix was of the earliest Ethereum-related applications. See this [presentation by Gavin Wood at Devcon0](https://www.youtube.com/watch?v=hcP_z_wBlaM).
-
-**Alternatives**
-
-[Remix](https://remix.ethereum.org/) is a browser-hosted IDE for Solidity / smart contract development, testing, and deployment. It also has a desktop option.
-
-### Minimal {#minimal}
-
-Deprecated in 2020.
-
-**Summary**
-
-Minimal was a modular implementation of the Ethereum blockchain written in Go.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/umbracle/minimal)
-
-**History**
-
-Minimal was replaced by [polgon-sdk](https://github.com/0xPolygon/polygon-edge)
-
-### Hyperledger Burrow {#hyperledger-burrow}
-
-Deprecated in 2022.
-
-**Summary**
-
-Hyperledger Burrow was a permissioned Ethereum smart-contract blockchain node. It executed Ethereum EVM and WASM smart contract code on permissioned virtual machines.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/hyperledger/burrow)
-
-### Mana-Ethereum {#mana-ethereum}
-
-**Summary**
-
-Mana-Ethereum was an Ethereum client built using Elixir.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/mana-ethereum/mana)
-
-**History**
-
-Mana-Ethereum's GitHub repository has not been explicitly archived, but the last commit was in 2019.
-
-### Aleth (cpp-ethereum) {#aleth}
-
-Deprecated on October 6, 2021
-
-**Summary**
-
-Aleth (formerly known as cpp-ethereum) was an Ethereum client written in C++.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/aleth)
-
-**History**
-
-Aleth was the third most popular client for Ethereum before being deprecated on October 6, 2021.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/) is a well-known alternative Ethereum client.
-
-### Ethereum-H {#ethereum-h}
-
-**Archives**
-
-The Ethereum-H archives have been removed from GitHub.
-
-**History**
-
-Ethereum-H was an Ethereum client written in Haskell. It was deprecated around 2015.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) and [Erigon](https://github.com/ledgerwatch/erigon) are viable alternative Ethereum clients - there is no current Haskell client.
-
-### ruby-ethereum {#ruby-ethereum}
-
-**Archives**
-
-[ruby-ethereum GitHub repo](https://github.com/cryptape/ruby-ethereum)
-
-**History**
-
-ruby-ethereum was an Ethereum client written in Ruby. It was deprecated around 2018.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) and [Erigon](https://github.com/ledgerwatch/erigon) are viable alternative Ethereum clients. There is no current Ruby client.
-
-### Parity {#parity}
-
-Deprecated on June 2, 2020
-
-**Summary**
-
-Parity was an Ethereum client written in Rust.
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/openethereum/parity-ethereum)
-
-**History**
-
-As one of two major, viable clients in the early years of Ethereum (the other being Geth), Parity was a crucial part of the ecosystem. During the Shanghai Attacks of 2016 Parity enabled Ethereum network to continue operating when clients like Geth were taken down by the attack, proving the importance of client diversity.
-
-**Alternatives**
-
-[Erigon](https://github.com/ledgerwatch/erigon) Erigon (previously called Turbo-Geth) is a next generation Ethereum client on the efficiency frontier, written in Go.
-
-**Note:** _The successor project to Parity Ethereum client was [OpenEthereum](https://github.com/openethereum/openethereum) **which has since been deprecated.**_
-
-The ["Spin up your own Ethereum node"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) resource on ethereum.org includes a section for downloading, installing, and running an Ethereum client.
-
-### Trinity {#trinity}
-
-Deprecated on July 1, 2021
-
-**Summary**
-
-Trinity was a python-based Ethereum client which served as a research and educational tool for the community. A large number of python-based modules related to Trinity continue to be maintained by the same team, including [Py-EVM](https://github.com/ethereum/py-evm).
-
-**Archives**
-
-[Archived GitHub repo](https://github.com/ethereum/trinity)
-
-**History**
-
-Trinity was the successor project to [pyethereum](https://github.com/ethereum/pyethereum/tree/b704a5c6577863edc539a1ec3d2620a443b950fb), an early python-based Ethereum client.
-
-**Alternatives**
-
-The ["Spin up your own Ethereum node"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) resource on ethereum.org includes a section for downloading, installing, and running an Ethereum client.
-
-The [EthereumJS](https://github.com/ethereumjs) project has a similar research and educational use-case as Trinity did.
-
-## Dapps and Services {#dapps-and-services}
-
-This section is for services deployed to Ethereum Mainnet and other EVM-based networks. Be aware that the dapps and services here may include DeFi applications which have been hacked or may suffer security vulnerabilities due to lack of maintenance, changes in the protocol, etc.
-
-### Cover Protocol {#cover-protocol}
-
-Shut down in Fall 2021
-
-**Summary**
-
-Cover was a DeFi insurance protocol running on Ethereum and other EVM-based networks.
-
-**Archives**
-
-[Website](https://wayback.archive-it.org/17679/20211004074635/https://www.coverprotocol.com/)
-
-[Medium articles](https://wayback.archive-it.org/17679/20211004074633/https://coverprotocol.medium.com/)
-
-[GitHub repos](https://github.com/CoverProtocol/cover-core-v1)
-
-[Documentation](https://wayback.archive-it.org/17679/20211004074634/https://docs.coverprotocol.com/)
-
-### The DAO {#the-dao}
-
-Hacked and shut down in Summer 2016
-
-**Summary**
-
-The DAO was a smart contract, dapp, and forum for organizing the funding of projects. A vulnerability was exploited and much of the ETH was drained, leading to a community-organized hard fork in order to return ETH to those who had deposited to The DAO. The UX front-end and forum are discontinued.
-
-**Archives**
-
-[Internet Archive of "daohub.org" on May 14, 2016](https://web.archive.org/web/20160514105232/https://daohub.org/)
-
-**History**
-
-While The DAO failed, the concept endured. The basic technical, social, and governance model innovated for The DAO is widely in use in DeFi, NFT, and project-funding communities.
-
-["DAO Fork" on ethereum.org](/history/#dao-fork)
-
-[Wikipedia entry for "The DAO"]()
-
-**Alternatives**
-
-["DAOs" on ethereum.org](/dao/)
-
-[MolochDAO](https://www.molochdao.com/)
-
-[Gitcoin Grants](https://gitcoin.co/grants/)
-
-### SparkPool {#sparkpool}
-
-Shut down in Fall 2021
-
-**Summary**
-
-Headquartered in Hangzhou, the SparkPool service and community was one of the largest Ethereum-centered mining pools in the world.
-
-**Archives**
-
-**History**
-
-Associated with the EthFans community, the service was launched in 2015. SparkPool was disbanded in Fall, 2021 as a result of stricter legal regulations.
-
-**Alternatives**
-
-[Ethermine](https://ethermine.org/)
-
-## Documentation and Information Sources {#documentation-and-information-sources}
-
-There are numerous sources of documentation, articles, tutorials, and forums which are now removed or live but no longer maintained. We have selected a few which are significant or whose current status as deprecated may lead to confusion or scam attempts.
-
-### Legacy Wiki and eth.wiki {#eth-wiki}
-
-**Summary**
-
-Legacy Wiki and eth.wiki were wikis maintained by the Ethereum Foundation for the wider community. They were mainly oriented toward hosting detailed descriptions of key aspects of the Ethereum platform and summarizations of technical roadmaps.
-
-**Archives**
-
-[Archived GitHub repo for eth.wiki](https://github.com/ethereum/eth-wiki)
-
-[Archived GitHub repo for Legacy Wiki](https://github.com/ethereum/wiki/wiki)
-
-**History**
-
-Legacy Wiki was a GitHub wiki and a very early locus of technical content (including the original Ethereum Whitepaper). Over time, Ethereum developers migrated their documentation, specifications, and technical description work to other platforms like [Read the Docs](https://readthedocs.org/) and GitHub-hosted content.
-
-In 2019 and 2020, eth.wiki became the successor to Legacy Wiki, but an enduring community of contributors did not materialize.
-
-**Alternatives**
-
-Community-driven content: [Ethereum.org Website](/)
-
-Ethereum software projects often host their documentation on [Read the Docs](https://readthedocs.org/)
-
-GitHub-hosted technical specifications: [EIPs](https://github.com/ethereum/EIPs), [Execution Specs](https://github.com/ethereum/execution-specs), [Consensus Specs](https://github.com/ethereum/consensus-specs)
-
-### forum.ethereum.org {#forum-ethereum-org}
-
-**Summary**
-
-Ethereum Community Forum was a discussion board maintained by the Ethereum Foundation and hosted on Vanilla Forums. It used the subdomain "forum.ethereum.org".
-
-**Archives**
-
-Archive URL: [https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/](https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/)
-
-**History**
-
-This Forum was an early, "official" discussion board for the Ethereum community. Along with [/r/ethereum](https://reddit.com/r/ethereum) and a handful of Skype channels, it was an important point of coordination for developers, designers, and organizers. Over the years the participants of the Forum moved on and it became more of a place for the mining community.
-
-**Alternatives**
-
-[/r/ethereum](https://reddit.com/r/ethereum), and a large number of DAO Forums and Discord servers.
-
-## Gitter Channels {#gitter-channels}
-
-### AllCoreDevs {#allcorewdevs-gitter}
-
-**Summary**
-
-AllCoreDevs Gitter was the main public coordination comms channel for [Ethereum client core developers](https://github.com/ethereum/pm/).
-
-**Archives**
-
-[ethereum/AllCoreDevs Gitter Channel](https://gitter.im/ethereum/AllCoreDevs)
-
-**Alternatives**
-
-Please use the "allcoredevs" channel on the [EthR&D Discord Server](https://discord.gg/qHv7AjTDuK)
-
-### EthereumJS {#ethereumjs-gitter}
-
-**Summary**
-
-EthereumJS Gitter was the main public coordination comms channel for the [EthereumJS project](https://ethereumjs.github.io/).
-
-**Archives**
-
-[ethereum/EthereumJS Gitter Channel](https://gitter.im/ethereum/ethereumjs)
-
-**Alternatives**
-
-Please use the [EthereumJS Discord Server](https://discord.gg/TNwARpR)
diff --git a/public/content/desci/index.md b/public/content/desci/index.md
index c5bc80a3dd6..c9e7ae8f6ea 100644
--- a/public/content/desci/index.md
+++ b/public/content/desci/index.md
@@ -93,22 +93,18 @@ Explore projects and join the DeSci community.
- [DeSci.Global: global events and meetup calendar](https://desci.global)
- [Blockchain for Science Telegram](https://t.me/BlockchainForScience)
-- [Molecule: Fund and get funded for your research projects](https://discover.molecule.to/)
+- [Molecule: Fund and get funded for your research projects](https://www.molecule.xyz/)
- [VitaDAO: receive funding through sponsored research agreements for longevity research](https://www.vitadao.com/)
- [ResearchHub: post a scientific result and engage in a conversation with peers](https://www.researchhub.com/)
- [LabDAO: fold a protein in-silico](https://alphafodl.vercel.app/)
- [dClimate API: query climate data collected by a decentralized community](https://api.dclimate.net/)
- [DeSci Foundation: DeSci publishing tool builder](https://descifoundation.org/)
- [DeSci.World: one-stop shop for users to view, engage with decentralized science](https://desci.world)
-- [Fleming Protocol: open-source data economy that fuels collaborative biomedical discovery](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
-- [OceanDAO: DAO governed funding for data-related science](https://oceanprotocol.com/dao)
+- [OceanDAO: DAO governed funding for data-related science](https://oceanprotocol.com/)
- [Opscientia: open decentralized science workflows](https://opsci.io/research/)
-- [LabDAO: fold a protein in-silico](https://alphafodl.vercel.app/)
- [Bio.xyz: get funded for your biotech DAO or desci project](https://www.bio.xyz/)
-- [ResearchHub: post a scientific result and engage in a conversation with peers](https://www.researchhub.com/)
-- [VitaDAO: receive funding through sponsored research agreements for longevity research](https://www.vitadao.com/)
-- [Fleming Protocol: open-source data economy that fuels collaborative biomedical discovery](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
-- [Active Inference Lab](https://www.activeinference.org/)
+- [Fleming Protocol: open-source data economy that fuels collaborative biomedical discovery](http://flemingprotocol.io/)
+- [Active Inference Institute](https://www.activeinference.org/)
- [CureDAO: Community-Owned Precision Health Platform](https://docs.curedao.org/)
- [IdeaMarkets: enabling decentralized scientific credibility](https://ideamarket.io/)
- [DeSci Labs](https://www.desci.com/)
@@ -122,9 +118,8 @@ We welcome suggestions for new projects to list - please look at our [listing po
- [The case for DeSci](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
- [Guide to DeSci](https://future.com/what-is-decentralized-science-aka-desci/)
- [Decentralized science resources](https://www.vincentweisser.com/decentralized-science)
-- [Molecule’s Biopharma IP-NFTs - A Technical Description](https://molecule.to/blog/molecules-biopharma-ip-nfts-a-technical-description)
+- [Molecule’s Biopharma IP-NFTs - A Technical Description](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
- [Building Trustless Systems of Science by Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
-- [The Emergence of Biotech DAOs](https://molecule.to/blog/the-emergence-of-biotech-daos)
- [Paul Kohlhaas - DeSci: The Future of Decentralized Science (podcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
- [An Active Inference Ontology for Decentralized Science: from Situated Sensemaking to the Epistemic Commons](https://zenodo.org/record/6320575)
- [DeSci: The Future of Research by Samuel Akinosho](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec)
diff --git a/public/content/developers/docs/apis/backend/index.md b/public/content/developers/docs/apis/backend/index.md
index 6ddc486bf72..77081abe148 100644
--- a/public/content/developers/docs/apis/backend/index.md
+++ b/public/content/developers/docs/apis/backend/index.md
@@ -25,7 +25,7 @@ These libraries abstract away much of the complexity of interacting directly wit
- [alchemy.com](https://www.alchemy.com/)
- [Documentation](https://docs.alchemyapi.io/)
- [GitHub](https://github.com/alchemyplatform)
-- [Discord](https://discord.com/invite/A39JVCM)
+- [Discord](https://discord.com/invite/alchemyplatform)
**BlockCypher -** **_Ethereum Web APIs._**
@@ -36,7 +36,7 @@ These libraries abstract away much of the complexity of interacting directly wit
- [blastapi.io](https://blastapi.io/)
- [Documentation](https://docs.blastapi.io)
-- [Discord](https://discord.com/invite/VPkWESgtvV)
+- [Discord](https://discord.gg/bwarelabs)
**Infura -** **_The Ethereum API as a service._**
@@ -84,7 +84,7 @@ These libraries abstract away much of the complexity of interacting directly wit
- [quicknode.com](https://quicknode.com)
- [Documentation](https://www.quicknode.com/docs)
-- [Discord](https://discord.gg/NaR7TtpvJq)
+- [Discord](https://discord.gg/quicknode)
**Python Tooling -** **_Variety of libraries for Ethereum interaction via Python._**
@@ -140,7 +140,7 @@ These libraries abstract away much of the complexity of interacting directly wit
- [moralis.io](http://moralis.io)
- [Documentation](https://docs.moralis.io/)
- [GitHub](https://github.com/MoralisWeb3)
-- [Discord](https://discord.com/invite/KYswaxwEtg)
+- [Discord](https://moralis.io/joindiscord/)
- [Forum](https://forum.moralis.io/)
**Chainbase -** **_All-in-one web3 data infrastructure for Ethereum._**
diff --git a/public/content/developers/docs/apis/json-rpc/index.md b/public/content/developers/docs/apis/json-rpc/index.md
index f98e573f251..3c259c2e098 100755
--- a/public/content/developers/docs/apis/json-rpc/index.md
+++ b/public/content/developers/docs/apis/json-rpc/index.md
@@ -622,7 +622,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Retrieving an element of the map is harder. The position of an element in the map is calculated with:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
This means to retrieve the storage on pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] we need to calculate the position with:
diff --git a/public/content/developers/docs/bridges/index.md b/public/content/developers/docs/bridges/index.md
index 8fc4ee0fb17..fe97e455db5 100644
--- a/public/content/developers/docs/bridges/index.md
+++ b/public/content/developers/docs/bridges/index.md
@@ -42,7 +42,7 @@ Bridges can usually be classified into one of the following buckets:
- **Native bridges –** These bridges are typically built to bootstrap liquidity on a particular blockchain, making it easier for users to move funds to the ecosystem. For example, the [Arbitrum Bridge](https://bridge.arbitrum.io/) is built to make it convenient for users to bridge from Ethereum Mainnet to Arbitrum. Other such bridges include Polygon PoS Bridge, [Optimism Gateway](https://app.optimism.io/bridge), etc.
- **Validator or oracle based bridges –** These bridges rely on an external validator set or oracles to validate cross-chain transfers. Examples: Multichain and Across.
-- **Generalized message passing bridges –** These bridges can transfer assets, along with messages and arbitrary data across chains. Examples: Nomad and LayerZero.
+- **Generalized message passing bridges –** These bridges can transfer assets, along with messages and arbitrary data across chains. Examples: Axelar, LayerZero, and Nomad.
- **Liquidity networks –** These bridges primarily focus on transferring assets from one chain to another via atomic swaps. Generally, they don’t support cross-chain message passing. Examples: Connext and Hop.
## Trade-offs to consider {#trade-offs}
diff --git a/public/content/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/developers/docs/consensus-mechanisms/pos/attestations/index.md
index 78a35ca1d7d..518607faa21 100644
--- a/public/content/developers/docs/consensus-mechanisms/pos/attestations/index.md
+++ b/public/content/developers/docs/consensus-mechanisms/pos/attestations/index.md
@@ -87,6 +87,6 @@ Note that in some cases a lucky aggregator may also become the block proposer. I
## Further reading {#further-reading}
- [Attestations in Vitalik's annotated consensus spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
-- [Attestations in eth2book.info](https://eth2book.info/altair/part3/containers/dependencies#attestationdata)
+- [Attestations in eth2book.info](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
_Know of a community resource that helped you? Edit this page and add it!_
diff --git a/public/content/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
index 9b08d0fbe4d..57874b13ecd 100644
--- a/public/content/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
+++ b/public/content/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
@@ -50,7 +50,7 @@ PROPOSER_WEIGHT uint64(8)
These weights sum to 64. The reward is calculated as the sum of the applicable weights divided by 64. A validator that has made timely source, target and head votes, proposed a block and participated in a sync committee could receive `64/64 * base_reward == base_reward`. However, a validator is not usually a block proposer, so their maximum reward is `64-8 /64 * base_reward == 7/8 * base_reward`. Validators that are neither block proposers nor in a sync committee can receive `64-8-2 / 64 * base_reward == 6.75/8 * base_reward`.
-An additional reward is added to incentivize rapid attestations. This is the `inclusion_delay_reward`. This has a value equal to the `base_reward` multiplied by `1/delay` where `delay` is the number of slots separating the block proposal and attestation. For example, if the attestation is submitted within one slot of the block proposal the attestor receives `base_reward * 1/1 == base_reward`. If the attestation arrives in the next slot, the attestor received `base_reward * 1/2` and so on.
+An additional reward is added to incentivize rapid attestations. This is the `inclusion_delay_reward`. This has a value equal to the `base_reward` multiplied by `1/delay` where `delay` is the number of slots separating the block proposal and attestation. For example, if the attestation is submitted within one slot of the block proposal the attestor receives `base_reward * 1/1 == base_reward`. If the attestation arrives in the next slot, the attestor receives `base_reward * 1/2` and so on.
Block proposers receive `8 / 64 * base_reward` for **each valid attestation** included in the block, so the actual value of the reward scales with the number of attesting validators. Block proposers can also increase their reward by including evidence of misbehavior by other validators in their proposed block. These rewards are the "carrots" that encourage validator honesty. A block proposer which includes slashing will be rewarded with the `slashed_validators_effective_balance / 512`.
diff --git a/public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/index.md b/public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
similarity index 98%
rename from public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/index.md
rename to public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index a78c1ba9d22..4e800a2593a 100644
--- a/public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: A detailed look at the Dagger-Hashimoto algorithm.
lang: en
---
-Dagger-Hashimoto was the original research implementation and specification for Ethereum's mining algorithm. Dagger-Hashimoto was superseded by [Ethash](#ethash). Mining was switched off completely at [The Merge](/updates/merge) on 15th September 2022. Since then, Ethereum has been secured using a [proof-of-stake](/developers/docs/consensus-mechanisms/pos) mechanism instead. This page is for historical interest - the information here is no longer relevant for post-Merge Ethereum.
+Dagger-Hashimoto was the original research implementation and specification for Ethereum's mining algorithm. Dagger-Hashimoto was superseded by [Ethash](#ethash). Mining was switched off completely at [The Merge](/roadmap/merge/) on 15th September 2022. Since then, Ethereum has been secured using a [proof-of-stake](/developers/docs/consensus-mechanisms/pos) mechanism instead. This page is for historical interest - the information here is no longer relevant for post-Merge Ethereum.
## Prerequisites {#prerequisites}
diff --git a/public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md b/public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
similarity index 100%
rename from public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md
rename to public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
diff --git a/public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md b/public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
similarity index 100%
rename from public/content/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md
rename to public/content/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
diff --git a/public/content/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/developers/docs/data-and-analytics/block-explorers/index.md
index 494aba59cc6..c9914e920e2 100644
--- a/public/content/developers/docs/data-and-analytics/block-explorers/index.md
+++ b/public/content/developers/docs/data-and-analytics/block-explorers/index.md
@@ -25,6 +25,7 @@ You should understand the basic concepts of Ethereum so you can make sense of th
- [Sirato](https://www.web3labs.com/sirato)
- [EthVM](https://www.ethvm.com/)
- [DexGuru Block Explorer](https://ethereum.dex.guru/)
+- [Ethernow](https://www.ethernow.xyz/)
## Data {#data}
@@ -237,6 +238,7 @@ The consensus layer top-level data includes the following:
- [Etherchain](https://www.etherchain.org/) - a block explorer for the Ethereum Mainnet
- [Ethplorer](https://ethplorer.io/) - a block explorer with a focus on tokens for the Ethereum Mainnet and the Kovan testnet
- [Rantom](https://rantom.app/) - A user-friendly open-source DeFi & NFT transaction viewer for detailed insights
+- [Ethernow](https://www.ethernow.xyz/) - a real-time transaction explorer that enables you to see the Ethereum Mainnet pre-chain layer
## Further reading {#further-reading}
diff --git a/public/content/developers/docs/design-and-ux/index.md b/public/content/developers/docs/design-and-ux/index.md
index aa6f11b259c..31622f3993b 100644
--- a/public/content/developers/docs/design-and-ux/index.md
+++ b/public/content/developers/docs/design-and-ux/index.md
@@ -83,6 +83,7 @@ Get involved in professional community-driven organizations or join design group
- [Ethereum.org Design system](https://www.figma.com/@ethdotorg) (Figma)
- [Finity, a design system by Polygon](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma)
- [Kleros Design System](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
+- [Safe Design System](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
- [ENS Design system](https://thorin.ens.domains/)
- [Mirror Design System](https://degen-xyz.vercel.app/)
diff --git a/public/content/developers/docs/development-networks/index.md b/public/content/developers/docs/development-networks/index.md
index b2469a80fa1..9e7c76efc66 100644
--- a/public/content/developers/docs/development-networks/index.md
+++ b/public/content/developers/docs/development-networks/index.md
@@ -66,9 +66,9 @@ There are also two maintained public test implementations of Ethereum: Goerli an
Kurtosis is a build system for multi-container test environments which enables developers to locally spin up reproducible instances of blockchain networks.
-The Ethereum Kurtosis package locally instantiates a containerized and parameterizable Ethereum testnet, with support for multiple different Execution Layer (EL) and Consensus Layer (CL) clients and an n-number of nodes. Kurtosis gracefully handles all local port mappings and service connections for easy dApp and smart contract prototyping and testing.
+The Ethereum Kurtosis package can be used to quickly instantiate a parameterizable, highly scalable, and private Ethereum testnet over Docker or Kubernetes. The package supports all major Execution Layer (EL) and Consensus Layer (CL) clients. Kurtosis gracefully handles all local port mappings and service connections for a representative network to be used in validation and testing workflows relating to Ethereum core infrastructure.
-- [Ethereum network package](https://github.com/kurtosis-tech/eth-network-package)
+- [Ethereum network package](https://github.com/kurtosis-tech/ethereum-package)
- [Website](https://www.kurtosis.com/)
- [GitHub](https://github.com/kurtosis-tech/kurtosis)
- [Documentation](https://docs.kurtosis.com/)
diff --git a/public/content/developers/docs/frameworks/index.md b/public/content/developers/docs/frameworks/index.md
index bd83e0e135b..6da91038516 100644
--- a/public/content/developers/docs/frameworks/index.md
+++ b/public/content/developers/docs/frameworks/index.md
@@ -76,7 +76,7 @@ Before diving into frameworks, we recommend you first read through our introduct
- [alchemy.com](https://www.alchemy.com/)
- [GitHub](https://github.com/alchemyplatform)
-- [Discord](https://discord.com/invite/A39JVCM)
+- [Discord](https://discord.com/invite/alchemyplatform)
**NodeReal -** **_Ethereum Development Platform._**
diff --git a/public/content/developers/docs/gas/index.md b/public/content/developers/docs/gas/index.md
index 5e4ad237a91..0d0db6ae680 100644
--- a/public/content/developers/docs/gas/index.md
+++ b/public/content/developers/docs/gas/index.md
@@ -119,22 +119,6 @@ The Ethereum [scalability upgrades](/roadmap/) should ultimately address some of
Layer 2 scaling is a primary initiative to greatly improve gas costs, user experience and scalability. [More on layer 2 scaling](/developers/docs/scaling/#layer-2-scaling).
-## What was the London Upgrade / EIP-1559? {#what-was-the-london-upgrade-eip-1559}
-
-Before the London Upgrade, Ethereum had fixed-sized blocks. In times of high network demand, these blocks operated at full capacity. As a result, users often had to wait for demand to reduce to get included in a block, which led to a poor user experience. The London Upgrade introduced variable-sized blocks to Ethereum.
-
-The way transaction fees on the Ethereum network were calculated changed with [the London Upgrade](/history/#london) of August 2021. Before the London upgrade, fees were calculated without separating `base` and `priority` fees, as follows:
-
-Let's say Alice had to pay Bob 1 ETH. In the transaction, the gas limit is 21,000 units, and the gas price is 200 gwei.
-
-The total fee would have been: `Gas units (limit) * Gas price per unit` i.e `21,000 * 200 = 4,200,000 gwei` or 0.0042 ETH
-
-The implementation of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) in the London Upgrade made the transaction fee mechanism more complex, but made gas fees more predictable, resulting in a more efficient transaction fee market. Users can submit transactions with a `maxFeePerGas` corresponding to how much they are willing to pay for the transaction to be executed, knowing that they will not pay more than the market price for gas (`baseFeePerGas`), and get any extra, minus their tip, refunded.
-
-This video explains EIP-1559 and the benefits it brings:
-
-
-
## Monitoring gas fees {#moitoring-gas-fees}
If you want to monitor gas prices, so you can send your ETH for less, you can use many different tools such as:
diff --git a/public/content/developers/docs/mev/index.md b/public/content/developers/docs/mev/index.md
index 067b1110e34..0aff138ad20 100644
--- a/public/content/developers/docs/mev/index.md
+++ b/public/content/developers/docs/mev/index.md
@@ -6,7 +6,7 @@ lang: en
Maximal extractable value (MEV) refers to the maximum value that can be extracted from block production in excess of the standard block reward and gas fees by including, excluding, and changing the order of transactions in a block.
-## Miner extractable value {#miner-extractable-value}
+## Maximal extractable value {#maximal-extractable-value}
Maximal extractable value was first applied in the context of [proof-of-work](/developers/docs/consensus-mechanisms/pow/), and initially referred to as "miner extractable value". This is because in proof-of-work, miners control transaction inclusion, exclusion, and ordering. However, since the transition to proof-of-stake via [The Merge](/roadmap/merge) validators have been responsible for these roles, and mining is no longer part of the Ethereum protocol. The value extraction methods still exist, though, so the term "Maximal extractable value" is now used instead.
diff --git a/public/content/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/developers/docs/nodes-and-clients/client-diversity/index.md
index 1a925d6a02c..6a0971d7ebe 100644
--- a/public/content/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -46,7 +46,7 @@ _Diagram data from [ethernodes.org](https://ethernodes.org) and [clientdiversity
The two pie charts above show snapshots of the current client diversity for the execution and consensus layers (at time of writing in January 2022). The execution layer is overwhelmingly dominated by [Geth](https://geth.ethereum.org/), with [Open Ethereum](https://openethereum.github.io/) a distant second, [Erigon](https://github.com/ledgerwatch/erigon) third and [Nethermind](https://nethermind.io/) fourth, with other clients comprising less than 1 % of the network. The most commonly used client on the consensus layer - [Prysm](https://prysmaticlabs.com/#projects) - is not as dominant as Geth but still represents over 60% of the network. [Lighthouse](https://lighthouse.sigmaprime.io/) and [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) make up ~20% and ~14% respectively, and other clients are rarely used.
-The execution layer data were obtained from [Ethernodes](https://ethernodes.org) on 23/01/2022. Data for consensus clients was obtained from [Michael Sproul](https://github.com/sigp/blockprint). Consensus client data is more difficult to obtain because the consensus layer clients do not always have unambiguous traces that can be used to identify them. The data was generated using a classification algorithm that sometimes confuses some of the minority clients (see [here](https://twitter.com/sproulM_/status/1440512518242197516) for more details). In the diagram above, these ambiguous classifications are treated with an either/or label (e.g. Nimbus/Teku). Nevertheless, it is clear that the majority of the network is running Prysm. The data is a snapshot over a fixed set of blocks (in this case Beacon blocks in slots 2048001 to 2164916) and Prysm's dominance has sometimes been higher, exceeding 68%. Despite only being snapshots, the values in the diagram provide a good general sense of the current state of client diversity.
+The execution layer data were obtained from [Ethernodes](https://ethernodes.org) on 23-Jan-2022. Data for consensus clients was obtained from [Michael Sproul](https://github.com/sigp/blockprint). Consensus client data is more difficult to obtain because the consensus layer clients do not always have unambiguous traces that can be used to identify them. The data was generated using a classification algorithm that sometimes confuses some of the minority clients (see [here](https://twitter.com/sproulM_/status/1440512518242197516) for more details). In the diagram above, these ambiguous classifications are treated with an either/or label (e.g. Nimbus/Teku). Nevertheless, it is clear that the majority of the network is running Prysm. The data is a snapshot over a fixed set of blocks (in this case Beacon blocks in slots 2048001 to 2164916) and Prysm's dominance has sometimes been higher, exceeding 68%. Despite only being snapshots, the values in the diagram provide a good general sense of the current state of client diversity.
Up to date client diversity data for the consensus layer is now available at [clientdiversity.org](https://clientdiversity.org/).
diff --git a/public/content/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index 596983b16c4..47ccea3f503 100644
--- a/public/content/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/public/content/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -76,6 +76,15 @@ Here is a list of some of the most popular Ethereum node providers, feel free to
- Trace/Debug namespace available
- Automated updates
- Technical support
+- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/)
+ - [Docs](https://aws.amazon.com/managed-blockchain/resources/)
+ - Features
+ - Fully managed Ethereum nodes
+ - Available in six regions
+ - JSON-RPC over HTTP and secure WebSockets
+ - Supports 3 chains
+ - SLAs, AWS Support 24/7
+ - Go-ethereum and Lighthouse
- [**Ankr**](https://www.ankr.com/)
- [Docs](https://docs.ankr.com/)
- Features
diff --git a/public/content/developers/docs/programming-languages/python/index.md b/public/content/developers/docs/programming-languages/python/index.md
index 4b33cd1f63f..dc1ef837a6c 100644
--- a/public/content/developers/docs/programming-languages/python/index.md
+++ b/public/content/developers/docs/programming-languages/python/index.md
@@ -82,7 +82,7 @@ The following Ethereum-based projects use tools mentioned on this page. The rela
## Python Community discussion {#python-community-contributors}
- [Ethereum Python Community Discord](https://discord.gg/9zk7snTfWe) for Web3.py and other Python framework discussion
-- [Vyper Discord](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>) for Vyper smart contract programming discussion
+- [Vyper Discord](https://discord.gg/SdvKC79cJk) for Vyper smart contract programming discussion
## Other aggregated lists {#other-aggregated-lists}
diff --git a/public/content/developers/docs/scaling/sidechains/index.md b/public/content/developers/docs/scaling/sidechains/index.md
index 73ca67a2373..ba246c90a25 100644
--- a/public/content/developers/docs/scaling/sidechains/index.md
+++ b/public/content/developers/docs/scaling/sidechains/index.md
@@ -51,7 +51,7 @@ While bridges help users move funds between Ethereum and the sidechain, the asse
| Pros | Cons |
| --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| The technology underpinning sidechains is well-established and benefits from extensive research and improvements in design. | Sidechains trade off some measure of decentralization and trustlesness for scalability. |
+| The technology underpinning sidechains is well-established and benefits from extensive research and improvements in design. | Sidechains trade off some measure of decentralization and trustlessness for scalability. |
| Sidechains support general computation and offer EVM compatibility (they can run Ethereum-native dapps). | A sidechain uses a separate consensus mechanism and doesn't benefit from Ethereum's security guarantees. |
| Sidechains use different consensus models to efficiently process transactions and lower transaction fees for users. | Sidechains require higher trust assumptions (e.g., a quorum of malicious sidechain validators can commit fraud). |
| EVM-compatible sidechains allow dapps to expand their ecosystem. | |
diff --git a/public/content/developers/docs/scaling/zk-rollups/index.md b/public/content/developers/docs/scaling/zk-rollups/index.md
index da040a6d34a..8a2405d25dc 100644
--- a/public/content/developers/docs/scaling/zk-rollups/index.md
+++ b/public/content/developers/docs/scaling/zk-rollups/index.md
@@ -1,5 +1,5 @@
---
-title: Zero-Knowledge rollups
+title: Zero-knowledge rollups
description: An introduction to zero-knowledge rollups—a scaling solution used by the Ethereum community.
lang: en
---
diff --git a/public/content/developers/docs/standards/tokens/erc-4626/index.md b/public/content/developers/docs/standards/tokens/erc-4626/index.md
index 8ad804fbed8..249219e846a 100644
--- a/public/content/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ Where `sender` is the user who triggered the withdrawal and exchanged `shares`,
## Further reading {#further-reading}
- [EIP-4626: Tokenized vault Standard](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: GitHub Repo](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626: GitHub Repo](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/developers/tutorials/erc20-annotated-code/index.md b/public/content/developers/tutorials/erc20-annotated-code/index.md
index a0f189acf81..198e266d5df 100644
--- a/public/content/developers/tutorials/erc20-annotated-code/index.md
+++ b/public/content/developers/tutorials/erc20-annotated-code/index.md
@@ -308,7 +308,7 @@ This line attaches the `SafeMath` library to the `uint256` type. You can find th
### Variable Definitions {#variable-definitions}
-These definitions specify the contract's state variables. There variables are declared `private`, but
+These definitions specify the contract's state variables. These variables are declared `private`, but
that only means that other contracts on the blockchain can't read them. _There are no
secrets on the blockchain_, the software on every node has the state of every contract
at every block. By convention, state variables are named `_`.
@@ -794,7 +794,7 @@ Make sure to update `_totalSupply` when the total number of tokens changes.
-```
+```solidity
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
diff --git a/public/content/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/developers/tutorials/erc20-with-safety-rails/index.md
index 9ad412ca33c..0d23224e3a8 100644
--- a/public/content/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/developers/tutorials/erc20-with-safety-rails/index.md
@@ -23,7 +23,7 @@ If you want to see the complete source code:
## Creating an ERC-20 contract {#creating-an-erc-20-contract}
-Before we can add the safety rail functionality we need an ERC-20 contract. In this article we'll use [the OpenZeppelin Contracts Wizard](https://docs.openzeppelin.com/contracts/4.x/wizard). Open it in another browser and follow these instructions:
+Before we can add the safety rail functionality we need an ERC-20 contract. In this article we'll use [the OpenZeppelin Contracts Wizard](https://docs.openzeppelin.com/contracts/5.x/wizard). Open it in another browser and follow these instructions:
1. Select **ERC20**.
2. Enter these settings:
@@ -92,7 +92,7 @@ We want to add these requirements to the function:
- The `to` address cannot equal `address(this)`, the address of the ERC-20 contract itself.
- The `to` address cannot be empty, it has to be either:
- - An externally owned accounts (EOA). We can't check if an address is an EOA directly, but we can check an address's ETH balance. EOAs almost always have a balance, even if they are no longer used - it's difficult to clear them to the last wei.
+ - An externally owned account (EOA). We can't check if an address is an EOA directly, but we can check an address's ETH balance. EOAs almost always have a balance, even if they are no longer used - it's difficult to clear them to the last wei.
- A smart contract. Testing if an address is a smart contract is a bit harder. There is an opcode that checks the external code length, called [`EXTCODESIZE`](https://www.evm.codes/#3b), but it is not available directly in Solidity. We have to use [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html), which is EVM assembly, for it. There are other values we could use from Solidity ([`.code` and `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), but they cost more.
Lets go over the new code line by line:
@@ -209,4 +209,4 @@ This is a cleanup function, so presumably we don't want to leave any tokens. Ins
## Conclusion {#conclusion}
-This is not a perfect solution - there is no perfect solution for the "user made a mistake" problem. However, using these kind of checks can at least prevent some mistakes. The ability to freeze accounts, while dangerous, can be used to limit the damage of certain hacks by denying the hacker the stolen funds.
+This is not a perfect solution - there is no perfect solution for the "user made a mistake" problem. However, using these kinds of checks can at least prevent some mistakes. The ability to freeze accounts, while dangerous, can be used to limit the damage of certain hacks by denying the hacker the stolen funds.
diff --git a/public/content/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/developers/tutorials/uniswap-v2-annotated-code/index.md
index f1f3561de0a..da52442866e 100644
--- a/public/content/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -755,7 +755,7 @@ This is the main function of the factory, to create a pair exchange between two
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-We want the address of the new exchange to be deterministic, so it can be calculated in advance off chain (this can be useful for [layer 2 transactions](/developers/docs/layer-2-scaling/)).
+We want the address of the new exchange to be deterministic, so it can be calculated in advance off chain (this can be useful for [layer 2 transactions](/developers/docs/scaling/)).
To do this we need to have a consistent order of the token addresses, regardless of the order in which we have received them, so we sort them here.
```solidity
diff --git a/public/content/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 3a4362a8a3b..feba04ec3f6 100644
--- a/public/content/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -290,4 +290,4 @@ Source code for this tutorial can be found [here](https://github.com/EthWorks/Wa
Tutorials you may also be interested in:
-- [Testing smart contracts with Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Testing smart contracts with Waffle](/developers/tutorials/waffle-test-simple-smart-contract//)
diff --git a/public/content/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/developers/tutorials/waffle-test-simple-smart-contract/index.md
index 437cef8e80e..725b252c57a 100644
--- a/public/content/developers/tutorials/waffle-test-simple-smart-contract/index.md
+++ b/public/content/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -200,4 +200,4 @@ You've made your first big step towards testing smart contracts with Waffle! You
- [Testing ERC20 with Waffle](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
- [Waffle: Dynamic mocking and testing contract calls](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
-- [Waffle say hello world tutorial with hardhat and ethers](/developers/tutorials/waffle-hello-world-with-buidler-tutorial/)
+- [Waffle say hello world tutorial with hardhat and ethers](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers//)
diff --git a/public/content/glossary/index.md b/public/content/glossary/index.md
index fb560a677a9..23730eef6e3 100644
--- a/public/content/glossary/index.md
+++ b/public/content/glossary/index.md
@@ -244,12 +244,16 @@ lang: en
## L {#section-l}
+
+
+
+
@@ -258,8 +262,12 @@ lang: en
+
+
+
+
@@ -288,8 +296,12 @@ lang: en
## O {#section-o}
+
+
+
+
diff --git a/public/content/governance/index.md b/public/content/governance/index.md
index 733a42210c3..f2e36aa7e02 100644
--- a/public/content/governance/index.md
+++ b/public/content/governance/index.md
@@ -121,7 +121,7 @@ Forks are when major technical upgrades or changes need to be made to the networ
The DAO fork was in response to the [2016 DAO attack](https://www.coindesk.com/understanding-dao-hack-journalists) where an insecure [DAO](/glossary/#dao) contract was drained of over 3.6 million ETH in a hack. The fork moved the funds from the faulty contract to a new contract allowing anyone who lost funds in the hack to recover them.
-This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes.
+This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes.
It's important to note that whilst the protocol did fork to revert the hack, the weight the vote carried in deciding to fork is debatable for a few reasons:
diff --git a/public/content/guides/how-to-swap-tokens/index.md b/public/content/guides/how-to-swap-tokens/index.md
index bb91edcd58d..7cda654c47a 100644
--- a/public/content/guides/how-to-swap-tokens/index.md
+++ b/public/content/guides/how-to-swap-tokens/index.md
@@ -24,7 +24,7 @@ Some popular exchanges are:
- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI)
- [Curve](https://curve.fi/#/ethereum/swap)
-If you'd like to learn more about what DeFi is and how these new kinds of exchanges work, we can recommend the [Kernel Library](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi).
+Interesting? Learn more about what [decentralised finance (DeFi)](/defi/) is and how these new kinds of exchanges work.
## 2. Select the pair of tokens you wish to swap
diff --git a/public/content/history/index.md b/public/content/history/index.md
index 353277ebc52..517b84c81b7 100644
--- a/public/content/history/index.md
+++ b/public/content/history/index.md
@@ -172,6 +172,20 @@ Altair was the first major network upgrade that had an exact rollout time. Every
The London upgrade introduced [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), which reformed the transaction fee market, along with changes to how gas refunds are handled and the [Ice Age](/glossary/#ice-age) schedule.
+#### What was the London Upgrade / EIP-1559? {#eip-1559}
+
+Before the London Upgrade, Ethereum had fixed-sized blocks. In times of high network demand, these blocks operated at full capacity. As a result, users often had to wait for demand to reduce to get included in a block, which led to a poor user experience. The London Upgrade introduced variable-sized blocks to Ethereum.
+
+The way transaction fees on the Ethereum network were calculated changed with [the London Upgrade](/history/#london) of August 2021. Before the London upgrade, fees were calculated without separating `base` and `priority` fees, as follows:
+
+Let's say Alice had to pay Bob 1 ETH. In the transaction, the gas limit is 21,000 units, and the gas price is 200 gwei.
+
+The total fee would have been: `Gas units (limit) * Gas price per unit` i.e `21,000 * 200 = 4,200,000 gwei` or 0.0042 ETH
+
+The implementation of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) in the London Upgrade made the transaction fee mechanism more complex, but made gas fees more predictable, resulting in a more efficient transaction fee market. Users can submit transactions with a `maxFeePerGas` corresponding to how much they are willing to pay for the transaction to be executed, knowing that they will not pay more than the market price for gas (`baseFeePerGas`), and get any extra, minus their tip, refunded.
+
+This video explains EIP-1559 and the benefits it brings: [EIP-1559 Explained](https://www.youtube.com/watch?v=MGemhK9t44Q)
+
- [Are you a dapp developer? Be sure to upgrade your libraries and tooling.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md)
- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/)
- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41)
diff --git a/public/content/roadmap/beacon-chain/index.md b/public/content/roadmap/beacon-chain/index.md
index 6504254154a..74ba5d74678 100644
--- a/public/content/roadmap/beacon-chain/index.md
+++ b/public/content/roadmap/beacon-chain/index.md
@@ -30,7 +30,7 @@ Read more on our [node architecture page](/developers/docs/nodes-and-clients/nod
The Beacon Chain introduced [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) to Ethereum. This keeps Ethereum secure and earns validators more ETH in the process. In practice, staking involves staking ETH in order to activate validator software. As a staker, you run the software that creates and validates new blocks in the chain.
-Staking serves a similar purpose that [mining](/developers/docs/mining/) used to, but is different in many ways. Mining required large up-front expenditures in the form of powerful hardware and energy consumption, resulting in economies of scale, and promoting centralization. Mining also did not come with any requirement to lock up assets as collateral, limiting the protocol's ability to punish bad actors after an attack.
+Staking serves a similar purpose that [mining](/developers/docs/consensus-mechanisms/pow/mining/) used to, but is different in many ways. Mining required large up-front expenditures in the form of powerful hardware and energy consumption, resulting in economies of scale, and promoting centralization. Mining also did not come with any requirement to lock up assets as collateral, limiting the protocol's ability to punish bad actors after an attack.
The transition to proof-of-stake made Ethereum significantly more secure and decentralized by comparison to proof-of-work. The more people that participate in the network, the more decentralized and safe from attacks it becomes.
diff --git a/public/content/roadmap/index.md b/public/content/roadmap/index.md
index 6a218c2e655..f34365a9db7 100644
--- a/public/content/roadmap/index.md
+++ b/public/content/roadmap/index.md
@@ -3,7 +3,7 @@ title: Ethereum roadmap
description: The path to more scalability, security and sustainability for Ethereum.
lang: en
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Ethereum roadmap"
summaryPoints:
buttons:
@@ -59,7 +59,7 @@ Ethereum gets regular upgrades that enhance its scalability, security, or sustai
-The roadmap is mostly the result of years of work by researchers and developers - because the protocol is very technical - but any motivated person can participate. Ideas usually start off as discussions on a forum such as [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) or the Eth R&D discord server. They may be responses to new vulnerabilities that are discovered, suggestions from organizations working in the application layer (such as dapps and exchanges) or from known frictions for end users (such as costs or transaction speeds). When these ideas mature, they can be proposed as [Ethereum Improvement Proposals](https://eips.ethereum.org/). This is all done in public so that anyone from the community can weigh in at any time.
+The roadmap is mostly the result of years of work by researchers and developers - because the protocol is very technical - but any motivated person can participate. Ideas usually start off as discussions on a forum such as [ethresear.ch](https://ethresear.ch/), [Ethereum Magicians](https://ethereum-magicians.org/) or the Eth R&D discord server. They may be responses to new vulnerabilities that are discovered, suggestions from organizations working in the application layer (such as dapps and exchanges) or from known frictions for end users (such as costs or transaction speeds). When these ideas mature, they can be proposed as [Ethereum Improvement Proposals](https://eips.ethereum.org/). This is all done in public so that anyone from the community can weigh in at any time.
[More on Ethereum governance](/governance/)
diff --git a/public/content/roadmap/pbs/index.md b/public/content/roadmap/pbs/index.md
index 645759b68a2..d9f79124074 100644
--- a/public/content/roadmap/pbs/index.md
+++ b/public/content/roadmap/pbs/index.md
@@ -20,7 +20,7 @@ For example, inclusion lists can be introduced so that when validators know abou
-Powerful organizations can pressure validators to censor transactions to or from certain addresses. Validators comply with this pressure by detecting blacklisted addresses in their transaction pool and omitting them from the blocks the propose. After PBS this will no longer be possible because block proposers will not know which transactions they are broadcasting in their blocks. It might be important for certain individuals or apps to comply with censorship rules, for example when it is made law in their region. In these cases, compliance happens at the application level, while the protocol remains permissionless and censorship free.
+Powerful organizations can pressure validators to censor transactions to or from certain addresses. Validators comply with this pressure by detecting blacklisted addresses in their transaction pool and omitting them from the blocks they propose. After PBS this will no longer be possible because block proposers will not know which transactions they are broadcasting in their blocks. It might be important for certain individuals or apps to comply with censorship rules, for example when it is made law in their region. In these cases, compliance happens at the application level, while the protocol remains permissionless and censorship free.
diff --git a/public/content/roadmap/single-slot-finality/index.md b/public/content/roadmap/single-slot-finality/index.md
index d680b3166d1..6ee3f5e62ed 100644
--- a/public/content/roadmap/single-slot-finality/index.md
+++ b/public/content/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ The problem with scaling aggregation by growing the number of validators per sub
## Current progress {#current-progress}
-SSF is in the research phase. It is not expected to ship for several years, likely after other substantial upgrades such as [Verkle trees](/roadmap/verkle-trees/) and [Danksharding](/roadmap/danksharding]).
+SSF is in the research phase. It is not expected to ship for several years, likely after other substantial upgrades such as [Verkle trees](/roadmap/verkle-trees/) and [Danksharding](/roadmap/danksharding/).
## Further reading {#further-reading}
diff --git a/public/content/translations/ar/roadmap/beacon-chain/index.md b/public/content/translations/ar/roadmap/beacon-chain/index.md
index dd2f4105f05..a7bad82b3c3 100644
--- a/public/content/translations/ar/roadmap/beacon-chain/index.md
+++ b/public/content/translations/ar/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ summaryPoint3: قدمت سلسلة المنارة منطق إجماع الآرا
قدمت سلسلة المنارة [إثبات الحصة](/developers/docs/consensus-mechanisms/pos/) إلى إثيريوم. وهذا يحافظ على أمان إثيريوم ويُكسب برامج المدققين المزيد من ETH في هذه العملية. وعمليًا، سيشتمل تجميد العملات على تجميد ETH من أجل تنشيط برنامج المدقق. وكأحد المراهنين، فإنك تشغل البرنامج الذي ينشئ ويصادق على كتل جديدة في السلسلة.
-إن تجميد العملات يقدم غرضًا مشابهًا لما يستخدمه [التنقيب](/developers/docs/mining/)، لكنه مختلف من عدة جوانب. ويتطلب التنقيب نفقات أولية طائلة في شكل أجهزة قوية واستهلاك كبير للطاقة، ما يؤدي إلى تحقيق وفورات للتوسع وتعزيز المركزية. ولا يفرض التنقيب أيضًا أي شروط لحجز الأصول كضمان إضافي، ما يحد من قدرة البروتوكول على معاقبة الأطراف المسيئة بعد الهجوم.
+إن تجميد العملات يقدم غرضًا مشابهًا لما يستخدمه [التنقيب](/developers/docs/consensus-mechanisms/pow/mining/)، لكنه مختلف من عدة جوانب. ويتطلب التنقيب نفقات أولية طائلة في شكل أجهزة قوية واستهلاك كبير للطاقة، ما يؤدي إلى تحقيق وفورات للتوسع وتعزيز المركزية. ولا يفرض التنقيب أيضًا أي شروط لحجز الأصول كضمان إضافي، ما يحد من قدرة البروتوكول على معاقبة الأطراف المسيئة بعد الهجوم.
وقد جعل الانتقال إلى إثبات الحصة إثيريوم أكثر أمنًا ولا مركزية بالمقارنة مع إثبات العمل. وكلما زاد عدد الأشخاص الذين يشاركون في الشبكة، زادت اللامركزية وأصبحت الشبكة أكثر أمانًا ضد الهجمات.
@@ -72,5 +72,5 @@ summaryPoint3: قدمت سلسلة المنارة منطق إجماع الآرا
## قراءة إضافية
-- [المزيد عن ترقيات إثيريوم في المستقبل](/roapmap/vision)
+- [المزيد عن ترقيات إثيريوم في المستقبل](/roadmap/vision/)
- [المزيد عن إثبات الحصة](/developers/docs/consensus-mechanisms/pos)
diff --git a/public/content/translations/ar/staking/withdrawals/index.md b/public/content/translations/ar/staking/withdrawals/index.md
index b4f652d16b8..18333888f4d 100644
--- a/public/content/translations/ar/staking/withdrawals/index.md
+++ b/public/content/translations/ar/staking/withdrawals/index.md
@@ -154,7 +154,7 @@ eventName="read more">
إذا كنت جزءًا من تجمع الرهان أو تحمل رموز المراهنة المميزة، يجب عليك الرجوع إلى موفر الخدمة الخاص بك للحصول على مزيد من التفاصيل حول كيفية التعامل مع عمليات سحب المراهنة، حيث تعمل كل خدمة بشكل مختلف.
-بشكل عام، يجب أن يتمتع المستخدمون بالحرية في استعادة عملة ETH الأساسية الخاصة بهم التي تمت مراهنتها، أو تغيير موفر خدمة المراهنة الذي يستخدمونه. إذا أصبح عدد مجمع معين كبيرًا جدًّا، فيمكن الخروج من الأموال واستردادها وإعادة رهنها مع موفر خدمة أصغر. أو، إذا جمعت ما يكفي من عملة ETH، فيمكنك المراهنة من المنزل.
+بشكل عام، يجب أن يتمتع المستخدمون بالحرية في استعادة عملة ETH الأساسية الخاصة بهم التي تمت مراهنتها، أو تغيير موفر خدمة المراهنة الذي يستخدمونه. إذا أصبح عدد مجمع معين كبيرًا جدًّا، فيمكن الخروج من الأموال واستردادها وإعادة رهنها مع موفر خدمة أصغر. أو، إذا جمعت ما يكفي من عملة ETH، فيمكنك المراهنة من المنزل.
diff --git a/public/content/translations/bg/roadmap/beacon-chain/index.md b/public/content/translations/bg/roadmap/beacon-chain/index.md
index e1f2ea8eef5..aec7b8266c3 100644
--- a/public/content/translations/bg/roadmap/beacon-chain/index.md
+++ b/public/content/translations/bg/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ summaryPoint3: Бийкън чейн въведе логиката на конс
Бийкън чейн въведе [доказателство-за-залог](/developers/docs/consensus-mechanisms/pos/) в Eтереум. Това поддържа сигурността на Eтереум, а валидаторите печелят повече ETH в процеса. На практика залагането е свързано със залагане на ETH с цел активиране на валидаторския софтуер. Като залагащ вие управлявате софтуер, който създава и валидира нови блокове във веригата.
-Целта на залагането е подобна на тази, която имаше [добиването](/developers/docs/mining/), но се различава по много начини. Добиването изискваше да се правят големи инвестиции предварително под формата на мощен хардуер и консумация на енергия, което доведе до икономии по отношение на мащабируемостта и насърчаваше централизацията. Освен това, при добивът нямаше изисквания за заключване на активи като обезпечение, което ограничава способността на протокола да наказва некоректните участници след атака.
+Целта на залагането е подобна на тази, която имаше [добиването](/developers/docs/consensus-mechanisms/pow/mining/), но се различава по много начини. Добиването изискваше да се правят големи инвестиции предварително под формата на мощен хардуер и консумация на енергия, което доведе до икономии по отношение на мащабируемостта и насърчаваше централизацията. Освен това, при добивът нямаше изисквания за заключване на активи като обезпечение, което ограничава способността на протокола да наказва некоректните участници след атака.
След прехода към доказателство-за-залог Eтереум стана значително по-сигурен и децентрализиран в сравнение с механизма за доказателство-за-работа. Колкото повече хора участват в мрежата, толкова по-децентрализирана и защитена от атаки става тя.
diff --git a/public/content/translations/ca/community/events/index.md b/public/content/translations/ca/community/events/index.md
index 1192af3342a..33cb1e26af7 100644
--- a/public/content/translations/ca/community/events/index.md
+++ b/public/content/translations/ca/community/events/index.md
@@ -4,7 +4,7 @@ description: Com involucrar-se amb la comunitat Ethereum.
lang: ca
---
-## Pròxims esdeveniments {#events}
+# Pròxims esdeveniments {#events}
**Cada mes, hi ha un gran nombre d'esdeveniments Ethereum a tot el món.** Teniu en consideració assistir a un que estigui a prop per conèixer més gent dins la comunitat, descobrir oportunitats de feina i desenvolupar noves habilitats.
diff --git a/public/content/translations/ca/roadmap/beacon-chain/index.md b/public/content/translations/ca/roadmap/beacon-chain/index.md
index 018d7aa98b2..b74e59fa8d3 100644
--- a/public/content/translations/ca/roadmap/beacon-chain/index.md
+++ b/public/content/translations/ca/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ El rol de la cadena de balisa canviarà amb el pas del temps, però és un eleme
La cadena de balisa introduirà la [prova de participació](/developers/docs/consensus-mechanisms/pos/) a Ethereum. És una manera nova d'ajudar a mantenir segur l'Ethereum. Ho podeu concebre com un bé públic que farà Ethereum més saludable i et farà guanyar més ETH en el procés. A la pràctica, haureu d'apostar ETH per tal d'activar el programari de validació. Com a validador, processareu les transaccions i creareu nous blocs a la cadena.
-Apostar i convertir-se en validador és més senzill que [minar](/developers/docs/mining/) (la manera actual de mantenir la xarxa segura). I s'espera que això contribueixi a fer Ethereum més segur a llarg termini. Com més gent participi a la xarxa, més descentralitzada i segura serà davant dels atacs.
+Apostar i convertir-se en validador és més senzill que [minar](/developers/docs/consensus-mechanisms/pow/mining/) (la manera actual de mantenir la xarxa segura). I s'espera que això contribueixi a fer Ethereum més segur a llarg termini. Com més gent participi a la xarxa, més descentralitzada i segura serà davant dels atacs.
Si us interessa ser validador i contribuir a protegir la cadena de balisa, aquí podeu aprendre més sobre les apostes.
diff --git a/public/content/translations/de/community/code-of-conduct/index.md b/public/content/translations/de/community/code-of-conduct/index.md
index a8cb0f0031b..3829b15aa86 100644
--- a/public/content/translations/de/community/code-of-conduct/index.md
+++ b/public/content/translations/de/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Die grundlegenden Standards, die wir für alle Bereiche von ethereu
lang: de
---
+# Verhaltenskodex {#conduct-intro}
+
## Mission {#mission}
Die Entwicklung und Pflege der umfassendsten und barrierefreien Wissensplattform für Ethereum.
@@ -52,7 +54,7 @@ Beispiele für inakzeptables Verhalten von Teilnehmenden:
- Körperliche Gewalt, Androhung körperlicher Gewalt oder Aufforderung zu körperlicher Gewalt jeglicher Art
- Verwendung einer sexualisierten Sprache oder Bildsprache oder Signalisierung unerwünschter sexueller Aufmerksamkeit
-- Sich als eine andere Person auszugeben oder auf andere Weise unredlich zu behaupten, eine Verbindung zu einer Person oder Organisation zu haben.
+- Sich als eine andere Person auszugeben oder auf andere Weise unredlich zu behaupten, eine Verbindung zu einer Person oder Organisation zu haben
- Trolling, beleidigende/abwertende Kommentare und persönliche oder politische Angriffe
- Belästigung anderer Community-Mitglieder in öffentlichen oder privaten Kanälen
- Veröffentlichung privater Informationen anderer, wie z. B. einer physischen oder elektronischen Adresse, ohne ausdrückliche Erlaubnis
diff --git a/public/content/translations/de/community/events/index.md b/public/content/translations/de/community/events/index.md
index 0fa15014662..ea6d7664a1b 100644
--- a/public/content/translations/de/community/events/index.md
+++ b/public/content/translations/de/community/events/index.md
@@ -5,7 +5,7 @@ lang: de
hideEditButton: true
---
-## Kommende Veranstaltungen {#events}
+# Kommende Veranstaltungen {#events}
**Jeden Monat finden auf der ganzen Welt große Ethereum-Veranstaltungen statt.** Besuchen Sie doch eine Veranstaltung in Ihrer Nähe, so lernen Sie andere aus der Community kennen und können sich über mögliche Karrierechancen informieren und neue Kompetenzen aufbauen.
diff --git a/public/content/translations/de/community/get-involved/index.md b/public/content/translations/de/community/get-involved/index.md
index 0e4d4d6ca66..38762ee7236 100644
--- a/public/content/translations/de/community/get-involved/index.md
+++ b/public/content/translations/de/community/get-involved/index.md
@@ -28,7 +28,7 @@ Haben Sie einen Hintergrund in Mathematik, Kryptographie oder Wirtschaftswissens
- Ethereum-Verbesserungsvorschläge formulieren oder prüfen
- Ein EIP schreiben
1. Reichen Sie Ihre Idee auf [Ethereum Magicians](https://ethereum-magicians.org) ein.
- 2. Lesen Sie [EIP-1](https://eip.ethereum.org/EIPS/eip-1) – **Ja, das ist das _ganze_ Dokument**.
+ 2. Lesen Sie [EIP-1](https://eips.ethereum.org/EIPS/eip-1) – **Ja, das ist das _ganze_ Dokument**.
3. Folgen Sie den Anweisungen in EIP-1. Beziehen Sie sich auf die darin enthaltenen Informationen, während Sie Ihren Entwurf schreiben.
- Erfahren Sie, wie Sie ein [EIP Editor](https://eips.ethereum.org/EIPS/eip-5069) werden.
- Sie können direkt in das Peer-Review von EIPs einsteigen. Sehen Sie [Öffnen von PRs mit dem `e-review`-Tag](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Geben Sie technisches Feedback über den `discussion-to`-Link.
@@ -62,7 +62,7 @@ Wenn Sie kein Entwickler sind, ist es nicht ganz so einfach, herauszufinden, wo
### Ethereum-Inhalte in Ihre Muttersprache übersetzen {#translate-ethereum}
- ethereum.org unterhält ein Übersetzungsprogramm, über das die Website und andere Ressourcen in viele verschiedene Sprachen übersetzt werden.
-- Wie Sie sich beteiligen können, erfahren Sie [hier](/Beitrag/Übersetzungsprogramm).
+- Wie Sie sich beteiligen können, erfahren Sie [hier](/contributing/translation-program/).
### Einen Knoten ausführen {#run-a-node}
diff --git a/public/content/translations/de/community/grants/index.md b/public/content/translations/de/community/grants/index.md
index 03ad25bd0f7..0759da1e17b 100644
--- a/public/content/translations/de/community/grants/index.md
+++ b/public/content/translations/de/community/grants/index.md
@@ -15,31 +15,27 @@ Diese Liste wird von unserer Community verwaltet. Wenn Informationen fehlen oder
Diese Programme unterstützen das breit gefächerte Ethereum-Ökosystem, indem sie Finanzierungen für zahlreiche Projekte bereitstellen. Dazu gehören unter anderem Lösungen zu Skalierbarkeit, Community-Aufbau, Sicherheit und Privatsphäre. Diese Fördermaßnahmen sind nicht spezifisch für eine bestimmte Ethereum-Plattform und sind ein guter Ausgangspunkt, wenn Sie unsicher sind.
- [EF-Ökosystem Unterstützungsprogramm](https://esp.ethereum.foundation) - _Finanzierung von Open-Source-Projekten, die Ethereum zugutekommen, mit besonderem Fokus auf universelle Werkzeuge, Infrastruktur, Forschung und öffentliche Güter_
-- [Ethereum RFPs](https://github.com/ethereum/requests-for-proposals) – _Ausschreibungen der Ethereum Foundation für Arbeiten und Projekte im Ethereum-Ökosystem_
- [MetaCartel](https://www.metacartel.org/grants/) - _DApp-Entwicklung, DAO-Erstellung_
-- [Moloch DAO](https://www.molochdao.com/) – _Datenschutz, Layer-2-Skalierung, Kundensicherheit und mehr_
-- [Offene Zuschüsse](https://opengrants.com/explore)
-- [DAO-Stipendien](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _Google-Tabelle der Organisationen, die Stipendien anbieten_
-- [Crunchbase für Web3-Grants](https://www.cryptoneur.xyz/web3-grants) - _Filter und suche nach Grants nach Kategorie, Anwendungsfall, Betrag und mehr. Hilf anderen dabei, die richtige Zuwendung zu finden._
+- [Moloch DAO](https://www.molochdao.com/) – _Datenschutz, Layer-2-Skalierung, Client-Sicherheit und mehr_
+- [DAO-Zuschüsse](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) – _Google-Tabelle der Organisationen, die Zuschüsse anbieten_
+- [Crunchbase für Web3-Zuschüsse](https://www.cryptoneur.xyz/web3-grants) – _Filtere und suche nach Zuschüssen nach Kategorie, Anwendungsfall, Betrag und mehr. Hilf anderen dabei, den richtigen Zuschuss zu finden._
- [Akademische Stipendien](https://esp.ethereum.foundation/academic-grants) – _Stipendien zur Untstützung akademischer Arbeiten in Bezug auf Ethereum_
+- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks hat ein umfassendes Verzeichnis aller Zuschüsse, Ausschreibungen und Bug-Bounties zusammengestellt._
## Projektspezifisch {#project-specific}
Diese Projekte haben ihre eigenen Zuschüsse für Projektvorhaben zur Entwicklung und Erprobung ihrer eigenen Technologie geschaffen.
- [Aave-Zuschussprogramm](https://aavegrants.org/) – _[Aave](https://aave.com/) Grants DAO_
-- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _[Balancer](https://balancer.fi/)-Ökosystemfonds_
+- [Balancer](https://quark-ceres-740.notion.site/Balancer-Grants-938f1b979810427f8d903a904315da41) – _[Balancer](https://balancer.fi/)-Ökosystemfonds_
- [Chainlink-Förderprogramm](https://chain.link/community/grants) - _[Chainlink](https://chain.link/) Gemeinschaftsförderungen_
-- [Programm für Verbundzuschüsse](https://compoundgrants.org/) – _[Verbund](https://compound.finance/)-Finanzökosystem_
-- [Decentraland-Zuschussprogramm](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) DAO Metaverse_
-- [Lido Ecosystem Grants Organisation (LEGO)](https://lego.lido.fi/) – _[Lido](https://lido.fi/)-Finanzökosystem_
-- [MetaMask-Programm](https://metamaskgrants.org/) – _Von Mitarbeitern geleitete DAO für[MetaMask](https://metamask.io/)-Stipendien_
-- [mStable-Zuschussprogram](https://docs.mstable.org/advanced/grants-program) – _[mStable](https://mstable.org/)-Gemeinschaft_
-- [SKALE Network-Förderprogramm](https://skale.space/developers#grants) – _[SKALE Network](https://skale.space/)-Ökosystem_
-- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _[The Graph](https://thegraph.com/)-Ökosystem_
-- [UMA Grants Program](https://grants.umaproject.org/) – _[UMA](https://umaproject.org/)-Entwicklerunterstützung_
-- [Uniswap-Zuschussprogramm](https://www.unigrants.org/) – _[Uniswap](https://uniswap.org/)-Community_
-- [Web3-Förderung](https://web3grants.net) – _Eine umfangreiche Liste von Web3-/Krypto-verwandten Förderprogrammen_
+- [Decentraland-Zuschussprogramm](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/)-DAO-Metaverse_
+- [Lido Ecosystem Grants Organisation (LEGO)](https://lido.fi/lego) – _[Lido](https://lido.fi/)-Finanzökosystem_
+- [MetaMask-Programm](https://metamaskgrants.org/) – _Mitarbeitergeleitete DAO für[MetaMask](https://metamask.io/)-Zuschüsse_
+- [SKALE-Network-Förderprogramm](https://skale.space/developers#grants) – _[SKALE-Network](https://skale.space/)-Ökosystem_
+- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _[The-Graph](https://thegraph.com/)-Ökosystem_
+- [Uniswap-Förderprogramm](https://www.uniswapfoundation.org/apply-for-a-grant) – _[Uniswap](https://uniswap.org/)-Community_
+- [Web3-Zuschüsse](https://web3grants.net) – _Eine umfangreiche Liste von Förderprogrammen mit Bezug zu Web3/Krypto_
## Quadratische Finanzierung {#quadratic-funding}
diff --git a/public/content/translations/de/community/language-resources/index.md b/public/content/translations/de/community/language-resources/index.md
index a75323bbcd7..2afd16f4719 100644
--- a/public/content/translations/de/community/language-resources/index.md
+++ b/public/content/translations/de/community/language-resources/index.md
@@ -72,7 +72,7 @@ Wenn Sie zweisprachig sind und uns helfen möchten, mehr Menschen zu erreichen,
- [Gwei.cz](https://gwei.cz) - Lokale Gemeinschaft für Web3, die akademische Inhalte erstellt und Veranstaltungen organisiert, sowohl online als auch persönlich
- [Gwei.cz Leitfaden](https://prirucka.gwei.cz/) - Ethereum Leitfaden für Anfänger
- [DAO Leitfaden](https://dao.gwei.cz/) - Leitfaden über DAOs für Anfänger
-- [Ethereum meistern](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) - Ethereum meistern auf Tschechisch
+- [Ethereum meistern](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) – Ethereum meistern auf Tschechisch
### Französisch {#fr}
diff --git a/public/content/translations/de/community/online/index.md b/public/content/translations/de/community/online/index.md
index 567cadbb4c1..66d0cdcdeb6 100644
--- a/public/content/translations/de/community/online/index.md
+++ b/public/content/translations/de/community/online/index.md
@@ -24,13 +24,13 @@ Hunderttausende von Ethereum-Enthusiasten treffen sich in diesen Online-Foren, u
Ethereum Cat Herders - Gemeinschaft orientiert am Angebot von Projekt-Management-Unterstützung für Ethereum-EntwicklerEthereum-Hacker - Von ETHGlobal geführter Discord Chat: Eine Online-Gemeinschaft für Ethereum-Hacker auf der ganzen WeltCryptoDevs - Auf Ethereum Entwicklung fokussierte Discord-Community
-EthStaker Discord – Beratung, Bildung, Unterstützung und Ressourcen für bestehende und potenzielle Staker auf Community-Ebene
-Ethereum.org Website-Team - Kommen Sie vorbei and schreiben Sie mit dem Team und anderen aus der Gemeinschaft über Ethereum.org Web-Entwicklung und Design
+EthStaker Discord – Beratung, Bildung, Unterstützung und Ressourcen für bestehende und potenzielle Staker auf Community-Ebene
+Ethereum.org Website-Team - Kommen Sie vorbei and schreiben Sie mit dem Team und anderen aus der Gemeinschaft über Ethereum.org Web-Entwicklung und DesignMatos Discord - Web3-Creator-Community, wo sich Entwickler, industrielle Führer, und Ethereum Enthusiasten aufhalten. Wir sind begeistert von Web3-Entwicklung, Design und Kultur. Kommen Sie mit uns bauen.
-Solidity-Gitter - Unterhaltungen über Solidity-Entwicklung (Gitter)
+Solidity-Gitter - Unterhaltungen über Solidity-Entwicklung (Gitter)Solidity-Matrix - Unterhaltungen über Solidity-Entwicklung (Matrix)
-Ethereum Stack Exchange _– Forum für Fragen und Antworten_
-Peeranha _– dezentrales Forum für Fragen und Antworten_
+Ethereum Stack Exchange *– Forum für Fragen und Antworten*
+Peeranha *– dezentrales Forum für Fragen und Antworten*
## YouTube und Twitter {#youtube-and-twitter}
diff --git a/public/content/translations/de/community/research/index.md b/public/content/translations/de/community/research/index.md
index fefdfc6193d..28abf078d3b 100644
--- a/public/content/translations/de/community/research/index.md
+++ b/public/content/translations/de/community/research/index.md
@@ -124,7 +124,7 @@ Die sicheren und leistungsfähigen Brücken sind ein bestimmter Bereich der Eben
- [Einführung in Blockchain-Brücken](/bridges/)
- [Vitalik zu Brücken](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
- [Artikel zu Blockchain-Brücken](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8)
-- [Der Wert von Brücken]()
+- [Der Wert von Brücken](https://dune.com/eliasimos/Bridge-Away-(from-Ethereum))
#### Aktuelle Forschung {#recent-research-3}
@@ -156,7 +156,7 @@ Das Sharding war auf der Ethereum-Blockchain lange Teil des Entwicklungs-Fahrpla
#### Aktuelle Forschung {#recent-research-5}
-- [ecdsa zu FGPAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
+- [ecdsa auf FPGAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
## Sicherheit {#security}
@@ -346,7 +346,6 @@ Die Tools für Ethereum-Entwickler verbessern sich rasant. In diesem Bereich gib
- [Entwickler-Frameworks](/developers/docs/frameworks/)
- [Tools-Liste für Entwickler der Konsensebene](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Tokenstandards](/developers/docs/standards/tokens/)
-- [Biastek: Tools für Ethereum](https://biastek.com/ethereum-tools/)
- [CryptoDevHub: EVM-Tools](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
#### Aktuelle Forschung {#recent-research-17}
diff --git a/public/content/translations/de/community/support/index.md b/public/content/translations/de/community/support/index.md
index 6d1426d2b70..1b2d0b2f056 100644
--- a/public/content/translations/de/community/support/index.md
+++ b/public/content/translations/de/community/support/index.md
@@ -30,7 +30,7 @@ Haben Sie Probleme mit Ihrer Wallet? Die meisten Wallets haben spezielle Support
- [Argent](https://support.argent.xyz/hc/)
- [MyEtherWallet](https://help.myetherwallet.com/)
-_Das ist keine vollständige Liste. Brauchen Sie Hilfe bei der Suche nach Unterstützung für eine bestimmte Wallet? Treten Sie dem [ethereum.org-Discord](https://discord.gg/ethereum-org) bei, dann versuchen wir, Ihnen zu helfen._
+_Das ist keine vollständige Liste. Brauchen Sie Hilfe bei der Suche nach Unterstützung für eine bestimmte Wallet? Treten Sie dem [ethereum.org-Discord](https://discord.gg/rZz26QWfCg) bei, dann versuchen wir, Ihnen zu helfen._
Suchen Sie eine Ethereum-Wallet? [Sehen Sie sich unsere vollständige Liste der Ethereum-Wallets an](/wallets/find-wallet/).
@@ -39,7 +39,7 @@ Suchen Sie eine Ethereum-Wallet? [Sehen Sie sich unsere vollständige Liste der
Erstellen kann durchaus schwer sein. Hier finden Sie einige Breiche mit Schwerpunkt auf Entwicklung mit erfahrenen Ethereum-Entwicklern, die Ihnen gerne helfen.
- [Alchemy University](https://university.alchemy.com/#starter_code)
-- [CryptoDevs-Discord](https://discord.gg/Z9TA39m8Yu)
+- [CryptoDevs-Discord](https://discord.com/invite/5W5tVb3)
- [Ethereum StackExchange](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Web3 University](https://www.web3.university/)
@@ -53,7 +53,7 @@ Bezieht sich Ihre Frage auf ein bestimmtes Tool, Projekt oder eine Bibliothek? D
Hier sind einige beliebte Beispiele:
-- [Solidity](https://gitter.im/ethereum/solidity)
+- [Solidity](https://gitter.im/ethereum/solidity/)
- [ethers.js](https://discord.gg/6jyGVDK6Jx)
- [web3.js](https://discord.gg/GsABYQu4sC)
- [Hardhat](https://discord.gg/xtrMGhmbfZ)
@@ -65,7 +65,7 @@ Hier sind einige beliebte Beispiele:
Wenn Sie einen Knoten oder Validator betreiben, finden Sie hier einige Communitys, die Ihnen den Einstieg erleichtern.
-- [EthStaker-Discord](https://discord.io/ethstaker)
+- [EthStaker-Discord](https://discord.gg/ethstaker)
- [EthStaker-Reddit](https://www.reddit.com/r/ethstaker)
Die meisten Teams, die Ethereum-Clients entwickeln, haben auch eigene, öffentlich zugängliche Bereiche, in denen Sie Unterstützung erhalten und Fragen stellen können.
diff --git a/public/content/translations/de/contributing/design-principles/index.md b/public/content/translations/de/contributing/design-principles/index.md
index 44da51c3434..0a38ba485db 100644
--- a/public/content/translations/de/contributing/design-principles/index.md
+++ b/public/content/translations/de/contributing/design-principles/index.md
@@ -10,7 +10,7 @@ description: Die Grundsätze hinter den Entscheidungen über Design und Inhalt v
Unsere Grundsätze prägen das Erscheinungsbild der Website und den Inhalt.
-Machen Sie sich mit den Informationen vertraut, bevor Sie einen [Beitrag zu ethereum.org](/beitrag/) leisten.
+Machen Sie sich mit den Informationen vertraut, bevor Sie einen [Beitrag zu ethereum.org](/contributing/) leisten.
## Was sind Designgrundsätze? {#ways-to-contribute}
diff --git a/public/content/translations/de/contributing/design/adding-design-resources/index.md b/public/content/translations/de/contributing/design/adding-design-resources/index.md
index f295e7f13d0..6cc547b3500 100644
--- a/public/content/translations/de/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/de/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Richtlinien und Anforderungen zur Gewährleistung der Qualität von
lang: de
---
+# Design-Ressourcen hinzufügen {#adding-design-resources}
+
Jeder kann neue Designmaterialien für die Seite [Design und UX in web3](/developers/docs/design-and-ux/) vorschlagen.
Seien Sie sich bewusst, dass der Schwerpunkt dieser Seite darauf liegt, angehenden web3-Designern einen Mehrwert zu bieten. Der Designbereich ist nicht dazu da, um für Ihre Dienstleistungen, Produkte oder Plattformen zu werben.
diff --git a/public/content/translations/de/contributing/design/index.md b/public/content/translations/de/contributing/design/index.md
index 9a5a771bae7..9a0bd796860 100644
--- a/public/content/translations/de/contributing/design/index.md
+++ b/public/content/translations/de/contributing/design/index.md
@@ -12,7 +12,7 @@ Letztendlich ist das eine großartige Möglichkeit, ein vielfältiges und beeind
## Wie kann ich etwas beitragen?
-### Geben Sie Feedback zu frühen Design-Prototypen {#design-critique}
+### Geben Sie Feedback zu frühen Design-Prototypen {#design-critique}
Manchmal brauchen wir Hilfe beim Testen unserer "rohen" Ideen. Das ist eine großartige Möglichkeit, auch ohne technische Kenntnisse einen Beitrag zu leisten.
@@ -20,7 +20,7 @@ Manchmal brauchen wir Hilfe beim Testen unserer "rohen" Ideen. Das ist eine gro
2. Sie werden durch die Entwürfe geführt und können über die Kommentarfunktion Feedback geben.
3. Das Ergebnis wird in einem GitHub-Issue geteilt und dann vom Team abgeschlossen.
-### Teilnahme an Umfragen {#answer-surveys}
+### Teilnahme an Umfragen {#answer-surveys}
Geben Sie Feedback zu unserer Website:
@@ -28,7 +28,7 @@ Geben Sie Feedback zu unserer Website:
2. Klicken Sie auf das Feedback-Widget in der rechten unteren Ecke und beantworten Sie Fragen zum Design und zum Inhalt.
3. Konzentrieren Sie sich auf die Fragen zum freien Format.
-### Finden Sie designbezogene Probleme auf der Website und melden Sie diese. {#report-design-issues}
+### Finden Sie designbezogene Probleme auf der Website und melden Sie diese. {#report-design-issues}
Ethereum.org ist eine schnell wachsende Website mit vielen Funktionen und Inhalten. Einige der Benutzeroberflächen können leicht veraltet sein oder verbessert werden. Wenn Ihnen ein solches Problem auffällt, melden Sie es bitte, damit wir darauf aufmerksam werden.
@@ -36,7 +36,7 @@ Ethereum.org ist eine schnell wachsende Website mit vielen Funktionen und Inhalt
2. Machen Sie Screenshots und Notizen, wenn Sie visuelle oder UX-Probleme sehen.
3. Melden Sie die gefundenen Probleme in einem [Fehlerbericht](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Designänderungen vorschlagen {#propose-design-changes}
+### Designänderungen vorschlagen {#propose-design-changes}
Wenn Sie sich mit Design-Herausforderungen wohlfühlen, können Sie unser GitHub Issues Board besuchen und nach [designbezogenen Issues](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) filtern.
@@ -45,7 +45,7 @@ Wenn Sie sich mit Design-Herausforderungen wohlfühlen, können Sie unser GitHub
3. Schlagen Sie die Lösung in dem entsprechenden GitHub-Thema vor oder erstellen Sie ein [neues Thema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request).
4. Warten Sie auf die Überprüfung durch das Designteam.
-### Das Designsystem gemeinsam aufbauen {#Contribute-to-design-system}
+### Das Designsystem gemeinsam aufbauen {#Contribute-to-design-system}
Mit unserem Designsystem macht das Entwerfen von ethereum.org Spaß und ist einfach. Wenn Sie ein erfahrener Designer sind, können Sie uns helfen, viele Komponenten für die Website vorzubereiten.
@@ -56,7 +56,7 @@ Mit unserem Designsystem macht das Entwerfen von ethereum.org Spaß und ist einf
5. Das Designteam wird es dann überprüfen.
6. Das Designteam wird die Änderungen in die Hauptdatei einarbeiten und die Datei in der Community veröffentlichen.
-### Verfassen Sie designbezogene Inhalte auf der Website. {#write-design-articles}
+### Verfassen Sie designbezogene Inhalte auf der Website. {#write-design-articles}
Die Ethereum-Entwickler-Community ist stark, aber die Design-Community hinkt etwas hinterher. Wenn Sie ein Designer mit Web3-Kenntnissen sind, ziehen Sie bitte in Erwägung, Ihre Erkenntnisse mit der größeren Community zu teilen, damit wir alle gemeinsam wachsen und uns verbessern können; wir haben eine [Seite über Design für Ethereum](/developers/docs/design-and-ux/), zu der Sie beitragen können. Sie können auch unsere [Richtline zur Listung](/contributing/design/adding-design-resources) ansehen.
@@ -66,7 +66,7 @@ Die Ethereum-Entwickler-Community ist stark, aber die Design-Community hinkt etw
4. Sobald die Anfrage genehmigt ist, schreiben Sie den Inhalt.
5. Reichen Sie ihn im entsprechenden GH-Thema ein.
-### Gestalten Sie neue Illustrationen. {#prepare-illustrations}
+### Gestalten Sie neue Illustrationen. {#prepare-illustrations}
Visualisierungen sind eines der wirkungsvollsten Instrumente zur Erklärung abstrakter Themen. Der Einsatz von Diagrammen und Infografiken birgt ein enormes Potenzial. Schließlich kann ein Bild mehr als tausend Worte sagen.
diff --git a/public/content/translations/de/decentralized-identity/index.md b/public/content/translations/de/decentralized-identity/index.md
index 62e32e4ee06..e4214ec592e 100644
--- a/public/content/translations/de/decentralized-identity/index.md
+++ b/public/content/translations/de/decentralized-identity/index.md
@@ -161,6 +161,7 @@ Es gibt viele ehrgeizige Projekte, die Ethereum als Grundlage für dezentrale Id
- **[Proof of Humanity](https://www.proofofhumanity.id)** - _Proof of Humanity (Beweis des Menschseins) ist ein auf Ethereum basierendes System zur Überprüfung der sozialen Identität._
- **[BrightID](https://www.brightid.org/)**- _Ein dezentralisiertes quelloffenes Netzwerk zur sozialen Identität, das versucht, die Identitätsüberprüfung durch die Schaffung und Analyse eines sozialen Diagramms zu reformieren._
- **[Personennachweis-Passport](https://proofofpersonhood.com/)** - _Ein dezentraler digitaler Identitätsaggregator._
+- **[walt.id](https://walt.id)** — _Open-Source-Infrastruktur für dezentrale Identität und Wallets, die es Entwicklern und Organisationen ermöglicht, selbstbestimmte Identität und NFTs/SBTs zu nutzen._
## Weiterführende Informationen {#further-reading}
@@ -170,6 +171,7 @@ Es gibt viele ehrgeizige Projekte, die Ethereum als Grundlage für dezentrale Id
- [Was ist Ethereum ERC725? Eigenständiges Identitätsmanagement in der Blockchain](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam-Stadt_
- [Wie die Blockchain das Problem der digitalen Identität lösen könnte](https://time.com/6142810/proof-of-humanity/)— _Andrew R. Chow_
- [Was sind dezentralisierte Identitäten und warum sollten sie Sie interessieren?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [Einführung in die dezentrale Identität](https://walt.id/white-paper/digital-identity) – _Dominik Beron_
### Videos {#videos}
@@ -177,9 +179,11 @@ Es gibt viele ehrgeizige Projekte, die Ethereum als Grundlage für dezentrale Id
- [Anmelden mit Ethereum und dezentralisierter Identität mit Ceramic, IDX, React, und 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _YouTube-Tutorial zum Aufbau eines Identitätsmanagementsystems zum Erstellen, Lesen und Aktualisieren des Profils von Benutzern mit ihrer Ethereum-Wallet von Nader Dabit_
- [BrightID - Dezentralisierte Identität auf Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Podcast Bankless Episode über BrightID, eine dezentrale Identitätslösung für Ethereum_
- [Das Off-Chain-Internet: Dezentralisierte Identität & Überprüfbare Berechtigungsnachweise](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — EthDenver 2022 Präsentation von Evin McMullen
+- [Erklärung zu überprüfbaren Anmeldeinformationen](https://www.youtube.com/watch?v=ce1IdSr-Kig) – YouTube-Erklärvideo mit Demo von Tamino Baumann
### Communities {#communities}
- [ERC-725 Allianz auf GitHub](https://github.com/erc725alliance) — _Unterstützer des ERC725-Standards zur Identitätsverwaltung in der Ethereum-Blockchain_
- [SpruceID Discord Server](https://discord.com/invite/Sf9tSFzrnt) — _Community für Enthusiasten und Entwickler, die am Anmelden mit Ethereum arbeiten_
- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Eine Community von Entwicklern, die zum Aufbau eines Rahmens für überprüfbare Daten für Anwendungen beitragen_
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) – _Eine Gemeinschaft von Entwicklern und Erstellern, die an Anwendungsfällen für dezentrale Identität in verschiedenen Branchen arbeiten_
diff --git a/public/content/translations/de/desci/index.md b/public/content/translations/de/desci/index.md
index 1afff22ee61..058bf9280b8 100644
--- a/public/content/translations/de/desci/index.md
+++ b/public/content/translations/de/desci/index.md
@@ -103,7 +103,7 @@ Erkunden Sie Projekte und werden Sie Teil der DeSci-Gemeinschaft.
- [OceanDAO: DAO regelte die Finanzierung der datenbezogenen Wissenschaft](https://oceanprotocol.com/dao)
- [OpScientia: offene dezentrale wissenschaftliche Workflows](https://opsci.io/research/)
- [LabDAO: Falten eines Proteins in Silizium](https://alphafodl.vercel.app/)
-- [Bio.xyz: Erhalten Sie Mittel für Ihr Biotech-DAO oder desci-Projekt](https://www.molecule.to/)
+- [Bio.xyz: Erhalten Sie Mittel für Ihr Biotech-DAO oder desci-Projekt](https://www.bio.xyz/)
- [ResearchHub: Poste ein wissenschaftliches Ergebnis und führe ein Gespräch mit Partnern](https://www.researchhub.com/)
- [VitaDAO: Langfristige Forschung finanziert durch gesponserte Forschungsverträge](https://www.vitadao.com/)
- [Flamming-Protokoll: Open-Source-Datenwirtschaft, die die kollaborative biomedizinische Entdeckung fördert](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
diff --git a/public/content/translations/de/developers/docs/apis/json-rpc/index.md b/public/content/translations/de/developers/docs/apis/json-rpc/index.md
index f4f8f0ac6be..3a5a990326b 100644
--- a/public/content/translations/de/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/de/developers/docs/apis/json-rpc/index.md
@@ -575,7 +575,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Das Abrufen eines Elements aus der Karte ist schwieriger. Die Position eines Elements in der Karte wird berechnet mit:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Das bedeutet, um den Speicher auf pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] abzurufen, müssen wir die Position berechnen mit:
diff --git a/public/content/translations/de/developers/docs/blocks/index.md b/public/content/translations/de/developers/docs/blocks/index.md
index 71c2cbeb275..3b2490d6203 100644
--- a/public/content/translations/de/developers/docs/blocks/index.md
+++ b/public/content/translations/de/developers/docs/blocks/index.md
@@ -40,7 +40,7 @@ Proof-of-Stake bedeutet Folgendes:
Ein Block enthält viele verschiedene Informationen. Auf oberster Ebene enthält ein Block folgende Felder:
| Feld | Beschreibung |
-| :------------------ | :---------------------------------------------------------- |
+|:------------------- |:----------------------------------------------------------- |
| `Zeitspanne (Slot)` | Der Slot, zu dem der Block gehört |
| `proposer_index` | Die ID des Validators, der den Block vorschlägt |
| `parent_root` | Der Hash des vorausgehenden Blocks |
@@ -50,7 +50,7 @@ Ein Block enthält viele verschiedene Informationen. Auf oberster Ebene enthält
Der `Body` eines Blocks enthält selbst mehrere Felder:
| Feld | Beschreibung |
-| :------------------- | :------------------------------------------------------------------------------- |
+|:-------------------- |:-------------------------------------------------------------------------------- |
| `randao_reveal` | Ein Wert, der zur Auswahl des nächsten Block-Vorschlagenden verwendet wird |
| `eth1_data` | Informationen zum Einzahlungsvertrag |
| `graffiti` | Beliebige Daten, die zum Markieren von Blöcken verwendet werden |
@@ -65,7 +65,7 @@ Der `Body` eines Blocks enthält selbst mehrere Felder:
Das Feld `attestations` enthält eine Liste aller Attestierungen im Block. Attestierungen haben ihren eigenen Datentyp der mehrere Datenteile enthält. Jede Attestierung enthält:
| Feld | Beschreibung |
-| :----------------- | :------------------------------------------------------------------------ |
+|:------------------ |:------------------------------------------------------------------------- |
| `aggregation_bits` | Eine Liste der Validatoren, die an dieser Attestierung teilgenommen haben |
| `daten` | Ein Container mit mehreren Unterfeldern |
| `signature` | Kollektivsignatur aller bescheinigenden Validatoren |
@@ -73,7 +73,7 @@ Das Feld `attestations` enthält eine Liste aller Attestierungen im Block. Attes
Das Feld `data` in `attestation` enthält folgende Elemente:
| Feld | Beschreibung |
-| :------------------ | :---------------------------------------------------------- |
+|:------------------- |:----------------------------------------------------------- |
| `Zeitspanne (Slot)` | Der Slot, auf den sich die Attestierung bezieht |
| `Index` | Indizes für die bescheinigenden Validatoren |
| `beacon_block_root` | Der Stamm-Hash des Beacon-Blocks, der dieses Objekt enthält |
@@ -85,7 +85,7 @@ Die Ausführung der Transaktionen in der `execution_payload` aktualisiert den gl
Der `execution_payload_header` enthält die folgenden Felder:
| Feld | Beschreibung |
-| :-------------------- | :------------------------------------------------------------------------------------ |
+|:--------------------- |:------------------------------------------------------------------------------------- |
| `übergeordneter_hash` | Hash des übergeordneten Blocks |
| `fee_recipient` | Kontoadresse, an die die Transaktionsgebühren gezahlt werden |
| `state_root` | Stamm-Hash für den globalen Zustand nach der Anwendung der Änderungen in diesem Block |
@@ -105,7 +105,7 @@ Der `execution_payload_header` enthält die folgenden Felder:
Die `execution_payload` selbst enthält Folgendes (das ist identisch zum Header, außer dass es anstatt des Stamm-Hash der Transaktionen die Liste der Transaktions- und Abhebungsinformationen enthält) :
| Feld | Beschreibung |
-| :-------------------- | :------------------------------------------------------------------------------------ |
+|:--------------------- |:------------------------------------------------------------------------------------- |
| `übergeordneter_hash` | Hash des übergeordneten Blocks |
| `fee_recipient` | Kontoadresse, an die die Transaktionsgebühren gezahlt werden |
| `state_root` | Stamm-Hash für den globalen Zustand nach der Anwendung der Änderungen in diesem Block |
@@ -125,7 +125,7 @@ Die `execution_payload` selbst enthält Folgendes (das ist identisch zum Header,
Die Liste `withdrawals` enthält `withdrawal`-Objekte, die wie folgt strukturiert sind:
| Feld | Beschreibung |
-| :--------------- | :--------------------------------------------- |
+|:---------------- |:---------------------------------------------- |
| `address` | Kontoadresse, für die die Abhebung erfolgt ist |
| `amount` | Abgehobener Betrag |
| `Index` | Abhebungsindexwert |
diff --git a/public/content/translations/de/developers/docs/consensus-mechanisms/pow/mining/index.md b/public/content/translations/de/developers/docs/consensus-mechanisms/pow/mining/index.md
index ac42edb3de6..6158aad9bcb 100644
--- a/public/content/translations/de/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/public/content/translations/de/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -16,7 +16,7 @@ Mining ist der Prozess zur Erstellung eines Blocks aus Transaktionen, der zur Et
Ethereum verwendet derzeit, genau wie Bitcoin, einen [Proof-of-Work (PoW)](/developers/docs/consensus-mechanisms/pow/)-Konsensmechanismus. Mining ist das Lebenselixier des Proof-of-Work. Ethereum-Miner (Computer, die eine Software ausführen) nutzen ihre Zeit und Rechenleistung zur Verarbeitung von Transaktionen und Erstellung von Blöcken.
- Proof-of-Stake wird im Laufe des nächsten Jahres Mining und Proof-of-Work ersetzen. Du kannst schon heute mit dem Staking deiner ETH beginnen. Mehr zum Staking
+ Proof-of-Stake wird im Laufe des nächsten Jahres Mining und Proof-of-Work ersetzen. Du kannst schon heute mit dem Staking deiner ETH beginnen. Mehr zum Staking
## Warum gibt es Miner? {#why-do-miners-exist}
diff --git a/public/content/translations/de/developers/docs/evm/index.md b/public/content/translations/de/developers/docs/evm/index.md
index 6204d6d4187..15b14e94051 100644
--- a/public/content/translations/de/developers/docs/evm/index.md
+++ b/public/content/translations/de/developers/docs/evm/index.md
@@ -10,7 +10,7 @@ Das Ethereum-Protokoll selbst dient ausschließlich dem Zweck, den kontinuierlic
## Voraussetzungen {#prerequisites}
-Um den EVM zu verstehen, sind ein paar grundlegende Kenntnisse der gängigen Informatikterminologie wie [Bytes](https://wikipedia.org/wiki/Byte), [Speicher](https://wikipedia.org/wiki/Computer_memory) und [Stack]() notwendig. Es wäre auch hilfreich, wenn Sie sich mit Kryptografie-/Blockchain-Konzepten wie [Hash-Funktionen](https://wikipedia.org/wiki/Cryptographic_hash_function) und dem [Merkle-Baum](https://wikipedia.org/wiki/Merkle_tree) auskennen.
+Um den EVM zu verstehen, sind ein paar grundlegende Kenntnisse der gängigen Informatikterminologie wie [Bytes](https://wikipedia.org/wiki/Byte), [Speicher](https://wikipedia.org/wiki/Computer_memory) und [Stack](https://wikipedia.org/wiki/Stack_(abstract_data_type)) notwendig. Es wäre auch hilfreich, wenn Sie sich mit Kryptografie-/Blockchain-Konzepten wie [Hash-Funktionen](https://wikipedia.org/wiki/Cryptographic_hash_function) und dem [Merkle-Baum](https://wikipedia.org/wiki/Merkle_tree) auskennen.
## Vom Ledger zur Zustandsmaschine {#from-ledger-to-state-machine}
@@ -46,7 +46,7 @@ Die EVM wird als [Stackmaschine](https://wikipedia.org/wiki/Stack_machine) mit e
Während der Ausführung behält die EVM einen transienten _-Speicher_ (als wortadressiertes Byte-Array), der zwischen Transaktionen nicht vorhanden ist.
-Verträge enthalten jedoch eine Merkle-Patricia*-Speicher*-Trie (als wortadressierbares Wort-Array), mit der das betreffende Konto und ein Teil des globalen Zustands verbunden sind.
+Verträge enthalten jedoch eine Merkle-Patricia_-Speicher_-Trie (als wortadressierbares Wort-Array), mit der das betreffende Konto und ein Teil des globalen Zustands verbunden sind.
Kompilierter Smart-Contract-Bytecode wird als eine Anzahl von EVM-[Opcodes ausgeführt](/developers/docs/evm/opcodes), die standardmäßige Stackoperationen wie `XOR`, `UND`, `ADD`, `SUB` etc. ausführen. Die EVM implementiert auch eine Reihe von Blockchain-spezifischen Stack-Operationen, wie `ADDRESS`, `BALANCE`, `BLOCKHASH` usw.
@@ -64,6 +64,7 @@ Während der siebenjährigen Geschichte von Ethereum hat die EVM mehrere Revisio
- [evmone](https://github.com/ethereum/evmone) - _C++_
- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
- [eEVM](https://github.com/microsoft/eevm) - _C++_
+- [revm](https://github.com/bluealloy/revm) - _Rust_
## Weiterführende Informationen {#further-reading}
diff --git a/public/content/translations/de/developers/docs/evm/opcodes/index.md b/public/content/translations/de/developers/docs/evm/opcodes/index.md
index f6f6ab2d273..a8ab5e1f52d 100644
--- a/public/content/translations/de/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/de/developers/docs/evm/opcodes/index.md
@@ -14,157 +14,157 @@ Für Operationen mit dynamischen Gaskosten, siehe [gas.md](https://github.com/wo
💡 Kurztipp: Um ganze Zeilen einzusehen, verwenden Sie `[shift] + scroll`, um horizontal auf dem Desktop zu scrollen.
-| Stack | Name | Gas | Anfangs-Stack | Ergebnis-Stack | Speicher | Anmerkungen |
-| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
-| 00 | STOP | 0 | | | | halt execution |
-| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
-| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
-| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
-| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
-| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
-| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
-| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
-| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
-| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
-| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
-| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
-| 0C-0F | _invalid_ | | | | | |
-| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
-| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
-| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
-| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
-| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
-| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
-| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
-| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
-| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
-| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
-| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
-| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
-| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
-| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
-| 1E-1F | _invalid_ | | | | | |
-| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
-| 21-2F | _invalid_ | | | | | |
-| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
-| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
-| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
-| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
-| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
-| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
-| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
-| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
-| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
-| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
-| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
-| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
-| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
-| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
-| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
-| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `Hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
-| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
-| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
-| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
-| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
-| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
-| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
-| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
-| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
-| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
-| 49-4F | _invalid_ | | | | | |
-| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
-| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
-| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
-| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
-| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
-| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
-| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
-| 58 | PC | 2 | `.` | `$pc` | | program counter |
-| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
-| 5A | GAS | 2 | `.` | `gasRemaining` | | |
-| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
-| 5C-5E | _invalid_ | | | | | |
-| 5F | PUSH0 | 2 | `.` | `uint8` | | Bringen Sie den konstanten Wert 0 in den Stack ein |
-| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
-| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
-| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
-| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
-| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
-| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
-| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
-| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
-| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
-| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
-| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
-| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
-| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
-| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
-| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
-| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
-| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
-| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
-| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
-| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
-| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
-| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
-| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
-| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
-| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
-| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
-| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
-| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
-| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
-| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
-| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
-| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
-| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
-| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
-| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
-| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
-| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
-| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
-| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
-| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
-| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
-| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
-| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
-| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
-| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
-| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
-| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
-| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
-| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
-| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
-| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
-| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
-| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
-| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
-| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
-| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
-| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
-| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
-| A5-EF | _invalid_ | | | | | |
-| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
-| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Stack | Name | Gas | Anfangs-Stack | Ergebnis-Stack | Speicher | Anmerkungen |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `Hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | Bringen Sie den konstanten Wert 0 in den Stack ein |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/de/developers/docs/gas/index.md b/public/content/translations/de/developers/docs/gas/index.md
index b669b72079d..a368ee37592 100644
--- a/public/content/translations/de/developers/docs/gas/index.md
+++ b/public/content/translations/de/developers/docs/gas/index.md
@@ -55,7 +55,7 @@ Jeder Block hat seine eigene Basisgebühr, welche als reservierter Preis erschei
Die Grundgebühr wird anhand einer Formel berechnet, die die Größe des vorherigen Blocks (die für alle Transaktionen verwendete Gasmenge) mit der Zielgröße vergleicht. Die Grundgebühr erhöht sich um maximal 12,5 % pro Block, wenn die Zielblockgröße überschritten wird. Dieses exponentielle Wachstum macht es wirtschaftlich unrentabel, die Blockgröße unbegrenzt hoch zu halten.
| Blocknummer | Enthaltenes Gas | Gebührenerhöhung | Aktuelle Grundgebühr |
-| ----------- | --------------: | ---------------: | -------------------: |
+| ----------- | ---------------:| ----------------:| --------------------:|
| 1 | 15 m | 0 % | 100 gwei |
| 2 | 30 m | 0 % | 100 gwei |
| 3 | 30 m | 12,5 % | 112,5 gwei |
@@ -70,7 +70,7 @@ Der obigen Tabelle folgend: Um eine Transaktion auf Block Nummer 9 zu erstellen,
Außerdem ist es unwahrscheinlich, dass es zu längeren Zeiträumen mit vollen Blöcken kommt, da die Grundgebühr vor einem vollen Block schnell ansteigt.
| Blocknummer | Enthaltenes Gas | Gebührenerhöhung | Aktuelle Grundgebühr |
-| ----------- | --------------: | ---------------: | -------------------: |
+| ----------- | ---------------:| ----------------:| --------------------:|
| 30 | 30 m | 12,5 % | 2705,6 gwei |
| ... | ... | 12,5 % | ... |
| 50 | 30 m | 12,5 % | 28531,3 gwei |
diff --git a/public/content/translations/de/developers/docs/networks/index.md b/public/content/translations/de/developers/docs/networks/index.md
index 4a32ec80066..0131cc16499 100644
--- a/public/content/translations/de/developers/docs/networks/index.md
+++ b/public/content/translations/de/developers/docs/networks/index.md
@@ -56,12 +56,11 @@ Die beiden öffentlichen Testnets, die die Client-Entwickler derzeit betreiben,
- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [PoW-Faucet](https://sepolia-faucet.pk910.de/)
-- [Sepolia-Faucet](https://faucet.sepolia.dev/)
-- [FaucETH](https://fauceth.komputing.org)
-- [Coinbase Wallet Faucet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
-- [Alchemy Sepolia-Faucet](https://sepoliafaucet.com/)
-- [Infura Sepolia-Faucet](https://www.infura.io/faucet)
-- [Chainstack Sepolia-Faucet](https://faucet.chainstack.com/sepolia-faucet)
+- [Faucet für Coinbase-Wallet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Faucet für Alchemy Sepolia](https://sepoliafaucet.com/)
+- [Faucet für Infura Sepolia](https://www.infura.io/faucet)
+- [Faucet für Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Testnetz-Faucet | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(Langzeit-Support)_ {#goerli}
@@ -113,9 +112,17 @@ Ein Testnet für [Optimism](https://www.optimism.io/).
- [Paradigm-Faucet](https://faucet.paradigm.xyz/)
- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Ein Testnetz für [Starknet](https://www.starknet.io).
+
+##### Faucets
+
+- [Starknet-Faucet](https://faucet.goerli.starknet.io)
+
## Private Netzwerke {#private-networks}
-Ein Ethereum-Netzwerk ist ein privates Netzwerk, wenn seine Knoten nicht mit einem öffentlichen Netzwerk verbunden sind (d. h. Mainnet oder ein Testnet). In diesem Zusammenhang bedeutet privat nur reserviert oder isoliert statt geschützt oder sicher.
+Ein Ethereum-Netzwerk ist ein privates Netzwerk, wenn seine Knoten nicht mit einem öffentlichen Netzwerk verbunden sind (z. B. mit Mainnet oder einem Testnet). In diesem Zusammenhang bedeutet privat nur reserviert oder isoliert statt geschützt oder sicher.
### Entwicklungsnetzwerke {#development-networks}
@@ -125,7 +132,7 @@ Es gibt Projekte und Tools, die dabei hilfreich sind. Erfahren Sie mehr über [E
### Konsortium-Netzwerke {#consortium-networks}
-Der Konsensprozess wird von einer vordefinierten Gruppe von Knoten gesteuert, die vertrauenswürdig sind. Zum Beispiel ein privates Netzwerk bekannter akademischer Institutionen, die jeweils einen einzelnen Knoten stellen, wodurch Blöcke mit einer Schwelle von Unterzeichnern innerhalb des Netzwerks validiert werden.
+Der Konsensprozess wird von einer vordefinierten Gruppe von Nodes gesteuert, die vertrauenswürdig sind. Beispielsweise ein privates Netzwerk bekannter akademischer Institutionen, die jeweils eine einzelne Node stellen, sowie Blöcke werden mithilfe einer Schwelle von Unterzeichnern innerhalb des Netzwerks validiert.
Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, dann ist ein Konsortialnetzwerk wie ein privates Intranet.
@@ -137,4 +144,4 @@ Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, dann
## Weiterführende Informationen {#further-reading}
- [Vorschlag: vorhersehbarer Ethereum-Testnet-Lebenszyklus](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
-- [Die Evolution der Ethereum-Testnets](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
+- [Die Entwicklung der Ethereum-Testnets](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
index 49f6b56c0f0..2a1bab7cc38 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -56,7 +56,7 @@ Bevor Sie ihren eigenen Archivierungsknoten starten, sollten Sie die Unterschied
## Empfohlene Verfahren
-Neben den generellen [Empfehlungen zum Betreiben eines Knotens](/developers/docs/nodes-and-clients/run-a-node/) kann ein Archivierungsknoten höhere Anforderungen an Hardware und Wartung stellen. In Anbetracht von Erigons [Schlüsselfunktionen](https://github.com/ledgerwatch/erigon#key-features) ist der praktischste Ansatz, die [Erigon](/developers/docs/nodes-and-clients/#erigon)-Client-Implementation zu verwenden.
+Abgesehen von den generellen [Empfehlungen zum Betreiben einer Node](/developers/docs/nodes-and-clients/run-a-node/) kann eine Archivierungs-Node höhere Anforderungen an Hardware und Wartung stellen. In Anbetracht von Erigons [Schlüsselfunktionen](https://github.com/ledgerwatch/erigon#key-features) ist der praktischste Ansatz, die [Erigon](/developers/docs/nodes-and-clients/#erigon)-Client-Implementation zu verwenden.
### Hardware
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
index 38bb734b15e..9dd6b3ba85b 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -31,7 +31,7 @@ Die Client-Vielfalt bietet auch eine gewisse Widerstandsfähigkeit gegen Angriff
Ein Fehler in einem Konsensclient mit mehr als 33 % der Ethereum-Knoten könnte verhindern, dass die Konsensebene finalisieren kann. Das bedeutet, dass die Nutzer nicht darauf vertrauen können, dass Transaktionen nicht irgendwann rückgängig gemacht oder geändert werden. Dies wäre für viele der auf Ethereum aufbauenden Anwendungen, insbesondere DeFi, sehr problematisch.
- Schlimmer noch, ein kritischer Fehler in einem Client mit einer Zweidrittelmehrheit könnte dazu führen, dass die Chain nicht korrekt geteilt und finalisiert wird. Dies wiederum würde dazu führen, dass eine große Anzahl von Validatoren auf einer ungültigen Chain stecken bleibt. Wenn sie sich der korrekten Chain wieder anschließen möchten, müssen diese Validatoren mit Slashing oder einem langsamen und teuren freiwilligen Rückzug und Reaktivierung rechnen. Das Ausmaß eines Slashings skaliert mit der Anzahl der schuldigen Knoten, wobei maximal eine Zweidrittelmehrheit geslashed werden kann (32 ETH).
+ Schlimmer noch, ein kritischer Fehler in einem Client mit einer Zweidrittelmehrheit könnte dazu führen, dass die Chain nicht korrekt geteilt und finalisiert wird. Dies wiederum würde dazu führen, dass eine große Anzahl von Validatoren auf einer ungültigen Chain stecken bleibt. Wenn sie sich der korrekten Chain wieder anschließen möchten, müssen diese Validatoren mit Slashing oder einem langsamen und teuren freiwilligen Rückzug und Reaktivierung rechnen. Das Ausmaß eines Slashings skaliert mit der Anzahl der schuldigen Knoten, wobei maximal eine Zweidrittelmehrheit geslashed werden kann (32 ETH).
Obwohl dies unwahrscheinliche Szenarien sind, kann das Ethereum-Ökosystem das Risiko mindern, indem es die Verteilung der Clients auf die aktiven Knoten ausgleicht. Im Idealfall würde kein Konsensclient jemals einen Anteil von 33 % an der Gesamtzahl der Nodes erreichen.
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/index.md
index 9a268da2f34..b9ba9692b62 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/index.md
@@ -136,6 +136,7 @@ Diese Tabelle gibt einen Überblick über die verschiedenen Clients. Sie alle be
| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, MacOS | Mainnet, Sepolia, Goerli und weitere | Snap (ohne Serving), Fast, Full | Archive, Pruned |
| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, MacOS | Mainnet, Sepolia, Goerli und weitere | Snap, Fast, Full | Archive, Pruned |
| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, MacOS | Mainnet, Sepolia, Goerli und weitere | Full | Archive, Pruned |
+| [Reth](https://github.com/paradigmxyz/reth) | Rust | Linux, Windows, MacOS | Mainnet, Sepolia, Goerli und weitere | Full | Archiv, Reduziert |
Weitere Informationen zu unterstützten Netzwerken finden Sie unter [Ethereum-Netzwerke](/developers/docs/networks/).
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md
index c29b90a4adc..e2cc50bf1ce 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md
@@ -1,5 +1,5 @@
---
-title: Light Clients
+title: Leichte Clients
description: Einführung zu leichten Clients von Ethereum.
lang: de
---
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md
index 1522866987d..1e4822e399f 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md
@@ -1,5 +1,5 @@
---
-title: Node-Architektur
+title: Knotenarchitektur
description: Einleitung zum Aufbau von Ethereum-Knoten.
lang: de
---
@@ -39,7 +39,7 @@ Der Konsensclient nimmt nicht an Attestierungen oder dem Vorschlagen von Blöcke
Knotenbetreiber können Validatoren zu ihren Konsensclients hinzufügen, indem sie 32 ETH in den Einzahlungsvertrag einzahlen. Der Validatorclient kommt gebündelt mit dem Konsensclient und kann zu jeder Zeit einem Knoten hinzugefügt werden. Der Validator bearbeitet Attestierungen und Blockvorschläge. Sie ermöglichen einem Knoten, Prämien zu sammeln oder ETH über Strafen oder Slashing zu verlieren. Durch das Betreiben der Validatorensoftware kann ein Knoten ausgewählt werden, um einen neuen Block vorzuschlagen.
-[Mehr über Staking](/abstecken/).
+[Mehr über Staking](/staking/).
## Vergleich der Knotenkomponenten {#node-comparison}
@@ -55,5 +55,5 @@ Knotenbetreiber können Validatoren zu ihren Konsensclients hinzufügen, indem s
## Weiterführende Informationen {#further-reading}
- [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos)
-- [Blockvorschlag](/developers/docs/consensus-mechanisms/pos/block-proposal)
+- [Block-Vorschlag](/developers/docs/consensus-mechanisms/pos/block-proposal)
- [Prämien und Strafen für Validatoren](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md
index e41f72495f8..2d3dfba12d8 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -151,7 +151,7 @@ Dort finden Sie die Versionsseiten der Clients, auf denen Sie die vorgefertigten
##### Clients auf Ausführungsebene
- [Besu](https://github.com/hyperledger/besu/releases)
-- [Erigon](https://github.com/ledgerwatch/erigon#usage) (Bietet keine vorgefertigte Binärdatei, muss kompiliert werden)
+- [Erigon](https://github.com/ledgerwatch/erigon/releases)
- [Geth](https://geth.ethereum.org/downloads/)
- [Nethermind](https://downloads.nethermind.io/)
diff --git a/public/content/translations/de/developers/docs/programming-languages/python/index.md b/public/content/translations/de/developers/docs/programming-languages/python/index.md
index 9eba7a28b36..2014cfad11b 100644
--- a/public/content/translations/de/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/de/developers/docs/programming-languages/python/index.md
@@ -82,7 +82,7 @@ Die folgenden Ethereum-basierten Projekte verwenden die auf dieser Seite erwähn
## Python Community-Diskussionen {#python-community-contributors}
- [Ethereum Python Community Discord](https://discord.gg/9zk7snTfWe) für Web3.py und andere Python Framework-Diskussionen
-- [Vyper Discord](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>) für Diskussionen zu Vyper Smart Contract-Programmierung
+- [Vyper Discord](https://discord.gg/SdvKC79cJk) für Diskussionen zu Vyper Smart Contract-Programmierung
## Andere aggregierte Listen {#other-aggregated-lists}
diff --git a/public/content/translations/de/developers/docs/smart-contracts/testing/index.md b/public/content/translations/de/developers/docs/smart-contracts/testing/index.md
index 60a07e1bdeb..f705599b516 100644
--- a/public/content/translations/de/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/de/developers/docs/smart-contracts/testing/index.md
@@ -37,7 +37,7 @@ incomplete: true
- [Solidity and Truffle Continuous Integration Setup](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _ – So richten Sie Travis oder Circle CI für Trüffel-Tests zusammen mit nützlichen Plugins ein._
- [Übersicht über Testprodukte](/developers/tutorials/guide-to-smart-contract-security-tools/) _ – Eine Übersicht und ein Vergleich verschiedener Testprodukte_
- [So verwenden Sie Echidna zum Testen von Smart Contracts](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [So finden Sie mit Manticore Fehler in Smart Contracts](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [So finden Sie mit Manticore Fehler in Smart Contracts](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [So finden Sie mit Slither Fehler in Smart Contracts](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [So simulieren Sie Solidity-Verträge zum Testen](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [So migrieren Sie von Truffle-Tests zur OpenZeppelin-Testumgebung](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
diff --git a/public/content/translations/de/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/de/guides/how-to-create-an-ethereum-account/index.md
index b547c07f2c6..80a7886110f 100644
--- a/public/content/translations/de/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/de/guides/how-to-create-an-ethereum-account/index.md
@@ -4,37 +4,39 @@ description: Eine Schritt-für-Schritt-Anleitung für die Erstellung eines Ether
lang: de
---
-# So "registrieren" Sie ein Ethereum-Konto
+# So erstellen Sie ein Ethereum-Konto
-Jeder kann ein Ethereum-Konto kostenlos erstellen mit einer speziellen Art App, allgemein als „Wallet" bezeichnet. Wallets erstellen und sichern die Schlüssel die ein Halten, Senden und Empfangen von Kryptowährungen ermöglichen. Außerdem kann man sich mit Projekten auf Ethereum verbinden, um beispielsweise NFTs oder Token zu handeln, wie auch den Zugang zu Spielen zu öffnen, und noch viel mehr.
+Jeder kann zu jeder Zeit ein kostenloses Ethereum-Konto einrichten. Es gibt mehrere Möglichkeiten, aber die einfachste und gebräuchlichste ist die Verwendung einer App, die als Wallet bekannt ist. Wallets erstellen und sichern den Schlüssel, mit dem Sie Ethereum nutzen können. Mit Ihrer Wallet können Sie Transaktionen senden, Ihren Token-Saldo überprüfen und sich mit Anwendungen verbinden, die auf Ethereum aufgebaut sind, wie zum Beispiel Token-Börsen, Spiele, NFT-Marktplätze und mehr. Einige "web2"-Anwendungen erlauben es nun auch, sich mit Ethereum anzumelden.
-Im Gegensatz zur Eröffnung eines neuen Kontos bei einer Firma erfolgt die Erstellung eines Ethereum Kontos frei, privat und ohne gesonderte Erlaubnis. Die Konten werden durch Schlüssel kontrolliert, die Sie mit Hilfe Ihrer Wallet-Software erstellen. Sie werden weder von einer dritten Partei ausgestellt noch in einem zentralen Register gespeichert.
+Im Gegensatz zur Eröffnung eines neuen Kontos bei einem Unternehmen erfolgt die Einrichtung eines Ethereum-Kontos freiwillig, privat und ohne Genehmigungspflicht. Die Konten werden durch Schlüssel kontrolliert, die Sie mit Hilfe Ihrer Wallet-Software erstellen. Sie werden weder von einer dritten Partei ausgestellt noch in einem zentralen Register gespeichert.
-## Schritt 1: Durchsuchen Sie unsere Liste der Wallets (Geldbörsen)
+## Schritt 1: Eine Wallet auswählen
-Eine Wallet ist wie ein Online-Bankkonto für Ethereum. Es gibt Dutzende von verschiedenen Wallets (Geldbörsen) zur Auswahl - für das Handy, für den Desktop oder sogar für Browser-Erweiterungen. Unsere Liste mit vertrauenswürdigen Geldbörsen ist ein guter Anfang.
+Eine Wallet ist eine App, mit der Sie Ihr Ethereum-Konto verwalten können. Die App verwendet Ihre Schlüssel, um Transaktionen zu senden oder entgegenzunehmen und sich bei Anwendungen anzumelden. Es gibt Dutzende von verschiedenen Wallets (Geldbörsen) zur Auswahl - für das Handy, für den Desktop oder sogar für Browser-Erweiterungen.
Finden Sie eine Wallet
-## Schritt 2: Wählen Sie eine Wallet, die Ihren Anforderungen entspricht
+Wenn Sie noch keine Erfahrung mit Kryptowährungen haben, können Sie den Filter "New to Crypto" (Neu im Bereich Kryptowährungen) auf der Seite "Find a Wallet" (Geldbörse finden) auswählen, um die Wallets zu finden, die alle notwendigen Funktionen für Einsteiger enthalten.
-Wenn Sie neu sind, können Sie den Filter „New to crypto" aktivieren, um nur die Wallets zu sehen, die alle notwendigen Funktionen enthalten, von denen wir glauben, dass sie für Anfänger besonders geeignet sind. Es gibt auch andere Profilfilter, die auf Ihre Bedürfnisse abgestimmt sind.
+![Filterauswahl auf der Seite „Wallet finden“](./wallet-box.png)
-## Schritt 3: Laden Sie Ihre Wallet-App herunter und installieren Sie sie.
+Es gibt auch andere Profilfilter, die auf Ihre Bedürfnisse abgestimmt sind. Das sind Beispiele für gängige Wallets – Sie sollten jedoch selbst recherchieren, bevor Sie einer Software vertrauen.
+
+## Schritt 2: Wallet-App herunterladen und installieren
Wenn Sie sich für eine bestimmte Wallet entschieden haben, besuchen Sie die offizielle Website oder den App-Store, laden Sie es herunter und installieren Sie es. Sie alle sollten kostenlos sein.
-## Schritt 4: Öffnen Sie die App und erstellen oder importieren Sie Ihr Ethereum-Konto
+## Schritt 3: App öffnen und ein Ethereum-Konto erstellen oder importieren
Wenn Sie Ihre neue Wallet zum ersten Mal öffnen, werden Sie möglicherweise gefragt, ob Sie ein neues Konto anlegen oder ein bestehendes importieren möchten. Klicken Sie auf neues Konto erstellen.
-## Schritt 5: Speichern Sie Ihren Wiederherstellungssatz
+## Schritt 4: Wiederherstellungssatz speichern
-Einige Anwendungen fordern Sie auf, einen geheimen Wiederherstellungssatz zu speichern. Es ist extrem wichtig, diesen geheimen Wiederherstellungssatz sicher aufzubewahren! Jede Person, die diesen geheimen Wiederherstellungssatz kennt, kann die Kontrolle über alle Ihre Konten übernehmen, die mit diesen Wörtern erstellt wurden. Geben Sie diese niemals weiter. Dieser Satz sollte 12 bis 24 zufällig generierte Wörter enthalten (die Reihenfolge der Wörter ist wichtig).
+Einige Anwendungen fordern Sie auf, eine geheime "Seed-Phrase" zu speichern (diese wird auch als "Recovery-Phrase" oder "Mnemonic" bezeichnet). Es ist extrem wichtig, diese "Seed-Phrase " sicher aufzubewahren! Die Seed-Phrase wird verwendet, um einen geheimen Schlüssel für ein Konto zu generieren, der zum Signieren und Senden von Transaktionen verwendet werden kann. Jede Person, die die Seed-Phrase kennt, kann alle Konten kontrollieren, die damit erstellt wurden. Teilen Sie die Seed-Phrase niemals mit anderen. Die Seed-Phrase sollte 12 bis 24 zufällig generierte Wörter enthalten (die Reihenfolge der Wörter ist wichtig).
-Sobald Sie Ihren Wiederherstellungssatz gespeichert haben, sollten Sie das Dashboard Ihrer Brieftasche mit Ihrem Guthaben sehen. Schauen Sie sich unsere Anleitung an: [Wie verwenden Sie ein Wallet.](/guides/how-to-use-a-wallet)
+Sobald Sie Ihre Seed-Phrase gespeichert haben, sollten Sie Ihr Wallet-Dashboard mit Ihrem Guthaben sehen können. Schauen Sie sich unsere Anleitung an: [Wie verwenden Sie ein Wallet.](/guides/how-to-use-a-wallet)
@@ -49,20 +51,22 @@ Sobald Sie Ihren Wiederherstellungssatz gespeichert haben, sollten Sie das Dashb
### Ist meine Wallet auch mein Ethereum-Konto?
-Nein, genau wie beim Online-Banking auch kann man mehrere unterschiedliche Konten besitzen, die in einer Wallet-Anwendung gespeichert sind. Die 1aus 24 bzw. 24 Wörtern bestehende Phrase sichert sie alle: Man kann sie mit dem Samen eines großen Baumes vergleichen (weshalb sie stets sicher verwahrt werden muss). Jeder Ast des Baumes enthält einen Schlüssel, und jeder Schlüssel ist einer Ihrer Konten. Wenn Sie den Zugang zu Ihrer Wallet verlieren (also der Baum gefällt wird), können Sie jederzeit alle verschiedenen Konten durch andere Software und den gleichen Seed wiederherstellen (es wächst immer der gleiche Baum daraus).
+Nein. Die Wallet ist ein Verwaltungsinstrument, mit dem Sie Ihre Konten verwalten können. Eine einzige Wallet kann Zugang zu mehreren Konten gewähren, und ein einziges Konto kann von mehreren Wallets genutzt werden. Die Seed-Phrase wird verwendet, um Konten zu erstellen, die dann von der Wallet verwaltet werden.
+
+Sie können sich die Konten als Blätter an einem Baum vorstellen, die alle aus einer einzigen Seed-Phrase "erwachsen". Jedes einzelne "Seed" bringt einen völlig anderen Konto-Baum hervor.
### Kann ich Bitcoin an eine Ethereum-Adresse senden oder Ether an eine Bitcoin-Adresse?
-Nein, das können Sie nicht. Bitcoin und Ether befinden sich auf zwei separaten Netzwerken (also unterschiedlichen Blockchains) mit jeweils eigenen Modellen der Buchführung und des Formats der Adresse. Es gab verschiedene Versuche, eine Brücke zwischen den Netzwerken zu bauen, von welchen der Aktivste derzeit [Wrapped bitcoin bzw. WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/) ist. Dies ist keine Unterstützung, da WBTC eine treuhänderische Lösung ist (was bedeutet, dass eine einzelne Personengruppe bestimmte kritische Funktionen kontrolliert) und wird hier nur zu Informationszwecken bereitgestellt.
+Nein, das ist nicht möglich. Bitcoin und Ether befinden sich auf zwei separaten Netzwerken (also unterschiedlichen Blockchains) mit jeweils eigenen Modellen der Buchführung und des Formats der Adresse. Es gab verschiedene Versuche, eine Brücke zwischen den Netzwerken zu bauen, von welchen der Aktivste derzeit [Wrapped bitcoin bzw. WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/) ist. Dies ist keine Unterstützung, da WBTC eine treuhänderische Lösung ist (was bedeutet, dass eine einzelne Personengruppe bestimmte kritische Funktionen kontrolliert) und wird hier nur zu Informationszwecken bereitgestellt.
### Wenn ich eine ETH-Adresse besitze, besitze ich dann die gleiche Adresse auf anderen Blockchains?
-Sie können dieselbe Adresse auf allen EVM-kompatiblen Blockchains verwenden (wenn Sie eine Wallet mit einem Wiederherstellungssatz haben). Diese [Liste](https://chainlist.org/) zeigt Ihnen, welche Blockchains Sie mit der gleichen Adresse verwenden können. Einige Blockchains, wie z. B. Bitcoin, implementieren einen komplett separaten Satz von Netzwerkregeln und Sie benötigen eine andere Adresse mit einem anderen Format. Wenn Sie eine Smart Contract Wallet haben, sollten Sie auf der Produktwebsite nachsehen, welche Blockchains unterstützt werden.
+Sie können dieselbe Adresse auf allen Blockchains verwenden, die eine ähnliche zugrunde liegende Software wie Ethereum verwenden (bekannt als "EVM-kompatibel"). Diese [Liste](https://chainlist.org/) zeigt Ihnen, welche Blockchains Sie mit der gleichen Adresse verwenden können. Einige Blockchains, wie z. B. Bitcoin, implementieren einen komplett separaten Satz von Netzwerkregeln und Sie benötigen eine andere Adresse mit einem anderen Format. Wenn Sie eine Smart Contract Wallet haben, sollten Sie auf der Produktwebsite nachsehen, welche Blockchains unterstützt werden.
### Ist eine eigene Wallet sicherer als die Beträge auf einer Börse zu halten?
-Ja, das ist eine viel sicherere Option, da niemand sonst Zugriff auf Ihre Gelder haben wird. Leider gibt es viele Beispiele für gescheiterte Börsen, die Konkurs angemeldet haben, was dazu führte, dass die Nutzer ihre verwahrten Ersparnisse verloren. Hacks, eingefrorene Konten oder blockierte Auszahlungen sind weitere häufige Risiken. Der Besitz einer Wallet (mit einem Wiederherstellungssatz) ist der beste Weg, um Ihr Vermögen zu schützen. Ein schlecht gesicherter Wiederherstellungssatz birgt jedoch potenziell mehr Risiken als die Verwaltung Ihrer Schlüssel durch eine Börse. Bewahren Sie Ihren Wiederherstellungssatz an einem sicheren Ort auf.
+Eine eigene Wallet zu besitzen bedeutet, dass Sie die Verantwortung für die Sicherheit Ihrer Vermögenswerte übernehmen. Leider gibt es viele Beispiele für gescheiterte Börsen, die das Geld ihrer Kunden verloren haben. Wenn Sie eine Wallet besitzen (mit einer Seed-Phrase), ist es nicht erforderlich, dass Sie Ihr Vermögen einem anderen Unternehmen anvertrauen. Allerdings müssen Sie Ihre eigenen Schlüssel sichern und Phishing-Betrug, die versehentliche Genehmigung von Transaktionen oder die Preisgabe von Schlüsseln, die Interaktion mit gefälschten Websites und andere Risiken bei der Selbstverwahrung vermeiden. Risiken und Nutzen sind unterschiedlich.
### Wenn ich mein/e Telefon/Hardware-Wallet verliere, muss ich dann dieselbe Wallet-App erneut verwenden, um das verlorene Geld wiederzuerlangen?
-Nein, Sie können nahezu jede Wallet verwenden, da der Wiederherstellungsprozess weitestgehend standardisiert ist. Das bedeutet, dass die Eingabe des gleichen Satzes aus 12 bzw. 24 Wörtern in den meisten Wallets zur Wiederherstellung desselben Kontos genutzt werden kann. Seien Sie vorsichtig, falls Sie dies einmal tun müssen: Stellen Sie am besten sicher, dass Sie während der Wiederherstellung Ihrer Wallet nicht mit dem Internet verbunden sind, um ein versehentliches Durchsickern Ihres Wiederherstellungscodes zu vermeiden. Es ist meist unmöglich, verlorene Guthaben ohne den Wiederherstellungssatz wiederzuerlangen.
+Nein, es ist möglich, eine andere Wallet zu verwenden. Solange Sie die Seed-Phrase haben, können Sie diese in den meisten Wallets eingeben. Die Wallet stellt dann Ihr Konto wieder her. Seien Sie vorsichtig, wenn das einmal erforderlich werden sollte: Stellen Sie sicher, dass Sie bei der Wiederherstellung Ihrer Wallet nicht mit dem Internet verbunden sind, damit Ihre Seed-Phrase nicht versehentlich veröffentlicht wird. Meist ist es nicht möglich, verlorene Gelder ohne die Seed-Phrase wiederzuerlangen.
diff --git a/public/content/translations/de/guides/how-to-id-scam-tokens/index.md b/public/content/translations/de/guides/how-to-id-scam-tokens/index.md
new file mode 100644
index 00000000000..947a5773e95
--- /dev/null
+++ b/public/content/translations/de/guides/how-to-id-scam-tokens/index.md
@@ -0,0 +1,97 @@
+---
+title: So erkennen Sie betrügerische Token
+description: Erkennen von betrügerischen Token, wie sie sich legitim erscheinen lassen und wie sie sich vermeiden lassen.
+lang: de
+---
+
+# So erkennen Sie betrügerische Token {#identify-scam-tokens}
+
+Eine der häufigsten Verwendungen von Ethereum ist die Schaffung eines handelbaren Tokens durch eine Gruppe, gewissermaßen ihre eigene Währung. Diese Token folgen in der Regel dem Standard, [ERC-20](/developers/docs/standards/tokens/erc-20/). Jedoch gibt es überall, wo es legitime wertschöpfende Anwendungsmöglichkeiten gibt, auch Kriminelle, die diese Werte stehlen möchten.
+
+Die beiden folgenden Täuschungsversuche sind dabei gängig:
+
+- **Verkaufen eines betrügerischen Tokens**, der im Aussehen einem legitimen Token ähnelt und den Sie kaufen möchten, jedoch von einem Betrüger erstellt wurde und keinen Wert hat.
+- **Sie werden dazu verleitet, unzulässige Transaktionen zu unterzeichnen**, indem Sie für gewöhnlich auf die Benutzeroberfläche der Betrüger geleitet wird. Sie könnten versuchen, Sie dazu zu bringen, ihren Verträgen einen Freibetrag für Ihre ERC-20-Token zu gewähren, sensible Informationen preiszugeben, über die sie Zugang zu Ihren Vermögenswerten erhalten usw. Solche Benutzeroberflächen können nahezu perfekte Klone von legitimen Websites sein, jedoch mit versteckten Tricks.
+
+Um zu veranschaulichen, was Betrugs-Token sind und wie man sie erkennt, sehen wir uns ein Beispiel an: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Dieser Token immitiert das Aussehen eines legitimen [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) -Tokens.
+
+
+
+Arbitrum ist eine Organisation zur Entwicklung und Verwaltung von optimistischen Rollups. Ursprünglich war Arbitrum als gewinnorientiertes Unternehmen organisiert, unternahm dann aber Schritte zur Dezentralisierung. Im Rahmen dieses Prozesses wurde ein handelbarer Governance-Token ausgegeben.
+
+
+
+
+
+In Ethereum gibt es eine Konvention: Wird ein Asset erstellt, das nicht ERC-20-kompatibel ist, wird eine " Wrapped"-Version erstellt wird, deren Name mit "w" beginnt. So gibt es beispielsweise wBTC für Bitcoin und wETH für Ether.
+
+Es ergibt keinen Sinn, eine Wrapped-Version eines ERC-20-Tokens zu erstellen, der bereits auf Ethereum vorhanden ist, aber Betrüger verlassen sich eher auf den Anschein von Legitimität als auf die zugrunde liegende Realität.
+
+
+
+## Wie funktionieren betrügerische Token? {#how-do-scam-tokens-work}
+
+Dezentralisierung ist das zentrale Element von Ethereum. Das bedeutet, dass es keine zentrale Autorität gibt, die Ihre Anlagen konfiszieren oder Sie daran hindern könnte, einen Smart Contract bereitzustellen. Doch das bedeutet auch, dass Betrüger jeden beliebigen Smart Contract bereitstellen können.
+
+
+
+Smart Contracts sind die Programme, die auf der Ethereum-Blockchain laufen. Jeder ERC-20 Token ist beispielsweise als Smart Contract implementiert.
+
+
+
+Insbesondere Arbitrum setzt so einen Contract ein, der das Symbol `ARB` nutzt. Doch das hält andere Menschen nicht davon ab, ebenfalls einen Contract einzusetzen, der dasselbe oder ein ähnliches Symbol nutzt. Wer den Contract schreibt, kann bestimmen, wofür er verwendet wird.
+
+## Legitimes Erscheinungsbild {#appearing-legitimate}
+
+Es gibt einige Tricks, die die Ersteller von betrügerischen Tokens nutzen, um ein legitimes Erscheinungsbild zu imitieren.
+
+- **Legitimer Name und legitimes Symbol**. Wie bereits beschrieben, können ERC-20-Contracts dasselbe Symbol und denselben Namen wie andere ERC-20-Contracts aufweisen. Es ist nicht möglich, darüber auf die Sicherheit der Token zu schließen.
+
+- **Legitime Besitzer**. Betrügerische Token senden oft signifikante Beträge an Adressen, die als legitime Besitzer des echten Tokens angenommen werden.
+
+ Kommen wir nochmals auf `wARB` zurück. [Ungefähr 16 % der Token](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) werden von einer Adresse verwaltet, deren öffentlicher Tag ["Arbitrum Foundation: Deployer"](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) ist. Das ist _keine_ falsche Adresse, es ist vielmehr die Adresse, die [den echten ARB-Contract auf dem Ethereum-Mainnet](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670) eingesetzt hat.
+
+ Da das ERC-20-Guthaben einer Adresse Teil des ERC-20-Vertragsspeichers ist, kann dafür festgelegt werden, was sich der Entwickler wünscht. Es ist für einen Contract auch möglich, Transfers zu verbieten, sodass der legitime Nutzer keine Chance hat, die betrügerischen Token zu entfernen.
+
+- **Legitime Transfers**. _Legitime Besitzer würden nicht dafür bezahlen, einen betrügerischen Token auf andere zu übertragen. Daher muss der Token, sofern er Transfers ausführt, legitim sein, oder?_ **Falsch**. `Transfer`-Ereignisse werden auch durch den ERC-20-Contract produziert. Ein Betrüger kann einfach den Contract so schreiben, dass er diese Aktionen produziert.
+
+## Betrügerische Websites {#websites}
+
+Betrüger können auch sehr überzeugende Websites produzieren, manchmal sogar präzise Klone von authentischen Seiten mit einer identischen Benutzeroberfläche, aber mit subtilen Tricks. Beispiele könnten externe links sein, die legitim aussehen, jedoch den Nutzer zu einer externen betrügerischen Seite senden. Es könnten auch falsche Anweisungen sein, die den Nutzer dazu bringen, seine Schlüssel freizugeben oder dem Angreifer Gelder zu senden.
+
+Die beste Art das zu vermeiden, ist es, die URL vorsichtig auf von Ihnen besuchte Seiten zu überprüfen. Dafür können Sie authentische Seiten in ihren Lesezeichen speichern. Dann können Sie die Seiten über Ihre Lesezeichen aufrufen, ohne versehentlich Rechtschreibfehler zu machen oder sich auf externe Links verlassen zu müssen.
+
+## Wie können Sie sich schützen? {#protect-yourself}
+
+1. **Überprüfen der Contract-Adresse**. Legitime Token stammen von legitimen Organisationen und Sie können die Contract-Adressen auf der Website dieser Organisation nachschauen. Zum Beispiel können Sie[ die legitimen Adressen für `ARB` hier nachsehen](https://docs.arbitrum.foundation/deployment-addresses#token).
+
+2. **Echte Token weisen Liquidität auf**. Eine weitere Option ist, sich die Liquidität-Poolgröße auf [Uniswap](https://uniswap.org/) anzuschauen – eines der gängigsten Token-Tauschprotokolle. Dieses Protokoll funktioniert, indem es Liquiditätspools nutzt, in die ihre Token investieren, in der Hoffnung, mit Handelsgebühren Gewinne zu machen.
+
+Betrügerische Tokens habe, wenn überhaupt, klassischerweise kleine Liquiditätspools, da die Betrüger keine echten Anlagen riskieren wollen. Der `ARB`/`ETH` Uniswap Pool hält beispielsweise ungefähr eine halbe Millionen Dollar ([schlagen Sie hier den aktuellen Wert nach](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) und das Kaufen oder Verkaufen einer kleinen Menge wird den Preis nicht beeinflussen:
+
+![Einen legitimen Token kaufen](./uniswap-real.png)
+
+Doch wenn Sie versuchen würden, den betrügerischen `wARB`-Token zu kaufen, könnte sogar eine kleine Investition den Preis um über 90 % steigern:
+
+![Einen betrügerischen Token kaufen](./uniswap-scam.png)
+
+Das ist ein weiterer Beweis, der uns zeigt, dass `wARB` wahrscheinlich kein legitimer Token ist.
+
+3. **Sehen Sie auf Etherscan nach**. Viele betrügerische Token wurden bereits identifiziert und von der Community gemeldet. Solche Token werden in [Etherscan gekennzeichnet](https://info.etherscan.com/etherscan-token-reputation/). Während Etherscan keine unfehlbare Quelle ist (es ist normal für dezentralisierte Netzwerke, dass es so etwas nicht gibt), sind Token, die von Etherscan als Betrug gekennzeichnet wurden, wahrscheinlich betrügerisch.
+
+ ![Betrügerische Token in Etherscan](./etherscan-scam.png)
+
+## Fazit {#conclusion}
+
+Solange es Werte in der Welt gibt, wird es immer Betrüger geben, die diese stehlen wollen. In einer dezentralisierten Welt gibt es niemanden, der Sie beschützt, außer Sie selbst. Hoffentlich helfen Ihnen diese Informationen dabei, betrügerische und legitime Token auseinanderzuhalten:
+
+- Betrügerische Token kopieren legitime Token, sie können denselben Namen, dasselbe Symbol etc. verwenden.
+- Betrügerische Token _können nicht_ dieselbe Contract-Adresse verwenden.
+- Die beste Quelle für die Adresse des legitimen Tokens ist die Organisation, um deren Token es sich handelt.
+- Sie können zudem sichere Anwendungen wie [Uniswap](https://app.uniswap.org/#/swap) und [Etherscan](https://etherscan.io/) nutzen.
diff --git a/public/content/translations/de/guides/how-to-swap-tokens/index.md b/public/content/translations/de/guides/how-to-swap-tokens/index.md
index 0ded6458ae4..4c6b5e92f9d 100644
--- a/public/content/translations/de/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/de/guides/how-to-swap-tokens/index.md
@@ -12,7 +12,7 @@ Ein Token-Swap beinhaltet den Austausch von zwei verschiedenen Assets im Ethereu
**Voraussetzung:**
-- Haben Sie eine Krypto-Wallet. Sie können diesem Tutorium folgen: [Wie man ein Ethereum-Konto anmelden kann](/guides/how-to-create-an-ethereum-account/)
+- Haben Sie eine Krypto-Wallet, können Sie sich dieses Tutorium ansehen: [So "registrieren" Sie ein Ethereum-Konto](/guides/how-to-create-an-ethereum-account/)
- Laden Sie Ihre Krypto-Wallet auf
## 1. Verbinden Sie Ihre Krypto-Wallet mit einem Exchange (DEX) Ihrer Wahl
diff --git a/public/content/translations/de/guides/how-to-use-a-bridge/index.md b/public/content/translations/de/guides/how-to-use-a-bridge/index.md
index bb61f69da67..f04b434aba7 100644
--- a/public/content/translations/de/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/de/guides/how-to-use-a-bridge/index.md
@@ -10,7 +10,7 @@ Wenn eine hohe Auslastung auf Ethereum herrscht, kann es teuer werden. Eine Lös
**Voraussetzung:**
-- Haben Sie eine Krypto-Wallet. Sie können diesem Tutorium folgen: [Wie man ein Ethereum-Konto anmelden kann](/guides/how-to-create-an-ethereum-account/)
+- Haben Sie eine Krypto-Wallet, können Sie sich dieses Tutorium ansehen: [So "registrieren" Sie ein Ethereum-Konto](/guides/how-to-create-an-ethereum-account/)
- Laden Sie Ihre Krypto-Wallet auf
## 1. Bestimmen Sie, welches Layer-2-Netzwerk Sie verwenden möchten
diff --git a/public/content/translations/de/guides/how-to-use-a-wallet/index.md b/public/content/translations/de/guides/how-to-use-a-wallet/index.md
index b69035ee381..d671c8fc6bb 100644
--- a/public/content/translations/de/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/de/guides/how-to-use-a-wallet/index.md
@@ -6,7 +6,7 @@ lang: de
# So verwenden Sie eine Wallet
-Lernen Sie die grundlegenden Funktionen einer Krypto-Wallet kennen. Falls Sie noch keine besitzen, schauen Sie sich mal die Seite [Wie erstelle ich einen Ethereum "Account"](/guides/how-to-create-an-ethereum-account/) an.
+Lernen Sie die grundlegenden Funktionen einer Krypto-Wallet kennen. Wenn Sie noch keine haben, werfen Sie einen blick auf unseren [Leitfaden zur Erstellung eines Ethereum-Kontos](/guides/how-to-create-an-ethereum-account/) an.
## Öffnen Sie Ihre Wallet
@@ -18,7 +18,7 @@ Möchten Sie Kryptowährungen in ihrer Wallet empfangen?
Jedes Ethereum Account hat seine eigene Empfangsadresse, welche eine einzigartige Abfolge von Zahlen und Buchstaben enthält. Die Adresse funktioniert wie eine Bankkontonummer. Ethereum-Adressen beginnen immer mit „0x“. Sie können diese Adresse mit jedem teilen: Es besteht kein Sicherheitsrisiko.
-Ihre Adresse (die auch als „public key" bezeichnet wird) ist wie Ihre Wohnanschrift: Sie müssen sie den Leuten mitteilen, damit sie Sie finden können. Es besteht keine Gefahr, dies zu tun, weil Sie immer noch Ihre Haustür mit einem anderen Schlüssel, den Sie kontrollieren, abschließen können, sodass keiner hereinkommen kann, auch wenn sie wissen, wo Sie wohnen.
+Mit Ihrer Adresse verhält es sich wie mit Ihrer Privatadresse: Sie müssen diese angeben, damit man Sie finden kann. Es besteht keine Gefahr, dies zu tun, weil Sie immer noch Ihre Haustür mit einem anderen Schlüssel, den Sie kontrollieren, abschließen können, sodass keiner hereinkommen kann, auch wenn sie wissen, wo Sie wohnen.
Sie müssen jedem, der Ihnen Geld schicken möchten, Ihre öffentliche Adresse zur Verfügung stellen. Viele Wallet-Apps lassen Sie zur vereinfachten Handhabung Ihre Adresse kopieren oder zeigen einen QR-Code an, der gescannt werden kann. Vermeiden Sie die manuelle Eingabe einer Ethereum-Adresse. Dies kann leichtfertig zu Schreibfehlern und damit zum Verlust Ihres Vermögens führen.
@@ -51,7 +51,7 @@ Ihre Adresse wird auf allen Ethereum Projekten dieselbe sein. Sie brauchen sich
1. Besuchen Sie die Webseite eines Projekts.
2. Wenn die Zielseite des Projekts nur eine statische Beschreibung des Projekts ist, sollten Sie in der Lage sein, auf eine Schaltfläche „App öffnen" im Menü zu klicken, die Sie zur eigentlichen Web-App navigiert.
-3. Sobald Sie sich in der App befinden, klicken Sie auf „Verbinden"
+3. Sobald Sie in der App sind, klicken Sie auf "Verbinden".
![Schaltfläche zum Verbinden mit einer Wallet](./connect1.png)
@@ -77,7 +77,7 @@ Sie können dieselbe Adresse auf allen EVM-kompatiblen Blockchains verwenden (we
### Kann ich dieselbe Adresse auf mehreren Geräten verwenden?
-Ja, Sie können dieselbe Adresse auf mehreren Geräten verwenden. Wallets sind technisch gesehen nur eine Schnittstelle, um Ihnen Ihr Guthaben zu zeigen und Transaktionen zu tätigen, Ihr Konto ist nicht in der Wallet gespeichert, sondern auf der Blockchain.
+Ja, Sie können die gleiche Adresse auf mehreren Geräten verwenden. Wallets sind technisch gesehen nur eine Schnittstelle, um Ihnen Ihr Guthaben zu zeigen und Transaktionen zu tätigen, Ihr Konto ist nicht in der Wallet gespeichert, sondern auf der Blockchain.
### Ich habe kein Krypto erhalten, wo kann ich den Status einer Transaktion überprüfen?
diff --git a/public/content/translations/de/guides/index.md b/public/content/translations/de/guides/index.md
index 31c7d634305..b43574d37b3 100644
--- a/public/content/translations/de/guides/index.md
+++ b/public/content/translations/de/guides/index.md
@@ -6,7 +6,7 @@ lang: de
# Ethereum Leitfäden
-Wollen Sie Ihre Ethereum Reise starten? Ethereum ist kein Unternehmen mit einem Skript-gebundenen Helpdesk, aber diese praktischen Anleitungen helfen Ihnen zu lernen, wie Sie anfangen können.
+Möchten Sie Ihre Ethereum Reise starten? Unsere praktischen Leitfäden führen Sie Schritt für Schritt durch den Einstieg und erleichtern Ihnen den Umgang mit dieser neuen Technologie.
## Erste Schritte
@@ -16,14 +16,12 @@ Wollen Sie Ihre Ethereum Reise starten? Ethereum ist kein Unternehmen mit einem
## Grundlagen zur Sicherheit
-1. [Wie man einen Smart-Contract-Zugriff widerrufen kann](/guides/how-to-revoke-token-access/) - Falls Sie plötzlich eine Transaktion in ihrer Wallet sehen, welche sie nicht initiiert haben, wird Ihnen diese Anleitung erklären, wie Sie das in Zukunft verhindern können.
+1. [Wie man einen Smart-Contract-Zugriff widerrufen kann](/guides/how-to-revoke-token-access/) – Falls Sie plötzlich eine Transaktion in Ihrer Wallet sehen, die Sie nicht initiiert haben, finden Sie in diesem Leitfaden eine Anleitung, wie sich das in Zukunft verhinden lässt.
+
+2. [Wie man betrügerische Token (Scam-Token) erkennt](/guides/how-to-id-scam-tokens/) – Was scams sind, welche Taktiken dabei eingesetzt werden und wie man sie erkennen kann, um sich zu schützen und nicht betrogen zu werden.
## Ethereum verwenden
1. [Wie man Token in Layer 2 überführt](/guides/how-to-use-a-bridge/) - Sind Ethereum-Transaktionen zu teuer? Betrachten Sie den Wechsel auf sogenannte Layer-2 Skalierungslösungen.
2. [Wie man Token tauscht](/guides/how-to-swap-tokens/) - Wollen Sie Ihre Token gegen andere austauschen? Dieser simple Leitfaden zeigt Ihnen, wie Sie das machen.
-
-## Dezentralisierte Denkfähigkeiten
-
-Sobald Sie eine Wallet haben und einige der Features genutzt haben, verstehen Sie mehr über Ethereum, indem Sie sich fragen: "_Warum_ ist das eigentlich so wichtig?" Was macht Geld so wertvoll, wenn es niemand kontrolliert? Was ist Vertrauen? Trägt das zur Freiheit bei? Welche Arten von neuen Governance- und Organisationsstrukturen ermöglicht Ethereum? Diese und weitere Fragen werden offen in Gemeinschaften wie [Kernel](https://www.kernel.community/) diskutiert.
diff --git a/public/content/translations/de/refi/index.md b/public/content/translations/de/refi/index.md
index 7fa127d3f34..44bb7506994 100644
--- a/public/content/translations/de/refi/index.md
+++ b/public/content/translations/de/refi/index.md
@@ -18,7 +18,7 @@ summaryPoint3: Ein Instrument zur drastischen Skalierung von Gütern für ökolo
Stattdessen zielt ReFi darauf ab, ökologische, kommunale oder soziale Probleme zu lösen, indem es regenerative Kreisläufe schafft. Diese Systeme schaffen Werte für die Teilnehmer und kommen gleichzeitig den Ökosystemen und Gemeinschaften zugute.
-Eine der Grundlagen von ReFi ist das Konzept der regenerativen Wirtschaft, das von John Fullerton vom [Capital Institute](https://capitalinstitute.org) erdacht wurde. Er schlug acht miteinander verknüpfte Grundsätze vor, die der systemischen Gesundheit zugrunde liegen:
+Eine der Grundlagen von ReFi ist das Konzept der regenerativen Wirtschaft, das von John Fullerton vom Capital Institute erdacht wurde. Er schlug [acht miteinander verknüpfte Grundsätze](https://capitalinstitute.org/8-principles-regenerative-economy/) vor, die der systemischen Gesundheit zugrunde liegen:
![Acht miteinander verknüpfte Grundsätze](./refi-regenerative-economy-diagram.png)
diff --git a/public/content/translations/de/roadmap/account-abstraction/index.md b/public/content/translations/de/roadmap/account-abstraction/index.md
index b85eabcf00e..f2ade84be2b 100644
--- a/public/content/translations/de/roadmap/account-abstraction/index.md
+++ b/public/content/translations/de/roadmap/account-abstraction/index.md
@@ -47,8 +47,8 @@ Zum Beispiel können Backup-Schlüssel zu einer Wallet hinzugefügt werden, soda
- **Multisig-Autorisierung**: Sie können Autorisierungsdaten über mehrere vertrauenswürdige Personen oder Geräte verteilen. Dann kann der Vertrag so konfiguriert werden, dass Transaktionen über einem bestimmten vordefinierten Wert die Autorisierung von einem bestimmten Anteil (z.B. 3/5) der vertrauenswürdigen Parteien erfordern. Zum Beispiel könnten Transaktionen mit hohem Wert die Zustimmung sowohl von einem mobilen Gerät als auch von einer Hardware-Wallet erfordern, oder Signaturen von Konten, die an vertrauenswürdige Familienmitglieder verteilt wurden.
- **Kontosperrung**: Wenn ein Gerät verloren geht oder kompromittiert wird, kann das Konto von einem anderen autorisierten Gerät aus gesperrt werden, um die Vermögenswerte des Benutzers zu schützen.
- **Kontowiederherstellung**: Haben Sie ein Gerät verloren oder ein Passwort vergessen? Im aktuellen Paradigma könnte dies bedeuten, dass Ihre Vermögenswerte für immer eingefroren werden könnten. Mit einer Smart-Contract-Wallet können Sie einige vorab genehmigte Konten festlegen, die neue Geräte autorisieren und den Zugriff zurücksetzen können.
-- **Transaktionslimits festlegen**: Legen Sie tägliche Grenzwerte fest, wie viel Wert innerhalb eines Tages/einer Woche/eines Monats vom Konto übertragen werden kann. Das bedeutet, wenn ein Angreifer Zugang zu Ihrem Konto erlangt, kann er nicht alles auf einmal abziehen und Sie haben die Möglichkeit, den Zugang zu sperren und zurückzusetzen.
-- **Erstellen Sie Whitelists**: Erlauben Sie Transaktionen nur zu bestimmten Adressen, die Sie als sicher einstufen. Das bedeutet, dass _selbst wenn_ Ihr privater Schlüssel gestohlen wurde, der Angreifer keine Mittel an nicht-whitelistete Zielkonten senden könnte. Diese Whitelists würden mehrere Unterschriften zur Änderung erfordern, sodass ein Angreifer seine eigene Adresse nicht zur Liste hinzufügen könnte, es sei denn, er hätte Zugang zu mehreren Ihrer Backup-Schlüssel.
+- **Transaktionslimits festlegen**: Legen Sie tägliche Obergrenzen dafür fest, wie viel Wert innerhalb eines Tages/einer Woche/eines Monats von dem Konto überwiesen werden kann. Das bedeutet, wenn ein Angreifer Zugang zu Ihrem Konto erlangt, kann er nicht alles auf einmal abziehen und Sie haben die Möglichkeit, den Zugang zu sperren und zurückzusetzen.
+- **Whitelists erstellen**: Erlauben Sie Transaktionen nur zu bestimmten Adressen, von denen Sie wissen, dass sie sicher sind. Das bedeutet, dass _selbst wenn_ Ihr privater Schlüssel gestohlen wurde, der Angreifer keine Mittel an nicht-whitelistete Zielkonten senden könnte. Diese Whitelists würden mehrere Unterschriften zur Änderung erfordern, sodass ein Angreifer seine eigene Adresse nicht zur Liste hinzufügen könnte, es sei denn, er hätte Zugang zu mehreren Ihrer Backup-Schlüssel.
## Bessere Nutzererfahrung {#better-user-experience}
diff --git a/public/content/translations/de/roadmap/beacon-chain/index.md b/public/content/translations/de/roadmap/beacon-chain/index.md
index 11446851595..f8a33ce6ca0 100644
--- a/public/content/translations/de/roadmap/beacon-chain/index.md
+++ b/public/content/translations/de/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ Die Beacon Chain ist die Bezeichnung für ein Kontenbuch, das das Netzwerk von E
Die Beacon Chain brachte [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos/) zu Ethereum. Dieser Mechanismus sichert Ethereum und sorgt dafür, dass die Validatoren dabei ETH verdienen. In der Praxis bedeutet dies ETH einzusetzen, um die Validierungssoftware zu aktivieren. Als Staker führen Sie die Software aus die in der Chain neue Blöcke erstellt und validiert.
-Staking erfüllt denselben Zweck wie einst [Mining](/developers/docs/mining/), aber unterscheidet sich davon in vielerlei Hinsicht. Mining erforderte hohe Voraufwendungen in Form von mächtiger Hardware und hohem Energieverbrauch. Dies führte zu Skaleneffekten und förderte Zentralisierung. Mining sah auch keine Verpflichtung vor Vermögenswerte, als Sicherheiten zu sperren. Das Protokoll hatte dadurch weniger Möglichkeiten feindselige Akteure nach einer Attacke zu bestrafen.
+Staking erfüllt denselben Zweck wie einst [Mining](/developers/docs/consensus-mechanisms/pow/mining/), aber unterscheidet sich davon in vielerlei Hinsicht. Mining erforderte hohe Voraufwendungen in Form von mächtiger Hardware und hohem Energieverbrauch. Dies führte zu Skaleneffekten und förderte Zentralisierung. Mining sah auch keine Verpflichtung vor Vermögenswerte, als Sicherheiten zu sperren. Das Protokoll hatte dadurch weniger Möglichkeiten feindselige Akteure nach einer Attacke zu bestrafen.
Der Wechsel zu Proof-of-Stake machte Ethereum wesentlich sicherer und dezentralisierte im Vergleich zu Proof-of-Work. Je mehr Menschen sich am Netzwerk beteiligen, desto dezentralisierter und sicherer wird es vor Angriffen.
diff --git a/public/content/translations/de/roadmap/index.md b/public/content/translations/de/roadmap/index.md
index c172f67d16e..beb3fceb6ea 100644
--- a/public/content/translations/de/roadmap/index.md
+++ b/public/content/translations/de/roadmap/index.md
@@ -3,13 +3,15 @@ title: Ethereum-Roadmap
description: Der Weg zu mehr Skalierbarkeit, Sicherheit und Nachhaltigkeit für Ethereum.
lang: de
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Ethereum-Roadmap"
summaryPoints:
buttons:
- - label: Weitere Upgrades
+ -
+ label: Weitere Upgrades
toId: welche-veränderungen-kommen-werden
- - label: Bisherige Upgrades
+ -
+ label: Bisherige Upgrades
to: /history/
variant: Übersicht
---
@@ -59,7 +61,7 @@ Ethereum erhält regelmäßig Upgrades, die seine Skalierbarkeit, Sicherheit ode
-Die Roadmap ist vor allem das Ergebnis jahrelanger Arbeit von Forschern und Entwicklern - da das Protokoll sehr technisch ist - aber jede motivierte Person kann sich daran beteiligen. Die Ideen beginnen in der Regel als Diskussionen in einem Forum wie [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) oder dem Eth R&D Discord Server. Dabei kann es sich um Reaktionen auf neu entdeckte Schwachstellen handeln, um Vorschläge von Organisationen, die auf der Anwendungsebene arbeiten (z. B. Dapps und Börsen), oder um bekannte Schwierigkeiten für Endnutzer (z. B. Kosten oder Transaktionsgeschwindigkeit). Wenn diese Ideen ausgereift sind, können sie als [Ethereum Improvement Proposals](https://eips.ethereum.org/) vorgeschlagen werden. Dies alles geschieht öffentlich, so dass sich jeder aus der Community jederzeit einbringen kann.
+Die Roadmap ist vor allem das Ergebnis jahrelanger Arbeit von Forschern und Entwicklern - da das Protokoll sehr technisch ist - aber jede motivierte Person kann sich daran beteiligen. Ideen beginnen in der Regel als Diskussionen in einem Forum wie [ethresear.ch](https://ethresear.ch/), [Ethereum Magicians](https://ethereum-magicians.org/) oder dem Eth R&D-Discord-Server. Dabei kann es sich um Reaktionen auf neu entdeckte Schwachstellen handeln, um Vorschläge von Organisationen, die auf der Anwendungsebene arbeiten (z. B. Dapps und Börsen), oder um bekannte Schwierigkeiten für Endnutzer (z. B. Kosten oder Transaktionsgeschwindigkeit). Wenn diese Ideen ausgereift sind, können sie als [Ethereum Improvement Proposals](https://eips.ethereum.org/) vorgeschlagen werden. Dies alles geschieht öffentlich, so dass sich jeder aus der Community jederzeit einbringen kann.
[Mehr über Ethereum-Governance](/governance/)
@@ -114,4 +116,4 @@ Beim Sharding wird die Ethereum-Blockchain so aufgeteilt, dass Untergruppen von
- [Secret leader election](/roadmap/secret-leader-election) - Durch geschickte Kryptographie kann sichergestellt werden, dass die Identität des aktuellen Blockantragstellers nicht bekannt gegeben wird, wodurch er vor bestimmten Arten von Angriffen geschützt ist.
- [Account abstraction](/roadmap/account-abstraction)- Die Kontoabstraktion ist eine Klasse von Upgrades, die Smart-Contract-Wallets direkt auf Ethereum unterstützen, anstatt komplexe Middleware zu verwenden.
- [Verkle trees](/roadmap/verkle-trees) - Verkle-Bäume sind eine Datenstruktur, die verwendet werden kann, um zustandslose Clients auf Ethereum zu ermöglichen. Diese "zustandslosen" Clients benötigen nur wenig Speicherplatz, sind aber dennoch in der Lage, neue Blöcke zu verifizieren.
-- [Statelessness](/roadmap/statelessness) - zustandslose Clients können neue Blöcke verifizieren, ohne große Datenmengen speichern zu müssen. Dies bietet alle Vorteile des Betriebs einer Node mit nur einem kleinen Bruchteil der heutigen Kosten.
+- [Statuslosigkeit](/roadmap/statelessness) – Statuslose Clients werden in der Lage sein, neue Blöcke zu überprüfen, ohne große Mengen an Daten speichern zu müssen. Dies bietet alle Vorteile des Betriebs einer Node mit nur einem kleinen Bruchteil der heutigen Kosten.
diff --git a/public/content/translations/de/roadmap/merge/index.md b/public/content/translations/de/roadmap/merge/index.md
index 334d178eae9..4a3e3794535 100644
--- a/public/content/translations/de/roadmap/merge/index.md
+++ b/public/content/translations/de/roadmap/merge/index.md
@@ -4,7 +4,6 @@ description: Erfahren Sie mehr über die Zusammenführung, als Mainnet Ethereum
lang: de
template: upgrade
image: /upgrades/merge.png
-alt:
summaryPoint1: Ethereum Mainnet verwendet Proof-of-Stake, aber das war nicht immer der Fall.
summaryPoint2: Der Wechsel vom ursprünglichen Proof-of-Work Mechanismus zu Proof-of-Stake wurde Zusammenführung genannt.
summaryPoint3: Die Zusammenführung bezieht sich auf das ursprüngliche Ethereum Mainnet, welches mit einer separaten Proof-of-Stake-Blockchain namens Beacon Chain vereinigt wurde, und somit nun beide als eine Blockchain existieren.
@@ -179,18 +178,18 @@ Dadurch wird ein Massenexodus der für Staking eingesetzten Mittel verhindert. D
Der effektive Jahreszins ist auch bewusst dynamisch, damit ein Markt von Stakern abwägen kann, wie viel sie bereit sind, für die Sicherung des Netzwerks zu zahlen. Wenn die Rate zu niedrig ist, werden die Validatoren mit einer durch das Protokoll begrenzten Rate aussteigen. Nach und nach wird dadurch die APR für alle erhöht, die bleiben und wieder neue oder wiederkehrende Staker anziehen.
-## Was ist mit "Eth2" passiert? {#eth2}
+## Was ist mit „Eth2“ passiert? {#eth2}
Der Begriff "Eth2" ist veraltet. Nach der Zusammenführung von "Eth1" und "Eth2" in eine einzelne Chain gibt es keinen Grund mehr zwischen zwei Ethereum Netzwerken zu unterscheiden. Es gibt nur Ethereum.
Um Unklarheiten zu minimieren, hat die Community diese Begriffe aktualisiert:
-- „Eth1“ ist nun der „Ausführungslayer“, der Transaktionen verarbeitet und ausführt.
-- „Eth2“ ist nun der „Konsenslayer“, der den Proof-of-Stake-Konsens regelt.
+- „Eth1“ ist nun die „Ausführungsebene“, die Transaktionen und Ausführungen verarbeitet.
+- „Eth2“ ist nun die „Konsensebene“, die den Proof-of-Stake-Konsens regelt.
-Diese aktualisierte Terminologie ändert lediglich die Benennungskonventionen. Die Ziele von Ethereum oder die Roadmap ändern sich dadurch nicht.
+Diese aktualisierte Terminologie ändert lediglich die Benennungskonventionen. Die Ziele und der Fahrplan von Ethereum ändern sich dadurch nicht.
-[Mehr erfahren über die „Eth2“-Umbenennung](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
+[Mehr über die „Eth2“-Umbenennung erfahren](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
## Beziehung zwischen den Upgrades {#relationship-between-upgrades}
diff --git a/public/content/translations/de/roadmap/merge/issuance/index.md b/public/content/translations/de/roadmap/merge/issuance/index.md
index 01dd5dcfa82..cc2c4c36ba2 100644
--- a/public/content/translations/de/roadmap/merge/issuance/index.md
+++ b/public/content/translations/de/roadmap/merge/issuance/index.md
@@ -44,7 +44,7 @@ Gesamt ETH Angebot: **~120,520,000 ETH** (zum Zeitpunkt von The Merge im Septemb
**Ausgabe in der Ausführungsschicht:**
-- Wurde auf 2,08 ETH pro 13,3 Sekunden\* geschätzt: **~4,930,000** ETH wurden in einem Jahr ausgegeben
+- Wurde auf 2,08 ETH pro 13,3 Sekunden* geschätzt: **~4,930,000** ETH wurden in einem Jahr ausgegeben
- Führte zu einer Inflationsrate von **etwa 4.09%** (4,93 Mio. pro Jahr / 120,5 Mio. Gesamt)
- \*Dies beinhaltet die 2 ETH pro kanonischem Block, plus durchschnittlich 0,08 ETH über die Zeit von Ommer-Blöcken. Es verwendet auch 13,3 Sekunden, die Zielzeit für den Baseline-Block ohne jeglichen Einfluss durch eine ["Difficulty Bomb"](/glossary/#difficulty-bomb). ([Siehe Quelle](https://bitinfocharts.com/ethereum/))
diff --git a/public/content/translations/de/roadmap/pbs/index.md b/public/content/translations/de/roadmap/pbs/index.md
index b20468cf7f8..fb3cd3f670a 100644
--- a/public/content/translations/de/roadmap/pbs/index.md
+++ b/public/content/translations/de/roadmap/pbs/index.md
@@ -41,7 +41,7 @@ Danksharding ist der Weg, auf dem Ethereum zu >100000 Transaktionen pro Sekunde
## Aktueller Fortschritt {#current-progress}
-PBS ist in einer fortgeschrittenen Phase der Forschung, aber es gibt immer noch ein paar wichtige Designfragen, die gelöst werden müssen, bevor es in Ethereum Clients implementiert werden kann. Es gibt noch keine endgültige Spezifikation. Das heißt, dass PBS wahrscheinlich noch mindestens ein Jahr oder länger entfernt ist. Informieren Sie sich über den neuesten [Forschungsstand](https://notes.ethereum.org/@vbuterin/pbs_zensur_resistance).
+PBS ist in einer fortgeschrittenen Phase der Forschung, aber es gibt immer noch ein paar wichtige Designfragen, die gelöst werden müssen, bevor es in Ethereum Clients implementiert werden kann. Es gibt noch keine endgültige Spezifikation. Das heißt, dass PBS wahrscheinlich noch mindestens ein Jahr oder länger entfernt ist. Informieren Sie sich über den neuesten [Forschungsstand](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance).
## Weiterführende Informationen {#further-reading}
diff --git a/public/content/translations/de/roadmap/single-slot-finality/index.md b/public/content/translations/de/roadmap/single-slot-finality/index.md
index da54f9301a0..b988eafe741 100644
--- a/public/content/translations/de/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/de/roadmap/single-slot-finality/index.md
@@ -37,7 +37,7 @@ Mit dem derzeitigen Aufbau des Mechanismus müssen, um die Zeit zur Endlichkeit
Der derzeitige Konsensmechanismus verbindet Attestierungen mehrerer Validatoren, welche Komitees genannt werden, um die Anzahl an Nachrichten, die jeder Validator in einem Block verarbeiten muss, um jenen zu validieren, zu verringern. Jeder Validator hat in jeder Epoche (32 Plätze) die Möglichkeit zur Attestierung. In jedem Platz haben jedoch nur eine Untergruppe von Validatoren, bekannt als Komitee-Attestierung diese Möglichkeit. Das machen sie, indem sie in Unternetzwerke unterteilt werden, in denen wenige Validatoren als "Aggregatoren" ausgewählt werden. Diese Aggregatoren verbinden alle die Unterschriften, welche sie von anderen Validatoren bekommen in, in ihrem Netzwerk zu einer einzelnen aggregierten Unterschrift. Der Aggregator, welcher die größte Anzahl an einzelnen Teilnahmen beinhaltet, gibt dann die aggregierte Unterschrift an den Blockantragsteller (Block Proposer) weiter, welcher sie dann in seinem Block mit den aggregierten Unterschriften anderer Komitees einschließt.
-Dieser Prozess gibt für jeden Validatoren ausreichende Kapazität, in jeder Epoche abzustimmen, da 32 Plätze _ 64 Komitees _ 256 Validator pro Komitee 524 288 Validatoren pro Epoche ergeben. Zum Zeitpunkt der Erstellung dieses Artikels (Februar 2023) gibt es ~513 000 aktive Validatoren.
+Dieser Prozess gibt für jeden Validatoren ausreichende Kapazität, in jeder Epoche abzustimmen, da 32 Plätze * 64 Komitees * 256 Validator pro Komitee 524 288 Validatoren pro Epoche ergeben. Zum Zeitpunkt der Erstellung dieses Artikels (Februar 2023) gibt es ~513 000 aktive Validatoren.
In diesem Schema ist es für jeden Validatoren möglich für einen Block abzustimmen, indem er seine Attestierungen über die gesamte Epoche verteilen. Jedoch gibt es potentielle Wege diesen Mechanismus zu verbessern, sodass _jeder Validator die Chance hat in jedem Platz zu attestieren_.
@@ -58,7 +58,7 @@ Das Problem mit dem Skalieren von Aggregationen mit einer Erhöhung der Validato
## Aktueller Fortschritt {#current-progress}
-SSF ist in der Forschungsphase. Es ist nicht zu erwarten, dass es in den nächsten Jahren entsendet werden kann, wahrscheinlich wird dies erst nach anderen wesentlichen Verbesserungen wie [Verkle Bäumen](/roadmap/verkle-trees/) und [Danksharding](/roadmap/danksharding]) passieren können.
+SSF ist in der Forschungsphase. Es ist nicht zu erwarten, dass es in den nächsten Jahren entsendet werden kann, wahrscheinlich wird dies erst nach anderen wesentlichen Verbesserungen wie [Verkle Bäumen](/roadmap/verkle-trees/) und [Danksharding](/roadmap/danksharding/) passieren können.
## Weiterführende Informationen {#further-reading}
diff --git a/public/content/translations/de/roadmap/statelessness/index.md b/public/content/translations/de/roadmap/statelessness/index.md
index 49b4454e2ca..4c751c46b65 100644
--- a/public/content/translations/de/roadmap/statelessness/index.md
+++ b/public/content/translations/de/roadmap/statelessness/index.md
@@ -66,7 +66,7 @@ Schwache Zustandslosigkeit beinhaltet Änderungen dazu, wie Ethereum Nodes Zusta
**Bei der schwachen Zustandslosigkeit brauchen Blöcke Zugriff auf die vollen Zustandsdaten, jedoch benötigt das Verifizieren von Blöcken keine Zustandsdaten**
-Damit dies passieren kann, müssten [Verkle Bäume](/roadmap/verkle-trees/) bereits in Ethereum Clients implementiert sein. Verkle-Bäume sind eine Datenersetzungsstruktur um Ethereums Zustandsdaten zu speichern. Sie erlauben kleine "Zeugen" fester Größe, die dazu da sind Daten zwischen Peers zu vermitteln und Blöcke direkt, anstatt gegen lokale Datenbanken zu verifizieren. [Proposer-Builder Separation](/roadmap/pbs/) wird zudem benötigt, da es Blockerzeugern erlaubt spezialisierte Nodes mit leistungsfähigerer Hardware zu sein und da sie es sind, die Zugriff auf die vollen Zustandsdaten brauchen.
+Damit dies passieren kann, müssen [Verkle Trees](/roadmap/verkle-trees/) bereits in Ethereum Clients implementiert sein. Verkle-Bäume sind eine Datenersetzungsstruktur um Ethereums Zustandsdaten zu speichern. Sie erlauben kleine "Zeugen" fester Größe, die dazu da sind Daten zwischen Peers zu vermitteln und Blöcke direkt, anstatt gegen lokale Datenbanken zu verifizieren. [Proposer-Builder Separation](/roadmap/pbs/) wird zudem benötigt, da es Blockerzeugern erlaubt spezialisierte Nodes mit leistungsfähigerer Hardware zu sein und da sie es sind, die Zugriff auf die vollen Zustandsdaten brauchen.
@@ -81,7 +81,7 @@ Schwache Zustandslosigkeit ist in einem fortgeschrittenem Forschungsstand, aber
### Starke Zustandslosigkeit {#strong-statelessness}
-Starke Zustandslosigkeit entfernt jegliche Notwendigkeit für irgendeinen Node die Zustandsdaten zu speichern. Stattdessen werden Transaktionen mit Zeugen, welche von Blockerzeugern aggregiert werden können, versendet. Die Blockerzeuger sind dann verantwortlich, nur den für die Generierung von Zeugen für relevante Accounts gebrauchten Zustand zu speichern. Die Verantwortung für den Zustand ist fast komplett an den Nutzer verschoben, da diese Zeugen senden und 'Listen aufrufen' um zu erklären, mit welchen Account- und Speicherschlüsseln sie interagieren.
+Starke Zustandslosigkeit entfernt jegliche Notwendigkeit für irgendeinen Node die Zustandsdaten zu speichern. Stattdessen werden Transaktionen mit Zeugen, welche von Blockerzeugern aggregiert werden können, versendet. Die Blockerzeuger sind dann verantwortlich, nur den für die Generierung von Zeugen für relevante Accounts gebrauchten Zustand zu speichern. Die Verantwortung für den Zustand ist fast komplett an den Nutzer verschoben, da diese Zeugen senden und 'Listen aufrufen' um zu erklären, mit welchen Account- und Speicherschlüsseln sie interagieren. Dies würde extrem leichte Nodes ermöglichen, aber es gibt auch Nachteile, einschließlich der Erschwerung von Transaktionen mit Smart Contracts.
Starke Zustandslosigkeit wurde von Forschern untersucht, wird aber wahrscheinlich kein Teil der Ethereum Roadmap sein - es ist wahrscheinlicher, dass die schwache Zustandslosigkeit für Ethereums Skalierungsbedürfnisse ausreicht.
diff --git a/public/content/translations/de/staking/pools/index.md b/public/content/translations/de/staking/pools/index.md
index 3a14c6acf00..8cfcd9f10ba 100644
--- a/public/content/translations/de/staking/pools/index.md
+++ b/public/content/translations/de/staking/pools/index.md
@@ -26,7 +26,7 @@ Zusätzlich zu den Vorteilen, die wir in unserer [Einführung zum Staking](/stak
-
+
@@ -53,14 +53,14 @@ Es gibt eine Vielzahl von Optionen, die Ihnen bei der Einrichtung helfen. Anhand
-Hinweis: Es ist wichtig, einen Dienst zu wählen, der [Client-Diversität](/developers/docs/nodes-and-clients/client-diversity/) ernst nimmt, da das die Sicherheit des Netzwerks verbessert und Ihr Risiko begrenzt. Dienste, die nachweislich die Nutzung von Mehrheits-Clients einschränken, sind gekennzeichnet mit "Vielfalt der Ausführungskunden" and "Vielfalt der Konsenskunden".
+Hinweis: Es ist wichtig, einen Dienst zu wählen, der [Client-Diversität](/developers/docs/nodes-and-clients/client-diversity/) ernst nimmt, da das die Sicherheit des Netzwerks verbessert und Ihr Risiko begrenzt. Dienste, die nachweislich die Nutzung von Mehrheits-Clients einschränken, sind gekennzeichnet mit "Vielfalt der Ausführungs-Clients" and "Vielfalt der Konsens-Clients".
Haben Sie einen Vorschlag für einen Staking-Tool, der noch fehlt? Machen Sie sich mit unserer [Richtlinie zum Aufführen von Produkten](/contributing/adding-staking-products/) vertraut, um beurteilen zu können, ob Ihr Vorschlag geeignet ist. Senden Sie ihn uns dann zur Prüfung zu.
## Häufig gestellte Fragen {#faq}
-Typischerweise werden ERC-20 Staking-Token an Staker ausgegeben, die den Wert ihrer eingesetzten ETH plus Belohnungen darstellen. Denken Sie daran, dass Staking-Belohnungen grundsätzlich etabliert sind, verschiedene Pools Staking-Belohnungen allerdings nach leicht unterschiedlichen Methoden an ihre Benutzer verteilen.
+Typischerweise werden ERC-20-Staking-Token an die Staker ausgegeben und repräsentieren den Wert ihres eingesetzten ETH sowie Belohnungen. Denken Sie daran, dass Staking-Belohnungen grundsätzlich etabliert sind, verschiedene Pools Staking-Belohnungen allerdings nach leicht unterschiedlichen Methoden an ihre Benutzer verteilen.
@@ -81,5 +81,6 @@ Einige Pooling-Optionen sind im Hinblick auf die Nodes, die sie unterstützen, s
## Weiterführende Informationen {#further-reading}
+- [Das Ethereum-Staking-Verzeichnis](https://www.staking.directory/) - _Eridian und Spacesider_
- [Staking mit Rocket Pool – Staking-Übersicht](https://docs.rocketpool.net/guides/staking/overview.html) – _RocketPool-Dokumentation_
- [Staking von Ethereum mit Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido Hilfedokumente_
diff --git a/public/content/translations/de/staking/saas/index.md b/public/content/translations/de/staking/saas/index.md
index 24c0a75e96b..3bc772cdcf9 100644
--- a/public/content/translations/de/staking/saas/index.md
+++ b/public/content/translations/de/staking/saas/index.md
@@ -47,7 +47,7 @@ Nachfolgend finden Sie einige verfügbare SaaS-Anbieter. Verwenden Sie die obige
-Hinweis: Es ist wichtig, dass sie die [Client-Diversität](/developers/docs/nodes-and-clients/client-diversity/) unterstützen, denn das erhöht die Netzsicherheit und begrenzt Ihre Risiken. Dienste, die nachweislich die Nutzung von Mehrheits-Clients einschränken, sind gekennzeichnet mit "Vielfalt der Ausführungskunden" and "Vielfalt der Konsenskunden".
+Hinweis: Es ist wichtig, dass sie die [Client-Diversität](/developers/docs/nodes-and-clients/client-diversity/) unterstützen, denn das erhöht die Netzsicherheit und begrenzt Ihre Risiken. Dienste, die nachweislich die Nutzung von Mehrheits-Clients einschränken, sind gekennzeichnet mit "Vielfalt der Ausführungs-Clients" and "Vielfalt der Konsens-Clients".
### Schlüssel-Generatoren
@@ -91,4 +91,5 @@ Für weitere Informationen zu Garantien oder Versicherungsoptionen sowie zur Anl
## Weiterführende Informationen {#further-reading}
+- [Das Ethereum-Staking-Verzeichnis](https://www.staking.directory/) - _Eridian und Spacesider_
- [Bewertung von Staking-Diensten](https://www.attestant.io/posts/evaluating-staking-services/) – _Jim McDonald 2020_
diff --git a/public/content/translations/de/staking/solo/index.md b/public/content/translations/de/staking/solo/index.md
index 9cb0960f8f9..9d8d1d7906a 100644
--- a/public/content/translations/de/staking/solo/index.md
+++ b/public/content/translations/de/staking/solo/index.md
@@ -109,7 +109,7 @@ Es gibt eine Vielzahl von Optionen, die Ihnen bei der Einrichtung helfen. Verwen
-Bitte beachten Sie, wie wichtig es ist, einen [Minderheits-Client](/developers/docs/nodes-and-clients/client-diversity/) zu wählen, da er die Sicherheit des Netzwerks verbessert und Ihr Risiko begrenzt. Tools, mit denen Sie einen Minderheit-Client einrichten können, werden als „Multi-Client" bezeichnet.
+Bitte beachten Sie, wie wichtig es ist, einen [Minderheits-Client](/developers/docs/nodes-and-clients/client-diversity/) zu wählen, da er die Sicherheit des Netzwerks verbessert und Ihr Risiko begrenzt. Tools, mit denen Sie einen Minderheits-Client einrichten können, werden als „Multi-Client" bezeichnet.
### Schlüssel-Generatoren
@@ -195,6 +195,7 @@ Um Ihr gesamtes Guthaben zu entsperren und zu erhalten, müssen Sie auch den Pro
## Weiterführende Informationen {#further-reading}
+- [Das Ethereum-Staking-Verzeichnis](https://www.staking.directory/) - _Eridian und Spacesider_
- [Ethereums Client-Diversitätsproblem](https://hackernoon.com/Ethereums-Client-Diversitätsproblem) – _@emmanuelawosika 2022_
- [Client-Diversität fördern](https://www.attestant.io/Posts/Client-Diversität-fördern/) – _Jim McDonald 2022_
- [Client-Diversität auf der Konsensebene von Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) – _jmcook.eth 2022_
diff --git a/public/content/translations/de/staking/withdrawals/index.md b/public/content/translations/de/staking/withdrawals/index.md
index 7c017a5be48..df9e0425e6c 100644
--- a/public/content/translations/de/staking/withdrawals/index.md
+++ b/public/content/translations/de/staking/withdrawals/index.md
@@ -114,12 +114,12 @@ Indem wir diese Berechnung erweitern, können wir die Zeit abschätzen, die ben
| Anzahl der Auszahlungen | Zeit bis zum Abschluss |
-| :---------------------: | :--------------------: |
-| 400,000 | 3,5 Tage |
-| 500,000 | 4,3 Tage |
-| 600,000 | 5,2 Tage |
-| 700,000 | 6,1 Tage |
-| 800,000 | 7,0 Tage |
+| :-------------------: | :--------------: |
+| 400,000 | 3,5 Tage |
+| 500,000 | 4,3 Tage |
+| 600,000 | 5,2 Tage |
+| 700,000 | 6,1 Tage |
+| 800,000 | 7,0 Tage |
@@ -194,7 +194,7 @@ eventCategory="FAQ"
eventAction="I operate a validator. Where can I find more information on enabling withdrawals?"
eventName="read more">
-Es wird empfohlen, dass Validatoren die Seite Staking Launchpad Withdrawals besuchen, auf der Sie weitere Details dazu finden, wie Sie Ihren Validator auf Auszahlungen vorbereiten können. Vorbereitung, Zeitpunkt der Ereignisse und weitere Details darüber, wie Auszahlungen funktionieren.
+Validator-Betreibern wird empfohlen, die Seite Startplattform für Staking-Auszahlungen zu besuchen. Dort können sie mehr Details darüber erfahren, wie Sie Ihren Validator auf Auszahlungen vorbereiten, sowie Informationen zum Zeitpunkt der Ereignisse und zur Funktionsweise von Auszahlungen erhalten.
Um Ihre Einrichtung zunächst auf einem Testnetz auszuprobieren, können Sie mit dem Goerli Testnet Staking Launchpad beginnen.
@@ -214,5 +214,5 @@ Nein. Sobald ein Validator ausgetreten ist und sein gesamtes Guthaben abgehoben
- [EIP-4895: Beacon-Kette implementiert Abhebungen als Operationen](https://eips.ethereum.org/EIPS/eip-4895)
- [Ethereum Cat Herders - Shanghai](https://www.ethereumcatherders.com/shanghai_upgrade/index.html)
- [PEEPanEIP #94: Auszahlung von gestaktem ETH (Testing) mit Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE)
-- [PEEPanEIP#68: EIP-4895: Beacon-Kette implementiert Abhebungen als Operationen mit Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs)
+- [PEEPanEIP#68: EIP-4895: Auszahlungen per Beacon Chain Push als Operationen mit Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs)
- [Verständnis der effektiven Bilanz des Validators](https://www.attestant.io/posts/understanding-validator-effective-balance/)
diff --git a/public/content/translations/de/zero-knowledge-proofs/index.md b/public/content/translations/de/zero-knowledge-proofs/index.md
index 1b6e11d2316..986b91b2318 100644
--- a/public/content/translations/de/zero-knowledge-proofs/index.md
+++ b/public/content/translations/de/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Eine nicht-technische Einführung in Null-Wissen-Beweise für Anfä
lang: de
---
-## Was sind Null-Wissen-Beweise? {#what-are-zk-proofs}
+# Was sind Null-Wissen-Beweise? {#what-are-zk-proofs}
Ein Null-Wissen-Beweis ist eine Methode, um die Gültigkeit einer Aussage zu beweisen, ohne die Aussage selbst offenzulegen. Der „Beweisanführer“ ist die Partei, die versucht, eine Aussage zu beweisen, während der „Verifizierer“ für die Validierung der Aussage verantwortlich ist.
diff --git a/public/content/translations/el/community/code-of-conduct/index.md b/public/content/translations/el/community/code-of-conduct/index.md
index 322a1e10894..fb669a51e13 100644
--- a/public/content/translations/el/community/code-of-conduct/index.md
+++ b/public/content/translations/el/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Τα βασικά πρότυπα που επιδιώκουμε σε
lang: el
---
+# Κώδικας Δεοντολογίας {#conduct-intro}
+
## Αποστολή {#mission}
Να αναπτύξει και να διατηρήσει τον πιο ολοκληρωμένο και προσβάσιμο κόμβο γνώσης για το Ethereum.
diff --git a/public/content/translations/el/community/events/index.md b/public/content/translations/el/community/events/index.md
index 95c7206c016..382c0b546d6 100644
--- a/public/content/translations/el/community/events/index.md
+++ b/public/content/translations/el/community/events/index.md
@@ -5,7 +5,7 @@ lang: el
hideEditButton: true
---
-## Προσεχείς εκδηλώσεις {#events}
+# Προσεχείς εκδηλώσεις {#events}
**Κάθε μήνα, πραγματοποιούνται εκδηλώσεις του Ethereum σε όλο τον κόσμο.** Μπορείτε να παρακολουθήσετε μια εκδήλωση κοντά σας για να γνωρίσετε περισσότερους ανθρώπους της κοινότητας, να μάθετε για τις ευκαιρίες απασχόλησης και να αναπτύξετε νέες δεξιότητες.
diff --git a/public/content/translations/el/roadmap/beacon-chain/index.md b/public/content/translations/el/roadmap/beacon-chain/index.md
index 5b43c77f51e..a42752afcd7 100644
--- a/public/content/translations/el/roadmap/beacon-chain/index.md
+++ b/public/content/translations/el/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ summaryPoint4: Μπορεί να το γνωρίζετε αυτό ως "Φάση
Η κύρια αλυσίδα θα εισαγάγει το [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) στο Ethereum. Ένα νέο τρόπο για να σας βοηθήσει να διατηρήσετε το Ethereum ασφαλές. Σκεφτείτε το σαν δημόσιο αγαθό που θα κάνει το Ethereum πιο υγιές και θα σας αποδώσει περισσότερο ETH κατά την παραγωγή του. Στην πράξη, θα σας εμπλέξει στην αποθήκευση (staking) ETH προκειμένου να ενεργοποιήσετε το λογισμικό επικύρωσης. Ως επικυρωτής θα επεξεργάζεστε συναλλαγές και θα δημιουργείτε νέα μπλοκ στην αλυσίδα (chain).
-Το Staking (αποθήκευση) και η λειτουργία σας ως επικυρωτής, είναι ευκολότερη από την [εξόρυξη](/developers/docs/mining/) (πώς είναι το δίκτυο ασφαλισμένο επί του παρόντος). Με την ελπίδα να βοηθήσει το Ethereum να γίνει πιο ασφαλές μακροπρόθεσμα. Όσο περισσότεροι άνθρωποι συμμετέχουν στο δίκτυο, τόσο πιο αποκεντρωμένο και ασφαλές από μια επίθεση θα μπορέσει να γίνει.
+Το Staking (αποθήκευση) και η λειτουργία σας ως επικυρωτής, είναι ευκολότερη από την [εξόρυξη](/developers/docs/consensus-mechanisms/pow/mining/) (πώς είναι το δίκτυο ασφαλισμένο επί του παρόντος). Με την ελπίδα να βοηθήσει το Ethereum να γίνει πιο ασφαλές μακροπρόθεσμα. Όσο περισσότεροι άνθρωποι συμμετέχουν στο δίκτυο, τόσο πιο αποκεντρωμένο και ασφαλές από μια επίθεση θα μπορέσει να γίνει.
Αν ενδιαφέρεστε να γίνετε επικυρωτής και να βοηθήσετε στην ασφάλιση του Beacon Chain, μάθετε περισσότερα για το staking.
diff --git a/public/content/translations/es/community/code-of-conduct/index.md b/public/content/translations/es/community/code-of-conduct/index.md
index 4a07faf31db..a3bf1acb53b 100644
--- a/public/content/translations/es/community/code-of-conduct/index.md
+++ b/public/content/translations/es/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Los estándares básicos por los que nos esforzamos en todos los es
lang: es
---
+# Código de conducta {#conduct-intro}
+
## Misión {#mission}
Desarrollar y mantener el centro de conocimiento más completo y accesible para Ethereum.
diff --git a/public/content/translations/es/community/events/index.md b/public/content/translations/es/community/events/index.md
index 9556c96f5ea..38f4f753c17 100644
--- a/public/content/translations/es/community/events/index.md
+++ b/public/content/translations/es/community/events/index.md
@@ -5,7 +5,7 @@ lang: es
hideEditButton: true
---
-## Próximos eventos {#events}
+# Próximos eventos {#events}
**Cada mes, se celebran grandes eventos de Ethereum en todo el mundo.** Plantéese asistir a alguno cerca suyo para conocer a más gente en la comunidad, aprender sobre oportunidades de empleo y desarrollar nuevas habilidades.
diff --git a/public/content/translations/es/contributing/design/adding-design-resources/index.md b/public/content/translations/es/contributing/design/adding-design-resources/index.md
index 78a48940a41..4cc870fbf92 100644
--- a/public/content/translations/es/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/es/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Pautas y requerimientos para asegurar la calidad de los materiales
lang: es
---
+# Añadiendo recursos de diseño {#adding-design-resources}
+
Cualquiera puede sugerir nuevos materiales de diseño para la [página de diseño y experiencia del usuario en Web3](/developers/docs/design-and-ux/).
Tenga en cuenta que la finalidad de esta página es proporcionar valor a los usuarios que aspiran ser diseñadores en Web3. La sección de diseño no está ahí para que la uses para anunciar tus servicios, productos o plataformas.
diff --git a/public/content/translations/es/contributing/design/index.md b/public/content/translations/es/contributing/design/index.md
index 59d7c1c9ce9..844154f2fd0 100644
--- a/public/content/translations/es/contributing/design/index.md
+++ b/public/content/translations/es/contributing/design/index.md
@@ -12,7 +12,7 @@ Por último, esto es un buen camino para construir un diverso e impresionante po
## ¿Cómo contribuir?
-### Proporciona opiniones en diseños tempranos de prototipos {#design-critique}
+### Proporciona opiniones en diseños tempranos de prototipos {#design-critique}
Algunas veces necesitamos ayuda para testear nuestras ideas crudas. Esto es un buen camino para saber cómo contribuir sin algunos conocimientos técnicos.
@@ -20,7 +20,7 @@ Algunas veces necesitamos ayuda para testear nuestras ideas crudas. Esto es un b
2. Usted será guiado a través de diseños para proporcionar opiniones por comentarios de función.
3. El resultado será compartido en el asunto GitHub y después será cerrado por el equipo.
-### Participa en las encuentas {#answer-surveys}
+### Participa en las encuentas {#answer-surveys}
Proporciona opiniones en nuestra página web por:
@@ -28,7 +28,7 @@ Proporciona opiniones en nuestra página web por:
2. Clicleando en la ventana de opiniones en abajo a la derecha en la esquina y respondiedo diseños y preguntas de contenido relacionado.
3. Céntrate en el formato de preguntas libres.
-### Si detecta errores de diseño en la página web, comuníquelos {#report-design-issues}
+### Si detecta errores de diseño en la página web, comuníquelos {#report-design-issues}
Ethereum.org es una página de rápido crecimiento con muchas características y contenido. Algunos de la interfaz de usuarios pueden fácilmente convertirse en obsoletos o podrían ser mejorados. Si usted detecta alguno de estos fallos, por favor comuníquelo para que podamos solucionarlo.
@@ -36,7 +36,7 @@ Ethereum.org es una página de rápido crecimiento con muchas características y
2. Toma captures y notas si ves algún visual o asuntos UX.
3. Reporte el asunto encontrado usando un [bug report](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Propone cambios de diseño {#propose-design-changes}
+### Propone cambios de diseño {#propose-design-changes}
Si usted se siente confortable tomando retos de diseños, puedes visitar nuestros asuntos GitHub abordar y filtrar para[asuntos relacionados de diseños](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
@@ -45,7 +45,7 @@ Si usted se siente confortable tomando retos de diseños, puedes visitar nuestro
3. Propone la solución en el problema correspondiente en GitHub o [crea uno nuevo.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
4. Espera que el equipo de diseño lo revise.
-### Construyan juntos un Sistemas de Diseño {#Contribute-to-design-system}
+### Construyan juntos un Sistemas de Diseño {#Contribute-to-design-system}
Nuestro sistema de diseño convierte el diseñado de ethereum.org fácil y sencillo. Si eres un diseñador experimentado, puedes ayudarnos a preparar muchos componentes para el sitio web.
@@ -56,7 +56,7 @@ Nuestro sistema de diseño convierte el diseñado de ethereum.org fácil y senci
5. El equipo de diseño lo revisará.
6. El equipo de Diseño incorporará los cambios en el archivo principal y lo publicará a la comunidad.
-### Escribe contenido relacionado con el diseño en el sitio web {#write-design-articles}
+### Escribe contenido relacionado con el diseño en el sitio web {#write-design-articles}
La comunidad para desarrolladores de Ethereum es fuerte, pero la comunidad de diseño se está quedando rezagada. Si eres un diseñador con conocimiento en web3, por favor considera compartir tu conocimiento con la gran comunidad para crecer y mejorar juntos; contamos con [una página sobre el diseño en Ethereum](/developers/docs/design-and-ux/) a la que puedes contribuir. También puedes revisar nuestras [políticas de listado](/contributing/design/adding-design-resources).
@@ -66,7 +66,7 @@ La comunidad para desarrolladores de Ethereum es fuerte, pero la comunidad de di
4. Una vez aprobado, escribe el contenido.
5. Envíalo en el incidente correspondiente en GitHub.
-### Dibuja nuevas ilustraciones {#prepare-illustrations}
+### Dibuja nuevas ilustraciones {#prepare-illustrations}
Las visualizaciones son una de las herramientas más poderosas para explicar temas abstractos. Añadir diagramas e infografías supone un enorme potencial. Al fin y al cabo, una imagen vale más que mil palabras.
diff --git a/public/content/translations/es/developers/docs/apis/json-rpc/index.md b/public/content/translations/es/developers/docs/apis/json-rpc/index.md
index e3f9edb13d9..a9a00d81686 100644
--- a/public/content/translations/es/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/es/developers/docs/apis/json-rpc/index.md
@@ -620,7 +620,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Recuperar un elemento del mapa es más difícil. La posición de un elemento de un mapa se calcula con:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Esto signifíca que para recuperar el almacenamiento en pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] necesitamos calcular la posición con:
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index d44cffea04e..9c9aa81d681 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: Un examen detallado del algoritmo Dagger-Hashimoto.
lang: es
---
-Dagger Hashimoto fue la implementación y especificación de investigación original para el algoritmo de minería de Ethereum. Dagger Hashimoto fue reemplazado por [Ethash](#ethash). La minería se apagó por completo en [La fusión](/updates/merge) el 15 de septiembre de 2022. Desde entonces, Ethereum se ha asegurado a través de un mecanismo [de prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar. Esta página es de interés histórico: la información que contiene ya no es relevante para Ethereum después de La fusión.
+Dagger Hashimoto fue la implementación y especificación de investigación original para el algoritmo de minería de Ethereum. Dagger Hashimoto fue reemplazado por [Ethash](#ethash). La minería se apagó por completo en [La fusión](/roadmap/merge/) el 15 de septiembre de 2022. Desde entonces, Ethereum se ha asegurado a través de un mecanismo [de prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar. Esta página es de interés histórico: la información que contiene ya no es relevante para Ethereum después de La fusión.
## Pre-requisitos: {#prerequisites}
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index b98edc2b18e..5072ec70c34 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### El uso de SHA3 {#sha3}
-El desarrollo de Ethereum coincidió con el desarrollo del estándar SHA3, y el proceso de estándares hizo un cambio tardío en el relleno del algoritmo hash finalizado, de modo que los hashes de Ethereum sha3_256 y sha3_512 no son hashes SHA3 estándar, sino una variante a la que se hace referencia a menudo referida a menudo como Keccak-256 y Keccak-512 en otros contextos. Vea el conversación [aquí](https://eips.ethereum.org/EIPS-1803), [aquí](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), o [aquí](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+El desarrollo de Ethereum coincidió con el desarrollo del estándar SHA3, y el proceso de estándares hizo un cambio tardío en el relleno del algoritmo hash finalizado, de modo que los hashes de Ethereum sha3_256 y sha3_512 no son hashes SHA3 estándar, sino una variante a la que se hace referencia a menudo referida a menudo como Keccak-256 y Keccak-512 en otros contextos. Vea el conversación [aquí](https://eips.ethereum.org/EIPS/eip-1803), [aquí](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), o [aquí](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Por favor, tenga esto en cuenta, ya que los hashes SHA3 se mencionan en la descripción del algoritmo a continuación.
diff --git a/public/content/translations/es/developers/docs/programming-languages/delphi/index.md b/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
index 56885d21a30..29f86306d85 100644
--- a/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
@@ -5,11 +5,11 @@ lang: es
incomplete: true
---
-
+
Aprende cómo desarrollar para Ethereum usando el lenguaje de programación Delphi
-
+
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser fiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, lo que significa que ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
index 15fb82657d1..63a50d602af 100644
--- a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: true
---
-
Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en .NET
+Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en .NET
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, lo que significa que ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/programming-languages/golang/index.md b/public/content/translations/es/developers/docs/programming-languages/golang/index.md
index dc143489638..55c10e8c8c2 100644
--- a/public/content/translations/es/developers/docs/programming-languages/golang/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/golang/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: true
---
-
Aprende a desarrollar para Ethereum mediante proyectos y herramientas basados en Go
+Aprende a desarrollar para Ethereum mediante proyectos y herramientas basados en Go
Usa Ethereum para crear aplicaciones descentralizadas (o "dapps"). Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Son descentralizadas, lo que significa que funcionan en una red de punto a punto, y no hay un único punto de fracaso. Ninguna entidad o persona las controla y es casi imposible censurarlas. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones.
diff --git a/public/content/translations/es/developers/docs/programming-languages/java/index.md b/public/content/translations/es/developers/docs/programming-languages/java/index.md
index 2fa80c28064..06379a63918 100644
--- a/public/content/translations/es/developers/docs/programming-languages/java/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/java/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: true
---
-
Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java
+Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser fiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/programming-languages/python/index.md b/public/content/translations/es/developers/docs/programming-languages/python/index.md
index 56b14d792c9..d243db26053 100644
--- a/public/content/translations/es/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/python/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: true
---
-
Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Python
+Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Python
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, lo que significa que ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
index 0f082a7691c..5ec548ac9b8 100644
--- a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: false
---
-
Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust.
+Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust.
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser trustless, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Controlan activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/programming-languages/rust/index.md b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
index 8281f77c43f..c12cd6fdec5 100644
--- a/public/content/translations/es/developers/docs/programming-languages/rust/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
@@ -5,7 +5,7 @@ lang: es
incomplete: true
---
-
Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust
+Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust
Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser fiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
index 962127d559b..af2754e8cf2 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ Donde `sender` es el usuario que desencadenó el retiro e intercambió `shares`,
## Más información {#further-reading}
- [EIP-4626: estándar de bóveda tokenizada](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: repositorio de GitHub](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626: repositorio de GitHub](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index ab6137a1a99..7830222486d 100644
--- a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -4,9 +4,7 @@ description: Una introducción al desarrollo de Ethereum, especialmente útil pa
author: Marc Garreau
lang: es
tags:
- - "Empezar"
- "python"
- - "cadena de bloques"
- "web3.py"
skill: beginner
published: 2020-09-08
@@ -22,10 +20,10 @@ Esta entrada pretende ser accesible a un amplio abanico de desarrolladores. [Se
Supuestos:
-- sabe cómo usar una terminal,
-- ha escrito unas cuantas líneas de código en Python,
+- Sabe cómo moverse en un terminal,
+- Ha escrito unas cuantas líneas de código en Python,
- Tiene la versión 3.6 o superior de Python instalada en su computadora (se recomienda el uso de un [entorno virtual](https://realpython.com/effective-python-environment/#virtual-environments)), y
-- ha utilizado `pip`, el instalador de paquetes de Python. Si una de las suposiciones previas no encajan, o no planeas reproducir el código en este artículo, puede ser que no tengas ningún inconveniente leyendo este articulo.
+- ha utilizado `pip`, el instalador de paquetes de Python. De nuevo, aunque no reúna todos estos requisitos, o no tenga pensado reproducir el código de este artículo, es probable que pueda seguirlo sin problemas.
## Expliquemos brevemente en qué consisten las cadenas de bloques {#blockchains-briefly}
@@ -36,7 +34,6 @@ Hay muchas maneras de describir Ethereum, pero en su esencia es una cadena de bl
"number": 1234567,
"hash": "0xabc123...",
"parentHash": "0xdef456...",
- "miner": "0xa1b2c3...",
...,
"transactions": [...]
}
@@ -60,11 +57,11 @@ Este nuevo conjunto de tecnologías descentralizadas ha generado nuevas herramie
Los desarrolladores de Python que quieran interactuar con Ethereum seguramente quieran usar [Web3.py](https://web3py.readthedocs.io/). Web3.py es una biblioteca que simplifica la forma en la que puede conectarse a un nodo de Ethereum para luego enviar y recibir datos de él.
-Nota: «nodo de Ethereum» y «cliente de Ethereum» se usan de forma indistinta. En cualquier caso, se refiere al software que ejecuta un participante de la red Ethereum. Este software puede leer los datos de un bloque, recibir actualizaciones cuando se añaden nuevos bloques («minería») y emitir nuevas transacciones, entre otras opciones.
+Nota: «nodo de Ethereum» y «cliente de Ethereum» se usan de forma indistinta. En cualquier caso, se refiere al software que ejecuta un participante de la red Ethereum. Este software puede leer datos de bloques, recibir actualizaciones cuando se agregan nuevos bloques a la cadena, transmitir nuevas transacciones y más. Técnicamente, el cliente es el software y el nodo es la computadora que ejecuta el software.
Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) pueden configurarse para que sean accesibles por [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP o Websockets, por lo que Web3.py necesitará reflejar esta configuración. Web3.py se refiere a estas opciones de conexión como **proveedores**. Tendrá que elegir uno de los tres proveedores para vincular la instancia de Web3.py a su nodo.
-![Un diagrama que muestra cómo web3.py usa IPC para conectar su aplicación a un nodo de Ethereum](./web3py-and-nodes.png)
+![Diagrama que muestra cómo web3.py usa IPC para conectar su aplicación a un nodo de Ethereum](./web3py-and-nodes.png)
_Configure el nodo de Ethereum y Web3.py para que se comuniquen por el mismo protocolo (IPC en este diagrama)._
@@ -104,21 +101,23 @@ pip install 'web3[tester]'
¡Ya está listo para comenzar!
+Nota: El paquete `web3[tester]` funciona hasta la versión de Python 3.10.xx
+
## Crear un proceso aislado {#spin-up-a-sandbox}
-Abra un nuevo entorno de Python escribiendo `ipython` en su terminal. Esto es comparable a escribir `python`, pero tiene más funciones.
+Abra un nuevo entorno de Python ejecutando `ipython` en su terminal. Esto es comparable a ejecutar `python`, pero tiene más funciones.
```bash
ipython
```
-Esto imprimirá información sobre las versiones de Python e IPython que están instaladas. Después, verá que la terminal está esperando que escriba algo:
+Esto imprimirá información sobre las versiones de Python e IPython que ejecute. Después, verá un mensaje esperando que escriba algo:
```python
In [1]:
```
-Ahora mismo está viendo una consola interactiva de Python. Es, esencialmente, un proceso aislado que puede usar para jugar. Si ha llegado hasta aquí, es hora de importar Web3.py:
+Ahora está viendo una consola interactiva de Python. Básicamente es un sandbox, o entorno de pruebas, para experimentar. Si ha llegado hasta aquí, es hora de importar Web3.py:
```python
In [1]: from web3 import Web3
@@ -126,9 +125,9 @@ In [1]: from web3 import Web3
## Presentamos el módulo Web3 {#introducing-the-web3-module}
-Además de ser una entrada a Ethereum, el módulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) ofrece algunas prácticas funciones. Vamos a explorar un par de ellas.
+Además de ser una puerta de enlace a Ethereum, el módulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) ofrece algunas prácticas funciones. Exploremos algunas.
-En una aplicación que interactúe con Ethereum, normalmente necesitará convertir las denominaciones de las monedas. El módulo Web3 proporciona un par de métodos de ayuda para este proceso: [fromWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.fromWei) y [toWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toWei).
+En una aplicación que interactúe con Ethereum, normalmente necesitará convertir las denominaciones de las monedas. El modulo Web3 proporciona un par de métodos de ayuda solo para esto [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) y [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei).
Nota: los ordenadores son especialmente poco precisos en el cálculo de decimales. Para solucionarlo, los desarrolladores suelen almacenar cantidades de dólares en centavos. Por ejemplo, un artículo con un precio de 5,99 $ puede almacenarse en la base de datos como 599.
@@ -141,21 +140,21 @@ Se usa un patrón similar cuando se manejan transacciones en ether. No ob
-Pruebe convirtiendo algunos valores a y desde wei. Tenga en cuenta que [hay nombres para muchas de las denominaciones](https://web3py.readthedocs.io/en/stable/examples.html#converting-currency-denominations) entre ether y wei. Una de las más conocidas es **gwei**, ya que es como suelen representarse las comisiones de las transacciones.
+Pruebe convertir algunos valores a y desde wei. Tenga en cuenta que [hay nombres para muchas de las denominaciones](https://web3py.readthedocs.io/en/stable/examples.html#converting-currency-denominations) entre ether y wei. Una de las más conocidas es **gwei**, ya que es como suelen representarse las comisiones de las transacciones.
```python
-In [2]: Web3.toWei(1, 'ether')
+In [2]: Web3.to_wei(1, 'ether')
Out[2]: 1000000000000000000
-In [3]: Web3.fromWei(500000000, 'gwei')
+In [3]: Web3.from_wei(500000000, 'gwei')
Out[3]: Decimal('0.5')
```
-Otros métodos de utilidad en el módulo Web3 incluyen conversores de formato de datos (p. ej., [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), ayudantes de dirección (p. ej., [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)) y funciones hash (p. ej., [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak)). Explicaremos muchos de estos en próximos tutoriales. Para ver todos los métodos y funciones disponibles, utilice el autocompletador de IPython escribiendo `Web3`. y presionando la tecla de tabulación dos veces después del período.
+Otros métodos de utilidad en el módulo Web3 incluyen conversores de formato de datos (p. ej., [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), ayudantes de dirección (p. ej., [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)) y funciones hash (p. ej., [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak)). Explicaremos muchos de estos más adelante en la serie. Para ver todos los métodos y funciones disponibles, utilice el autocompletador de IPython escribiendo `Web3` y presionando la tecla Tab dos veces después del punto.
## Hable con la cadena {#talk-to-the-chain}
-Los métodos de conveniencia son encantadores, pero pasemos a la cadena de bloques. El siguiente paso es configurar Web3.py para comunicarse con un nodo Ethereum. Aquí tenemos la opción de utilizar los proveedores IPC, HTTP o Websocket.
+Los métodos de conveniencia son encantadores, pero pasemos a la cadena de bloques. El siguiente paso es configurar Web3.py para establecer comunicación con un nodo Ethereum. Aquí tenemos la opción de utilizar los proveedores IPC, HTTP o Websocket.
No seguiremos este camino, pero un ejemplo de flujo de trabajo completo utilizando el proveedor HTTP podría ser este:
@@ -164,34 +163,34 @@ No seguiremos este camino, pero un ejemplo de flujo de trabajo completo utilizan
- Haga que Web3 se conecte al nodo a través de HTTP, en `localhost:8545`. `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))`
- Use la instancia `w3` para interactuar con el nodo.
-Si bien es una forma «real» de hacerlo, el proceso de sincronización lleva horas y es innecesario si solo quiere un entorno de desarrollo. Web3.py expone un cuarto proveedor para este propósito, el **EthereumTesterProvider**. Este proveedor de pruebas se vincula a un nodo de Ethereum simulado con permisos relajados y dinero falso para jugar.
+Si bien es una forma "real" de hacerlo, el proceso de sincronización lleva horas y es innecesario si solo quiere un entorno de desarrollo. Web3.py expone un cuarto proveedor para este propósito, el **EthereumTesterProvider**. Este proveedor de pruebas se vincula a un nodo de Ethereum simulado con permisos relajados y dinero falso para experimentar.
![Un diagrama que muestra el EthereumTesterProvider vinculando su aplicación web3.py a un nodo simulado de Ethereum](./ethereumtesterprovider.png)
_El EthereumTesterProvider se conecta a un nodo simulado y es práctico para entornos de desarrollo rápidos._
-Ese nodo simulado se llama [eth-tester](https://github.com/ethereum/eth-tester) y lo instalamos como parte del comando `pip install web3[tester]`. Configurar Web3.py para utilizar este proveedor de pruebas es tan simple como:
+Ese nodo simulado se llama [eth-tester](https://github.com/ethereum/eth-tester) y lo instalamos como parte del comando `pip install web3[tester]`. Configurar Web3.py para utilizar este proveedor de pruebas es así de sencillo:
```python
In [4]: w3 = Web3(Web3.EthereumTesterProvider())
```
-¡Ya está listo para navegar por la cadena! Eso no es algo que la gente suela decir. Me lo acabo de inventar. Veamos rápidamente en qué consiste.
+¡Ya está listo para navegar por la cadena! Eso no es algo que la gente suela decir. Me lo acabo de inventar. Veamos rápidamente de qué se trata.
## Explicación rápida {#the-quick-tour}
-Lo primero de todo es comprobar que funciona:
+Lo primero de todo es hacer una verificación:
```python
-In [5]: w3.isConnected()
+In [5]: w3.is_connected()
Out[5]: True
```
-A decir verdad, desde que usamos el proveedor de pruebas, esta no es una prueba muy valiosa, pero si falla, existe la posibilidad de que escriba algo incorrecto cuando instancie la variable `w3`. Compruebe dos veces que haya incluído los paréntesis internos, es decir:`Web3.EthereumTesterProvider()`.
+A decir verdad, como usamos el proveedor de pruebas, esta no es una prueba muy valiosa, pero si falla, es muy posible que haya escrito algo incorrecto al instanciar la variable `w3`. Compruebe bien que haya incluido los paréntesis internos, es decir: `Web3.EthereumTesterProvider()`.
## Punto n.º1 de la explicación: [cuentas](/developers/docs/accounts/) {#tour-stop-1-accounts}
-Por conveniencia, el proveedor ha creado algunas cuentas y las ha cargado previamente con ether de prueba.
+Por conveniencia, el proveedor de prubas creó algunas cuentas y las cargó previamente con ether de prueba.
Primero, veamos una lista de las cuentas:
@@ -202,19 +201,19 @@ Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
'0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...]
```
-Si ejecuta este comando, debería ver una lista de diez cadenas que comienzan con `0x`. Cada uno es una **dirección pública** y es, más o menos, análoga al número de cuenta de una cuenta corriente. Esa es la dirección que le daría a alguien que quisiera enviarle ether.
+Si ejecuta este comando, debería ver una lista de diez cadenas que comienzan con `0x`. Cada una es una **dirección pública** y es, de alguna manera, análoga al número de cuenta de una cuenta corriente. Esa es la dirección que le daría a alguien que quisiera enviarle ether.
-Como se ha mencionado, el proveedor ha cargado previamente cada una de estas cuentas con ether de prueba. Veamos cuánto hay en la primera cuenta:
+Como se ha mencionado, el proveedor de pruebas ha cargado previamente cada una de estas cuentas con ether de prueba. Veamos cuánto hay en la primera cuenta:
```python
In [7]: w3.eth.get_balance(w3.eth.accounts[0])
Out[7]: 1000000000000000000000000
```
-¡Un montón de ceros! Antes de que vaya corriendo a un banco falso, recuerde la lección sobre las denominaciones de monedas que le enseñamos antes. Los valores de ether se representan en la menor denominación: wei. Convierte eso a ether:
+¡Un montón de ceros! Antes de que vaya corriendo a un banco falso, recuerde la lección sobre las denominaciones de monedas que vimos antes. Los valores de ether se representan en la menor denominación: wei. Convierta eso a ether:
```python
-In [8]: w3.fromWei(1000000000000000000000000, 'ether')
+In [8]: w3.from_wei(1000000000000000000000000, 'ether')
Out[8]: Decimal('1000000')
```
@@ -222,7 +221,7 @@ Un millón de ether de prueba; nada mal.
## Parada n.º2 de la explicación: datos de bloque {#tour-stop-2-block-data}
-Echemos un vistazo al estado de esta cadena de bloques de prueba:
+Echemos un vistazo al estado de esta cadena de bloques simulada:
```python
In [9]: w3.eth.get_block('latest')
@@ -237,27 +236,27 @@ Out[9]: AttributeDict({
Veremos que aparece mucha información sobre un bloque, pero lo más importante es:
-- El número del bloque es cero, al margen de cuando se haya configurado el proveedor de pruebas. A diferencia de la red Ethereum, que mina un nuevo bloque cada 15 segundos —aproximadamente—, esta simulación le esperará hasta que le pida que haga algo.
+- El número del bloque es cero, al margen de cuando se haya configurado el proveedor de pruebas. A diferencia de la red real de Ethereum, que añade un nuevo bloque cada 12 segundos, esta simulación esperará hasta que usted le dé algo de trabajo que hacer.
- `transactions` es una lista vacía debido a lo que decimos arriba: aún no hemos hecho nada. Este primer bloque es un **bloque vacío**, usado solo para iniciar la cadena.
- Observe que `parentHash` es simplemente un montón de bytes vacíos. Esto significa que es el primer bloque en la cadena, también conocido como un **bloque génesis**.
## Parada n.º3 de la explicación: [transacciones](/developers/docs/transactions/) {#tour-stop-3-transactions}
-Estamos estancados en el bloque cero hasta que haya una transacción por minar, así que vamos a proporcionarle una. Envíe unos cuantos ether de prueba desde una cuenta a otra:
+Estamos estancados en el bloque cero hasta que haya una transacción pendiente, así que démosle una. Envíe algo de ether de prueba desde una cuenta a otra:
```python
In [10]: tx_hash = w3.eth.send_transaction({
'from': w3.eth.accounts[0],
'to': w3.eth.accounts[1],
- 'value': w3.toWei(3, 'ether'),
+ 'value': w3.to_wei(3, 'ether'),
'gas': 21000
})
```
-Este suele ser el momento en el que espera varios segundos para que su transacción sea minada en un nuevo bloque. El proceso completo suele ser de esta manera:
+Este es típicamente el punto donde esperaría varios segundos para que su transacción se incluya en un nuevo bloque. El proceso completo suele ser algo así:
-1. Envíe una transacción y mantenga el hash de la transacción. Hasta que se mine, la transacción aparecerá como «pendiente». `tx_hash = w3.eth.send_transaction({ … })`
-2. Espere a que la transacción sea minada: `w3.eth.wait_for_transaction_receipt(tx_hash)`
+1. Envíe una transacción y mantenga el hash de la transacción. Hasta que el bloque que contiene la transacción sea creado y emitido, la transacción estará “pendiente”. `tx_hash = w3.eth.send_transaction({ … })`
+2. Esperar a que la transacción se incluya en un bloque: `w3.eth.wait_for_transaction_receipt(tx_hash)`
3. Continúe con la lógica de la aplicación. Para ver la transacción satisfactoria: `w3.eth.get_transaction(tx_hash)`
Nuestro entorno simulado añadirá la transacción en un nuevo bloque de manera instantánea, por lo que podremos ver inmediatamente la transacción:
@@ -275,22 +274,25 @@ Out[11]: AttributeDict({
})
```
-Aquí encontrará algunos detalles que le resultarán familiares: las casillas `from`, `to` y `value` deben coincidir con el contenido de nuestra consulta `send_transaction`. El otro aspecto tranquilizador es que esta transacción se ha incluido como la primera transacción (`'transactionIndex': 0`) dentro del bloque número 1.
+Aquí encontrará algunos detalles que le resultarán familiares: los campos `from`, `to` y `value` deben coincidir con el contenido de nuestra consulta `send_transaction`. El otro aspecto tranquilizador es que esta transacción se incluyó como la primera transacción (`'transactionIndex': 0`) dentro del bloque número 1.
-También podemos verificar fácilmente el éxito de esta transacción al revisar los balances de las dos cuentas implicadas. Deben haber pasado tres ether de una cuenta a otra.
+También podemos verificar fácilmente el éxito de esta transacción revisando los saldos o balances de las dos cuentas implicadas. Deben haber pasado tres ether de una cuenta a otra.
```python
-In [12]: w3.eth.get_balance(w3.eth.accounts[0])
-Out[12]: 999996999999999999969000
+Entrada[12]: w3.eth.get_balance(w3.eth.accounts[0])
+Salida[12]: 999996999979000000000000
-In [13]: w3.eth.get_balance(w3.eth.accounts[1])
-Out[13]: 1000003000000000000000000
+Entrada[13]: w3.eth.get_balance(w3.eth.accounts[1])
+Salida[13]: 10000030000000000000000
```
-¡El último parece ser correcto! El balance ha pasado de 1.000.000 a 1.000.003 ether. Pero ¿qué pasó con la primera cuenta? Parece que perdió algo más de tres ether. Desafortunadamente, nada en esta vida es gratis; hacer uso de la red pública de Ethereum requiere compensar a las personas que cumplen con su tarea. Se ha tomado de la cuenta una pequeña comisión por la transacción, dejando la cantidad de la transacción al orden dd 31000 wei.
+¡El último parece ser correcto! El saldo ha pasado de 1.000.000 a 1.000.003 ether. Pero, ¿qué pasó con la primera cuenta? Parece que perdió algo más de tres ether. Desafortunadamente, nada en esta vida es gratis; hacer uso de la red pública de Ethereum requiere compensar a las personas que cumplen con su rol de apoyo. Se dedujo una pequeña comisión de transacción de la cuenta que envió la transacción: esta comisión es la cantidad de gas quemado (21.000 unidades de gas para una transferencia de ETH) multiplicada por una tarifa base que varía según la actividad de la red más una propina que va al validador que incluye la transacción en un bloque.
+
+Más información sobre el [gas](/developers/docs/gas/#post-london)
Nota: en la red pública, el precio de las comisiones por transacción se basa en la demanda de la red y en la rapidez con la que se desee procesar una transacción. Si quiere saber cómo se calculan las comisiones, lea mi artículo anterior, en donde describo cómo se incluyen las transacciones en un bloque.
+
## Tómese un respiro {#and-breathe}
-Después de todo lo que hemos aprendido hasta ahora, es un buen momento para hacer una pausa. Todavía hay mucho por indagar, por lo que continuaremos explorando en la parte dos de esta serie. Algunos conceptos que trataremos posteriormente: conectarse a un nodo real, contratos inteligentes y tókenes. ¿Tiene alguna pregunta? Si la tiene, adelante, ¡pregúntemela! Sus comentarios ayudarán a definir el camino a seguir. Puede hacer comentarios a través de [Twitter](https://twitter.com/wolovim).
+Después de todo lo que hemos aprendido hasta ahora, es un buen momento para hacer una pausa. Todavía hay mucho por indagar, por lo que continuaremos explorando en la parte 2 de esta serie. Algunos conceptos que trataremos posteriormente: conectarse a un nodo real, contratos inteligentes y tokens. ¿Tiene alguna pregunta? Si la tiene, adelante, ¡pregúntemela! Sus comentarios ayudarán a definir el camino a seguir. Puede hacer solicitudes a través de [Twitter](https://twitter.com/wolovim).
diff --git a/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
new file mode 100644
index 00000000000..b99c564cc15
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
@@ -0,0 +1,867 @@
+---
+title: "Todo lo que pueda almacenar en una memoria caché"
+description: Aprenda a crear y usar un contrato de almacenamiento en caché para transacciones acumuladas más baratas.
+author: Ori Pomerantz
+tags:
+ - "capa 2"
+ - "guardar en caché"
+ - "almacenamiento"
+skill: intermediate
+published: 2022-09-15
+lang: es
+---
+
+Cuando se utilizan rollups (o acumulaciones), el coste de un byte en la transacción es mucho más caro que el coste de una ranura de almacenamiento. Por lo tanto, tiene sentido almacenar en caché la mayor cantidad de información posible en la cadena.
+
+En este artículo, aprenderá a crear y usar un contrato de almacenamiento en caché de tal manera que cualquier valor de parámetro que se pueda usar varias veces se almacenará en caché, y estará disponible para su uso (después de la primera vez) con un número mucho menor de bytes, y cómo cancelar el código de cadena que utiliza esa caché.
+
+Si quiere omitir el artículo y ver el código fuente, [lo encontrará aquí](https://github.com/qbzzt/20220915-all-you-can-cache). La pila de desarrollo es [Foundry](https://book.getfoundry.sh/getting-started/installation).
+
+## Diseño general {#overall-design}
+
+En aras de la simplicidad, asumiremos que todos los parámetros de la transacción tienen una longitud de `uint256`, 32 bytes. Cuando recibamos una transacción, analizaremos cada parámetro de la siguiente manera:
+
+1. Si el primer byte es `0xFF`, tome los siguientes 32 bytes como valor de parámetro y escríbalos en la caché.
+
+2. Si el primer byte es `0xFE`, tome los siguientes 32 bytes como valor de parámetro, pero _no_ lo escriba en la caché.
+
+3. Para cualquier otro valor, tome los cuatro bits superiores como el número de bytes adicionales, y los cuatro bits inferiores como los bits más significativos de la clave de caché. He aquí algunos ejemplos:
+
+ | Bytes en calldata | Clave de caché |
+ |:----------------- | --------------:|
+ | 0x0F | 0x0F |
+ | 0x10,0x10 | 0x10 |
+ | 0x12,0xAC | 0x02AC |
+ | 0x2D,0xEA, 0xD6 | 0x0DEAD6 |
+
+## Manipulación de caché {#cache-manipulation}
+
+La caché se implementa en [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol). Vamos a repasarlo línea por línea.
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+
+contract Cache {
+
+ bytes1 public constant INTO_CACHE = 0xFF;
+ bytes1 public constant DONT_CACHE = 0xFE;
+```
+
+Estas constantes se utilizan para interpretar los casos especiales en los que proporcionamos toda la información y queremos que se escriba en la caché o no. Escribir en la caché requiere dos operaciones [`SSTORE`](https://www.evm.codes/#55) en ranuras de almacenamiento no utilizadas hasta el momento a un coste de 22.100 de gas cada una, por lo que lo hacemos opcional.
+
+```solidity
+
+ mapping(uint => uint) public val2key;
+```
+
+Un [mapeo](https://www.geeksforgeeks.org/solidity-mappings/) entre los valores y sus claves. Esta información es necesaria para codificar los valores antes de enviar la transacción.
+
+```solidity
+ // Location n has the value for key n+1, because we need to preserve
+ // zero as "not in the cache".
+ uint[] public key2val;
+```
+
+Podemos usar una matriz para el mapeo de claves a valores porque asignamos las claves, y por simplicidad, lo hacemos secuencialmente.
+
+```solidity
+ function cacheRead(uint _key) public view returns (uint) {
+ require(_key <= key2val.length, "Reading uninitialize cache entry");
+ return key2val[_key-1];
+ } // cacheRead
+```
+
+Leer un valor de la caché.
+
+```solidity
+ // Write a value to the cache if it's not there already
+ // Only public to enable the test to work
+ function cacheWrite(uint _value) public returns (uint) {
+ // If the value is already in the cache, return the current key
+ if (val2key[_value] != 0) {
+ return val2key[_value];
+ }
+```
+
+No tiene sentido poner el mismo valor en la caché más de una vez. Si el valor ya está ahí, simplemente devuelva la clave existente.
+
+```solidity
+ // Since 0xFE is a special case, the largest key the cache can
+ // hold is 0x0D followed by 15 0xFF's. If the cache length is already that
+ // large, fail.
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
+ "cache overflow");
+```
+
+No creo que alguna vez tengamos una caché tan grande (aproximadamente 1,8\*1037 entradas, lo que requeriría alrededor de 1027 TB para almacenar). Sin embargo, tengo la edad suficiente para recordar que ["640 kB siempre sería suficiente"](https://quoteinvestigator.com/2011/09/08/640k-enough/). Esta prueba es muy barata.
+
+```solidity
+ // Write the value using the next key
+ val2key[_value] = key2val.length+1;
+```
+
+Añada la búsqueda inversa (del valor a la clave).
+
+```solidity
+ key2val.push(_value);
+```
+
+Añade la búsqueda hacia adelante (desde la clave hasta el valor). Debido a que asignamos valores secuencialmente, podemos añadirlos después del último valor de la matriz.
+
+```solidity
+ return key2val.length;
+ } // cacheWrite
+```
+
+Devuelve la nueva longitud de `key2val`, que es la celda donde se almacena el nuevo valor.
+
+```solidity
+ function _calldataVal(uint startByte, uint length)
+ private pure returns (uint)
+```
+
+Esta función lee un valor de Calldata de longitud arbitraria (hasta 32 bytes, el tamaño de la palabra).
+
+```solidity
+ {
+ uint _retVal;
+
+ require(length < 0x21,
+ "_calldataVal length limit is 32 bytes");
+ require(length + startByte <= msg.data.length,
+ "_calldataVal trying to read beyond calldatasize");
+```
+
+Esta función es interna, por lo que si el resto del código está escrito correctamente, estas pruebas no son necesarias. Aunque tampoco es que cuesten tanto, así que podríamos tenerlas.
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+Este código está en [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html). Lee un valor de 32 bytes de los Calldata. Esto funciona incluso si los Calldata se detienen antes de `startByte+32` porque el espacio no inicializado en EVM se considera cero.
+
+```solidity
+ _retVal = _retVal >> (256-length*8);
+```
+
+No queremos necesariamente un valor de 32 bytes. Esto elimina el exceso de bytes.
+
+```solidity
+ return _retVal;
+ } // _calldataVal
+
+
+ // Read a single parameter from the calldata, starting at _fromByte
+ function _readParam(uint _fromByte) internal
+ returns (uint _nextByte, uint _parameterValue)
+ {
+```
+
+Lea un solo parámetro de los Calldata. Tenga en cuenta que necesitamos devolver no solo el valor que leemos, sino también la ubicación del siguiente byte, porque la longitud de los parámetros puede variar de 1 byte a 33 bytes.
+
+```solidity
+ // The first byte tells us how to interpret the rest
+ uint8 _firstByte;
+
+ _firstByte = uint8(_calldataVal(_fromByte, 1));
+```
+
+Solidity intenta reducir el número de errores al prohibir [conversiones de tipo implícito potencialmente peligrosas](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions). Una degradación, por ejemplo, de 256 bits a 8 bits, debe ser explícita.
+
+```solidity
+
+ // Read the value, but do not write it to the cache
+ if (_firstByte == uint8(DONT_CACHE))
+ return(_fromByte+33, _calldataVal(_fromByte+1, 32));
+
+ // Read the value, and write it to the cache
+ if (_firstByte == uint8(INTO_CACHE)) {
+ uint _param = _calldataVal(_fromByte+1, 32);
+ cacheWrite(_param);
+ return(_fromByte+33, _param);
+ }
+
+ // If we got here it means that we need to read from the cache
+
+ // Number of extra bytes to read
+ uint8 _extraBytes = _firstByte / 16;
+```
+
+Toma el [nibble](https://en.wikipedia.org/wiki/Nibble) inferior y combínalo con los otros bytes para leer el valor de la caché.
+
+```solidity
+ uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) +
+ _calldataVal(_fromByte+1, _extraBytes);
+
+ return (_fromByte+_extraBytes+1, cacheRead(_key));
+
+ } // _readParam
+
+
+ // Read n parameters (functions know how many parameters they expect)
+ function _readParams(uint _paramNum) internal returns (uint[] memory) {
+```
+
+Podríamos obtener el número de parámetros que tenemos de los propios Calldata, pero las funciones que nos invocan, saben cuántos parámetros esperan. Es más fácil dejar que nos lo digan.
+
+```solidity
+ // The parameters we read
+ uint[] memory params = new uint[](_paramNum);
+
+ // Parameters start at byte 4, before that it's the function signature
+ uint _atByte = 4;
+
+ for(uint i=0; i<_paramNum; i++) {
+ (_atByte, params[i]) = _readParam(_atByte);
+ }
+```
+
+Lea los parámetros hasta obtener el número que necesite. Si nos pasamos el final de los Calldata, `_readParams` esta revertirá.
+
+```solidity
+
+ return(params);
+ } // readParams
+
+ // For testing _readParams, test reading four parameters
+ function fourParam() public
+ returns (uint256,uint256,uint256,uint256)
+ {
+ uint[] memory params;
+ params = _readParams(4);
+ return (params[0], params[1], params[2], params[3]);
+ } // fourParam
+```
+
+Una de las principales ventajas de Foundry es que permite escribir las pruebas en Solidity ([ver más adelante Probar la caché](#testing-the-cache)). Esto hace que las pruebas unitarias sean mucho más fáciles. Esta es una función que lee cuatro parámetros y los devuelve, de manera que la prueba puede verificar si son correctos.
+
+```solidity
+ // Get a value, return bytes that will encode it (using the cache if possible)
+ function encodeVal(uint _val) public view returns(bytes memory) {
+```
+
+`encodeVal` es una función que activa el código fuera de la cadena para ayudar a crear los Calldata que utilizan la caché. Esta recibe un único valor y devuelve los bytes que lo codifican. Esta función es una `view`, por lo que no requiere una transacción y cuando se activa externamente no cuesta gas.
+
+```solidity
+ uint _key = val2key[_val];
+
+ // The value isn't in the cache yet, add it
+ if (_key == 0)
+ return bytes.concat(INTO_CACHE, bytes32(_val));
+```
+
+En la [EVM](/developers/docs/evm/) se asume que todo el almacenamiento sin inicializar son ceros. Por tanto, si buscamos la clave para un valor que no está ahí, obtenemos un cero. En ese caso, los bytes que lo codifican son `INTO_CACHE` (por lo que estará en la caché la próxima vez), seguido de un valor real.
+
+```solidity
+ // If the key is <0x10, return it as a single byte
+ if (_key < 0x10)
+ return bytes.concat(bytes1(uint8(_key)));
+```
+
+Los bytes individuales son los más fáciles. Solo usamos [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) para convertir un tipo `bytes` en una matriz de bytes que puede tener cualquier longitud. A pesar del nombre, funciona bien cuando se le proporciona un solo argumento.
+
+```solidity
+ // Two byte value, encoded as 0x1vvv
+ if (_key < 0x1000)
+ return bytes.concat(bytes2(uint16(_key) | 0x1000));
+```
+
+Cuando tenemos una clave que es inferior a 163, podemos expresarla en dos bytes. Primero convertimos `_key`, que es un valor de 256 bits, a un valor de 16 bits y usamos la lógica o para añadir el número de bytes adicionales al primer byte. Luego lo convertimos en un valor de `bytes2`, que se puede convertir en `bytes`.
+
+```solidity
+ // There is probably a clever way to do the following lines as a loop,
+ // but it's a view function so I'm optimizing for programmer time and
+ // simplicity.
+
+ if (_key < 16*256**2)
+ return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2)));
+ if (_key < 16*256**3)
+ return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3)));
+ .
+ .
+ .
+ if (_key < 16*256**14)
+ return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14)));
+ if (_key < 16*256**15)
+ return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15)));
+```
+
+Los otros valores (3 bytes, 4 bytes, etc.) se manejan de la misma manera, solo con diferentes tamaños de campo.
+
+```solidity
+ // If we get here, something is wrong.
+ revert("Error in encodeVal, should not happen");
+```
+
+Si hemos llegado aquí, quiere decir que tenemos una llave que no es inferior a 16\*25615. Pero `cacheWrite` limita las claves, por lo que ni siquiera podemos llegar a 14\*25616 (que tendría un primer byte de 0xFE, por lo que se vería como `DONT_CACHE`). Tampoco nos costaría mucho añadir una prueba en caso de que un futuro programador introduzca un error.
+
+```solidity
+ } // encodeVal
+
+} // Cache
+```
+
+### Probar la caché {#testing-the-cache}
+
+Una de las ventajas de Foundry es que [te permite escribir pruebas en Solidity](https://book.getfoundry.sh/forge/tests), lo que facilita la escritura de pruebas unitarias. Las pruebas para la clase `Cache` son [aquí](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol). Dado que el código de prueba es repetitivo, como suelen ser las pruebas, este artículo solo explica las partes interesantes.
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import "forge-std/Test.sol";
+
+
+// Need to run `forge test -vv` for the console.
+import "forge-std/console.sol";
+```
+
+Esto es solo la norma que es necesaria para usar el paquete de prueba y `console.log`.
+
+```solidity
+import "src/Cache.sol";
+```
+
+Necesitamos saber el contrato que estamos probando.
+
+```solidity
+contract CacheTest is Test {
+ Cache cache;
+
+ function setUp() public {
+ cache = new Cache();
+ }
+```
+
+La función `setUp` se activa antes de cada prueba. En este caso, solo creamos una nueva caché, para que nuestras pruebas no se afecten entre sí.
+
+```solidity
+ function testCaching() public {
+```
+
+Las pruebas son funciones cuyos nombres comienzan por `test`. Esta función comprueba la funcionalidad básica de la caché, escribiendo valores y leyéndolos de nuevo.
+
+```solidity
+ for(uint i=1; i<5000; i++) {
+ cache.cacheWrite(i*i);
+ }
+
+ for(uint i=1; i<5000; i++) {
+ assertEq(cache.cacheRead(i), i*i);
+```
+
+Así es como se hacen las pruebas reales, utilizando las funciones [`assert...`](https://book.getfoundry.sh/reference/forge-std/std-assertions). En este caso, comprobamos que el valor que escribimos es el mismo que leemos. Podemos descartar el resultado de `cache.cacheWrite` porque sabemos que las claves de caché se asignan de forma lineal.
+
+```solidity
+ }
+ } // testCaching
+
+
+ // Cache the same value multiple times, ensure that the key stays
+ // the same
+ function testRepeatCaching() public {
+ for(uint i=1; i<100; i++) {
+ uint _key1 = cache.cacheWrite(i);
+ uint _key2 = cache.cacheWrite(i);
+ assertEq(_key1, _key2);
+ }
+```
+
+Primero escribimos cada valor dos veces en la caché y nos aseguramos de que las claves sean las mismas (lo que significa que la segunda escritura no ocurrió realmente).
+
+```solidity
+ for(uint i=1; i<100; i+=3) {
+ uint _key = cache.cacheWrite(i);
+ assertEq(_key, i);
+ }
+ } // testRepeatCaching
+```
+
+En teoría, podría haber un error que no afecte a las escrituras consecutivas en caché. Así que aquí hacemos algunas escrituras que no son consecutivas y vemos que los valores aún no se han reescrito.
+
+```solidity
+ // Read a uint from a memory buffer (to make sure we get back the parameters
+ // we sent out)
+ function toUint256(bytes memory _bytes, uint256 _start) internal pure
+ returns (uint256)
+```
+
+Lee una palabra de 256 bits desde un búfer de `bytes de memoria`. Esta función de utilidad nos permite verificar que recibimos los resultados correctos cuando ejecutamos una activación de la función que utiliza la caché.
+
+```solidity
+ {
+ require(_bytes.length >= _start + 32, "toUint256_outOfBounds");
+ uint256 tempUint;
+
+ assembly {
+ tempUint := mload(add(add(_bytes, 0x20), _start))
+ }
+```
+
+Yul no admite estructuras de datos más allá de `uint256`, por lo que cuando usted se refiere a una estructura de datos más sofisticada, como el búfer de memoria `_bytes`, se obtiene la dirección de esa estructura. Solidity almacena valores de `bytes de memoria` como una palabra de 32 bytes que contiene la longitud, seguida de los bytes reales, por lo que para obtener el número de bytes `_start` necesitamos calcular `_bytes+32+_start`.
+
+```solidity
+
+ return tempUint;
+ } // toUint256
+
+ // Function signature for fourParams(), courtesy of
+ // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d
+ bytes4 constant FOUR_PARAMS = 0x3edc1e6d;
+
+ // Just some constant values to see we're getting the correct values back
+ uint256 constant VAL_A = 0xDEAD60A7;
+ uint256 constant VAL_B = 0xBEEF;
+ uint256 constant VAL_C = 0x600D;
+ uint256 constant VAL_D = 0x600D60A7;
+```
+
+Algunas de las constantes que necesitamos probar.
+
+```solidity
+ function testReadParam() public {
+```
+
+Llame a `fourParams()`, una función que utiliza `readParams`, para probar que podemos leer los parámetros correctamente.
+
+```solidity
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+```
+
+No podemos usar el mecanismo ABI normal para llamar a una función usando la caché, por lo que necesitamos usar el mecanismo de bajo nivel [`.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses). Ese mecanismo toma una memoria de `bytes` como entrada, y la devuelve (así como un valor booleano) como salida.
+
+```solidity
+ // First call, the cache is empty
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+```
+
+Es útil que el mismo contrato admita tanto funciones en caché (para activaciones directamente desde transacciones) como funciones no en caché (para activaciones desde otros contratos inteligentes). Para ell, tenemos que seguir confiando en el mecanismo Solidity para activar la función correcta, en lugar de poner todo en [una función `fallback`](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function). Esto hace que la composición sea mucho más fácil. Un solo byte sería suficiente para identificar la función en la mayoría de los casos, por lo que estamos desperdiciando tres bytes (16\*3=48 gas). Sin embargo, mientras escribo esto, esos 48 de gas cuestan 0,07 centavos, que es un coste razonable de un código más simple y menos propenso a errores.
+
+```solidity
+ // First value, add it to the cache
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+```
+
+El primer valor: una bandera que dice que es un valor completo que debe escribirse en la caché, seguido de los 32 bytes del valor. Los otros tres valores son similares, con la salvedad de que `VAL_B` no están escritos en la caché y `VAL_C` es tanto el tercer parámetro como el cuarto.
+
+```solidity
+ .
+ .
+ .
+ );
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+```
+
+Aquí es donde realmente llamamos al contrato `Cache`.
+
+```solidity
+ assertEq(_success, true);
+```
+
+Esperamos que la activación tenga éxito.
+
+```solidity
+ assertEq(cache.cacheRead(1), VAL_A);
+ assertEq(cache.cacheRead(2), VAL_C);
+```
+
+Comenzamos con una caché vacía y luego añadimos `VAL_A` seguido de `VAL_C`. Esperaríamos que la primera tuviera la clave 1 y que la segunda tuviera 2.
+
+```
+ assertEq(toUint256(_callOutput,0), VAL_A);
+ assertEq(toUint256(_callOutput,32), VAL_B);
+ assertEq(toUint256(_callOutput,64), VAL_C);
+ assertEq(toUint256(_callOutput,96), VAL_C);
+```
+
+La salida son los cuatro parámetros. Aquí verificamos que es correcto.
+
+```solidity
+ // Second call, we can use the cache
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value in the Cache
+ bytes1(0x01),
+```
+
+Las claves de caché por debajo de 16 son solo un byte.
+
+```solidity
+ // Second value, don't add it to the cache
+ cache.DONT_CACHE(),
+ bytes32(VAL_B),
+
+ // Third and fourth values, same value
+ bytes1(0x02),
+ bytes1(0x02)
+ );
+ .
+ .
+ .
+ } // testReadParam
+```
+
+Las pruebas después de la activación son idénticas a las posteriores a la primera activación.
+
+```solidity
+ function testEncodeVal() public {
+```
+
+Esta función es similar a `testReadParam`, salvo que en lugar de escribir los parámetros explícitamente usamos `encodeVal()`.
+
+```solidity
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(VAL_A),
+ cache.encodeVal(VAL_B),
+ cache.encodeVal(VAL_C),
+ cache.encodeVal(VAL_D)
+ );
+ .
+ .
+ .
+ assertEq(_callInput.length, 4+1*4);
+ } // testEncodeVal
+```
+
+La única prueba adicional en `testEncodeVal()` es verificar que la longitud de `_callInput` es correcta. Para la primera activación es 4+33\*4. Para la segunda, donde cada valor ya está en la caché, es 4+1\*4.
+
+```solidity
+ // Test encodeVal when the key is more than a single byte
+ // Maximum three bytes because filling the cache to four bytes takes
+ // too long.
+ function testEncodeValBig() public {
+ // Put a number of values in the cache.
+ // To keep things simple, use key n for value n.
+ for(uint i=1; i<0x1FFF; i++) {
+ cache.cacheWrite(i);
+ }
+```
+
+La función `testEncodeVal` anterior solo escribe cuatro valores en la caché, por lo que [la parte de la función que se ocupa de los valores de varios bytes](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) no está marcada. Pero ese código es complicado y propenso a errores.
+
+La primera parte de esta función es un bucle que escribe todos los valores de 1 a 0x1FFF en la caché en orden, por lo que podremos codificar esos valores y saber a dónde van.
+
+```solidity
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(0x000F), // One byte 0x0F
+ cache.encodeVal(0x0010), // Two bytes 0x1010
+ cache.encodeVal(0x0100), // Two bytes 0x1100
+ cache.encodeVal(0x1000) // Three bytes 0x201000
+ );
+```
+
+Pruebe con los valores de un byte, dos bytes y tres bytes. No probamos más allá de eso, porque llevaría demasiado tiempo escribir suficientes entradas de pila (al menos 0 x 10000000, aproximadamente un cuarto de mil millones).
+
+```solidity
+ .
+ .
+ .
+ .
+ } // testEncodeValBig
+
+
+ // Test what with an excessively small buffer we get a revert
+ function testShortCalldata() public {
+```
+
+Pruebe lo que sucede en el caso anormal en el que no haya suficientes parámetros.
+
+```solidity
+ .
+ .
+ .
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, false);
+ } // testShortCalldata
+```
+
+Dado que se revierte, el resultado que deberíamos obtener es `false`.
+
+```
+ // Call with cache keys that aren't there
+ function testNoCacheKey() public {
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value, add it to the cache
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+
+ // Second value
+ bytes1(0x0F),
+ bytes2(0x1234),
+ bytes11(0xA10102030405060708090A)
+ );
+```
+
+Esta función obtiene cuatro parámetros perfectamente legítimos, excepto que la caché está vacía, por lo que no hay valores para leer.
+
+```solidity
+ .
+ .
+ .
+ // Test what with an excessively long buffer everything works file
+ function testLongCalldata() public {
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+
+ // First call, the cache is empty
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_A),
+
+ // Second value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_B),
+
+ // Third value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_C),
+
+ // Fourth value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_D),
+
+ // And another value for "good luck"
+ bytes4(0x31112233)
+ );
+```
+
+Esta función envía cinco valores. Sabemos que el quinto valor se ignora porque no es una entrada de caché válida, lo que habría causado una reversión si no se hubiera incluido.
+
+```solidity
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, true);
+ .
+ .
+ .
+ } // testLongCalldata
+
+} // CacheTest
+
+```
+
+## Una aplicación de muestra {#a-sample-app}
+
+Escribir pruebas en Solidity está muy bien, pero al fin y al cabo una DApp tiene que ser capaz de procesar solicitudes de fuera de la cadena para ser útil. Este artículo muestra cómo usar el almacenamiento en caché en una DApp con `WORM`, que significa «Write Once, Read Many». Si aún no se ha escrito una clave, puede escribirle un valor. Si la clave ya está escrita, se obtiene una reversión.
+
+### El contrato {#the-contract}
+
+[Este es el contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol). En su mayoría repite lo que ya hemos hecho con `Cache` y `CacheTest`, por lo que solo cubrimos las partes que son interesantes.
+
+```solidity
+import "./Cache.sol";
+
+contract WORM is Cache {
+```
+
+La forma más fácil de usar `Cache` es heredarlo en nuestro propio contrato.
+
+```solidity
+ function writeEntryCached() external {
+ uint[] memory params = _readParams(2);
+ writeEntry(params[0], params[1]);
+ } // writeEntryCached
+```
+
+Esta función es similar a `fourParam` en `CacheTest` anterior. Debido a que no seguimos las especificaciones de ABI, es mejor no declarar ningún parámetro en la función.
+
+```solidity
+ // Make it easier to call us
+ // Function signature for writeEntryCached(), courtesy of
+ // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3
+ bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3;
+```
+
+El código externo que activa a `writeEntryCached` tendrá que construir manualmente los Calldata, en lugar de usar `worm.writeEntryCached`, porque no seguimos las especificaciones de ABI. Tener este valor constante hace que sea más fácil escribirlo.
+
+Tenga en cuenta que a pesar de que definimos `WRITE_ENTRY_CACHED` como una variable de estado, para leerla externamente es necesario usar la función getter para ella, `worm.WRITE_ENTRY_CACHED()`.
+
+```solidity
+ function readEntry(uint key) public view
+ returns (uint _value, address _writtenBy, uint _writtenAtBlock)
+```
+
+La función de lectura es una `view`, por lo que no requiere una transacción y no cuesta gas. Como resultado, no hay ningún beneficio en usar la caché para el parámetro. Con las funciones de vista, lo mejor es utilizar el mecanismo estándar que es más simple.
+
+### El código de prueba {#the-testing-code}
+
+[Este es el código de prueba para el contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol). Una vez más, echemos un vistazo a lo que es interesante.
+
+```solidity
+ function testWReadWrite() public {
+ worm.writeEntry(0xDEAD, 0x60A7);
+
+ vm.expectRevert(bytes("entry already written"));
+ worm.writeEntry(0xDEAD, 0xBEEF);
+```
+
+[Esto (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) es como especificamos en una prueba de Foundry que la siguiente activación debe fallar, e informamos de la razón del fallo. Esto se aplica cuando usamos la sintaxis `.()` en lugar de construir los Calldata y activar el contrato utilizando la interfaz de bajo nivel (`.call()`, etc.).
+
+```solidity
+ function testReadWriteCached() public {
+ uint cacheGoat = worm.cacheWrite(0x60A7);
+```
+
+Aquí nos basamos en que `cacheWrite` devuelve la clave de la caché. Nno es algo que esperábamos usar en la producción, porque `cacheWrite` cambia el estado y, por lo tanto, solo se puede llamar durante una transacción. Las transacciones no tienen valores de retorno, si tienen resultados, se supone que esos resultados se emiten como eventos. Por lo tanto, el valor de retorno `cacheWrite` solo es accesible desde el código en cadena, y el código en cadena no necesita almacenamiento en caché de parámetros.
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+```
+
+Así es como le decimos a Solidity que, si bien `.call()` tiene dos valores de retorno, solo nos importa el primero.
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+ assertEq(_success, false);
+```
+
+Dado que usamos la función de bajo nivel `.call()`, no podemos usar `vm.expectRevert()` y tenemos que mirar el valor de éxito booleano que obtenemos de la activación.
+
+```solidity
+ event EntryWritten(uint indexed key, uint indexed value);
+
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b));
+ vm.expectEmit(true, true, false, false);
+ emit EntryWritten(a, b);
+ (_success,) = address(worm).call(_callInput);
+```
+
+Esta es la forma en que verificamos que el código [emite un evento correctamente](https://book.getfoundry.sh/cheatcodes/expect-emit) en Foundry.
+
+### El cliente {#the-client}
+
+Una cosa que no se consigue con las pruebas de Solidity es un código JavaScript para cortar y pegar en su propia aplicación. Para escribir ese código, implementé WORM en [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli), [Optimism](https://www.optimism.io/) nueva red de prueba. Está en la dirección [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a).
+
+[Puede ver el código JavaScript para el cliente aquí](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/javascript/index.js). Para usarlo:
+
+1. Clone el repositorio de git:
+
+ ```sh
+ git clone https://github.com/qbzzt/20220915-all-you-can-cache.git
+ ```
+
+2. Instale los paquetes necesarios:
+
+ ```sh
+ cd javascript
+ yarn
+ ```
+
+3. Copie el archivo de configuración:
+
+ ```sh
+ cp .env.example .env
+ ```
+
+4. Edite `.env` en su configuración:
+
+ | Parámetro | Valor |
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | MNEMONIC | El mnemotécnico de una cuenta que tiene suficiente ETH para pagar una transacción. [Puede obtener ETH gratis para la red Optimism Goerli aquí](https://optimismfaucet.xyz/). |
+ | OPTIMISM_GOERLI_URL | La URL a Optimism Goerli. La terminal pública, `https://goerli.optimism.io`, tiene una tasa limitada pero suficiente para lo que necesitamos aquí |
+
+5. Ejecute `index.js`.
+
+ ```sh
+ node index.js
+ ```
+
+ Esta aplicación de ejemplo escribe primero una entrada en WORM, mostrando los Calldata y un enlace a la transacción en Etherscan. Luego lee esa entrada y muestra la clave que utiliza y los valores de la entrada (valor, número de bloque y autor).
+
+La mayor parte del cliente es una DApp JavaScript normal. Así que, de nuevo, solo repasamos las partes interesantes.
+
+```javascript
+.
+.
+.
+const main = async () => {
+ const func = await worm.WRITE_ENTRY_CACHED()
+
+ // Need a new key every time
+ const key = await worm.encodeVal(Number(new Date()))
+```
+
+Una ranura determinada solo se puede escribir una vez, por lo que usamos la marca de tiempo para asegurarnos de no reutilizar las ranuras.
+
+```javascript
+const val = await worm.encodeVal("0x600D")
+
+// Write an entry
+const calldata = func + key.slice(2) + val.slice(2)
+```
+
+Ethers espera que los datos de la activación sean una cadena hexadecimal, `0x` seguida de un número par de dígitos hexadecimales. Como `key` y `val` comienzan por `0x`, tenemos que eliminar esos encabezados.
+
+```javascript
+const tx = await worm.populateTransaction.writeEntryCached()
+tx.data = calldata
+
+sentTx = await wallet.sendTransaction(tx)
+```
+
+Al igual que con el código de prueba de Solidity, no podemos activar a una función en caché normalmente. En su lugar, necesitamos usar un mecanismo de nivel inferior.
+
+```javascript
+ .
+ .
+ .
+ // Read the entry just written
+ const realKey = '0x' + key.slice(4) // remove the FF flag
+ const entryRead = await worm.readEntry(realKey)
+ .
+ .
+ .
+```
+
+Para leer las entradas podemos usar el mecanismo normal. No es necesario usar el almacenamiento en caché de parámetros con las funciones `view`.
+
+## Conclusión {#conclusion}
+
+El código de este artículo es una prueba de concepto, el propósito es hacer que la idea sea fácil de entender. Para un sistema listo para la producción, es posible que se deseen implementar algunas funciones adicionales:
+
+- Manejar valores que no son `uint256`. Por ejemplo, cadenas.
+- En lugar de una caché global, tal vez tenga una asignación entre los usuarios y las cachés. Diferentes usuarios usan diferentes valores.
+- Los valores utilizados para las direcciones son distintos de los utilizados para otros fines. Tener una caché separada solo para las direcciones podría ser oportuno.
+- Actualmente, las claves de caché están en un algoritmo de «el primero en llegar se lleva la clave más pequeña». Los primeros dieciséis valores se pueden enviar como un solo byte. Los siguientes 4.080 valores se pueden enviar como dos bytes. Los siguientes valores de cerca de un millón son de tres bytes, etc. Un sistema de producción debe mantener los contadores de uso en las entradas de la caché y reorganizarlos de modo que los dieciséis _valores más comunes_ sean de un byte, los siguientes 4.080 valores más comunes de dos bytes, etc.
+
+ Sin embargo, esta es una operación potencialmente peligrosa. Imagine la siguiente secuencia de eventos:
+
+ 1. Noam Naive activa `encodeVal` para codificar la dirección a la que quiere enviar tókenes. Esa dirección es una de las primeras utilizadas en la aplicación, por lo que el valor codificado es 0 x 06. Esta es una función `view`, no una transacción, así que está entre Noam y el nodo que usa, y nadie más lo sabe.
+
+ 2. Owen Owner ejecuta la operación de reordenación de la caché. Muy pocas personas realmente usan esa dirección, por lo que ahora está codificada como 0 x 201122. Un valor diferente, 1018, se asigna 0 x 06.
+
+ 3. Noam Naive envía sus fichas a 0 x 06. Van a la dirección `0x0000000000000000000000000de0b6b3a7640000`, y como nadie conoce la clave privada de esa dirección, están atrapados allí. Noam _no está contento al respecto_.
+
+ Hay formas de resolver este problema y el problema relacionado con las transacciones que están en la zona de espera durante el reorden de la caché, pero debe ser consciente de ello.
+
+He demostrado el almacenamiento en caché aquí con Optimism, porque soy un empleado de Optimism y este es el rollup que mejor conozco. Pero debería funcionar con cualquier rollup que cobre un coste mínimo por el procesamiento interno, de modo que, en comparación, escribir los datos de la transacción en L1 sea el mayor gasto.
diff --git a/public/content/translations/es/developers/tutorials/create-and-deploy-a-defi-app/index.md b/public/content/translations/es/developers/tutorials/create-and-deploy-a-defi-app/index.md
new file mode 100644
index 00000000000..220d76e5e08
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/create-and-deploy-a-defi-app/index.md
@@ -0,0 +1,481 @@
+---
+title: Crear e implementar una aplicación DeFi
+description: Depositar tokens ERC20 en el contrato inteligente y los Tokens de la granja de Menta
+author: "strykerin"
+tags:
+ - "solidez"
+ - "defi"
+ - "web3.js"
+ - "truffle"
+ - "ganache"
+ - "smart contracts"
+skill: intermediate
+lang: es
+published: 2020-12-31
+source: github.com
+sourceUrl: https://github.com/strykerin/DeFi-Token-Farm
+---
+
+En este tutorial construiremos una aplicación DeFi con Solidity donde los usuarios pueden depositar un token ERC20 en el contrato inteligente y les acuñará y transferirá Farm Tokens. Los usuarios pueden retirar más tarde sus tokens ERC20 quemando su Farm Token en un contrato inteligente y los tokens ERC20 se transferirán de nuevo a ellos.
+
+## Instalar Truffle y Ganache {#install-truffle-and-ganache}
+
+Si es la primera vez que escribe un contrato inteligente, deberá configurar su entorno. Vamos a utilizar dos herramientas: [Truffle](https://www.trufflesuite.com/) y [Ganache](https://www.trufflesuite.com/ganache).
+
+Truffle es un entorno de desarrollo y marco de pruebas para desarrollar contratos inteligentes para Ethereum. Con Truffle es fácil construir e implementar contratos inteligentes en la cadena de bloques. Ganache nos permite crear una cadena de bloques ethereum local para probar contratos inteligentes. Simula las características de la red real y las primeras 10 cuentas se financian con 100 ether de prueba, lo que hace que la implementación y las pruebas de contratos inteligentes sean gratuitas y fáciles. Ganache está disponible como una aplicación de escritorio y una herramienta de línea de comandos. Para este artículo usaremos la aplicación de escritorio UI.
+
+![Aplicación de escritorio de interfaz de caché](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_Aplicación de escritorio Ganache UI_
+
+Para crear el proyecto, ejecute los siguientes comandos
+
+```bash
+mkdir your-project-name
+cd your-project-name
+truffle init
+```
+
+Esto creará un proyecto en blanco para el desarrollo y despliegue de nuestros contratos inteligentes. La estructura del proyecto creado es la siguiente:
+
+- `contracts`: Carpeta para los contratos inteligentes (escritos en Solidity)
+
+- `migraciones`: Carpeta para los scripts de despliegue
+
+- `test`: Carpeta para probar nuestros contratos inteligentes
+
+- `truffle-config.js`: Archivo de configuración Truffle
+
+## Crear el token ERC20 {#create-the-erc20-token}
+
+Primero necesitamos crear nuestro token ERC20 que utilizaremos para apostar en el contrato inteligente. Para crear nuestro fungible token, primero necesitamos instalar la librería OpenZeppelin. Esta librería contiene las implementaciones de estándares como ERC20 y ERC721. Para instalarlo, ejecute el comando:
+
+```bash
+npm install @openzeppelin/contracts
+```
+
+Utilizando la librería OpenZeppelin podemos crear nuestro token ERC20 escribiendo a `contracts/MyToken.sol` con el siguiente código de solidez:
+
+```solidity
+pragma solidity ^0.8.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract MyToken is ERC20 {
+ constructor() public ERC20("MyToken", "MTKN"){
+ _mint(msg.sender, 1000000000000000000000000);
+ }
+}
+```
+
+En el código de arriba en:
+
+- Linea 3: Importamos el contrato ERC-20.sol desde openzeppelin que contiene la implementación para este token estándar.
+
+- Linea 5: Heredamos desde el contrato ERC-20.sol.
+
+- Linea 6: Estamos llamando al contructor ERC20.sol y pasando los parametros del nombre y simbolo como `"MyToken"` y `"MTKN"` respectivamente.
+
+- Linea 7: Estamos minteando y transfiriendo 1 millon de tokens para la cuenta que esta desplegando el contrato inteligente (estamos usando los 18 decimales por defecto del token ERC20, eso significa que si queremos mintear 1 token, lo podes representar como 1000000000000000000, 1 con 18 ceros).
+
+Debajo podemos ver la implementacion del constructor del ERC20.sol, donde `_decimals` campo esta establecido en 18:
+
+```solidity
+string private _name;
+string private _symbol;
+uint8 private _decimals;
+
+constructor (string memory name_, string memory symbol_) public {
+ _name = name_;
+ _symbol = symbol_;
+ _decimals = 18;
+}
+```
+
+## Compilar el Token ERC20 {#compile-the-erc20-token}
+
+Para compilar nuestro contrato inteligente, primer debemos verificar la versión de nuestro compilador solidity. Puedes verificarla ejecutando el comando:
+
+```bash
+truffle version
+```
+
+La version por defecto es `Solidity v0.5.16`. Ya que nuestro token está escrito usando la versión de solidity `0.6.2`, si corremos el comando para compilar nuestros contratos obtendremos un error de compilación. En orden para especificar qué versión del compilador de solidity usar, vaya al archivo `truffle-config.js` y establezca la versión deseada del compilador como se ve a continuación:
+
+```javascript
+// Configure your compilers
+compilers: {
+ solc: {
+ version: "^0.8.0", // Fetch exact version from solc-bin (default: truffle's version)
+ // docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
+ // settings: { // See the solidity docs for advice about optimization and evmVersion
+ // optimizer: {
+ // enabled: false,
+ // runs: 200
+ // },
+ // evmVersion: "byzantium"
+ // }
+ }
+}
+```
+
+Ahora podemos compilar nuestro contrato inteligente ejecutando el siguiente comando:
+
+```bash
+truffle compile
+```
+
+## Desplegar Token ERC20 {#deploy-erc20-token}
+
+Despues de compilar, ahora podemos desplegar nuestro token.
+
+En la carpeta de `migrations`, crear un archivo llamado `2_deploy_Tokens.js`. Este archivo es donde vamos a desplegar tanto nuestro Token ERC20 y nuestro contrato inteligente FarmToken. El siguiente código se utiliza para desplegar nuestro contrato MyToken.sol:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+
+module.exports = async function (deployer, network, accounts) {
+ // Deploy MyToken
+ await deployer.deploy(MyToken)
+ const myToken = await MyToken.deployed()
+}
+```
+
+Abre Ganache y selecciona la opción "Quickstart" (comienzo rápido) para comenzar una blockchain local de Ethereum. Para desplegar nuestro contrato, ejecutar:
+
+```bash
+truffle migrate
+```
+
+La dirección utilizada para desplegar nuestros contratos es la primera de la lista de direcciones que Ganache nos muestra. Para verificarlo, podemos abrir la aplicacion de escritorio Ganache y podemos verificar que el saldo de ether para nuestra primera cuenta ha sido reducido debido al costo del ether para desplegar nuestros contratos inteligentes:
+
+![Aplicación de escritorio Ganache](https://cdn-images-1.medium.com/max/2346/1*1iJ9VRlyLuza58HL3DLfpg.png)_Aplicación de escritorio Ganache_
+
+Para verificar que 1 millón de tokens de MyToken han sido enviados a la dirección del desplegador, podemos usar la consola de Truffle para interactuar con nuestro contrato inteligente implementado.
+
+> [Truffle Console es una consola básica e interactiva que se conecta con cualquier cliente de Ethereum.](https://www.trufflesuite.com/docs/truffle/getting-started/using-truffle-develop-and-the-console)
+
+Para poder interactuar con nuestro contrato inteligente, ejecuta el siguiente comando:
+
+```bash
+truffle console
+```
+
+Ahora podemos escribir los siguientes comandos en la terminal:
+
+- Obtener el contrato inteligente: `myToken = await MyToken.deployed()`
+
+- Obtener la formación de cuentas de Ganache: `accounts = await web3.eth.getAccounts()`
+
+- Obtener el balance de la primera cuenta: `balance = await myToken.balanceOf(accounts[0])`
+
+- Formatear el saldo a partir de 18 decimales: `web3.utils.fromWei(balance.toString())`
+
+Al ejecutar los comandos de arriba, veremos que la primera dirección tiene de hecho 1 millón de MyTokens:
+
+![La primera dirección tiene 1000000 MyTokens](https://cdn-images-1.medium.com/max/2000/1*AQlj9A7dw-qtY4QAD3Bpxw.png)
+
+_La primera dirección tiene 1000000 MyTokens_
+
+## Crear contrato inteligente FarmToken {#create-farmtoken-smart-contract}
+
+El contrato inteligente FarmToken tendrá 3 funciones:
+
+- `balance()`: Obtener el saldo MyToken en el contrato inteligente FarmToken.
+
+- `deposit(uint256 _amount)`: Transferir MyToken en nombre del usuario al contrato inteligente FarmToken luego mintear y transferir FarmToken al usuario.
+
+- `retiro (uint256 _amount)`: Quemar FarmTokens del usuario y transferir MyTokens a la dirección del usuario.
+
+Veamos el constructor de FarmToken:
+
+```solidity
+pragma solidity ^0.6.2;
+
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/utils/Address.sol";
+import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract FarmToken is ERC20 {
+ using Address for address;
+ using SafeMath for uint256; // As of Solidity v0.8.0, mathematical operations can be done safely without the need for SafeMath
+ using SafeERC20 for IERC20;
+
+ IERC20 public token;
+
+ constructor(address _token)
+ public
+ ERC20("FarmToken", "FRM")
+ {
+ token = IERC20(_token);
+ }
+```
+
+- Líneas 3-6: Importamos los siguientes contratos de openzeppelin: IERC20.sol, Address.sol, SafeERC20.sol y ERC20.sol.
+
+- Línea 8: El FarmToken heredará del contrato ERC20.
+
+- Líneas 14-19: El constructor de FarmToken recibirá como parámetro la dirección del contrato MyToken y asignaremos su contrato a nuestra variable pública llamada `token`.
+
+Vamos a implementar la función `balance()`. No recibirá ningún parámetro y devolverá el saldo de MyToken en este contrato inteligente. Se implementa como se muestra a continuación:
+
+```solidity
+function balance() public view returns (uint256) {
+ return token.balanceOf(address(this));
+}
+```
+
+Para la función `deposito (uint256 _amount)`, recibirá como parámetro la cantidad que el usuario quiere depositar y minteara y transferirá FarmTokens al usuario:
+
+```solidity
+function deposit(uint256 _amount) public {
+ // Amount must be greater than zero
+ require(_amount > 0, "amount cannot be 0");
+
+ // Transfer MyToken to smart contract
+ token.safeTransferFrom(msg.sender, address(this), _amount);
+
+ // Mint FarmToken to msg sender
+ _mint(msg.sender, _amount);
+}
+```
+
+Para la función `de retiro (uint256 _amount)`, recibiremos como parámetro la cantidad de FarmTokens que el usuario desea grabar y luego transferir la misma cantidad de MyTokens de vuelta al usuario:
+
+```solidity
+function withdraw(uint256 _amount) public {
+ // Burn FarmTokens from msg sender
+ _burn(msg.sender, _amount);
+
+ // Transfer MyTokens from this smart contract to msg sender
+ token.safeTransfer(msg.sender, _amount);
+}
+```
+
+Ahora desplegaremos nuestro contrato inteligente. Para hacerlo, regresaremos al archivo `2_deploy_Tokens.js` y agregaremos el nuevo contrato que se va a implementar:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (deployer, network, accounts) {
+ // Deploy MyToken
+ await deployer.deploy(MyToken)
+ const myToken = await MyToken.deployed()
+
+ // Deploy Farm Token
+ await deployer.deploy(FarmToken, myToken.address)
+ const farmToken = await FarmToken.deployed()
+}
+```
+
+Tenga en cuenta que al desplegar FarmToken, pasamos como parámetro la dirección del contrato desplegado MyToken.
+
+Ahora, ejecuta `truffle compile` y `truffle migrate` para desplegar nuestros contratos.
+
+Probemos nuestro contrato inteligente. En lugar de usar la `consola de truffle` para interactuar con nuestro contrato inteligente, crearemos un script para automatizar este proceso. Crea una carpeta llamada `scripts` y añade el siguiente archivo `getMyTokenBalance.js`. Comprobará el saldo de MyTokens en el contrato inteligente FarmToken:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ myToken = await MyToken.deployed()
+ farmToken = await FarmToken.deployed()
+ balance = await myToken.balanceOf(farmToken.address)
+ console.log(web3.utils.fromWei(balance.toString()))
+ callback()
+}
+```
+
+Para ejecutar este script, ejecute el siguiente comando:
+
+```bash
+truffle exec .\scripts\getMyTokenBalance.js
+```
+
+Obtendremos el resultado esperado, que es 0. Si recibes un error sobre el FarmToken indicando que aún no está desplegando, se debe a que la red de Truffle no ha recibido la última versión del código de tu contrato. Cierra Ganache, vuelve a iniciarlo y asegúrate de ejecutar `truffle migrate`.
+
+Ahora, vamos a depositar MyToken en el contrato inteligente. Puesto que la función `deposit(uint256 _amount)` llama a la función `safeTransferFrom` desde el ERC20, el usuario debe aprobar primero el contrato inteligente para que este pueda transferir MyToken en nombre del usuario. Así que, en el siguiente guión, primero ejecutaremos este paso de aprobación y luego llamaremos a la función:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ const accounts = await new web3.eth.getAccounts()
+ const myToken = await MyToken.deployed()
+ const farmToken = await FarmToken.deployed()
+
+ // Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through transferFrom.
+ // This is zero by default.
+ const allowanceBefore = await myToken.allowance(
+ accounts[0],
+ farmToken.address
+ )
+ console.log(
+ "Amount of MyToken FarmToken is allowed to transfer on our behalf Before: " +
+ allowanceBefore.toString()
+ )
+
+ // In order to allow the Smart Contract to transfer to MyToken (ERC-20) on the accounts[0] behalf,
+ // we must explicitly allow it.
+ // We allow farmToken to transfer x amount of MyToken on our behalf
+ await myToken.approve(farmToken.address, web3.utils.toWei("100", "ether"))
+
+ // Validate that the farmToken can now move x amount of MyToken on our behalf
+ const allowanceAfter = await myToken.allowance(accounts[0], farmToken.address)
+ console.log(
+ "Amount of MyToken FarmToken is allowed to transfer on our behalf After: " +
+ allowanceAfter.toString()
+ )
+
+ // Verify accounts[0] and farmToken balance of MyToken before and after the transfer
+ balanceMyTokenBeforeAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenBeforeFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log("*** My Token ***")
+ console.log(
+ "Balance MyToken Before accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken Before TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenBeforeFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenBeforeAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenBeforeFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken Before accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken Before TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenBeforeFarmToken.toString())
+ )
+ // Call Deposit function from FarmToken
+ console.log("Call Deposit Function")
+ await farmToken.deposit(web3.utils.toWei("100", "ether"))
+ console.log("*** My Token ***")
+ balanceMyTokenAfterAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenAfterFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance MyToken After accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken After TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenAfterFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenAfterAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenAfterFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken After accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken After TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenAfterFarmToken.toString())
+ )
+
+ // End function
+ callback()
+}
+```
+
+Para ejecutar este script: `truffle exec .\scripts\transferMyTokenToFarmToken.js`. Deberías ver en la consola:
+
+![salida de transferMyTokenToFarmToken.js](https://cdn-images-1.medium.com/max/2000/1*MoekE2QCw7vB98u5dl7ang.png)
+
+_salida de transferMyTokenToFarmToken.js_
+
+Como podemos ver, la primera cuenta del contrato inteligente ya tiene FarmTokens lo que indica que hemos depositado con éxito MyTokens.
+
+Para poder retirar:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ const accounts = await new web3.eth.getAccounts()
+ const myToken = await MyToken.deployed()
+ const farmToken = await FarmToken.deployed()
+
+ // Verify accounts[0] and farmToken balance of MyToken before and after the transfer
+ balanceMyTokenBeforeAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenBeforeFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log("*** My Token ***")
+ console.log(
+ "Balance MyToken Before accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken Before TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenBeforeFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenBeforeAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenBeforeFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken Before accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken Before TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenBeforeFarmToken.toString())
+ )
+
+ // Call Deposit function from FarmToken
+ console.log("Call Withdraw Function")
+ await farmToken.withdraw(web3.utils.toWei("100", "ether"))
+
+ console.log("*** My Token ***")
+ balanceMyTokenAfterAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenAfterFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance MyToken After accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken After TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenAfterFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenAfterAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenAfterFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken After accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken After TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenAfterFarmToken.toString())
+ )
+
+ // End function
+ callback()
+}
+```
+
+Para ejecutar este script: `truffle exec .\scripts\withdrawMyTokenFromTokenFarm.js`. Como podemos ver a continuación, hemos recuperado con éxito los MyTokens y quemado los FarmTokens:
+
+![salida de DropMyTokenFromTokenFarm.js](https://cdn-images-1.medium.com/max/2000/1*jHYlTFg0NgGbhASpsRvc0w.png)
+
+_salida de withdrawMyTokenFromTokenFarm.js_
+
+## Referencias {#references}
+
+[Contratos - Documentos OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/)
+
+[Sweet Tools for Smart Contracts | Truffle Suite](https://www.trufflesuite.com/)
+
+[Ganache | Truffle Suite](https://www.trufflesuite.com/ganache)
+
+[¿Qué es DeFi? Una guia para principiantes (Actualizado 2021) (99bitcoins.com)](https://99bitcoins.com/what-is-defi/)
+
+[DeFi - La tabla de clasificación de finanzas descentralizadas en DeFi Llama](https://defillama.com/)
diff --git a/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
new file mode 100644
index 00000000000..3d759ea76f4
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -0,0 +1,99 @@
+---
+title: Implementación de su primer contrato inteligente
+description: Una introducción para ejecutar su primer contrato inteligente en la red de prueba de Ethereum
+author: "jdourlens"
+tags:
+ - "contratos inteligentes"
+ - "remezcla"
+ - "solidity"
+ - "implementación"
+skill: beginner
+lang: es
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+Supongo que está tan emocionado como nosotros de [implementar](/developers/docs/smart-contracts/deploying/) e interactuar con su primer [contrato inteligente](/developers/docs/smart-contracts/) en la cadena de bloques de Ethereum.
+
+No se preocupe; como es nuestro primer contrato inteligente, lo implementaremos en una [red de prueba local](/developers/docs/networks/), de modo que no cueste nada publicarlo y pueda experimentar tanto cuanto quiera.
+
+## Escribir nuestro contrato {#writing-our-contract}
+
+El primer paso es [visitar Remix](https://remix.ethereum.org/) y crear un nuevo archivo. En la parte superior izquierda de la interfaz de Remix, añada un nuevo archivo e introduzca el nombre de archivo que quiera.
+
+![Añadir un nuevo archivo en la interfaz de Remix](./remix.png)
+
+En el nuevo archivo, vamos a pegar el siguiente código:
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.5.17;
+
+contract Counter {
+
+ // Public variable of type unsigned int to keep the number of counts
+ uint256 public count = 0;
+
+ // Function that increments our counter
+ function increment() public {
+ count += 1;
+ }
+
+ // Not necessary getter to get the count value
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+Si está acostumbrado a programar, puede adivinar fácilmente lo que hace este programa. Aquí hay una explicación línea por línea:
+
+- Línea 4: Definimos un contrato con el nombre `Counter`.
+- Línea 7: Nuestro contrato almacena un entero sin firma llamado `count` que empieza con 0.
+- Línea 10: La primera función modificará el estado del contrato e incrementará (`increment()`) nuestra variable `count`.
+- Línea 15: La segunda función es solo un getter para poder leer el valor de nuestra variable `count` fuera de nuestro contrato inteligente. Nótese que, como definimos la variable `count` como pública, esto no es necesario, sino que se muestra como ejemplo.
+
+Esto es todo para nuestro primer y simple contrato inteligente. Como es sabido, parece una clase de lenguajes OOP (programación orientada a objetos) como Java o C++. Ahora es momento de experimentar con nuestro contrato.
+
+## Implementación del contrato {#deploying-our-contract}
+
+Como escribimos nuestro primer contrato inteligente, vamos a implementarlo en la cadena de bloques para poder experimentar con él.
+
+[Implementar nuestro contrato inteligente en la cadena de bloques](/developers/docs/smart-contracts/deploying/) consiste simplemente en enviar una transacción que incluya el código del contrato inteligente compilado sin especificar ningún destinatario.
+
+Primero [compilaremos el contrato](/developers/docs/smart-contracts/compiling/) haciendo clic en el ícono Compile situado en la parte izquierda:
+
+![El ícono Compile en la barra de herramientas de Remix](./remix-compile-button.png)
+
+Luego haga clic en el botón Compile:
+
+![El botón Compile en el compilador de solidity de Remix](./remix-compile.png)
+
+Puede optar por seleccionar la opción "Auto Compile" para que el contrato siempre se compile cuando guarde el contenido en el editor de texto.
+
+Luego, navegue a la pantalla de implementación y ejecución de transacciones:
+
+![El ícono Implementar en la barra de herramientas de Remix](./remix-deploy.png)
+
+Una vez que esté en la pantalla de "Deploy and run", compruebe que el nombre del contrato aparezca y haga clic en Deploy. Como puede ver en la parte superior de la página, el entorno actual es "JavaScript VM", lo que significa que desplegaremos e interactuaremos con nuestro contrato inteligente en una cadena de bloques de prueba local para poder probar más rápido y sin ningún costo.
+
+![El botón Deploy en el compilador de solidity de Remix](./remix-deploy-button.png)
+
+Una vez que haya pulsado el botón “Deploy”, verá que su contrato aparece en la parte inferior. Haga clic en la flecha de la izquierda para expandir y ver el contenido de nuestro contrato. Esta es nuestra variable `counter`, nuestra función `increment()` y el getter `getCounter()`.
+
+Si hace clic en el botón `count` o `getCount`, se recuperará el contenido de la variable `count` del contrato y se mostrará. Como aún no hemos invocado la función `increment`, debería mostrarse 0.
+
+![El botón Function en el compilador de solidity de Remix](./remix-function-button.png)
+
+Llamemos ahora a la función `increment` haciendo clic en el botón. Verá los registros de las transacciones que se realizan, en la parte inferior de la ventana. Verá que los registros son diferentes cuando pulsa el botón para recuperar los datos en lugar del botón `increment`. Es porque leer datos en la cadena de bloques no necesita ninguna transacción (escritura) o tarifa. Porque solo modificar el estado de la cadena de bloques requiere hacer una transacción:
+
+![Un registro de transacciones](./transaction-log.png)
+
+Después de presionar el botón de incremento que generará una transacción para llamar a nuestra función `increment()`, si volvemos a hacer clic en los botones de conteo o getCount, leeremos el estado recién actualizado de nuestro contrato inteligente con la variable de conteo siendo mayor que 0.
+
+![Nuevo estado actualizado del contrato inteligente](./updated-state.png)
+
+En el siguiente tutorial, veremos [cómo puede añadir eventos a sus contratos inteligentes](/developers/tutorials/logging-events-smart-contracts/). El registro de eventos es una forma conveniente de depurar su contrato inteligente y entender lo que sucede al llamar a una función.
diff --git a/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
new file mode 100644
index 00000000000..f148ce0d60a
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
@@ -0,0 +1,163 @@
+---
+title: "Reducir el tamaño de los contratos para luchar contra el límite de tamaño del contrato"
+description: '¿Qué puede hacer para evitar que sus contratos inteligentes sean demasiado grandes?'
+author: Markus Waas
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "almacenamiento"
+ - "truffle"
+skill: intermediate
+published: 2020-06-26
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/max-contract-size
+---
+
+## ¿Por qué hay un límite? {#why-is-there-a-limit}
+
+El [22 de noviembre de 2016](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) el hard-fork Spurious Dragon introdujo [EIP-170](https://eips.ethereum.org/EIPS/eip-170), que agregó un límite de tamaño del contrato inteligente de 24.576 bytes. Para usted, como desarrollador de Solidity, esto significa que cuando añada más y más funcionalidad a su contrato, en algún momento alcanzará el límite y al realizar la implementación verá el error:
+
+`Advertencia: El tamaño del código del contrato excede los 24576 bytes (un límite introducido en el Spurious Dragon). This contract may not be deployable on Mainnet. Considere habilitar el optimizador (con un valor de "ejecución" bajo), desactivar las cadenas de reversión, o utilizar librerías.`
+
+Este límite se introdujo para prevenir ataques de denegación de servicio (DOS). Cualquier llamada a un contrato es relativamente barata en términos de gas. Sin embargo, el impacto de una llamada al contrato para nodos Ethereum aumenta desproporcionadamente dependiendo del tamaño del código del contrato llamado (leer el código del disco, preprocesar el código, agregar datos a la prueba Merkle). Cada vez que uno se encuentre en una situación en la que el atacante requiera pocos recursos para causar mucho trabajo a los demás, obtiene el potencial para ataques de DOS.
+
+Originalmente esto era un problema menor porque el tamaño natural de un contrato es el límite de gas de un bloque. Obviamente, un contrato debe implementarse dentro de una transacción que contenga todo el código de bytes del contrato. Si incluye solo esa transacción en un bloque, puede usar todo ese gas, pero no es infinito. Desde la [Actualización London](/history/#london), el límite de gas de un bloque ha podido variar entre 15 millones y 30 millones de unidades dependiendo de la demanda de la red.
+
+## Asuma el reto {#taking-on-the-fight}
+
+Desafortunadamente, no hay una manera fácil de obtener el tamaño del código de bytes de sus contratos. Una gran herramienta que lo ayudará es el complemento [truffle-contract-size](https://github.com/IoBuilders/truffle-contract-size) si usa Truffle.
+
+1. `npm instalador truffle-contrato-tamaño`
+2. Añadir el complemento a _truffle-config.js_: `plugins: ["truffle-contract-size"]`
+3. Ejecutar `truffle run contract-size`
+
+Esto le ayudará a averiguar cómo sus cambios están afectando los tamaños totales del contrato.
+
+A continuación veremos algunos métodos ordenados según su posible impacto. Piénsalo en términos de pérdida de peso. La mejor estrategia para que alguien alcance su peso deseado (en nuestro caso 24kb) es centrarse primero en los métodos de gran impacto. En la mayoría de los casos, basta con corregir la dieta para conseguirlo, pero a veces se necesita un poco más. Luego puedes añadir algo de ejercicio (impacto medio) o incluso suplementos (impacto bajo).
+
+## Gran impacto {#big-impact}
+
+### Separe sus contratos {#separate-your-contracts}
+
+Este debería ser siempre su primera estrategia. ¿Cómo puede separar el contrato en múltiples contratos más pequeños? Por lo general, esto lo obliga a crear una buena estructura para sus contratos. Desde el punto de vista de la legibilidad del código, siempre se prefieren los contratos más pequeños. A la hora de dividir los contratos, plantéese lo siguiente:
+
+- ¿Qué funciones deben ir juntas? Cada conjunto de funciones quizás resulte mejor en su propio contrato.
+- ¿Qué funciones no requieren la lectura del estado del contrato o solo un subconjunto específico del estado?
+- ¿Se puede dividir el almacenamiento y la funcionalidad?
+
+### Bibliotecas {#libraries}
+
+Una forma sencilla de mover el código de funcionalidad más allá del almacenamiento es usar una [biblioteca](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#libraries). No declare las funciones de la biblioteca como internas, ya que que se [agregarán al contrato](https://ethereum.stackexchange.com/questions/12975/are-internal-functions-in-libraries-not-covered-by-linking) directamente durante la compilación. Pero si utiliza funciones públicas, estas estarán en realidad en un contrato de biblioteca separado. Considere el uso de [for](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#using-for) para que el uso de las bibliotecas sea más conveniente.
+
+### Proxies {#proxies}
+
+Una estrategia más avanzada sería un sistema de proxy. Las bibliotecas utilizan `DELEGATECALL` en la parte trasera, lo que simplemente ejecuta la función de otro contrato con el estado del contrato invocante. Eche un vistazo a [esta entrada de blog](https://hackernoon.com/how-to-make-smart-contracts-upgradable-2612e771d5a2) para aprender más sobre los sistemas de proxy. Le darán mayor funcionalidad, por ejemplo, permiten la actualización, pero también añaden mucha complejidad. No los añadiría solo para reducir el tamaño de los contratos, a menos que sea su única opción por cualquier razón.
+
+## Impacto medio {#medium-impact}
+
+### Elimine funciones {#remove-functions}
+
+Esta debería ser la opción obvia. Las funciones aumentan el tamaño de un contrato.
+
+- **Externas**: A menudo añadimos muchas funciones de visualización por motivos de conveniencia. Eso está muy bien hasta que alcance el límite de tamaño. Es así que tal vez quiera considerar eliminar todas excepto las absolutamente esenciales.
+- **Internas**: También puede eliminar funciones internas/privadas y simplemente insertar el código en la medida en que la función sea invocada solo una vez.
+
+### Evite variables adicionales {#avoid-additional-variables}
+
+Un simple cambio como este:
+
+```solidity
+function get(uint id) returns (address,address) {
+ MyStruct memory myStruct = myStructs[id];
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns (address,address) {
+ return (myStructs[id].addr1, myStructs[id].addr2);
+}
+```
+
+implica una diferencia de **0,28 kb**. Es posible que pueda encontrar muchas situaciones similares en sus contratos y que las cantidades sean significativas.
+
+### Acorte los mensajes de error {#shorten-error-message}
+
+Los mensajes largos de revertir y, en particular, muchos mensajes diferentes de revertir pueden inflar el contrato. En su lugar, use códigos de error cortos y decodifíquelos en su contrato. Un mensaje largo puede ser mucho más corto:
+
+```solidity
+require(msg.sender == owner, "Only the owner of this contract can call this function");
+
+```
+
+```solidity
+require(msg.sender == owner, "OW1");
+```
+
+### Utilice errores personalizados en lugar de mensajes de error
+
+Los errores personalizados se introdujeron en [Solidity 0.8.4](https://blog.soliditylang.org/2021/04/21/custom-errors/). Son una excelente manera de reducir el tamaño de sus contratos, porque están codificados con ABI como selectores (al igual que las funciones).
+
+```solidity
+error Unauthorized();
+
+if (msg.sender != owner) {
+ revert Unauthorized();
+}
+```
+
+### Considere un valor de ejecución bajo en el optimizador {#consider-a-low-run-value-in-the-optimizer}
+
+También puede cambiar la configuración del optimizador. El valor por defecto de 200 significa que intenta optimizar el código de bytes como si una función fuera llamada 200 veces. Si lo cambia a 1, básicamente le indicará al optimizador que actúe de manera optimizada en el caso de ejecutar cada función una sola vez. Una función optimizada para ejecutarse solo una vez significa que está optimizada para la implementación misma. Tenga en cuenta que **esto incrementa el [costo del gas](/developers/docs/gas/) por ejecutar las funciones**, así que tal vez no quiera inclinarse por esta opción.
+
+## Pequeño impacto {#small-impact}
+
+### Evite pasar estructuras a funciones {#avoid-passing-structs-to-functions}
+
+Si usa el [ABIEncoderV2](https://solidity.readthedocs.io/en/v0.6.10/layout-of-source-files.html#abiencoderv2), puede ayudar a no pasar estructuras a una función. En vez de pasar el parámetro como una estructura...
+
+```solidity
+function get(uint id) returns (address,address) {
+ return _get(myStruct);
+}
+
+function _get(MyStruct memory myStruct) private view returns(address,address) {
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns(address,address) {
+ return _get(myStructs[id].addr1, myStructs[id].addr2);
+}
+
+function _get(address addr1, address addr2) private view returns(address,address) {
+ return (addr1, addr2);
+}
+```
+
+... pase directamente los parámetros requeridos. En este ejemplo ahorramos **0,1 kb**.
+
+### Declare la visibilidad correcta de las funciones y variables {#declare-correct-visibility-for-functions-and-variables}
+
+- ¿Funciones o variables que solo sean invocadas desde el exterior? Declárelas como `externas` en lugar de `públicas`.
+- ¿Funciones o variables que solo sean invocadas desde dentro del contrato? Declárelas como `privadas` o `internas` en lugar de `públicas`.
+
+### Elimine modificadores {#remove-modifiers}
+
+Los modificadores, especialmente cuando se utilizan demasiado, podrían tener un impacto significativo en el tamaño del contrato. Considere eliminarlos y utilizar funciones.
+
+```solidity
+modifier checkStuff() {}
+
+function doSomething() checkStuff {}
+```
+
+```solidity
+function checkStuff() private {}
+
+function doSomething() { checkStuff(); }
+```
+
+Estos consejos deberían ayudarlo a reducir significativamente el tamaño de un contrato. Una vez más, no me canso de decirlo, siempre y cuando sea posible, haga hincapié en la división de los contratos para lograr un mayor impacto.
diff --git a/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
new file mode 100644
index 00000000000..da69649fe4b
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
@@ -0,0 +1,127 @@
+---
+title: "EIP-1271: Firma y verificación de firmas de contratos inteligentes"
+description: Una visión general de la generación y verificación de la firma de contrato inteligente con EIP-1271. También recorremos la implementación de EIP-1271 utilizada en Safe (anteriormente Gnosis Safe) para proporcionar un ejemplo concreto para que los desarrolladores de contratos inteligentes puedan construir.
+author: Nathan H. Leung
+lang: es
+tags:
+ - "EIP-1271"
+ - "contratos inteligentes"
+ - "verificación"
+ - "firma"
+skill: intermediate
+published: 2023-01-12
+---
+
+El estándar [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) permite que los contratos inteligentes verifiquen las firmas.
+
+En este tutorial, damos una visión general de las firmas digitales, los antecedentes de EIP-1271 y la implementación específica de EIP-1271 utilizada por [Safe](https://safe.global/) (anteriormente Gnosis Safe). En conjunto, esto puede servir como punto de partida para implementar el EIP-1271 en sus propios contratos.
+
+## ¿Qué es una firma?
+
+En este contexto, una firma (más precisamente, una «firma digital») es un mensaje, además de ser algún tipo de prueba de que el mensaje provino de una persona/remitente/dirección específica.
+
+Por ejemplo, una firma digital podría tener el siguiente aspecto:
+
+1. Mensaje: "Quiero iniciar sesión en este sitio web con mi cartera de Ethereum."
+2. Firmante: Mi dirección es `0x000... `
+3. Prueba: Aquí hay alguna prueba de que yo, `0x000... `, en realidad creé todo este mensaje (esto es generalmente algo criptográfico).
+
+Es importante tener en cuenta que una firma digital incluye tanto un «mensaje» como una «firma».
+
+¿Por qué? Por ejemplo, si me diera un contrato para firmar, y luego cortara la página de firma y le devolviera solo mis firmas sin el resto del contrato, el contrato no sería válido.
+
+De la misma manera, ¡una firma digital no significa nada sin un mensaje asociado!
+
+## ¿Por qué existe EIP-1271?
+
+Con el fin de crear una firma digital para su uso en cadenas de bloques basadas en Ethereum, por lo general se necesita una clave privada secreta que nadie más sabe. Esto es lo que hace que su firma sea suya (nadie más puede crear la misma firma sin el conocimiento de la clave secreta).
+
+Su cuenta de Ethereum (p. ej., su cuenta de propiedad externa/EOA) tiene una clave privada asociada a esta y suele utilizarse cuando un sitio web o una DApp le solicita una firma (p. ej., para «Iniciar sesión con Ethereum»).
+
+Una aplicación puede [verificar una firma](https://docs.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) creada utilizando una biblioteca de terceros como ethers.js [sin conocer su clave privada](https://en.wikipedia.org/wiki/Public-key_cryptography) y tener plena confianza en que _tú_ usted creó la firma.
+
+> De hecho, porque las cuentas de propiedad externa utilizan la criptografía de clave pública, ¡estas pueden ser generadas y verificadas **fuera de la cadena**! Así es como funciona la votación DAO sin gas: en vez de enviar votos en la cadena, las firmas digitales pueden ser creadas y verificadas fuera de la cadena utilizando bibliotecas criptográficas.
+
+Mientras las cuentas de propiedad externa tienen una clave privada, las cuentas de contratos inteligentes no tienen ningún tipo de clave privada o secreta (entonces el «Inicio de sesión con Ethereum», entre otros, no funcionan de manera nativa sin las cuentas de contratos inteligentes).
+
+El problema que EIP-1271 busca solucionar: ¿cómo podemos decir que la firma de un contrato inteligente es válida si el contrato inteligente no tiene algún «secreto» que pueda incorporar en la firma?
+
+## ¿Cómo funciona EIP-1271?
+
+Los contratos inteligentes no tienen claves privadas que se puedan utilizar para firmar mensajes. ¿Entonces cómo podemos saber si una firma es auténtica?
+
+Bueno, ¡una idea es que podemos _preguntar_ al contrato inteligente si una firma es auténtica!
+
+Lo que EIP-1271 hace es normalizar esta idea «preguntando» a un contrato inteligente si una firma proporcionada es válida.
+
+Un contrato donde se implementa EIP-1271 debe tener una función llamada `isValidSignature` que tiene lugar en un mensaje y una firma. Luego, el contrato puede ejecutar algo de lógica de validación (aquí la especificación no hace valer algo en específico) y luego devuelve un valor indicando si la firma es válida o no.
+
+Si `isValidSignature` devuelve un resultado válido, es como si el contrato hablara y dijera: «¡Sí, apruebo esta firma + mensaje!».
+
+### Interfaz
+
+Aquí está la interfaz exacta en la especificación EIP-1271 (hablaremos sobre el parámetro `_hash` abajo, pero por ahora, considérleo como el mensaje que se está verificando):
+
+```jsx
+pragma solidity ^0.5.0;
+
+contract ERC1271 {
+
+ // bytes4(keccak256("isValidSignature(bytes32,bytes)")
+ bytes4 constant internal MAGICVALUE = 0x1626ba7e;
+
+ /**
+ * @dev Should return whether the signature provided is valid for the provided hash
+ * @param _hash Hash of the data to be signed
+ * @param _signature Signature byte array associated with _hash
+ *
+ * MUST return the bytes4 magic value 0x1626ba7e when function passes.
+ * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5)
+ * MUST allow external calls
+ */
+ function isValidSignature(
+ bytes32 _hash,
+ bytes memory _signature)
+ public
+ view
+ returns (bytes4 magicValue);
+}
+```
+
+## Implementación EIP-1271 de ejemplo: Safe
+
+Los contratos pueden implementar `isValidSignature` de varias maneras, la especificación no dice mucho sobre la implementación exacta.
+
+Un contrato destacado que implementa EIP-1271 es Safe (previamente Gnosis Safe).
+
+En el código de Safe, `isValidSignature` [se implementa](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) para que las firmas se creen y comprueben en [de dos maneras:](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support):
+
+1. Mensajes en cadena
+ 1. Creación: un propietario seguro crea una nueva transacción segura para «firmar» un mensaje, pasando el mensaje como dato en la transacción. Una vez que suficientes propietarios han firmado la transacción para alcanzar el umbral multifirma, la transacción se transmite y se ejecuta. En la transacción, hay una función segura activada cuando añade el mensaje a un listado de mensajes «aprobados».
+ 2. Verificación: activa `isValidSignature` en el contrato Safe y pasa el mensaje por verificar como el parámetro del mensaje y [un valor vacío para el parámetro de firma](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (ej: `0x`). Safe verá que el parámetro de firma está vacío y en vez de verificar criptográficamente la firma, sabrá que debe continuar y revisar si el mensaje se encuentra en el listado de mensajes «aprobados».
+2. Mensajes fuera de la cadena:
+ 1. Creación: un propietario seguro crea un mensaje fuera de cadena, luego solicita a otros propietarios seguros que cada uno firme el mensaje individualmente hasta que haya una cantidad suficiente de firmas para superar el umbral de aprobación multifirma.
+ 2. Verificación: activa `isValidSignature`. En el parámetro mensaje, pasa el mensaje por verificar. En el parámetro firma, pasa las firmas de cada propietario seguro de manera concatenada. Safe revisará que haya suficientes firmas para cumplir el umbral **y** que cada firma es válida. Si lo es, devuelve un valor indicando que la verificación de la firma se realizó correctamente.
+
+## ¿Qué es exactamente el parámetro `_hash`? ¿Por qué no pasar el mensaje completo?
+
+Puede que haya notado que la función `isValidSignature` en la [interfaz EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) no toma el mensaje en sí mismo, en su lugar toma un parámetro `_hash`. Esto significa que en vez de pasar completamente el mensaje arbitrariamente a `isValidSignature`, para un hash de 32-bytes del mensaje (generalmente keccak256).
+
+Cada byte de Calldata, p- ej., datos del parámetro función pasados a la función de un contrato inteligente, [ cuesta 16 gas (4 gas en si hay cero bytes)](https://eips.ethereum.org/EIPS/eip-2028), por lo que puede ahorrar mucho gas si el mensaje es largo.
+
+### Especificaciones previas de EIP-1271
+
+Hay especificaciones EIP-1271 en varias partes que tienen una función `isValidSignature` con un primer parámetro del tipo `bytes` (longitud arbitraria, en vez de una longitud fija de `bytes32`) y el parámetro nombre `message`. Esto es una [versión anterior](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206) del estándar EIP-1271.
+
+## ¿Cómo debería implementar EIP-1271 en mis propios contratos?
+
+Aquí la especificación tiene un final muy abierto. La implementación Safe tiene algunas buenas ideas:
+
+- Puede considerar firmas EOA del «propietario» del contrato como válidas.
+- Podría almacenar un listado de mensajes del aprobador y sólo considerar aquellos que sean válidos.
+
+A fin de cuentas, ¡depende de usted, porque es el desarrollador del contrato!
+
+## Conclusión
+
+[EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) es un estándar versátil que permite a los contratos inteligentes verificar firmas. Esto abre la puerta para que los contratos inteligentes actúen más como EOA, por ejemplo, proporcionando una manera de «Iniciar sesión con Ethereum» para trabajar con contratos inteligentes, e implementarse de varias manereas (Safe tiene una implementación interesante y nada convencional que debería considerar).
diff --git a/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
new file mode 100644
index 00000000000..ecfbfaf4fbb
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -0,0 +1,632 @@
+---
+title: "Una explicación del contrato ERC-721"
+description: El contrato ERC-721 de Ryuya Nakamura y cómo funciona
+author: Ori Pomerantz
+lang: es
+tags:
+ - "vyper"
+ - "ERC-721"
+ - "python"
+skill: beginner
+published: 2021-04-01
+---
+
+## Introducción {#introduction}
+
+La norma [ERC-721](/developers/docs/standards/tokens/erc-721/) sirve para mantener la propiedad de los tókenes no fungibles (o NFT). Los tókenes [ERC-20](/developers/docs/standards/tokens/erc-20/) actúan como mercancía, porque no hay diferencia entre tókenes individuales. En contraste, los tókenes ERC-721 están diseñados para activos similares, pero no identicos, tales como [catcartoons](https://www.cryptokitties.co/) o títulos a diferentes piezas de bienes inmuebles.
+
+En este artículo analizaremos [el contrato ERC-721 de Ryuya Nakamura](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy). Este contrato está escrito en [Vyper](https://vyper.readthedocs.io/en/latest/index.html), un lenguaje de contrato similar a Python diseñado para hacer más difícil escribir código inseguro que en Solidity.
+
+## El contrato {#contract}
+
+```python
+# @dev Implementation of ERC-721 non-fungible token standard.
+# @author Ryuya Nakamura (@nrryuya)
+# Modified from: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy
+```
+
+Comentarios en Vyper, como en Python, empiezan con un hash (`#`) y continúan hasta el final de la línea. Comentarios que incluyen `@` los usan [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) para producir documentación legible.
+
+```python
+from vyper.interfaces import ERC721
+
+implements: ERC721
+```
+
+La interfaz ERC-721 está integrada en el lenguaje Vyper. [Puede ver la definición del código aquí](https://github.com/vyperlang/vyper/blob/master/vyper/builtin_interfaces/ERC721.py). La definición de la interfaz está escrita en Python, en lugar de Vyper, porque las interfaces se utilizan no solo dentro de la cadena de bloques, sino que también al enviar a la cadena de bloques una transacción desde un cliente externo, que puede estar escrito en Python.
+
+La primera línea importa la interfaz, y la segunda especifica que la estamos implementando aquí.
+
+### La interfaz de receptor ERC721 {#receiver-interface}
+
+```python
+# Interface for the contract called by safeTransferFrom()
+interface ERC721Receiver:
+ def onERC721Received(
+```
+
+ERC-721 soporta dos tipos de transferencia:
+
+- `transferFrom`, que permite al remitente especificar cualquier dirección de destino y responsabiliza al remitente de la transferencia. Esto significa que puede transferir a una dirección no válida, en cuyo caso el NFT se pierde para siempre.
+- `safeTransferFrom`, que comprueba si la dirección de destino es un contrato. Si es así, el contrato ERC-721 le pregunta al contrato receptor si quiere recibir el NFT.
+
+Para responder a `safeTransferFrom`, se solicitará un contrato receptor que implemente `ERC721Receiver`.
+
+```python
+ _operator: address,
+ _from: address,
+```
+
+La dirección `_from` es el dueño actual del token. La dirección `_operador` es la que solicitó la transferencia (estos dos no pueden ser los mismos, debido a permisos).
+
+```python
+ _tokenId: uint256,
+```
+
+Las ID del token ERC-721 son de 256 bits. Normalmente se crean al cifrar una descripción de lo que sea representara el token.
+
+```python
+ _data: Bytes[1024]
+```
+
+La solicitud puede tener hasta 1.024 bytes de datos de usuario.
+
+```python
+ ) -> bytes32: view
+```
+
+Para prevenir casos en los que un contrato acepte accidentalmente una transferencia, el valor de retorno no es un booleano, si no 256 bits con un valor específico.
+
+Esta función es una ` view`, lo que significa que puede leer el estado de la cadena de bloques, pero no modificarla.
+
+### Eventos {#events}
+
+[Los eventos](https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e) se emiten para informar a los usuarios y servidores fuera de la cadena de bloques de eventos. Tenga en cuenta que el contenido de los eventos no está disponible para los contratos en la cadena de bloques.
+
+```python
+# @dev Emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are
+# created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any
+# number of NFTs may be created and assigned without emitting Transfer. At the time of any
+# transfer, the approved address for that NFT (if any) is reset to none.
+# @param _from Sender of NFT (if address is zero address it indicates token creation).
+# @param _to Receiver of NFT (if address is zero address it indicates token destruction).
+# @param _tokenId The NFT that got transferred.
+event Transfer:
+ sender: indexed(address)
+ receiver: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+Esto es similar a una transferencia de ERC-20, excepto que informamos de un `tokenId` en lugar de una cantidad. Nadie tiene la dirección cero, así que convencionalmente la utilizamos para informar de la creación y destrucción de tókenes .
+
+```python
+# @dev This emits when the approved address for an NFT is changed or reaffirmed. The zero
+# address indicates there is no approved address. When a Transfer event emits, this also
+# indicates that the approved address for that NFT (if any) is reset to none.
+# @param _owner Owner of NFT.
+# @param _approved Address that we are approving.
+# @param _tokenId NFT which we are approving.
+event Approval:
+ owner: indexed(address)
+ approved: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+La aprobación de una norma ERC-721 es similar a una autorización para el ERC. Se permite una dirección específica para transferir un token específico. Esto da un mecanismo para que los contratos respondan cuando aceptan un token. Los contratos no pueden escuchar eventos, así que si solo transfiere el token a ellos, estos no lo sabrán. De esta manera el propietario de envía primero una aprobación y luego envía una solicitud al contrato: «He aprobado la transferencia del token X, hágalo por favor...».
+
+Esta es una opción de diseño para hacer que la norma ERC-721 sea similar la norma ERC-20. Debido a que los tókenes ERC-721 no son fungibles, un contrato también puede identificar que obtuvo un token específico mirando la propiedad del token.
+
+```python
+# @dev This emits when an operator is enabled or disabled for an owner. The operator can manage
+# all NFTs of the owner.
+# @param _owner Owner of NFT.
+# @param _operator Address to which we are setting operator rights.
+# @param _approved Status of operator rights(true if operator rights are given and false if
+# revoked).
+event ApprovalForAll:
+ owner: indexed(address)
+ operator: indexed(address)
+ approved: bool
+```
+
+A veces es útil tener un _operator_ que pueda administrar todos los tókenes de una cuenta de un tipo específico (aquellos que administra un contrato específico), similar a un poder notarial. Por ejemplo, querría dar tal poder a un contrato que comprueba si no me he puesto en contacto con él durante seis meses. Y si así lo desea, distribuye mis activos a mis herederos (si uno de ellos lo solicita, los contratos no pueden hacer nada sin ser invocados por una transacción). En ERC-20 sólo podemos dar una alta asignación a un contrato de herencia, pero eso no funciona para ERC-721 porque los tókenes no son fungibles. Este es el equivalente.
+
+El valor `approved` nos dice si el evento es para una aprobación o la retirada de una aprobación.
+
+### Variables de estado {#state-vars}
+
+Estas variables contienen el estado actual de los tókenes: cuáles están disponibles y quién los posee. La mayoría de estos son objetos de `HashMap`, [, asignaciones unidireccionales que existen entre dos tipos](https://vyper.readthedocs.io/en/latest/types.html#mappings).
+
+```python
+# @dev Mapping from NFT ID to the address that owns it.
+idToOwner: HashMap[uint256, address]
+
+# @dev Mapping from NFT ID to approved address.
+idToApprovals: HashMap[uint256, address]
+```
+
+Las identidades del usuario y del contrato en Ethereum vienen representadas por direcciones de 160-bits. Estas dos variables mapean desde identificadores de tókenes a sus propietarios y aquellos aprobados para transferirlos (máximo uno para cada uno). En Ethereum, los datos no inicializados siempre son cero, así que si no hay ningún propietario o transferidor aprobado, el valor para ese token es cero.
+
+```python
+# @dev Mapping from owner address to count of his tokens.
+ownerToNFTokenCount: HashMap[address, uint256]
+```
+
+Esta variable tiene el recuento de tókenes para cada propietario. No hay mapeo de propietarios a tókenes, así que la única manera de identificar los tókenes que posee un propietario específico es mirar el historial de eventos de la cadena de bloques y ver los eventos apropiados de `Transfer`. Podemos usar esta variable para saber cuando tenemos todos los NFT y no necesitamos mirar aún más a tiempo.
+
+Tenga en cuenta que este algoritmo sólo funciona para interfaces de usuario y servidores externos. El código en ejecución en la cadena de bloques no puede leer eventos pasados.
+
+```python
+# @dev Mapping from owner address to mapping of operator addresses.
+ownerToOperators: HashMap[address, HashMap[address, bool]]
+```
+
+Una cuenta puede tener más de un operador único. Un simple `HashMap` es insuficiente para llevar un seguimiento de ellos, porque cada clave conduce a un único valor. En su lugar, puede utilizar `HashMap[address, bool]` como el valor. Por defecto, el valor para cada dirección es `False`, lo que significa que no es un operador. Puede establecer valores a `True` según sea necesario.
+
+```python
+# @dev Address of minter, who can mint a token
+minter: address
+```
+
+Hay que crear nuevos tókenes de alguna manera. En este contrato hay una única entidad que puede hacerlo, el `minter`. Es probable que esto sea suficiente para un juego, por ejemplo. Para otros propósitos, podría ser necesario crear una lógica de negocio más complicada.
+
+```python
+# @dev Mapping of interface id to bool about whether or not it's supported
+supportedInterfaces: HashMap[bytes32, bool]
+
+# @dev ERC165 interface ID of ERC165
+ERC165_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000001ffc9a7
+
+# @dev ERC165 interface ID of ERC721
+ERC721_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000080ac58cd
+```
+
+[ERC-165](https://eips.ethereum.org/EIPS/eip-165) especifica un mecanismo para un contrato para divulgar cómo las aplicaciones pueden comunicarse con él, con qué ERC concuerda. En este caso, el contrato se ajusta a ERC-165 y ERC-721.
+
+### Funciones {#functions}
+
+Estas son las funciones que implementan ERC-721.
+
+#### El constructor {#constructor}
+
+```python
+@external
+def __init__():
+```
+
+En Vyper, como en Python, la función constructora se llama `__init__`.
+
+```python
+ """
+ @dev Contract constructor.
+ """
+```
+
+En Python, y en Vyper, también puedes crear un comentario especificando una cadena multilínea (que comienza y termina en `"""`), y no usarla de ninguna manera. Estos comentarios también pueden incluir [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html).
+
+```python
+ self.supportedInterfaces[ERC165_INTERFACE_ID] = True
+ self.supportedInterfaces[ERC721_INTERFACE_ID] = True
+ self.minter = msg.sender
+```
+
+Para acceder a variables de estado se usa `self.` (otra vez, igual que en Python).
+
+#### Funciones View {#views}
+
+Estas son funciones que no modifican el estado de la cadena de bloques y que, por lo tanto, pueden ejecutarse libremente si se invocan externamente. Si las funciones de vista (View) se invocan mediante un contrato y todavía tienen que ejecutarse en cada nodo y por lo tanto cuestan gas.
+
+```python
+@view
+@external
+```
+
+Estas palabras clave antes de una definición de función que empiezan con un signo en la pantalla (`@`) se llaman _decoraciones_. Y especifican las circunstancias en las que se puede activar una función.
+
+- `@view` especifica que esta función es una vista.
+- `@external` especifica que esta función en concreto puede activarse por transacciones y por otros contratos.
+
+```python
+def supportsInterface(_interfaceID: bytes32) -> bool:
+```
+
+A diferencia de Python, Vyper es un [lenguaje tipeado estático](https://wikipedia.org/wiki/Type_system#Static_type_checking). No se puede declarar una variable o un parámetro de función sin identificar el [tipo de datos](https://vyper.readthedocs.io/en/latest/types.html). En este caso, el parámetro de entrada es `bytes32`, un valor de 256 bits (que es el tamaño de la palabra nativa de la [máquina virtual de Ethereum](/developers/docs/evm/)). La salida es un valor booleano. Por costumbre, los nombres de los parámetros de función comienzan por un guión bajo (`_`).
+
+```python
+ """
+ @dev Interface identification is specified in ERC-165.
+ @param _interfaceID Id of the interface
+ """
+ return self.supportedInterfaces[_interfaceID]
+```
+
+Devuelve el valor del HashMap `self.supportedInterfaces`, que se establece en el constructor (`__init__`).
+
+```python
+### VIEW FUNCTIONS ###
+```
+
+Estas son las funciones de vista que hacen que la información sobre los tókenes esté disponible para los usuarios y otros contratos.
+
+```python
+@view
+@external
+def balanceOf(_owner: address) -> uint256:
+ """
+ @dev Returns the number of NFTs owned by `_owner`.
+ Throws if `_owner` is the zero address. NFTs assigned to the zero address are considered invalid.
+ @param _owner Address for whom to query the balance.
+ """
+ assert _owner != ZERO_ADDRESS
+```
+
+Esta línea [verifica](https://vyper.readthedocs.io/en/latest/statements.html#assert) que `_owner` no es cero. Si lo es, hay un error y el funcionamiento se revierte.
+
+```python
+ return self.ownerToNFTokenCount[_owner]
+
+@view
+@external
+def ownerOf(_tokenId: uint256) -> address:
+ """
+ @dev Returns the address of the owner of the NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId The identifier for an NFT.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ return owner
+```
+
+En la máquina virtual de Ethereum (EVM) cualquier almacenamiento que no tenga un valor almacenado en ella es cero. Si no hay ningún token en `_tokenId`, entonces el valor de `self.idToOwner[_tokenId]` es cero. En ese caso la función se revierte.
+
+```python
+@view
+@external
+def getApproved(_tokenId: uint256) -> address:
+ """
+ @dev Get the approved address for a single NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId ID of the NFT to query the approval of.
+ """
+ # Throws if `_tokenId` is not a valid NFT
+ assert self.idToOwner[_tokenId] != ZERO_ADDRESS
+ return self.idToApprovals[_tokenId]
+```
+
+Tenga en cuenta que `getApproved` _puede_ dar cero como valor. Si el token es válido, aparece `self.idToApprovals[_tokenId]`. Si no hay aprobador, ese valor es cero.
+
+```python
+@view
+@external
+def isApprovedForAll(_owner: address, _operator: address) -> bool:
+ """
+ @dev Checks if `_operator` is an approved operator for `_owner`.
+ @param _owner The address that owns the NFTs.
+ @param _operator The address that acts on behalf of the owner.
+ """
+ return (self.ownerToOperators[_owner])[_operator]
+```
+
+Esta función verifica si `_operator` tiene permitido administrar todos los tókenes de `_owner` de este contrato. Debido a que puede haber múltiples operadores, se trata de un HashMap de dos niveles.
+
+#### Funciones auxiliares de transferencia {#transfer-helpers}
+
+Estas funciones implementan operaciones que son parte de la transferencia o la gestión de tókenes.
+
+```python
+
+### TRANSFER FUNCTION HELPERS ###
+
+@view
+@internal
+```
+
+Esta decoración `@internal` significa que solo se puede accedeer a la función desde otras funciones dentro del mismo contrato. Por costumbre, los nombres de los parámetros de función comienzan por un guión bajo (`_`).
+
+```python
+def _isApprovedOrOwner(_spender: address, _tokenId: uint256) -> bool:
+ """
+ @dev Returns whether the given spender can transfer a given token ID
+ @param spender address of the spender to query
+ @param tokenId uint256 ID of the token to be transferred
+ @return bool whether the msg.sender is approved for the given token ID,
+ is an operator of the owner, or is the owner of the token
+ """
+ owner: address = self.idToOwner[_tokenId]
+ spenderIsOwner: bool = owner == _spender
+ spenderIsApproved: bool = _spender == self.idToApprovals[_tokenId]
+ spenderIsApprovedForAll: bool = (self.ownerToOperators[owner])[_spender]
+ return (spenderIsOwner or spenderIsApproved) or spenderIsApprovedForAll
+```
+
+Hay tres formas en las que se puede permitir que una dirección transfiera un token:
+
+1. La dirección es el dueño del token.
+2. La dirección está aprobada para gastar ese token.
+3. La dirección es un operador para el propietario del token.
+
+La función anterior puede ser una vista, porque no cambia el estado. Para reducir los costos operativos, cualquier función que _pueda_ ser una vista _debería_ ser una vista.
+
+```python
+@internal
+def _addTokenTo(_to: address, _tokenId: uint256):
+ """
+ @dev Add a NFT to a given address
+ Throws if `_tokenId` is owned by someone.
+ """
+ # Throws if `_tokenId` is owned by someone
+ assert self.idToOwner[_tokenId] == ZERO_ADDRESS
+ # Change the owner
+ self.idToOwner[_tokenId] = _to
+ # Change count tracking
+ self.ownerToNFTokenCount[_to] += 1
+
+
+@internal
+def _removeTokenFrom(_from: address, _tokenId: uint256):
+ """
+ @dev Remove a NFT from a given address
+ Throws if `_from` is not the current owner.
+ """
+ # Throws if `_from` is not the current owner
+ assert self.idToOwner[_tokenId] == _from
+ # Change the owner
+ self.idToOwner[_tokenId] = ZERO_ADDRESS
+ # Change count tracking
+ self.ownerToNFTokenCount[_from] -= 1
+```
+
+Cuando hay un problema con una transferencia se revierte la activación.
+
+```python
+@internal
+def _clearApproval(_owner: address, _tokenId: uint256):
+ """
+ @dev Clear an approval of a given address
+ Throws if `_owner` is not the current owner.
+ """
+ # Throws if `_owner` is not the current owner
+ assert self.idToOwner[_tokenId] == _owner
+ if self.idToApprovals[_tokenId] != ZERO_ADDRESS:
+ # Reset approvals
+ self.idToApprovals[_tokenId] = ZERO_ADDRESS
+```
+
+Cambie el valor solo si es necesario. Las variables de estado viven en el storage. Escribir al almacenamiento es una de las operaciones más caras que hace la EVM (máquina virtual de Ethereum) (en términos de [gas](/developers/docs/gas/)). Por lo tanto, es una buena idea minimizarlo, incluso si escribir el valor existente tiene un alto coste.
+
+```python
+@internal
+def _transferFrom(_from: address, _to: address, _tokenId: uint256, _sender: address):
+ """
+ @dev Execute transfer of a NFT.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT. (NOTE: `msg.sender` not allowed in private function so pass `_sender`.)
+ Throws if `_to` is the zero address.
+ Throws if `_from` is not the current owner.
+ Throws if `_tokenId` is not a valid NFT.
+ """
+```
+
+Tenemos esta función interna, porque hay dos maneras de transferir tókenes (regulares y seguros), pero solo queremos una única ubicación en el código donde lo hacemos para simplificar la auditoría.
+
+```python
+ # Check requirements
+ assert self._isApprovedOrOwner(_sender, _tokenId)
+ # Throws if `_to` is the zero address
+ assert _to != ZERO_ADDRESS
+ # Clear approval. Throws if `_from` is not the current owner
+ self._clearApproval(_from, _tokenId)
+ # Remove NFT. Throws if `_tokenId` is not a valid NFT
+ self._removeTokenFrom(_from, _tokenId)
+ # Add NFT
+ self._addTokenTo(_to, _tokenId)
+ # Log the transfer
+ log Transfer(_from, _to, _tokenId)
+```
+
+Para emitir un evento en Vyper, utiliza una instrucción de registro `log` ([ver aquí para más detalles](https://vyper.readthedocs.io/en/latest/event-logging.html#event-logging)).
+
+#### Funciones de transferencia {#transfer-funs}
+
+```python
+
+### TRANSFER FUNCTIONS ###
+
+@external
+def transferFrom(_from: address, _to: address, _tokenId: uint256):
+ """
+ @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else
+ they maybe be permanently lost.
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+Esta función le permite transferir a una dirección arbitraria. A menos que la dirección sea un usuario, o un contrato que sepa cómo transferir tókenes, cualquier token que usted transfiera se quedará atascado en esa dirección e inutilizable.
+
+```python
+@external
+def safeTransferFrom(
+ _from: address,
+ _to: address,
+ _tokenId: uint256,
+ _data: Bytes[1024]=b""
+ ):
+ """
+ @dev Transfers the ownership of an NFT from one address to another address.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the
+ approved address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ If `_to` is a smart contract, it calls `onERC721Received` on `_to` and throws if
+ the return value is not `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
+ NOTE: bytes4 is represented by bytes32 with padding
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ @param _data Additional data with no specified format, sent in call to `_to`.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+Es mejor hacer la transferencia primero, porque si hay un problema lo revertiremos de todos modos, para que todas las operaciones de la activación se cancelen.
+
+```python
+ if _to.is_contract: # check if `_to` is a contract address
+```
+
+Primero compruebe si la dirección es un contrato (si tiene código). De lo contrario, asuma que es una dirección de usuario y que el usuario podrá usar el token o transferirlo. No obstante, no se confíe con una falsa sensación de seguridad. Puede perder tókenes, incluso con `safeTransferFrom`, si los transfiere a una dirección cuya clave privada nadie conozca.
+
+```python
+ returnValue: bytes32 = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data)
+```
+
+Invoque al contrato de destino para ver si puede recibir tókenes ERC-721.
+
+```python
+ # Throws if transfer destination is a contract which does not implement 'onERC721Received'
+ assert returnValue == method_id("onERC721Received(address,address,uint256,bytes)", output_type=bytes32)
+```
+
+Si el destino es un contrato, pero no acepta tókenes ERC-721 (o que decidió no aceptar esta transferencia en particular), reviertalo.
+
+```python
+@external
+def approve(_approved: address, _tokenId: uint256):
+ """
+ @dev Set or reaffirm the approved address for an NFT. The zero address indicates there is no approved address.
+ Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.
+ Throws if `_tokenId` is not a valid NFT. (NOTE: This is not written the EIP)
+ Throws if `_approved` is the current owner. (NOTE: This is not written the EIP)
+ @param _approved Address to be approved for the given NFT ID.
+ @param _tokenId ID of the token to be approved.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ # Throws if `_approved` is the current owner
+ assert _approved != owner
+```
+
+Por lo general, si usted no quiere un aprobador, nombre la dirección cero, no a usted mismo.
+
+```python
+ # Check requirements
+ senderIsOwner: bool = self.idToOwner[_tokenId] == msg.sender
+ senderIsApprovedForAll: bool = (self.ownerToOperators[owner])[msg.sender]
+ assert (senderIsOwner or senderIsApprovedForAll)
+```
+
+Para establecer una aprobación usted puede ser el propietario, o un operador autorizado por el propietario.
+
+```python
+ # Set the approval
+ self.idToApprovals[_tokenId] = _approved
+ log Approval(owner, _approved, _tokenId)
+
+
+@external
+def setApprovalForAll(_operator: address, _approved: bool):
+ """
+ @dev Enables or disables approval for a third party ("operator") to manage all of
+ `msg.sender`'s assets. It also emits the ApprovalForAll event.
+ Throws if `_operator` is the `msg.sender`. (NOTE: This is not written the EIP)
+ @notice This works even if sender doesn't own any tokens at the time.
+ @param _operator Address to add to the set of authorized operators.
+ @param _approved True if the operators is approved, false to revoke approval.
+ """
+ # Throws if `_operator` is the `msg.sender`
+ assert _operator != msg.sender
+ self.ownerToOperators[msg.sender][_operator] = _approved
+ log ApprovalForAll(msg.sender, _operator, _approved)
+```
+
+#### Acuñar nuevos tokens y destruir las existentes {#mint-burn}
+
+La cuenta que creó el contrato es el `minter`, el súper usuario autorizado a acuñar nuevos NFT. Sin embargo, ni siquiera se le permite quemar los tókenes existentes. Solo el propietario, o una entidad autorizada por el propietario, puede hacerlo.
+
+```python
+### MINT & BURN FUNCTIONS ###
+
+@external
+def mint(_to: address, _tokenId: uint256) -> bool:
+```
+
+Esta función siempre muestra `True`, porque si la operación falla se revierte.
+
+```python
+ """
+ @dev Function to mint tokens
+ Throws if `msg.sender` is not the minter.
+ Throws if `_to` is zero address.
+ Throws if `_tokenId` is owned by someone.
+ @param _to The address that will receive the minted tokens.
+ @param _tokenId The token id to mint.
+ @return A boolean that indicates if the operation was successful.
+ """
+ # Throws if `msg.sender` is not the minter
+ assert msg.sender == self.minter
+```
+
+Sólo el minter (la cuenta que creó el contrato ERC-721) puede acuñar nuevos tókenes. Esto puede ser un problema en el futuro si queremos cambiar la identidad del minter. En un contrato de producción, es deseable una función que permita al minter transferir privilegios de minter a otra persona.
+
+```python
+ # Throws if `_to` is zero address
+ assert _to != ZERO_ADDRESS
+ # Add NFT. Throws if `_tokenId` is owned by someone
+ self._addTokenTo(_to, _tokenId)
+ log Transfer(ZERO_ADDRESS, _to, _tokenId)
+ return True
+```
+
+Por lo general, el acuñar nuevos tókenes cuenta como una transferencia desde la dirección cero.
+
+```python
+
+@external
+def burn(_tokenId: uint256):
+ """
+ @dev Burns a specific ERC721 token.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId uint256 id of the ERC721 token to be burned.
+ """
+ # Check requirements
+ assert self._isApprovedOrOwner(msg.sender, _tokenId)
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ self._clearApproval(owner, _tokenId)
+ self._removeTokenFrom(owner, _tokenId)
+ log Transfer(owner, ZERO_ADDRESS, _tokenId)
+```
+
+Cualquiera a quien se le permita transferir un token puede quemarlo. Mientras que una quema parece equivalente a transferira la dirección cero, la dirección cero no recibe el token. Esto nos permite liberar todo el almacenamiento que se utilizó para el token, lo que puede reducir el coste del gas de la transacción.
+
+# Utilizar este contrato {#using-contract}
+
+En contraste con Solidity, Vyper no tiene herencia. Esta es una elección de diseño deliberada para hacer el código más claro y por lo tanto más fácil de asegurar. Así que para crear su propio contrato Vyper ERC-721, utilice [este contrato](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy) y modifíquelo para implementar la lógica de negocio que desee.
+
+# Conclusión {#conclusion}
+
+A modo de recapitulación, he resumido algunas de las ideas más importantes de este contrato:
+
+- Para recibir tokens ERC-721 con una transferencia segura, los contratos tienen que implementar la interfaz `ERC721Receiver`.
+- Incluso si utiliza una transferencia segura, los tókenes todavía pueden atascarse si los envía a una dirección cuya clave privada no se conozca.
+- Cuando hay un problema con una operación, es una buena idea usar `revert` en la activación, en lugar de que solo aparezca un valor de fallo.
+- Las tókenes ERC-721 existen cuando tienen un propietario.
+- Existen tres maneras de ser autorizados para transferir un NFT. Puede ser el propietario, ser aprobado para un token específico, o ser un operador para todos los tókenes del propietario.
+- Los eventos pasados solo son visibles fuera de la cadena de bloques. El código ejecutándose dentro de la cadena de bloques no puede verlos.
+
+Ahora vaya a implementar contratos seguros de Vyper.
diff --git a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
new file mode 100644
index 00000000000..a61174e072a
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
@@ -0,0 +1,796 @@
+---
+title: "Una explicación del contrato ERC-20"
+description: '¿Qué tiene el contrato OpenZeppelin ERC® y por qué está ahí?'
+author: Ori Pomerantz
+lang: es
+tags:
+ - "solidity"
+ - "erc-20"
+skill: beginner
+published: 2021-03-09
+---
+
+## Introducción {#introduction}
+
+Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. Estos tókenes normalmente siguen un estándar, el [ERC-20](/developers/docs/standards/tokens/erc-20/). Este estándar permite escribir herramientas, como reservas de liquidez y carteras, que funcionan con todos los tókenes ERC-20. En este artículo analizaremos la implementación de [OpenZeppelin Solidity ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), así como la [definición de interfaz](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol).
+
+Este es un código fuente anotado. Si quiere implementar ERC-20, [lea este tutorial](https://docs.openzeppelin.com/contracts/2.x/erc20-supply).
+
+## La Interfaz {#the-interface}
+
+El propósito de un estándar como ERC-20 es permitir la implementación de muchos tókenes y que sean interoperables a través de aplicaciones, como carteras e intercambios descentralizados. Para lograr esto, creamos una [interfaz](https://www.geeksforgeeks.org/solidity-basics-of-interface/). Cualquier código que necesite usar el contrato de tókenes puede usar las mismas definiciones en la interfaz y ser compatible con todos los contratos de token que lo usan, ya sea una cartera como MetaMask, una DApp como etherscan.io, o un contrato diferente como la reserva de liquidez.
+
+![Illustración de la interfaz ERC-20](erc20_interface.png)
+
+Si usted es un programador experto, problablemente recuerde haber visto estructuras similares en [Java](https://www.w3schools.com/java/java_interface.asp) o incluso en [archivos en encabezado C](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html).
+
+Esta es la deinición de la [Interfaz ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) de OpenZeppelin. Es una derivación del [estándar legible por humanos](https://eips.ethereum.org/EIPS/eip-20) al código de Solidity. Por supuesto, esta interfaz por si sóla no define _como _ hacer nada. Esto se explica en el código fuente del contrato a continuación.
+
+
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+Se supone que los archivos de Solidity incluyen un identificador de licencia. [Puede ver la lista de licencias aquí](https://spdx.org/licenses/). Si necesita una licencia diferente, indíquelo en los comentarios.
+
+
+
+```solidity
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+El lenguaje de Solidity sigue evolucionando rápidamente, y las nuevas versiones pueden que no sean compatibles con el antiguo código ([ver aquí](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html)). Por lo tanto, es una buena idea especificar no solo una versión mínima del lenguaje, sino también una versión máxima: la última con la que probara el código.
+
+
+
+```solidity
+/**
+ * @dev Interfaz del estándar ERC20 como se define en el EIP.
+ */
+```
+
+El `@dev` en el comentario es parte del [formato NatSpec](https://docs.soliditylang.org/en/develop/natspec-format.html), utilizado para producir documentación desde el código fuente.
+
+
+
+```solidity
+interface IERC20 {
+```
+
+Por convención, los nombres de interfaz comienzan por `I`.
+
+
+
+```solidity
+ /**
+ * @dev Devuelve la cantidad de tokens en existencia.
+ */
+ function totalSupply() external view returns (uint256);
+```
+
+Esta función es `external`, lo que significa [que sólo puede ser activada desde fuera del contrato](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2). Devuelve el suministro total de tókenes en el contrato. Este valor se devuelve utilizando el tipo más común en Ethereum, 256 bits sin firma (256 bits es el tamaño nativo de la palabra de la EVM). Esta función también es una `view`, lo que significa que no cambia el estado, así que se puede ejecutar en un solo nodo en lugar de tener cada nodo en la cadena de bloques ejecutándolo. Este tipo de función no genera una transacción y no cuesta [gas](/developers/docs/gas/).
+
+**Nota:** En teoría puede parecer que el creador de un contrato puede hacer trampas al devolver una oferta total menor que el valor real, haciendo que cada token parezca más valioso de lo que realmente es. Sin embargo, ese temor ignora la verdadera naturaleza de la cadena de bloques. Todo lo que pasa en la cadena de bloques puede verificarse en cada nodo. Para lograrlo, cada maquína de contrato, código de lenguaje y almacenamiento está disponible en cada nodo. Aunque no está obligado a publicar el código de Solidity para su contrato, nadie le tomaría en serio, a menos que publicase el código fuente y la versión de Solidity con la que se compiló, para que pueda verificarlo con respecto al código de lenguaje de la máquina que proporcionó. Por ejemplo, vea [este contrato](https://etherscan.io/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD#code).
+
+
+
+```solidity
+ /**
+ * @dev Devuelve la cantidad de tokens tenidos por `cuenta`.
+ */
+ function balanceOf(address account) external view returns (uint256);
+```
+
+Como indica su nombre, `saldoDe` devuelve el saldo de una cuenta. Las cuentas de Ethereum son identificadas en Solidity usando el tipo de `dirección `, el cual contiene 160 bits. También es `externo` y `vista`.
+
+
+
+```solidity
+ /**
+ * @dev Mueve `monto` de tokens de la cuenta del cliente a `beneficiario`.
+ *
+ * Devuelve un valor boolean indicando si la operación fue exitosa o no.
+ *
+ * Emite un evento {Transfer}.
+ */
+ function transfer(address recipient, uint256 amount) external returns (bool);
+```
+
+La función `transfer` transfiere tókenes de la persona que lo invoca a una dirección diferente. Esto incluye un cambio de estado, así que no es una `vista`. Cuando un usuario llama está función genera una transacción y cuesta gas. También emite un evento, `Transferir`, para informar a todos en la cadena de bloques del evento.
+
+La función tiene dos resultados distintos, una para cada tipo de activación:
+
+- Usuarios que invocan la función directamente desde una interfaz de usuario. Normalmente, el usuario envía una transacción y no espera una respuesta, lo que podría tomar una cantidad indefinida de tiempo. El usuario puede ver lo que ocurrió buscando el recibo de la transacción (que se identifica por el hash de la transacción) o buscando el evento `Transferir`.
+- Otros contratos, que invocan la función como parte de una transacción general. Esos contratos obtienen resultados inmediatos, porque se ejecutan en la misma transacción, así que pueden usar el valor de retorno de la función.
+
+El mismo tipo de resultados lo obtienen las otras funciones que cambian el estado del contrato.
+
+
+
+Las licencias permiten que una cuenta utilice algunos tókenes que pertenecen a un propietario diferente. Esto es útil, por ejemplo, para los contratos que actúan como vendedores. Los contratos no pueden controlar eventos, así que si un comprador transfiriera tókenes al contrato del vendedor directamente ese contrato no sabría si se ha pagado. En cambio, el comprador permite al contrato de vendedor utilizar una cierta cantidad, y el vendedor transfiere esa cantidad. Esto se hace a través de una función que invoca el contrato de vendedor, por lo que el contrato de vendedor puede saber si ha salido bien.
+
+```solidity
+ /**
+ * @dev Devuelve el número restante de tokens que `spender` será
+ * permitido gastar en nombre de `owner` a través de {transferFrom}. Esto es
+ * cero por defecto.
+ *
+ * Este valor cambia cuando {approve} o {transferFrom} son llamados.
+ */
+ function allowance(address owner, address spender) external view returns (uint256);
+```
+
+La función `allowance` permite a cualquiera consultar cuál es la asignación que una dirección (`owner`) permite que otra dirección (`spender`) se utilice.
+
+
+
+```solidity
+ /**
+ * @dev Establece `amount` como la autorización de `spender` sobre los tokens del que llama.
+ *
+ * Devuelve un valor booleano indicando si la operación fue exitosa o no.
+ *
+ * IMPORTANTE: Ten en cuenta que cambiar una asignación con este método conlleva el riesgo
+ * que alguien puede usar tanto el antiguo como el nuevo permiso por desgracia
+ * orden de transacción. Una posible solución para mitigar esta carrera
+ * la condición es reducir primero la autorización del gasto a 0 y establecer el
+ * valor deseado después:
+ * https://github. om/ethereum/EIPs/issues/20#issuecomment-263524729
+ *
+ * Emite un evento {Approval}.
+ */
+ function approve(address spender, uint256 amount) external returns (bool);
+```
+
+La función `approve` crea una asignación. Asegúrate de leer el mensaje sobre cómo se puede abusar de él. En Ethereum usted controla el orden de sus propias transacciones, pero no puede controlar el orden en el que se ejecutarán las transacciones de otras personas, a menos que no envíe su propia transacción hasta que vea que se ha producido la transacción del otro lado.
+
+
+
+```solidity
+ /**
+ * @dev mueve `amount` tokens desde`sender` a `recipient` usando el
+ * mecanismo de autorización. `amount` es entonces deducido de la autorización
+ * del llamante.
+ *
+ * Devuelve un valor booleano indicando si la operación fue exitosa o no.
+ *
+ * Emite un evento {Transfer}.
+ */
+ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
+```
+
+Por último, `transferirDesde` lo utiliza el gastador para utilizar realmente la asignación.
+
+
+
+```solidity
+
+ /**
+ * @dev Emitido cuando `value` tokens son movidos de una cuenta (`from`) a
+ * otro (`to`).
+ *
+ * Ten en cuenta que `valor` puede ser cero.
+ */
+ event Transfer(address indexed from, address indexed to, uint256 value);
+
+ /**
+ * @dev Emitted when the allowance of a `spender` for an `owner` is set by
+ * a call to {approve}. `valor` es el nuevo permiso.
+ */
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+```
+
+Estos eventos se emiten cuando cambia el estado del contrato ERC-20.
+
+## El contrato real {#the-actual-contract}
+
+Este es el contrato real que implementa el estándar ERC-20, [tomado desde aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). No está pensado para ser usado tal cual, pero puede [heredarlo](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) para pasarlo a algo utilizable.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+
+
+### Importar declaraciones {#import-statements}
+
+Además de las definiciones de interfaz de arriba, la definición del contrato importa otros dos archivos:
+
+```solidity
+
+import "../../GSN/Context.sol";
+import "./IERC20.sol";
+import "../../math/SafeMath.sol";
+```
+
+- `GSN/Context.sol` reúne las definiciones que se necesita utilizar [OpenGSN](https://www.opengsn.org/): un sistema que permite a los usuarios sin ether usar la cadena de bloques. Tenga en cuenta que esta es una versión antigua, si desea integrar con OpenGSN [utilice este tutorial](https://docs.opengsn.org/javascript-client/tutorial.html).
+- [La biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/)que se utiliza para añadir y restar sin excesos. Esto es necesario, porque de lo contrario una persona podría tener un token, gastar dos tókenes y luego tener 2^256-1 tókenes.
+
+
+
+Este comentario explica la finalidad del contrato.
+
+```solidity
+/**
+ * @dev Implementación de la interfaz {IERC20}.
+ *
+ * Esta implementación es agnótica a la forma en que se crean los tokens. Esto significa que
+ * tiene que añadirse un mecanismo de suministro en un contrato derivado usando {_mint}.
+ * Para un mecanismo genérico ver {ERC20PresetMinterPauser}.
+ *
+ * TIP: Para una escritura detallada vea nuestra guía
+ * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
+ * to implement supply mechanisms].
+ *
+ * Hemos seguido las pautas generales de OpenZeppelin: las funciones se revierten en su lugar
+ * de devolver `falso` en caso de fallo. Este comportamiento es sin embargo convencional
+ * y no entra en conflicto con las expectativas de las aplicaciones ERC20.
+ *
+ * Adicionalmente, se emite un evento de {Approval} en llamadas a {transferFrom}.
+ * Esto permite a las aplicaciones reconstruir el permiso para todas las cuentas solo
+ * escuchando dichos eventos. Otras implementaciones del EIP no pueden emitir
+ * estos eventos, ya que no son requeridos por la especificación.
+ *
+ * Finalmente, las funciones no estandarizadas {decreaseAllowance} y {increaseAllowance}
+ * han sido añadidas para mitigar los ya conocidos problemas relacionados sobre configurar asignaciones. Ver {IERC20-approve}.
+ */
+
+```
+
+### Composición del contrato {#contract-definition}
+
+```solidity
+contract ERC20 is Context, IERC20 {
+```
+
+Esta línea especifica la herencia, en este caso de `IERC20` desde arriba y `Context` para OpenGSN.
+
+
+
+```solidity
+
+ using SafeMath for uint256;
+
+```
+
+Esta línea une la biblioteca `SafeMath` al tipo `uint256`. Puede encontrar esta biblioteca [aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol).
+
+### Definiciones de variables {#variable-definitions}
+
+Estas definiciones especifican las variables de estado del contrato. Hay variables declaradas commo `privadas`, pero eso solo significa que otros contratos en la cadena de bloques no pueden leerlas. _No hay secretos en la cadena de bloques_, el software en cada nodo tiene el estado de cada contrato en cada bloque. Convencionalmente, a las variables de estado se les llama `_`.
+
+Las primeras dos variables son [mapeos](https://www.tutorialspoint.com/solidity/solidity_mappings.htm), es decir, que se comportan aproximadamente igual que [matrices asociativas](https://wikipedia.org/wiki/Associative_array), con la salvedad de que las claves son valores numéricos. El almacenamiento solo se asigna para entradas que tienen valores diferentes del predeterminado (cero).
+
+```solidity
+ mapping (address => uint256) private _balances;
+```
+
+El primer mapeo, `_balances`, son direcciones y sus respectivos balances de este token. Para acceder al saldo, utilice esta frase: `_balances[]`.
+
+
+
+```solidity
+ mapping (dirección => mapping (dirección => uint256)) private _allowances;
+```
+
+Esta variable, `_allowances`, almacena las asignaciones explicadas anteriormente. El primer índice es el propietario de los tókenes, y el segundo es el contrato con la asignación. Para acceder a la dirección A puede gastar desde la dirección B de la cuenta, utilice `_allowances[B][A]`.
+
+
+
+```solidity
+ uint256 private _totalSupply;
+```
+
+Como el nombre sugiere, esta variable mantiene un seguimiento del suministro total de tókenes.
+
+
+
+```solidity
+ string private _name;
+ string private _symbol;
+ uint8 private _decimals;
+```
+
+Estas tres variables se utilizan para mejorar la legibilidad. Las dos primeras son autoexplicativas, pero `_decimals` no lo es.
+
+Por un lado, ethereum no tiene variables de punto flotante o fraccionales. Por otro lado, a los humanos les gusta poder dividir tókenes. Una de las razones por las que la gente se decantó por el oro como moneda fue que era difícil hacer intercambios cuando alguien quería comprar «gato por liebre».
+
+La solución es llevar un registro de enteros, pero cuenta en lugar del token real un token fraccional que es cercano a no valer nada. En el caso del ether, el token fraccional se llama wei, y 10^18 wei es igual a un ETH. Al cierre de este artículo, 10.000.000.000.000 wei es aproximadamente un centavo de dólar estadounidense o euro.
+
+Las aplicaciones necesitan saber cómo mostrar el saldo de tókenes. Si un usuario tiene 3.141.000.000.000.000.000 wei, ¿es eso 3,14 ETH? 31.41 ETH? ¿3,141 ETH? En el caso del ether se define 10^18 wei para el ETH, pero para su token puede seleccionar un valor diferente. Si dividir el token no tiene sentido, puede usar un valor de `_decimals` de cero. Si desea utilizar el mismo estándar que ETH, utilice el valor **18**.
+
+### El constructor {#the-constructor}
+
+```solidity
+ /**
+ * @dev Establece los valores para {name} y {symbol}, inicializa {decimals} con
+ * un valor predeterminado de 18.
+ *
+ * Para seleccionar un valor diferente para {decimals}, use {_setupDecimals}.
+ *
+ * Los tres de estos valores son inmutables: sólo pueden establecerse una vez durante
+ * construcción.
+ */
+ constructor (string memory name_, string memory symbol_) public {
+ _name = name_;
+ _symbol = symbol_;
+ _decimals = 18;
+ }
+```
+
+Se le llama constructor cuando se crea el contrato por primera vez. Convencionalmente, los parámetros de la función se llaman `_`.
+
+### Funciones de la interfaz de usuario {#user-interface-functions}
+
+```solidity
+ /**
+ * @dev Devuelve el nombre del token.
+ */
+ function name() public view returns (string memory) {
+ return _name;
+ }
+
+ /**
+ * @dev Returns the symbol of the token, usually a shorter version of the
+ * name.
+ */
+ function symbol() public view returns (string memory) {
+ return _symbol;
+ }
+
+ /**
+ * @dev Returns the number of decimals used to get its user representation.
+ * Por ejemplo, si `decimales` es igual a `2`, un saldo de tokens `505` debe
+ * ser mostrado a un usuario como `5,05` (`505 / 10 ** 2`).
+ *
+ * Los tokens generalmente optan por un valor de 18, imitando la relación entre
+ * ether y wei. Este es el valor que usa {ERC20}, a menos que {_setupDecimals} sea llamado
+*.
+ *
+ * NOTA: Esta información sólo se utiliza para fines de _visualización_: en
+ * ninguna manera afecta a la aritmética del contrato, incluyendo
+ * {IERC20-balanceOf} y {IERC20-transfer}.
+ */
+ function decimals() public view returns (uint8) {
+ return _decimals;
+ }
+```
+
+Estas funciones, `name`, `symbol` y `decimals` ayudan a las interfaces de usuario a conocer su contrato, para que puedan mostrarlo correctamente.
+
+El tipo de retorno es `memoria de cadena`, lo que significa que devuelve una cadena que se almacena en la memoria. Las variables, como cadenas, pueden almacenarse en tres ubicaciones:
+
+| | Tiempo de vida | Acceso al contrato | Coste del gas |
+| -------------- | ------------------------- | ------------------ | ------------------------------------------------------------------------------- |
+| Memoria | Activación de una función | Leer/Escribir | Decenas o centenas (más altas para ubicaciones más altas) |
+| Calldata | Llamada a función | Sólo lectura | No se puede utilizar como tipo de retorno, solo un tipo de parámetro de función |
+| Almacenamiento | Hasta que cambie | Leer/Escribir | Alta (800 para leer, 20.000 para escribir) |
+
+En este caso, `memory` es la mejor opción.
+
+### Leer información del token {#read-token-information}
+
+Estas son funciones que proporcionan información sobre el token, ya sea el suministro total o el saldo de una cuenta.
+
+```solidity
+ /**
+ * @dev See {IERC20-totalSupply}.
+ */
+ function totalSupply() public view override returns (uint256) {
+ return _totalSupply;
+ }
+```
+
+La función `totalSupply` devuelve el suministro total de tókenes.
+
+
+
+```solidity
+ /**
+ * @dev See {IERC20-balanceOf}.
+ */
+ function balanceOf(address account) public view override returns (uint256) {
+ return _balances[account];
+ }
+```
+
+Leer el saldo de una cuenta. Ten en cuenta que cualquiera puede obtener el saldo de otra persona. No tiene sentido intentar ocultar esta información, porque está disponible en cada nodo de todos modos. _No hay secretos en la cadena de bloques._
+
+### Transferir tókenes {#transfer-tokens}
+
+```solidity
+ /**
+ * @dev See {IERC20-transfer}.
+ *
+ * Requisitos:
+ *
+ * - `destinatario` no puede ser la dirección cero.
+ * - el llamante debe tener un saldo de al menos `amount`.
+ */
+ function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
+```
+
+La función `transfer` se invoca para transferir tókenes desde la cuenta del remitente a otra diferente. Nótese que aunque devuelve un valor booleano, ese valor es siempre **verdadero o true**. Si la transferencia falla el contrato revierte la activación.
+
+
+
+```solidity
+ _transfer(_msgSender(), recipient, amount);
+ return true;
+ }
+```
+
+La función `_transfer` hace el trabajo actual. Es una función privada que solo pueden activar otras funciones del contrato. Convencionalmente, a las funciones privadas se les llama `_`, al igual que las variables de estado.
+
+Normalmente, en Sodity usamos `msg.sender` para el remitente del mensaje. Sin embargo, eso rompe [OpenGSN](http://opengsn.org/). Si queremos permitir transacciones sin etherless con nuestro token, necesitamos usar `_msgSender()`. Devuelve `msg.sender` para transacciones normales, pero para las transacciones si ether devuelve el firmante original y no el contrato que reenvió el mensaje.
+
+### Funciones de asignación {#allowance-functions}
+
+Estas son las funciones que implementan la funcionalidad de asignación: `allowance`, `approve`, `transferFrom` y `_approve`. Adicionalmente, la implementación de OpenZeppelin va más allá de los estándares básicos para incluir algo de funcionalidad que mejora la seguridad: `increaseAllwance` y `decreaseAllowance`.
+
+#### La función de «allowance» {#allowance}
+
+```solidity
+ /**
+ * @dev See {IERC20-allowance}.
+ */
+ function allowance(address owner, address spender) public view virtual override returns (uint256) {
+ return _allowances[owner][spender];
+ }
+```
+
+La función `allowance` permite a todos revisar cualquier asignación.
+
+#### La función de «approve» {#approve}
+
+```solidity
+ /**
+ * @dev See {IERC20-approve}.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ */
+ function approve(address spender, uint256 amount) public virtual override returns (bool) {
+```
+
+Esta función se invoca para crear una asignación. Es similar a la función `transfer` que se encuentra más arriba:
+
+- Esta función solo invoca una función interna (en este caso, `_approve`) que hace el verdadero trabajo.
+- La función devuelve `true` (si tiene éxito) o revierte (si no lo tiene).
+
+
+
+```solidity
+ _approve(_msgSender(), spender, amount);
+ return true;
+ }
+```
+
+Usamos funciones internas para minimizar la cantidad de lugares donde suceden los cambios de estado. _Cualquier_ función que cambia el estado es un potencial riesgo de seguridad que necesita ser auditado por cuestiones de seguridad. De esta manera tenemos una menor probabilidad de hacerlo mal.
+
+#### La función transferFrom {#transferFrom}
+
+Esta es la función que un gastador llama para gastar en asignación. Esto requiere dos operaciones: transferir la cantidad gastada y reducir la asignación por esa cantidad.
+
+```solidity
+ /**
+ * @dev See {IERC20-transferFrom}.
+ *
+ * Emits an {Approval} event indicating the updated allowance. This is not
+ * required by the EIP. See the note at the beginning of {ERC20}.
+ *
+ * Requirements:
+ *
+ * - `sender` and `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ * - the caller must have allowance for ``sender``'s tokens of at least
+ * `amount`.
+ */
+ function transferFrom(address sender, address recipient, uint256 amount) public virtual
+ override returns (bool) {
+ _transfer(sender, recipient, amount);
+```
+
+
+
+La activación de la función `a.sub(b, "message")` hace dos cosas. Primero, calcula `a-b`, que es la nueva asignación. En segundo lugar, comprueba que este resultado no es negativo. Si es negativo la llamada se revierte con el mensaje proporcionado. Tenga en cuenta que cuando una activación revierte cualquier procesamiento realizado previamente durante esa activación se ignora, por lo tanto, no necesitamos deshacer la `_transfer`.
+
+```solidity
+ _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
+ "ERC20: transfer amount exceeds allowance"));
+ return true;
+ }
+```
+
+#### Adiciones de seguridad a OpenZeppelin {#openzeppelin-safety-additions}
+
+Es peligroso establecer una asignación diferente de cero a otro valor distinto de cero, porque solo controla el orden de sus propias transacciones y no las de nadie más. Imagine que tiene dos usuarios: Alice que es ingenua y Bill que es un tramposo. Alice quiere algún servicio de Bill, que piensa que cuesta cinco tókenes, por lo que le da a Bill una asignación de cinco tókenes.
+
+Entonces algo cambia y el precio de Bill sube a diez tókenes. Alice, quien todavía quiere el servicio, envía una transacción que establece la asignación de Bill a diez. En el momento en que Bill ve esta nueva transacción en el fondo de transacciones envía una transacción que gasta los cinco tókenes de Alice y tiene un mayor precio de gas por lo que se minará más rápido. De esa manera Bill puede gastar los primeros cinco tókenes y luego, una vez que se extraiga la nueva asignación de Alice gastará diez más por un precio total de quince tókenes. Más de lo que Alicia quería autorizar. A esta técnica se le llama [anticiparse](https://consensys.github.io/smart-contract-best-practices/attacks/#front-running).
+
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------- | -------------- | ----------------------------- | ------------- | ------------------ | --------------------------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| approve(Bill, 10) | 11 | | | 10 | 5 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 15 |
+
+Para evitar este problema. estas dos funciones (`increaseAllowance` y `decreaseAllowance`) le permiten modificar la autorización en una cantidad específica. Así que si Bill ya había gastado cinco tókenes, solo podrá gastar cinco más. Dependiendo del momento, hay dos maneras en las que esto puede funcionar y en ambas Bill acaba recibiendo solo diez tókenes:
+
+A:
+
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------------- | --------------:| ---------------------------- | -------------:| ------------------:| --------------------------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| increaseAllowance(Bill, 5) | 11 | | | 0+5 = 5 | 5 |
+| | | transferFrom(Alice, Bill, 5) | 10,124 | 0 | 10 |
+
+B:
+
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------------- | --------------:| ----------------------------- | -------------:| ------------------:| ---------------------------------------------:|
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| increaseAllowance(Bill, 5) | 11 | | | 5+5 = 10 | 0 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 10 |
+
+```solidity
+ /**
+ * @dev Atomically increases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ */
+ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
+ return true;
+ }
+```
+
+La función `a.add(n)` es una adición segura. En el caso poco probable de que `a`+`b`>=`2^256` no se sume de la manera normal en que la adición lo hace.
+
+```solidity
+
+ /**
+ * @dev Atomically decreases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ * - `spender` must have allowance for the caller of at least
+ * `subtractedValue`.
+ */
+ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
+ "ERC20: decreased allowance below zero"));
+ return true;
+ }
+```
+
+### Funciones que modifican la información del token {#functions-that-modify-token-information}
+
+Estas son las cuatro funciones que hacen el verdadero trabajo: `_transfer`, `_mint`, `_burn` y `_approve`.
+
+#### La función \_transfer {#\_transfer}
+
+```solidity
+ /**
+ * @dev Moves tokens `amount` from `sender` to `recipient`.
+ *
+ * This is internal function is equivalent to {transfer}, and can be used to
+ * e.g. implement automatic token fees, slashing mechanisms, etc.
+ *
+ * Emits a {Transfer} event.
+ *
+ * Requirements:
+ *
+ * - `sender` cannot be the zero address.
+ * - `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ */
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual {
+```
+
+Esta función, `_transfer`, transfiere tókenes de una cuenta a otra. La invocan ambas funciones `transfer` (para transferencias desde la cuenta propia del emisor) y `transferFrom` (para usar asignaciones que transfieran desde la cuenta de alguien más).
+
+
+
+```solidity
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+```
+
+Actualmente, nadie poseé la dirección cero en Ethereum (es decir, nadie conoce una clave privada cuya clave pública conocida se transforma en la dirección cero). Cuando las personas usan esa dirección, usualmente es un error del programa, por lo que fallamos si la dirección cero es usada como el emisor o receptor.
+
+
+
+```solidity
+ _beforeTokenTransfer(sender, recipient, amount);
+
+```
+
+Hay dos maneras de usar este contrato:
+
+1. Usarlo como plantilla para su propio código.
+1. [Herédalo](https://www.bitdegree.org/learn/solidity-inheritance) y sobrescribir sólo aquellas funciones que necesite modificar.
+
+El segundo método es mucho mejor pues el código ERC de OpenZeppelin ya ha sido auditado y demostrado ser seguro. Cuando utiliza la herencia queda claro cuáles son las funciones que modifica, y para confiar en su contrato, la gente sólo necesita auditar esas funciones específicas.
+
+A menudo es útil realizar una función cada vez que los tókenes cambian de mano. Sin embargo,`_transfer` es una función muy importante y es posible escribirla de forma insegura (ver abajo), así que lo mejor no anularlo. La solución es `_beforeTokenTransfer`, una función de [gancho](https://wikipedia.org/wiki/Hooking). Puede anular esta función y se activará en cada transferencia.
+
+
+
+```solidity
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+```
+
+Estas son las líneas que en realidad hacen la transferencia. Note que no hay **nada** entre ellas y que restamos la cantidad transferida desde el emisor antes de agregarla al receptor. Esto es importante, porque si se invocó un contrato diferente de por medio, este se pudo usar para engañar a este contrato. De esta manera la transferencia es atómica, nada puede suceder en medio.
+
+
+
+```solidity
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+Finalmente, emite un evento `Transfer`. Los eventos no son accesibles por los contratos inteligentes, pero el código en ejecución fuera de la cadena de bloques puede escuchar eventos y reaccionar a ellos. Por ejemplo, una billetera puede mantener un registro de cuando el propietario obtiene más tokens.
+
+#### Las funciones \_mint y \_burn {#\_mint-y-\_burn}
+
+Estas dos funciones (`_mint` y `_burn`) modifican el suministro total de tókenes. Son internas y no hay ninguna función que las invoque en este contrato, entonces sólo son útiles si las hereda desde un contrato y añade su propia lógica para decidir en qué condiciones quiere acuñar nuevos tóekens o quemar los existentes.
+
+**NOTA:** cada token ERC-20 tiene su propia lógica de negocio que dicta la administración del token. Por ejemplo, un contrato de suministro fijo solo podría activar `_mint` en el constructor y nunca activar `_burn`. Un contrato que vende tókenes activará `_mint` cuando se pague y, presumiblemente, active `_burn` en cierto punto para evitar una inflación galopante.
+
+```solidity
+ /** @dev Creates `amount` tokens and assigns them to `account`, increasing
+ * the total supply.
+ *
+ * Emits a {Transfer} event with `from` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `to` cannot be the zero address.
+ */
+ function _mint(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: mint to the zero address");
+ _beforeTokenTransfer(address(0), account, amount);
+ _totalSupply = _totalSupply.add(amount);
+ _balances[account] = _balances[account].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
+```
+
+Asegúrese de actualizar `_totalSupply` cuando la cantidad total de tókenes cambie.
+
+
+
+```
+ /**
+ * @dev Destroys `amount` tokens from `account`, reducing the
+ * total supply.
+ *
+ * Emits a {Transfer} event with `to` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `account` cannot be the zero address.
+ * - `account` must have at least `amount` tokens.
+ */
+ function _burn(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: burn from the zero address");
+
+ _beforeTokenTransfer(account, address(0), amount);
+
+ _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
+ _totalSupply = _totalSupply.sub(amount);
+ emit Transfer(account, address(0), amount);
+ }
+```
+
+La función `_burn` es casi idéntica a `_mint`, excepto que esta va en otra dirección.
+
+#### La función \_approve {#\_approve}
+
+Esta es la función que actualmente especifica asignaciones. Observe que esta permite especificar una asignación que es mayor al balance actual de la cuenta del propietario. Esto es correcto, porque el saldo se revisa en el momento de la transferencia y puede ser diferente del saldo cuando se creó la asignación.
+
+```solidity
+ /**
+ * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
+ *
+ * This internal function is equivalent to `approve`, and can be used to
+ * e.g. set automatic allowances for certain subsystems, etc.
+ *
+ * Emits an {Approval} event.
+ *
+ * Requirements:
+ *
+ * - `owner` cannot be the zero address.
+ * - `spender` cannot be the zero address.
+ */
+ function _approve(address owner, address spender, uint256 amount) internal virtual {
+ require(owner != address(0), "ERC20: approve from the zero address");
+ require(spender != address(0), "ERC20: approve to the zero address");
+
+ _allowances[owner][spender] = amount;
+```
+
+
+
+Emite un evento `Approval`. Dependiendo de cómo se escriba la aplicación, se le puede informar al contrato gastador sobre la aprobación, ya sea por el propietario o por un servidor que escucha a estos eventos.
+
+```solidity
+ emit Approval(owner, spender, amount);
+ }
+
+```
+
+### Modificar la variable Decimals {#modify-the-decimals-variable}
+
+```solidity
+
+
+ /**
+ * @dev Sets {decimals} to a value other than the default one of 18.
+ *
+ * WARNING: This function should only be called from the constructor. Most
+ * applications that interact with token contracts will not expect
+ * {decimals} to ever change, and may work incorrectly if it does.
+ */
+ function _setupDecimals(uint8 decimals_) internal {
+ _decimals = decimals_;
+ }
+```
+
+Esta función modifica la variable `_decimals` que sirve para decirle a las interfaces de usuario cómo deben interpretar la cantidad. Debería activarla desde el constructor. Sería desleal activarla desde cualquier punto subsecuente y las aplicaciones no están diseñadas para manejarla.
+
+### Hooks {#hooks}
+
+```solidity
+
+ /**
+ * @dev Hook that is called before any transfer of tokens. This includes
+ * minting and burning.
+ *
+ * Calling conditions:
+ *
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+ * will be to transferred to `to`.
+ * - when `from` is zero, `amount` tokens will be minted for `to`.
+ * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
+ * - `from` and `to` are never both zero.
+ *
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
+ */
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
+}
+```
+
+Esta es la función gancho a ser llamada durante las transferencias. Aquí está vacía, pero si necesita hacer algo puede sobrescribirla.
+
+# Conclusión {#conclusion}
+
+Para revisión, he aquí hay algunas de las ideas importantes en este contrato (en mi opinión, porque usted puede pensar de otra manera):
+
+- _No hay secretos en la cadena de bloques._. Cualquier información a la que un contrato inteligente pueda acceder está disponible para todo el mundo.
+- Puedes controlar el orden de tus propias transacciones, pero no cuando ocurren las transacciones de otras personas. Esta es la razón por la que cambiar una asignación puede ser peligroso, por que permite que el gastador gaste la suma de ambos permisos.
+- Valores del tipo `uint256` se envuelven alrededor. En otras palabras_ 0-1=2^256-1_. Si no se desea ese comportamiento, tiene que comprobarlo (o use la biblioteca SafeMath, que lo hace en su nombre). Tome en cuenta que esto cambió en [ Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html).
+- Haz todos los cambios de estado de un tipo específico en un lugar en específico, porque esto facilita la auditoría. Esta es la función que tenemos, por ejemplo, `_approve`, la cual se invoca mediante `approve`, `transferFrom`, `increaseAllowance` y `decreaseAllowance`
+- Los cambios de estado deben ser atómicos, sin otra acción de por medio (como puedes ver en `_transfer`). Esto se debe a que durante el cambio de estado tiene un estado inconsistente. Por ejemplo, entre el momento en que deduce desde el saldo del emisor y el momento en que añade al saldo del receptor, hay menos tókenes en existencia de los que debería. Se podría abusar de esto potencialmente, si hay operaciones entre ellos, especialmente inivocadas a un contrato diferente.
+
+Ahora que ha visto cómo se escribe un contrato ERC-20 de OpenZeppelin y especialmente cómo se hace más seguro, escriba sus propias aplicaciones y contratos seguros.
diff --git a/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
new file mode 100644
index 00000000000..07511ef0c15
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
@@ -0,0 +1,213 @@
+---
+title: ERC-20 con mecanismos de seguridad
+description: Cómo ayudar a las personas a evitar errores tontos
+author: Ori Pomerantz
+lang: es
+tags:
+ - "erc-20"
+skill: beginner
+published: 2022-08-15
+---
+
+## Introducción {#introduction}
+
+Una de las cosas más positivas de Ethereum es que no hay una autoridad central que pueda modificar o deshacer sus transacciones. Y, sin embargo, una de las grandes trabas de Ethereum es que no hay una autoridad central con el poder de deshacer los errores del usuario o las transacciones ilícitas. En este artículo, descubrirá algunos de los errores comunes que los usuarios cometen con los tókenes [ERC-20](/developers/docs/standards/tokens/erc-20/), al igual que cómo crear contratos ERC-20 que ayuden a los usuarios a evitar esos errores, o le otorguen algo de poder a una autoridad central (por ejemplo, para congelar cuentas).
+
+Observe que aunque utilizaremos el contrato del token ERC-20 [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20), este artículo no lo explica en gran detalle. Puede encontrar [aquí](/developers/tutorials/erc20-annotated-code) esta información.
+
+Si quieres ver el código fuente completo:
+
+1. Abre el [IDE Remix](https://remix.ethereum.org/).
+2. Haga click en el ícono github de clonar (![clone github icon](icon-clone.png)).
+3. Cone el repositorio de GitHub `https://github.com/qbzzt/20220815-erc20-safety-rails`.
+4. Abre **contratos > erc20-safety-rails.sol**.
+
+## Creando un contrato ERC-20 {#creating-an-erc-20-contract}
+
+Antes de agregar la funcionalidad del riel de seguridad, necesitamos un contrato ERC-20. En este artículo usaremos [el Asistente de Contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Ábrelo en otra ventana del navegador y sigue estas instrucciones:
+
+1. Selecciona **ERC-20**.
+2. Ingresa estos ajustes:
+
+ | Parámetro | Valor |
+ | ----------------- | ---------------- |
+ | Nombre | SafetyRailsToken |
+ | Símbolo | SAFE |
+ | Premint | 1000 |
+ | Características | Ninguno |
+ | Control de acceso | Ownable |
+ | Upgradability | Ninguno |
+
+3. Desplácese hasta arriba y haga click en **Open in Remix** (Abrir en Remix, para Remix) o en **Download** (Descargar) para utilizar un entorno diferente. Doy por sentado que está usando Remix, si usa algo diferente, realice únicamente los cambios apropiados.
+4. Ahora tenemos un contrato ERC-20 totalmente funcional. Puedes expandir `.deps` > `npm` para ver el código importado.
+5. Compile, despliegue y familiarícese con el contrato para ver si funciona como un contrato ERC-20. Si necesitas aprender cómo utilizar Remix, [usa este tutorial](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth).
+
+## Errores comunes {#common-mistakes}
+
+### Los errores {#the-mistakes}
+
+Los usuarios algunas veces envían tokens a la dirección incorrecta. Como no podemos leer sus mentes para saber lo que hacían, hay dos tipos de error que suceden mucho y son fácilmente detectables:
+
+1. Envianr los tókenes a la dirección propia del contrato. Por ejemplo, [el token OP de Optimism](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) gestionado para acumular [más de 120.000](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042#tokentxns) tókenes OP en menos de dos meses. Esto representa una cantidad significativa de poder que, supuestamente, las personas perdieron.
+
+2. Enviar los tókenes a una dirección vacía, que no corresponde a una [cuenta de propiedad externa](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) o a un [contrato inteligente](/developers/docs/smart-contracts). Como no tenemos las estadísticas de la frecuencia con la que esto sucede, [un incidente podría haber costado 20.000.000 tókenes](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595).
+
+### Evitar transferencias {#preventing-transfers}
+
+El contrato ERC-20 de OpenZeppelin incluye [ un gancho `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368), que se invoca antes de transferir un token. Por defecto, este gancho no hace nada, pero podemos dotarle de nuestra propia funcionalidad, como los chequeos que revierten si hay algún problema.
+
+Para usar este gancho, añada esta función antes de la constructora:
+
+```solidity
+ function _beforeTokenTransfer(address from, address to, uint256 amount)
+ internal virtual
+ override(ERC20)
+ {
+ super._beforeTokenTransfer(from, to, amount);
+ }
+```
+
+Algunas partes de esta función pueden resultarle nuevas si no está muy familiarizado con Solidity:
+
+```solidity
+ internal virtual
+```
+
+La palabra clave `virtual` significa que como hemos heredado funcionalidades de `ERC-20` y anulado esta función, otros contratos pueden heredarla de nosotros y anular esta función.
+
+```solidity
+ override(ERC20)
+```
+
+Debemos especificar de manera explícita que estamos [anulando](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) la definición del token ERC20 de `_beforeTokenTransfer`. Por lo general, las definiciones explícitas son mucho mejores, desde una perspectiva de seguridad, que las implícitas. No podemos olvidar que hemos hecho algo si lo tenemos a la vista. Esta es también la razon por la que necesitamos especificar qué `_beforeTokenTransfer` de la superclase estamos anulando.
+
+```solidity
+ super._beforeTokenTransfer(from, to, amount);
+```
+
+Esta línea llama la función de `_beforeTokenTransfer` del contrato o los contratos heredados que la tienen. En este caso, eso es solo `ERC20`, `Ownable` no tiene este gancho. Aunque actualmente `ERC20._beforeTokenTransfer` no hace nada, lo invocamos en caso de que se le añada alguna funcionalidad en el futuro (y así decidimos implementar nuevamente el contrato, porque los contratos no cambian una vez implementados).
+
+### Codificar los requisitos {#coding-the-requirements}
+
+Queremos añadir estos requisitos a la función:
+
+- La dirección `to` no puede ser igual a `address(this)`, la dirección propia del contrato ERC-20.
+- La dirección `to` no puede estar vacía, esta debe ser:
+ - Unas cuentas de propiedad externa (EOA). No podemos revisar si una dirección es una EOA directamente, pero podemos revisar el saldo de ETH de una dirección. Las EOAs casi siempre tienen un balance, incluso si ya no se encuentran en uso - es difícil vaciarlas hasta el último wei.
+ - Un contrato inteligente. Probar si una dirección es un contrato inteligente es un poco complicado. Hay un código de operación que revisa la longitud externa del código, llamado [`EXTCODESIZE`](https://www.evm.codes/#3b), pero no está disponible directamente en Solidity. Debemos usar [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html), que es un ensamblaje de EVM, para tal fin. Hay otros valores que podemos usar desde Solidity ([`.code` y `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), pero cuestan más.
+
+Repasemos el nuevo código línea por línea:
+
+```solidity
+ require(to != address(this), "Can't send tokens to the contract address");
+```
+
+Este es el primer requisito, revisa que `to` y `this(address)` no sean lo mismo.
+
+```solidity
+ bool isToContract;
+ assembly {
+ isToContract := gt(extcodesize(to), 0)
+ }
+```
+
+Así es como revisamos si una dirección es un contrato. No podemos recibir salidas directamente de Yul, en vez de esto, definimos una variable para almacenar el resultado (`isToContract` en este caso). Según el funcionamiento de Yul, cada código de operación se considera una función. Por tanto, primero invocamos [`EXTCODESIZE`](https://www.evm.codes/#3b) para obtener el tamaño del contrato y después [`GT`](https://www.evm.codes/#11) para revisar que no sea cero (estamos trabajando con números enteros sin firmar, por lo que no puede ser negativo). Luego escribimos el resultado en `isToContract`.
+
+```solidity
+ require(to.balance != 0 || isToContract, "Can't send tokens to an empty address");
+```
+
+Finalmente, tenemos la revisión verdadera para direcciones vacías.
+
+## Acceso administrativo {#admin-access}
+
+Algunas veces es útil tener un administrador que puede deshacer los errores. Para reducir el potencial de abuso, este administrador puede ser una [multifirma](https://blog.logrocket.com/security-choices-multi-signature-wallets/), por lo que varias personas deben estar de acuerdo con una acción. En este artículo tenemos dos características administrativas:
+
+1. Congelar y descongelar cuentas. Esto puede ser útil, por ejemplo, cuando una cuenta puede verse afectada.
+2. Limpieza de activos.
+
+Los fraudes algunas veces envían tókenes fraudulentos al contrato de un token real para obtener la legitimidad. Por ejemplo, [consulte aquí](https://optimistic.etherscan.io/token/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe?a=0x4200000000000000000000000000000000000042). El contrato ERC-20 legítimo es [0x4200....0042](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042). El fraude que pretende ser legítimo es [0x234....bbe](https://optimistic.etherscan.io/address/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe).
+
+También puede que las personas envíen tókenes ERC-20 legítimos a nuestro contrato por error, lo cual es otra razón para querer tener una manera de eliminarlos.
+
+OpenZeppelin proporciona dos mecanismos para activar el acceso administrativo:
+
+- Los contratos [`Ownable`](https://docs.openzeppelin.com/contracts/4.x/access-control#ownership-and-ownable) tienen un único dueño. Las funciones que tiene el [modificador](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `onlyOwner` sólo las puede activar el propietario. Los dueños pueden transferir la propiedad a otra persona o renunciar a esta completamente. Los derechos de todas las otras cuentas son generalmente idénticos.
+- Los contratos [`AccessControl`](https://docs.openzeppelin.com/contracts/4.x/access-control#role-based-access-control) tienen [control de acceso basado en roles (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control).
+
+Para simplificar la explicación, en este artículo utilizaremos `Ownable`.
+
+### Congelar y descongelar contratos {#freezing-and-thawing-contracts}
+
+Congelar y descongelar contratos requiere varios cambios:
+
+- El [mapeo](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) de direcciones a [booleanos](https://en.wikipedia.org/wiki/Boolean_data_type) para hacer un seguimiento de las direcciones que están congeladas. Todos los valores son inicialmente cero, el cual interpretan como falso los booleanos. Esto es precisamente lo que queremos; ya que, por defecto, las cuentas no están congeladas.
+
+ ```solidity
+ mapping(address => bool) public frozenAccounts;
+ ```
+
+- [Eventos](https://www.tutorialspoint.com/solidity/solidity_events.htm) para informar a cualquier interesado cuando una cuenta se congela o descongela. Desde un punto de vista técnico, no se requieren eventos para estas acciones, aunque le ayudan al código fuera de la cadena a ser capaz de escuchar estos eventos y saber lo que está ocurriendo. Se considera una buena práctica en contratos inteligentes, emitirlos cuando sucede algo que puede ser relevante para alguien más.
+
+ Los eventos están indexados, por tanto, es posible buscar totas las veces que una cuenta se ha congelado o descongelado.
+
+ ```solidity
+ // When accounts are frozen or unfrozen
+ event AccountFrozen(address indexed _addr);
+ event AccountThawed(address indexed _addr);
+ ```
+
+- Funciones para el congelamiento y descongelamiento de cuentas. Al ser estas dos funciones son prácticamente idénticas, solo hablaremos de la función para congelar.
+
+ ```solidity
+ function freezeAccount(address addr)
+ public
+ onlyOwner
+ ```
+
+ Las funciones marcadas como [`públicas`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) pueden activarse desde otros contratos inteligentes o directamente mediante una transacción.
+
+ ```solidity
+ {
+ require(!frozenAccounts[addr], "Account already frozen");
+ frozenAccounts[addr] = true;
+ emit AccountFrozen(addr);
+ } // freezeAccount
+ ```
+
+ Si la cuenta ya está congelada, revierte. De lo contrario, congélela y `emit` un evento.
+
+- Cambie `_beforeTokenTransfer` para evitar que el dinero pase desde una cuenta congelada. Tenga en cuenta que el dinero todavía puede transferirse a la cuenta congelada.
+
+ ```solidity
+ require(!frozenAccounts[from], "The account is frozen");
+ ```
+
+### Limpieza de activos {#asset-cleanup}
+
+Para publicar tókenes ERC-20 retenidos por este contrato, necesitamos activar una función en el contrato del token al que pertenece, siendo [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) o [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve). En este caso no tiene sentido el gasto de gas en asignaciones, también podemos transferir directamente.
+
+```solidity
+ function cleanupERC20(
+ address erc20,
+ address dest
+ )
+ public
+ onlyOwner
+ {
+ IERC20 token = IERC20(erc20);
+```
+
+Esta es la sintaxis necesaria para crear un objeto para un contrato cuando recibimos la dirección. Podemos hacer esto porque tenemos la definición para tokens ERC20 como parte del código fuente (ver la línea 4) y ese archivo incluye [la definición para IERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol), la interfaz para un contrato ERC20 de OpenZeppelin.
+
+```solidity
+ uint balance = token.balanceOf(address(this));
+ token.transfer(dest, balance);
+ }
+```
+
+Se trata de una función de limpieza, por lo que supuestamente no queremos dejar ningún token. En lugar de obtener el saldo del usuario manualmente, también podríamos automatizar el proceso.
+
+## Conclusión {#conclusion}
+
+Esta no es una solución perfecta, ya que no existe una solución perfecta para un problema ocurrido cuando un usuario hace un fallo. Sin embargo, usar este tipo de comprobaciones puede al menos prevenir algunos errores. La capacidad de congelar cuentas, a pesar de ser peligrosa, puede utilizarse para limitar el daño de ciertos actos de piratería, negando al hacker los fondos robados.
diff --git a/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
new file mode 100644
index 00000000000..ab43816b64f
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -0,0 +1,154 @@
+---
+title: Claves para desarrolladores principiantes en Ethereum
+description: "Esta es una guía de ayuda a principiantes para comenzar a desarrollar en Ethereum. Te enseñaremos los fundamentos: desde montar una terminal de conexión API, a solicitar una línea de comando pasando por ensamblar tu primer script en Web3. ¡No se necesita experiencia en desarrollo de blockchain!"
+author: "Elan Halpern"
+tags:
+ - "JavaScript"
+ - "ethers.js"
+ - "nodos"
+ - "consulta"
+ - "Alchemy"
+skill: beginner
+lang: es
+published: 2020-10-30
+source: Medio
+sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f
+---
+
+![Logotipos de Ethereum y Alchemy](./ethereum-alchemy.png)
+
+Esta es una guía de ayuda a principiantes para comenzar a desarrollar en Ethereum. En este turorial utilizaremos [Alchemy](https://alchemyapi.io/), la plataforma líder de desarrolladores de cadena de bloques que permite desarrollar a millones de usuarios desde el 70 % de las aplicaciones más populares de cadena de bloques, incluyendo Maker, 0x, MyEtherWallet, Dharma y Kyber. Alchemy nos dará acceso a una terminal de conexión API en la cadena Ethereum para que podamos leer y escribir transacciones.
+
+¡Te guiaremos desde el registro con Alchemy hasta escribir tu primer script para Web3! ¡No se necesita experiencia en desarrollo de cadena de bloques!
+
+## 1. Regístrate de manera gratuita en Alchemy {#sign-up-for-a-free-alchemy-account}
+
+Crear una cuenta con Alchemy es fácil, [regístrate gratis aquí](https://auth.alchemyapi.io/signup).
+
+## 2. Crear una aplicación de Alchemy {#create-an-alchemy-app}
+
+Para comunicarte con la cadena Ethereum y utilizar los productos de Alchemy, necesitas una clave API para autenticar tus peticiones.
+
+Puedes [crear claves API desde el panel de control](http://dashboard.alchemyapi.io/). Para crear una nueva clave, navega hasta «Crear aplicación» como se muestra a continuación:
+
+¡Queremos expresar nuestro agradecimiento especial a [_ShapeShift_](https://shapeshift.com/) _por dejarnos mostrar su panel!_
+
+![Panel de Alchemy](./alchemy-dashboard.png)
+
+Rellene los datos de «Crear aplicación» para obtener su nueva clave. También podrá ver otras aplicaciones que haya creado anteriormente y las que haya hecho su equipo. Extraiga las claves existentes haciendo clic en «Ver clave» para cualquier aplicación.
+
+![Crear una aplicación con la captura de pantalla de Alchemy](./create-app.png)
+
+También puede extraer las claves de API existentes pasando el cursor por «Apps» y seleccionando una. Usted puede «Ver clave» aquí, así como «Editar aplicación» a la lista blanca de dominios específicos, ver varias herramientas de desarrolladores y analíticas.
+
+![Gif que muestra a un usuario cómo extraer las claves de la API](./pull-api-keys.gif)
+
+## 3. Hacer una solicitud en la línea de comandos {#make-a-request-from-the-command-line}
+
+Interactuar con la cadena de bloques de Ethereum a través de Alchemy usando JSON-RPC y curl.
+
+Para solicitudes manuales, recomendamos interactuar con `JSON-RPC` a través de solicitudes `POST`. Simplemente pase el encabezado `Content-Type: application/json` y su consulta como el cuerpo `POST` con los siguientes campos:
+
+- `jsonrpc`: la versión JSON-RPC, por el momento sólo `2.0` es compatible.
+- `method`: el método ETH API. [Ver referencia sobre API.](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc)
+- `params`: una lista de parámetros a pasar al método.
+- `id`: la ID de su solicitud. La devolverá la respuesta para que pueda hacer un seguimiento de a qué solicitud pertenece una respuesta.
+
+He aquí un ejemplo que puede ejecutar desde la línea de comandos para recuperar el precio actual del gas:
+
+```bash
+curl https://eth-mainnet.alchemyapi.io/v2/demo \
+-X POST \
+-H "Content-Type: application/json" \
+-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
+```
+
+_**NOTA:** Sustituya [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) con su propia clave API `https://eth-mainnet.alchemyapi.io/v2/**tu-clave-api`._
+
+**Resultados:**
+
+```json
+{ "id": 73,"jsonrpc": "2.0","result": "0x09184e72a000" // 10000000000000 }
+```
+
+## 4. Configurar su cliente Web3 {#set-up-your-web3-client}
+
+**Si tienes un cliente existente,** cambia tu URL actual del proveedor de nodos a una URL de Alchemy con tu clave API: `“https://eth-mainnet.alchemyapi.io/v2/your-api-key"`
+
+**_NOTA:_** Los scripts a continuación necesitan ejecutarse en un **contexto de nodo** o **guardarse en un archivo**no se ejecutarán desde la línea de comandos. Si aún no tiene instalado un nodo o npm, consulte esta rápida [guía de configuración para Macs](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs).
+
+Hay infinidad de [bibliotecas en Web3](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) que puede integrar con Alchemy, no obstante, le recomendamos usar [Alchemy Web3](https://docs.alchemy.com/reference/api-overview), una sustitución para Web 3, ensamblada y configurada para funcionar a la perfección con Alchemy. Le proporciona múltiples ventajas, como reintentos automáticos y un soporte sólido para WebSocket.
+
+Para instalar AlchemyWeb3.js, **vaya al directorio de su proyecto** y ejecute:
+
+**Con Yarn:**
+
+```
+yarn add @alch/alchemy-web3
+```
+
+**Con NPM:**
+
+```
+npm install @alch/alchemy-web3
+```
+
+Para interactuar con la infraestructura del nodo de Alchemy, ejecute en NodeJS o añada esto a un archivo JavaScript:
+
+```js
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(
+ "https://eth-mainnet.alchemyapi.io/v2/tu-clave-api"
+)
+```
+
+## 5. Escriba su primer script en Web3! {#write-your-first-web3-script}
+
+Ahora entremos en materia con una pequeña programación en Web 3: escribiremos un simple script que imprima el último número de bloque de la red principal de Ethereum.
+
+**1. Si aún no lo ha hecho, en su terminal, cree un nuevo proyecto con un directorio y cd en él:**
+
+```
+mkdir web3-example
+cd web3-example
+```
+
+**2. Instale el vínculo de Alchemy Web3 (o cualquier Web3) en su proyecto si aún no lo ha hecho:**
+
+```
+npm install @alch/alchemy-web3
+```
+
+**3. Cree un archivo llamado `index.js` y añada el siguiente contenido:**
+
+> En última instancia, debería reemplazar `demo` por su clave API del HTTP Alchemy.
+
+```js
+async function main() {
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+ const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/demo")
+ const blockNumber = await web3.eth.getBlockNumber()
+ console.log("The latest block number is " + blockNumber)
+}
+main()
+```
+
+¿No está familiarizado con las funciones Async? Échele un vistazo a este [post en Medium](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c).
+
+**4. Ejecútelo en su terminal usando un nodo**
+
+```
+node index.js
+```
+
+**5. ¡Ahora debería ver el último resultado de número de bloque en su consola!**
+
+```
+El último número de bloque es el 11043912
+```
+
+**¡Guau! ¡Enhorabuena! Acaba de escribir su primer script en Web3 utilizando Alchemy 🎉**
+
+¿No sabe por dónde seguir ahora? ¡Pruebe a implementar su primer contrato inteligente y entrar en materia con algo de programación de Solidity en nuestra [Guía sobre contratos inteligentes abierta a todos los públicos](https://docs.alchemyapi.io/tutorials/hello-world-smart-contract) o pruebe su panel de conocimiento con la [aplicación de prueba del panel](https://docs.alchemyapi.io/tutorials/demo-app)!
+
+_[Regístrese gratis en Alchemy](https://auth.alchemyapi.io/signup), eche un vistazo a nuestra [documentación](https://docs.alchemyapi.io/) y para estar al tanto de las últimas novedades, síganos en [Twitter](https://twitter.com/AlchemyPlatform)_.
diff --git a/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
new file mode 100644
index 00000000000..6a183ed7694
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -0,0 +1,105 @@
+---
+title: Una guía de herramientas de seguridad para contratos inteligentes
+description: Una descripción general de tres técnicas diferentes de prueba y análisis de programas
+author: "Trailofbits"
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "seguridades"
+skill: intermediate
+published: 2020-09-07
+source: Desarrollar contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
+---
+
+Vamos a usar tres técnicas distintas para el análisis de pruebas y programas:
+
+- **Análisis estático con [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/).** Todas las rutas del programa se abordan y analizan al mismo tiempo, a través de diferentes presentaciones del programa (por ejemplo, control-flow-graph).
+- **Fuzzing (auditorías de seguridad) con [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/).** El código se ejecuta con una generación pseudoaleatoria de transacciones. El fuzzer tratará de encontrar una secuencia de transacciones para infringir una propiedad determinada.
+- **Ejecución simbólica con [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/).** Una técnica de verificación formal, que traduce cada ruta de ejecución a una fórmula matemática, en la que se pueden comprobar las restricciones superiores.
+
+Cada técnica tiene ventajas y obstáculos que serán útiles en casos específicos:
+
+| Técnica | Herramienta | Uso | Velocidad | Errores perdidos | Falsas alarmas |
+| -------------------------------- | ----------- | --------------------------------- | --------- | ---------------- | -------------- |
+| Análisis estáticos | Slither | CLI & scripts | segundos | moderado | bajo |
+| Fuzzing (auditoría de seguridad) | Echidna | Propiedades de Solidity | minutos | bajo | ninguno |
+| Ejecución simbólica | Manticore | Propiedades de Solidity & scripts | horas | ninguno | ninguno |
+
+si todas las rutas son exploradas sin tiempo de espera
+
+**Slither** analiza los contratos en segundos, sin embargo, el análisis estático puede conducir a falsas alarmas y será menos adecuado para comprobaciones complejas (ej., controles aritméticos). Ejecute Slither a través de la API para acceder a los detectores incorporados o a través de la API para comprobaciones definidas por el usuario.
+
+**Echidna** necesita funcionar durante varios minutos y solo producirá verdaderos positivos. Echidna comprueba las propiedades de seguridad proporcionadas por el usuario, escritas en Solidity. Podría perderse errores, ya que se basa en una exploración aleatoria.
+
+**Manticore** realiza el análisis de «peso más pesado». Al igual que Echidna, Manticore verifica las propiedades proporcionadas por el usuario. Necesitará más tiempo para funcionar, pero puede demostrar la validez de una propiedad y no comunicará falsas alarmas.
+
+## Flujo de trabajo sugerido {#suggested-workflow}
+
+Comience con los detectores incorporados de Slither para asegurarse de que no haya errores simples ahora o que se introduzcan más tarde. Utilice Slither para comprobar propiedades relacionadas con la herencia, dependencias variables y problemas estructurales. A medida que vaya creciendo el código, utilice Echidna para probar propiedades más complejas de la máquina de estado. Revise de nuevo Slither para desarrollar comprobaciones personalizadas para protecciones no disponibles de Solidity, como la protección contra una función que se anula. Por último, utilice Manticore para realizar una verificación específica de las propiedades de seguridad crítica, por ejemplo, operaciones aritméticas.
+
+- Utilice el CLI de Slither para detectar problemas comunes.
+- Utilice Echidna para probar propiedades de seguridad de alto nivel de su contrato.
+- Utilice Slither para escribir comprobaciones estáticas personalizadas.
+- Utilice Manticore una vez que desee una garantía profunda de las propiedades de seguridad críticas.
+
+**Una aclaración sobre las pruebas unitarias**. Las pruebas unitarias son necesarias para construir software de alta calidad. Sin embargo, estas técnicas no son las más adecuadas para encontrar defectos de seguridad. Se suelen utilizar para probar comportamientos positivos del código (ej., que el código funciona como se esperaba en el contexto normal), mientras que los defectos de seguridad tienden a residir en casos extremos que los desarrolladores no consideraron. En nuestro estudio de docenas de revisiones de seguridad de contratos inteligentes, [la cobertura de prueba unitaria no tuvo efecto en el número o gravedad de defectos de seguridad](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/) que encontramos en el código de nuestro cliente.
+
+## Determinar propiedades de seguridad {#determining-security-properties}
+
+Para probar y verificar eficazmente su código, debe identificar las áreas que necesitan atención. Como sus recursos destinados a seguridad son limitados, es importante hacer frente a las partes débiles o de alto valor de su código base para optimizar su esfuerzo. El modelado de amenazas puede ser útil. Considere revisar:
+
+- [Evaluaciones de riesgo rápidas](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (nuestro enfoque preferido cuando hay poco tiempo)
+- [Guía de modelos de amenazas del sistema central de datos](https://csrc.nist.gov/publications/detail/sp/800-154/draft) (también conocido como NIST 800-154)
+- [Modelos de amenazas de Shostack](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
+- [STRIDE](https://wikipedia.org/wiki/STRIDE_(security)) / [DREAD](https://wikipedia.org/wiki/DREAD_(risk_assessment_model))
+- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
+- [Uso de afirmaciones](https://blog.regehr.org/archives/1091)
+
+### Componentes {#components}
+
+Saber lo que quiere comprobar también le ayudará a seleccionar la herramienta correcta.
+
+Las áreas extensas que suelen ser relevantes para los contratos inteligentes incluyen:
+
+- **Máquina de estado.** La mayoría de los contratos pueden representarse como una máquina de estado. Considere comprobar que (1) No se puede alcanzar un estado no válido, (2) si puede alcanzarse un estado válido, y (3) ningún estado retiene el contrato.
+
+ - Echidna y Manticore son las herramientas para favorecer la prueba de especificaciones de las máquinas del estado.
+
+- **Controles de acceso.** Si tu sistema tiene usuarios privilegiados (por ejemplo, un propietario, controladores...) debes asegurarte de que (1) cada usuario solo pueda realizar las acciones autorizadas y (2) ningún usuario pueda bloquear acciones de un usuario más privilegiado.
+
+ - Slither, Echidna y Manticore pueden comprobar si hay controles de acceso correctos. Por ejemplo, Slither puede comprobar que sólo las funciones de la lista blanca carecen del modificador onlyOwner. Echidna y Manticore son útiles para un control de acceso más complejo, como un permiso dado sólo si el contrato alcanza un estado determinado.
+
+- **Operaciones aritméticas.** Comprobar la integridad de las operaciones aritméticas es crucial. Sin embargo, usar `SafeMath` en todas partes es un buen paso para prevenir el flujo excesivo/deficiente. Debe tener en cuenta otros defectos aritméticos, incluidas las cuestiones del redondeo y de los fallos que retienen el contrato.
+
+ - Manticore es la mejor opción en este caso. Echidna se puede usar si la aritmética está fuera del alcance del solucionador SMT.
+
+- **Corrección de herencia.** Los contratos de Solidity dependen en gran medida de la herencia múltiple. Errores como una función en paralelo sin llamada `super` y una orden de linearización de c3 mal interpretadas pueden cometerse fácilmente.
+
+ - Slither es la herramienta perfecta para garantizar la detección de estos problemas.
+
+- **Interacciones externas.** Los contratos interactúan entre sí, y algunos contratos externos no deben ser de confianza. Por ejemplo, si su contrato se basa en oráculos externos, ¿seguirá siendo seguro si la mitad de los oráculos disponibles están en peligro?
+
+ - Manticore y Echidna son la mejor opción para probar las interacciones externas con sus contratos. Manticore tiene un mecanismo integrado para cerrar contratos externos.
+
+- **Conformidad estándar.** Los estándares Ethereum (por ejemplo, ERC20) tienen un historial de defectos en su diseño. Tenga en cuenta las limitaciones del estándar sobre el que está construyendo.
+ - Slither, Echidna y Manticore le ayudarán a detectar desviaciones de un estándar determinado.
+
+### Hoja de trucos para selección de herramientas {#tool-selection-cheatsheet}
+
+| Componente | Herramientas | Ejemplos |
+| ----------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Máquina de estado | Echidna, Manticore | |
+| Control de acceso | Slither, Echidna, Manticore | [Ejercicio 2 de Slither](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise2.md), [Ejercicio 2 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-2.md) |
+| Operaciones aritméticas | Manticore, Echidna | [Ejercicio 1 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-1.md), [Ejercicios 1-3 de Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
+| Corrección de herencia | Slither | [Slither ejercicio 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise1.md) |
+| Interacciones externas | Manticore, Echidna | |
+| Cumplimiento estándar | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
+
+Se tendrán que revisar otras áreas dependiendo de sus objetivos, aunque estas áreas de enfoque generales son un buen comienzo para cualquier sistema de contratos inteligentes.
+
+Nuestras auditorías públicas contienen ejemplos de propiedades verificadas o probadas. Piense en leer las secciones de `Pruebas automáticas y verificación` de los siguientes informes para revisar las propiedades de seguridad del mundo real:
+
+- [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf)
+- [Balancer](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf)
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
new file mode 100644
index 00000000000..84f75bd493a
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -0,0 +1,1585 @@
+---
+title: 'Contrato inteligente de Hello World para principiantes: Fullstack'
+description: Tutorial introductorio para redactar e implementar un contrato inteligente sencillo en Ethereum.
+author: "nstrike2"
+tags:
+ - "solidity"
+ - "hardhat"
+ - "alchemy"
+ - "contratos inteligentes"
+ - "implementación"
+ - "blockexplorer"
+ - "frontend"
+ - "transacciones"
+skill: beginner
+lang: es
+published: 2021-10-25
+---
+
+Si es nuevo en el desarrollo de la cadena de bloques y no sabe por dónde empezar o cómo implementar e interactuar con contratos inteligentes, esta guía está hecha a su medida. Exploraremos la creación e implementación de un contrato simple e inteligente en la red de prueba de Goerli utilizando [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org) y [Alchemy](https://alchemyapi.io/eth).
+
+Necesitará una cuenta de Alchemy para completar este tutorial. [Regístrese para obtener una cuenta gratuita](https://www.alchemy.com/).
+
+En cualquier momento que le surjan dudas, ¡no dude en ponerse en contacto con el canal [Discord de Alchemy](https://discord.gg/gWuC7zB).
+
+## Parte 1: Cree e implemente su contrato inteligente usando Hardhat {#part-1}
+
+### Conéctarse a la red de Ethereum {#connect-to-the-ethereum-network}
+
+Hay muchas maneras de hacer solicitudes a la cadena Ethereum. Para simplificar, usaremos una cuenta gratuita en Alchemy, una plataforma de desarrollo de cadena de bloques y una API que nos permite comunicarnos con la cadena Ethereum sin ejecutar un nodo nosotros mismos. Alchemy también tiene herramientas de desarrollo para el control y el análisis. Las abordaremos en este tutorial y así entenderemos los entresijos de nuestra implementación de contratos inteligentes.
+
+### Cómo crear su aplicación y clave de API {#create-your-app-and-api-key}
+
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API con una aplicación. Esto le permitirá hacer solicitudes a la red de pruebas de Goerli. Si no está familiarizado con las redes de prueba, puede [leer la guía de Alchemy para elegir una red](https://docs.alchemyapi.io/guides/choosing-a-network).
+
+En el panel de Alchemy, busque el menú desplegable **Apps** en la barra de navegación y haga clic en **Create App**.
+
+![Crear la aplicación Hola, mundo](./hello-world-create-app.png)
+
+Dele a su aplicación el nombre '_Hello World_' y escriba una breve descripción. Seleccione **Staging** como su entorno y **Goerli** como su red.
+
+![Crear App visualizar Hola, mundo](./create-app-view-hello-world.png)
+
+_Nota: asegúrate de seleccionar **Goerli**, o este tutorial no funcionará._
+
+Haga clic en **Create app**. Su aplicación aparecerá en la siguiente tabla.
+
+### Cómo crear una cuenta en Ethereum {#create-an-ethereum-account}
+
+Necesita tener una cuenta de Ethereum para enviar y recibir transacciones. Utilizaremos MetaMask, una cartera virtual en el navegador que permite a los usuarios gestionar la dirección de su cuenta de Ethereum.
+
+Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download.html). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la “red de prueba Goerli” en la parte superior derecha (para no operar con dinero real).
+
+### Paso 4: Añadir ether de un faucet {#step-4-add-ether-from-a-faucet}
+
+Para implementar su contrato inteligente en la red de prueba, necesitará algunos ETH falsos. Para obtener ETH en la red Goerli, vaya a un grifo de Goerli e introduzca la dirección de su cuenta de Goerli. Observe que los grifos de Goerli pueden ser poco fiables recientemente. En la [página de prueba de redes](/developers/docs/networks/#goerli) verá un listado de opciones para probar:
+
+_Nota: debido a la congestión de la red, esto puede llevar un tiempo. _ ``
+
+### Paso 5: Comprobar su balance {#step-5-check-your-balance}
+
+Para volver a comprobar que hay ETH en su cartera, hagamos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la herramienta de compositor de [Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de ETH a nuestra cartera. Si desea ampliar esta información, eche un vistazo al breve tutorial de [Alchemy sobre cómo usar la herramienta de compositor](https://youtu.be/r6sjRxBZJuU).
+
+Introduzca la dirección de su cuenta de MetaMask y haga clic en **Send request**. Verás una respuesta que se parece al fragmento de código a continuación.
+
+```json
+{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
+```
+
+> _Nota: este resultado está en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether._
+
+¡Fiu! Nuestro dinero de prueba está ahí sano y salvo.
+
+### Paso 6: Iniciar nuestro proyecto {#step-6-initialize-our-project}
+
+En primer lugar, tendremos que crear una carpeta para nuestro proyecto. Vaya a su línea de comandos e introduzca lo siguiente.
+
+```
+mkdir hello-world
+cd hello-world
+```
+
+Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos `npm init` a fin de inicializar el proyecto.
+
+> Si aún no tiene npm instalado, siga [estas instrucciones para instalar Node.js y npm](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm).
+
+Para el propósito de este tutorial, no importa cómo responda a las preguntas de inicialización. Así respondimos nosotros, a modo de referencia:
+
+```
+package name: (hello-world)
+version: (1.0.0)
+description: hello world smart contract
+entry point: (index.js)
+test command:
+git repository:
+keywords:
+author:
+license: (ISC)
+
+About to write to /Users/.../.../.../hello-world/package.json:
+
+{
+ "name": "hello-world",
+ "version": "1.0.0",
+ "description": "hello world smart contract",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+}
+```
+
+Apruebe el package.json y listo.
+
+### Paso 7: Descargar Hardhat {#step-7-download-hardhat}
+
+Hardhat es un entorno de desarrollo para compilar, implementar, probar y depurar su software de Ethereum. Ayuda a los desarrolladores cuando crean contratos inteligentes y dApps localmente antes de la implementación en la cadena real.
+
+Dentro de nuestro proyecto `hello-world`, ejecute:
+
+```
+npm install --save-dev hardhat
+```
+
+Revise esta página para obtener más información acerca de las [intrucciones de instalación](https://hardhat.org/getting-started/#overview).
+
+### Paso 8: Crear proyecto Hardhat {#step-8-create-hardhat-project}
+
+Dentro de nuestra carpeta de proyectos `hello-world`, ejecute:
+
+```
+npx hardhat
+```
+
+Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desee hacer. Seleccione «create an empty hardhat.config.js»:
+
+```
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.11 👷
+
+What do you want to do? …
+Create a sample project
+❯ Create an empty hardhat.config.js
+Quit
+```
+
+Esto generará un archivo `hardhat.config.js` en el proyecto. Lo utilizaremos más adelante en el tutorial para especificar la configuración de nuestro proyecto.
+
+### Paso 9: Añadir carpetas de proyecto {#step-9-add-project-folders}
+
+Para mantener el proyecto organizado, vamos a crear dos carpetas nuevas. En la línea de comandos, vaya al directorio raíz de su proyecto `hello-world` y escriba:
+
+```
+mkdir contracts
+mkdir scripts
+```
+
+- `contratos/` es donde mantendremos nuestro archivo de código del contrato inteligente Hola, mundo
+- `scripts/` es donde mantendremos los scripts para implementar e interactuar con nuestro contrato
+
+### Paso 10: Escribir nuestro contrato {#step-10-write-our-contract}
+
+Puede que se esté preguntando que cuándo vamos a escribir el código. ¡Ahora es el momento!
+
+Abra el proyecto hello-world en su editor favorito. Los contratos inteligentes se suelen escribir más comunmente en Solidity, que usaremos para escribir nuestro contrato inteligente
+
+1. Vaya a la carpeta `contratos` y cree un nuevo archivo llamado `HelloWorld.sol`
+2. A continuación se muestra un ejemplo del contrato inteligente de Hello World que usaremos para este tutorial. Copie el contenido a continuación en el archivo `HelloWorld.sol`.
+
+_Nota: asegúrese de leer los comentarios para entender lo que hace este contrato._
+
+```
+// Especifica la versión de Solidity, utilizando la versión semántica.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity >=0.7.3;
+
+// Defines a contract named `HelloWorld`.
+// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la blockchain de Ethereum. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ //Emitted when update function is called
+ //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // Declares a state variable `message` of type `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+Este es un contrato inteligente básico que almacena un mensaje en el momento de la creación. Se puede actualizar activando la función `update`.
+
+### Paso 11: Conectar MetaMask & Alchemy a su proyecto {#step-11-connect-metamask-alchemy-to-your-project}
+
+Hemos creado una billetera de Metamask, una cuenta de Alchemy y escrito nuestro contrato inteligente, ahora es momento de conectarlos entre sí.
+
+Cada transacción enviada desde su cartera requiere una firma con su clave privada única. Para proporcionar este permiso a nuestro programa, podemos almacenar de forma segura nuestra clave privada en un archivo de entorno. También almacenaremos una clave de API para Alchemy aquí.
+
+> Si quiere ahondar sobre el envío de transacciones, consulte [este tutorial](https://docs.alchemyapi.io/alchemy/tutorials/sending-transactions-using-web3-and-alchemy) sobre el envío de transacciones usando web3.
+
+Primero, instale el paquete dotenv en su directorio de proyecto:
+
+```
+npm install dotenv --save
+```
+
+A continuación, cree un archivo `.env` en el directorio raíz del proyecto. Añade tu clave privada de MetaMask y la URL de la API de HTTP Alchemy.
+
+Su archivo de entorno debe llamarse `.env` o no se reconocerá como un archivo de entorno.
+
+No lo nombre `process.env` o `.env-custom` ni nada más.
+
+- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su llave privada
+- Abajo se le indica cómo obtener la API URL de HTTP Alchemy
+
+![](./get-alchemy-api-key.gif)
+
+Su `.env` debería verse así:
+
+```
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PRIVATE_KEY = "tu-clave privada-metamask"
+```
+
+Para conectarlos efectivamente a nuestro código, vincularemos estas variables en nuestro `hardhat.config.js` en el paso 13.
+
+### Paso 12: Instalar Ethers.js {#step-12-install-ethersjs}
+
+Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum agrupando [métodos JSON-RPC estándar](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) con métodos más fáciles para el usuario.
+
+Hardhat nos permite integrar [plugins](https://hardhat.org/plugins/) para obtener herramientas adicionales y una funcionalidad ampliada. Aprovecharemos el complemento [Ethers plugin](https://hardhat.org/plugins/nomiclabs-hardhat-ethers.html) para la implementación por contrato.
+
+En el directorio de su proyecto, teclee:
+
+```bash
+npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
+```
+
+### Paso 13: Actualizar hardhat.config.js {#step-13-update-hardhat.configjs}
+
+Hasta ahora hemos añadido varias dependencias y plugins, por lo que ahora necesitamos actualizar `hardhat.config.js` para que nuestro proyecto sepa de todas ellas.
+
+Actualice su `hardhat.config.js` para que muestre el siguiente texto:
+
+```javascript
+/**
+ * @type import('hardhat/config').HardhatUserConfig
+ */
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+
+const { API_URL, PRIVATE_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+}
+```
+
+### Paso 14: Compilar nuestro contrato {#step-14-compile-our-contract}
+
+Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La función `compile` está incluida dentro de las funciones por defecto de hardhat.
+
+Desde la linea de comandos, ejecute:
+
+```bash
+npx hardhat compile
+```
+
+Es posible que reciba una advertencia sobre el `identificador de licencia SPDX no proporcionado en el archivo de origen`, pero no hay necesidad de preocuparse por eso, ¡esperemos que todo lo demás se vea bien! Si no es así, siempre puede escribir un mensaje en [Alchemy discord](https://discord.gg/u72VCg3).
+
+### Paso 15: Escribir nuestro script de despliegue {#step-15-write-our-deploy-script}
+
+Ahora que nuestro contrato está escrito y nuestro archivo de configuración está listo, es momento de escribir nuestro script de implementación del contrato.
+
+Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, agregando los siguientes contenidos:
+
+```javascript
+async function main() {
+ const HelloWorld = await ethers.getContractFactory("HelloWorld")
+
+ // Start deployment, returning a promise that resolves to a contract object
+ const hello_world = await HelloWorld.deploy("Hello World!")
+ console.log("Contract deployed to address:", hello_world.address)
+}
+
+main()
+ .then(() => process.exit(0))
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+```
+
+Hardhat hace un trabajo increíble al explicar lo que hace cada una de estas líneas de código en su [tutorial de contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), aquí hemos asumido sus explicaciones.
+
+```javascript
+const HelloWorld = await ethers.getContractFactory("HelloWorld")
+```
+
+Una `ContractFactory` en ethers.js es una abstracción utilizada para implementar nuevos contratos inteligentes, por lo que `HelloWorld` aquí es una [factory](https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)) para las instancias de nuestro contrato de Hello World. Cuando se utiliza el complemento `hardhat-ethers` `ContractFactory` y `Contract`, las instancias se conectan al primer firmante (propietario) de forma predeterminada.
+
+```javascript
+const hello_world = await HelloWorld.deploy()
+```
+
+Llamar a `deploy()` en un `ContractFactory` iniciará el despliegue y devolverá un `Promesa` que se resuelve en un objeto `Contract`. Este es el objeto que tiene un método para cada una de nuestras funciones de contrato inteligente.
+
+### Paso 16: Desplegar nuestro contrato {#step-16-deploy-our-contract}
+
+¡Por fin estamos listos para desplegar nuestro contrato inteligente! Desde la linea de comandos, ejecute:
+
+```bash
+hardhat npx ejecuta scripts/deploy.js --network goerli
+```
+
+Debería mostrarse algo parecido a esto:
+
+```bash
+Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+```
+
+**Por favor, guarde esta dirección**. Lo usaremos más adelante en el tutorial.
+
+Si vamos a la dirección [Ropsten etherscan](https://goerli.etherscan.io) y buscamos la dirección de nuestro contrato, podremos comprobar que se ha desplegado correctamente. El objeto de la transacción tendrá un aspecto parecido a esto:
+
+![](./etherscan-contract.png)
+
+La dirección `from` debe coincidir con la dirección de su cuenta de MetaMask y la dirección `To` dirá **Contrcat creation**. Si hacemos clic en la transacción, veremos la dirección de nuestro contrato en el campo `to`.
+
+![](./etherscan-transaction.png)
+
+¡Felicidades! Acabas de implementar un contrato inteligente en una red de pruebas de Ethereum.
+
+Para entender lo que está pasando internamente, vayamos a la pestaña de Explorer en nuestro [panel Alchemy](https://dashboard.alchemyapi.io/explorer). Si tienes varias aplicaciones de Alchemy, asegúrate de filtrar por aplicación y selecciona **Hello World**.
+
+![](./hello-world-explorer.png)
+
+Aquí verás un puñado de métodos JSON-RPC que Hardhat/Ethers hizo bajo el capó para nosotros cuando llamamos a la función `.deploy()`. Dos métodos importantes aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud para escribir nuestro contrato en la cadena Goerli, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que es una solicitud para leer información sobre nuestra transacción dado el hash. Para obtener más información sobre el envío de transacciones, consulte [nuestro tutorial sobre el envío de transacciones utilizando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
+
+## Parte 2: Interactúa con tu contrato inteligente {#part-2-interact-with-your-smart-contract}
+
+Ahora que hemos implementado con éxito un contrato inteligente en la red Goerli, aprendamos a interactuar con él.
+
+### Crear un archivo interact.js {#create-a-interactjs-file}
+
+Este es el archivo donde escribiremos nuestro script de interacción. Utilizaremos la biblioteca Ethers.js que instalaste anteriormente en la Parte 1.
+
+Dentro de la carpeta `scripts/`, cree un nuevo archivo llamado `interact.js` y agregue el siguiente código:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+```
+
+### Actualiza tu archivo .env {#update-your-env-file}
+
+Utilizaremos nuevas variables de entorno, por lo que tenemos que definirlas en el archivo `.env` que [creamos anteriormente](#step-11-connect-metamask-&-alchemy-to-your-project).
+
+Tendremos que añadir una definición para nuestra Alchemy `API_KEY` y la `CONTRACT_ADDRESS` donde se desplegó su contrato inteligente.
+
+Su archivo `.env` debería tener un aspecto similar a esto:
+
+```bash
+# .env
+
+API_URL = "https://eth-goerli.alchemyapi.io/v2/"
+API_KEY = ""
+PRIVATE_KEY = ""
+CONTRACT_ADDRESS = "0x"
+```
+
+### Toma tu contrato ABI {#grab-your-contract-ABI}
+
+Nuestro contrato [ABI (Interfaz Binaria de Aplicación)](/glossary/#abi) es la interfaz para interactuar con nuestro contrato inteligente. Hardhat genera automáticamente un ABI y lo guarda en `HelloWorld.json`. Para usar el ABI, tendremos que analizar el contenido añadiendo las siguientes líneas de código a nuestro archivo `interact.js`:
+
+```javascript
+// interact.js
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+```
+
+Si quiere ver la ABI puede hacerlo en su propia consola:
+
+```javascript
+console.log(JSON.stringify(contract.abi))
+```
+
+Para ver su ABI impreso en la consola, vaya a su terminal y ejecute:
+
+```bash
+npx hardhat run scripts/interact.js
+```
+
+### Crea una instancia de tu contrato {#create-an-instance-of-your-contract}
+
+Para interactuar con nuestro contrato, necesitamos crear una instancia de contrato en nuestro código. Para hacerlo con Ethers.js, tendremos que trabajar con tres conceptos:
+
+1. Proveedor: un proveedor de nodos que te da acceso de lectura y escritura a la cadena de bloques
+2. Firmante - representa una cuenta de Ethereum que puede firmar transacciones
+3. Contrato: un objeto Ethers.js que representa un contrato específico desplegado en cadena
+
+Utilizaremos el contrato ABI del paso anterior para crear nuestra instancia del contrato:
+
+```javascript
+// interact.js
+
+// Provider
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// Signer
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// Contract
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+```
+
+Obtenga más información sobre proveedores, firmantes y contratos en la documentación de [ethers.js](https://docs.ethers.io/v5/).
+
+### Lee el mensaje de inicio {#read-the-init-message}
+
+Recuerda cuando implementamos nuestro contrato con el `initMessage = "¡Hola mundo!" `? Ahora vamos a leer ese mensaje almacenado en nuestro contrato inteligente e imprimirlo en la consola.
+
+En JavaScript, las funciones asíncronas se utilizan al interactuar con las redes. Para obtener más información sobre las funciones asíncronas, [lea este artículo de medium](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff).
+
+Utilice el siguiente código para llamar a la función `mensaje` en nuestro contrato inteligente y leer el mensaje de inicio:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+}
+main()
+```
+
+Después de ejecutar el archivo usando `npx hardhat run scripts/interact.js` en la terminal, deberíamos ver esta respuesta:
+
+```
+The message is: Hello world!
+```
+
+¡Felicidades! Acaba de leer con éxito los datos de los contratos inteligentes de la cadena de bloques de Ethereum, ¡así se hace!
+
+### Actualizar el mensaje {#update-the-message}
+
+En lugar de solo leer el mensaje, ¡también podemos actualizar el mensaje guardado en nuestro contrato inteligente utilizando la función `update`! Muy chido, ¿verdad?
+
+Para actualizar el mensaje, podemos llamar directamente a la función `update` en nuestro objeto Contract instanciado:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("This is the new message.")
+ await tx.wait()
+}
+main()
+```
+
+Tenga en cuenta que en la línea 11, hacemos una llamada a `.wait()` en el objeto de transacción devuelto. Esto garantiza que nuestro script espere a que la transacción se mine en la cadena de bloques antes de salir de la función. Si la llamada `.wait()` no está incluida, es posible que el script no vea el valor `message` actualizado en el contrato.
+
+### Lee el nuevo mensaje {#read-the-new-message}
+
+Deberías poder repetir el [paso anterior](#read-the-init-message) para leer el valor actualizado del `mensaje`. ¡Tómese un momento y vea si puede hacer los cambios necesarios para imprimir ese nuevo valor!
+
+Si necesitas una pista, así es como debería ser tu archivo `interact.js` en este momento:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+
+// provider - Alchemy
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// signer - you
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// contract instance
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("this is the new message")
+ await tx.wait()
+
+ const newMessage = await helloWorldContract.message()
+ console.log("The new message is: " + newMessage)
+}
+
+main()
+```
+
+¡Ahora solo ejecuta el script y deberías poder ver el mensaje antiguo, el estado de la actualización y el nuevo mensaje impreso en tu terminal!
+
+`hardhat npx ejecuta scripts/interact.js --network goerli`
+
+```
+The message is: Hello World!
+Updating the message...
+The new message is: This is the new message.
+```
+
+Mientras ejecuta ese script, puede notar que el paso `Actualice el mensaje...` tarda un tiempo en cargarse antes de que se cargue el nuevo mensaje. Eso se debe al proceso de minería; si tiene curiosidad sobre el seguimiento de las transacciones mientras se están minando, visite el [mempool de Alchemy](https://dashboard.alchemyapi.io/mempool) para ver el estado de una transacción. Si se elimina la transacción, también es útil comprobar [Goerli Etherscan](https://goerli.etherscan.io) y buscar el hash de su transacción.
+
+## Parte 3: Publica tu contrato inteligente en Etherscan {#part-3-publish-your-smart-contract-to-etherscan}
+
+Hiciste todo el trabajo duro para dar vida a tu contrato inteligente; ¡ahora es el momento de compartirlo con el mundo!
+
+Al verificar su contrato inteligente en Etherscan, cualquiera puede ver su código fuente e interactuar con su contrato inteligente. ¡Empecemos!
+
+### Paso 1: Genera una clave API en tu cuenta de Etherscan {#step-1-generate-an-api-key-on-your-etherscan-account}
+
+Se necesita una clave API de Etherscan para verificar que es el propietario del contrato inteligente que está intentando publicar.
+
+Si aún no tienes una cuenta de Etherscan, [regístrate para obtener una cuenta](https://etherscan.io/register).
+
+Una vez que haya iniciado sesión, busque su nombre de usuario en la barra de navegación, pase el cursor sobre él y seleccione el botón **Mi perfil**.
+
+En tu página de perfil, deberías ver una barra de navegación lateral. En la barra de navegación lateral, seleccione **Teclas API**. A continuación, presione el botón "Añadir" para crear una nueva clave de API, nombre su aplicación **hello-world**y presione el botón **Crear nueva clave de API**.
+
+Su nueva clave de API debería aparecer en la tabla de claves de API. Copia la clave de la API en tu portapapeles.
+
+A continuación, tenemos que añadir la clave de la API de Etherscan a nuestro archivo `.env`.
+
+Después de añadirlo, tu archivo `.env` debería verse así:
+
+```javascript
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PUBLIC_KEY = "your-public-account-address"
+PRIVATE_KEY = "your-private-account-address"
+CONTRACT_ADDRESS = "your-contract-address"
+ETHERSCAN_API_KEY = "your-etherscan-key"
+```
+
+### Contratos inteligentes desplegados por Hardhat {#hardhat-deployed-smart-contracts}
+
+#### Instalar hardhat-etherscan {#install-hardhat-etherscan}
+
+Publicar su contrato en Etherscan usando Hardhat es sencillo. Primero tendrás que instalar el complemento `hardhat-etherscan` para empezar. `hardhat-etherscan` verificará automáticamente el código fuente del contrato inteligente y el ABI en Etherscan. Para añadir esto, en el directorio `hello-world` se ejecuta:
+
+```text
+npm install --save-dev @nomiclabs/hardhat-etherscan
+```
+
+Una vez instalado, incluya la siguiente declaración en la parte superior de su `hardhat.config.js`, y agregue las opciones de configuración de Etherscan:
+
+```javascript
+// hardhat.config.js
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+require("@nomiclabs/hardhat-etherscan")
+
+const { API_URL, PRIVATE_KEY, ETHERSCAN_API_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+ etherscan: {
+ // Your API key for Etherscan
+ // Obtain one at https://etherscan.io/
+ apiKey: ETHERSCAN_API_KEY,
+ },
+}
+```
+
+#### Verifique su contrato inteligente en Etherscan {#verify-your-smart-contract-on-etherscan}
+
+Asegúrese de que todos los archivos estén guardados y de que todas las variables `.env` estén configuradas correctamente.
+
+Ejecute la tarea `verificar`, pasando la dirección del contrato y la red a donde está desplegada:
+
+```text
+npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS 'Hello World!'
+```
+
+Asegúrese de que `DEPLOYED_CONTRACT_ADDRESS` sea la dirección de su contrato inteligente implementado en la red de pruebas de Goerli. Además, el argumento final (`'¡Hola mundo!' `) debe ser el mismo valor de cadena utilizado [durante el paso de despliegue en la parte 1](#write-our-deploy-script).
+
+Si todo va bien, verás el siguiente mensaje en tu terminal:
+
+```text
+Successfully submitted source code for contract
+contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address
+for verification on Etherscan. Waiting for verification result...
+
+
+Successfully verified contract HelloWorld on Etherscan.
+https://goerli.etherscan.io/address/#contracts
+```
+
+¡Felicidades! ¡Tu código de contrato inteligente está en Etherescan!
+
+### ¡Echa un vistazo a tu contrato inteligente en Etherscan! {#check-out-your-smart-contract-on-etherscan}
+
+Cuando navegue al enlace proporcionado en su terminal, ¡debería poder ver su código de contrato inteligente y ABI publicado en Etherscan!
+
+**Wahooo - ¡lo hiciste campeón! ¡Ahora cualquiera puede llamar o escribir a tu contrato inteligente! ¡Estamos deseando ver lo que construyes a continuación!**
+
+## Parte 4 - Integración de su contrato inteligente con la interfaz {#part-4-integrating-your-smart-contract-with-the-frontend}
+
+Al final de este tutorial, sabrás cómo:
+
+- Conecta una cartera MetaMask a tu dapp
+- Leer los datos de su contrato inteligente utilizando la API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
+- Firmar transacciones de Ethereum usando MetaMask
+
+Para este dapp, usaremos [React](https://reactjs.org/) como nuestro marco de interfaz; sin embargo, es importante tener en cuenta que no pasaremos mucho tiempo desglosando sus fundamentos, ya que nos centraremos principalmente en llevar la funcionalidad Web3 a nuestro proyecto.
+
+Como requisito previo, debes tener una comprensión de React a nivel principiante. Si no, recomendamos completar el tutorial oficial [Introducción a React](https://reactjs.org/tutorial/tutorial.html).
+
+### Clone los archivos de inicio {#clone-the-starter-files}
+
+Primero, vaya al [hello-world-part-four repositorio de GitHub](https://github.com/alchemyplatform/hello-world-part-four-tutorial) para obtener los archivos de inicio de este proyecto y clonar este repositorio en su máquina local.
+
+Abra el repositorio clonado localmente. Tenga en cuenta que contiene dos carpetas: `archivos de inicio` y `completado`.
+
+- `archivos de inicio`- **estaremos trabajando en este directorio**, conectaremos la interfaz de usuario a su billetera Ethereum y al contrato inteligente que publicamos en Etherscan en [Parte 3](#part-3).
+- `completed`Contiene todo el tutorial completado y solo debe usarse como referencia si te quedas atascado.
+
+A continuación, abra su copia de `starter-files` en su editor de código favorito y luego navegue hasta la carpeta `src`.
+
+Todo el código que escribiremos permanecerá en la carpeta `src`. Editaremos el componente `HelloWorld.js` y los archivos JavaScript `util/interact.js` para dar a nuestro proyecto la funcionalidad Web3.
+
+### Echa un vistazo a los archivos iniciales {#check-out-the-starter-files}
+
+Antes de empezar a codificar, exploremos lo que se nos proporciona en los archivos de inicio.
+
+#### Ejecute su proyecto de react {#get-your-react-project-running}
+
+Comencemos por ejecutar el proyecto React en nuestro navegador. La belleza de React es que, una vez que tenemos nuestro proyecto corriendo en el navegador, cualquier cambio que guardemos será actualizado en vivo en el navegador.
+
+Para ejecutar el proyecto, navegue hasta el directorio raíz de la carpeta `starter-files`, y ejecute `npm install` en su terminal para instalar las dependencias del proyecto:
+
+```bash
+cd starter-files
+npm install
+```
+
+Una vez que hayan terminado de instalarse, ejecute `npm start` en su terminal:
+
+```bash
+npm start
+```
+
+Al hacerlo, debería abrir [http://localhost:3000/](http://localhost:3000/) en su navegador, donde verá la interfaz de nuestro proyecto. Debe consistir en un campo \(un lugar para actualizar el mensaje almacenado en su contrato inteligente\), un botón "Conectar cartera" y un botón "Actualizar".
+
+Si intentas hacer clic en cualquiera de los botones, te darás cuenta de que no funcionan, eso es porque todavía tenemos que programar su funcionalidad.
+
+#### El componente `HelloWorld.js` {#the-helloworld-js-component}
+
+Volvamos a la carpeta `src` de nuestro editor y abramos el archivo `HelloWorld.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
+
+En la parte superior de este archivo, notará que tenemos varias declaraciones de importación que son necesarias para que nuestro proyecto se ejecute, incluida la biblioteca React, los ganchos useEffect y useState, algunos elementos del `./util/interact.js` (¡los describiremos con más detalle pronto!), y el logotipo de Alchemy.
+
+```javascript
+// HelloWorld.js
+
+import React from "react"
+import { useEffect, useState } from "react"
+import {
+ helloWorldContract,
+ connectWallet,
+ updateMessage,
+ loadCurrentMessage,
+ getCurrentWalletConnected,
+} from "./util/interact.js"
+
+import alchemylogo from "./alchemylogo.svg"
+```
+
+A continuación, tenemos nuestras variables de estado que actualizaremos después de eventos específicos.
+
+```javascript
+// HelloWorld.js
+
+//State variables
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [message, setMessage] = useState("No connection to the network.")
+const [newMessage, setNewMessage] = useState("")
+```
+
+Esto es lo que representa cada una de las variables:
+
+- `walletAddress`: cadena que almacena la dirección de la billetera del usuario
+- `status`- una cadena que almacena un mensaje útil que guía al usuario sobre cómo interactuar con el dapp
+- `mensaje` - una cadena que almacena el mensaje actual en el contrato inteligente
+- `newMessage` - una cadena que almacena el nuevo mensaje que se escribirá en el contrato inteligente
+
+Después de las variables de estado, verá cinco funciones no implementadas: `useEffect` ,`addSmartContractListener`, `addWalletListener` , `connectWalletPressed` y `onUpdatePressed`. Explicaremos lo que hacen a continuación:
+
+```javascript
+// HelloWorld.js
+
+//called only once
+useEffect(async () => {
+ //TODO: implement
+}, [])
+
+function addSmartContractListener() {
+ //TODO: implement
+}
+
+function addWalletListener() {
+ //TODO: implement
+}
+
+const connectWalletPressed = async () => {
+ //TODO: implement
+}
+
+const onUpdatePressed = async () => {
+ //TODO: implement
+}
+```
+
+- [`useEffect`](https://reactjs.org/docs/hooks-effect.html)- este es un gancho de React que se llama después de renderizar su componente. Debido a que tiene una matriz vacía `[]` prop pasada a ella \(ver línea 4\), solo se llamará en el _primer_ renderizado del componente. Aquí cargaremos el mensaje actual almacenado en nuestro contrato inteligente, llamaremos a nuestros oyentes de contrato inteligente y billetera, y actualizaremos nuestra interfaz de usuario para reflejar si una billetera ya está conectada.
+- `addSmartContractListener`- esta función configura un oyente que vigilará el evento `UpdatedMessages` de nuestro contrato de HelloWorld y actualizará nuestra interfaz de usuario cuando se cambie el mensaje en nuestro contrato inteligente.
+- `addWalletListener`- esta función configura un oyente que detecta cambios en el estado de la cartera MetaMask del usuario, como cuando el usuario desconecta su cartera o cambia de dirección.
+- `connectWalletPressed`- esta función se llamará para conectar la cartera MetaMask del usuario a nuestra dapp.
+- `onUpdatePressed` - esta función se llamará cuando el usuario quiera actualizar el mensaje almacenado en el contrato inteligente.
+
+Cerca del final de este archivo, tenemos la interfaz de usuario de nuestro componente.
+
+```javascript
+// HelloWorld.js
+
+//the UI of our component
+return (
+
+)
+```
+
+Si escaneas este código con cuidado, te darás cuenta de dónde usamos nuestras diversas variables de estado en nuestra interfaz de usuario:
+
+- En las líneas 6-12, si la billetera del usuario está conectada \(es decir, `walletAddress.length > 0`\), mostramos una versión truncada del usuario `walletAddress` en el botón con el ID "walletButton;", de lo contrario, simplemente dice "Connect Wallet".
+- En la línea 17, mostramos el mensaje actual almacenado en el contrato inteligente, que se captura en la cadena `message`.
+- En las líneas 23-26, utilizamos un [componente controlado](https://reactjs.org/docs/forms.html#controlled-components) para actualizar nuestra variable de estado `newMessage` cuando cambia la entrada en el campo de texto.
+
+Además de nuestras variables de estado, también verá que las funciones `connectWalletPressed` y `onUpdatePressed` se llaman cuando se hace clic en los botones con los ID `publishButton` y `walletButton` respectivamente.
+
+Por último, abordemos dónde se ha añadido este componente `HelloWorld.js`.
+
+Si va al archivo `App.js`, que es el componente principal de React que actúa como contenedor para todos los demás componentes, verá que nuestro componente `HelloWorld.js` se inyecta en la línea 7.
+
+Por último, pero no menos importante, echemos un vistazo a un archivo más proporcionado para usted, el archivo `interact.js`.
+
+#### El archivo `interact.js` {#the-interact-js-file}
+
+Debido a que queremos prescribir el paradigma [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), querremos un archivo separado que contenga todas nuestras funciones para administrar la lógica, los datos y las reglas de nuestro dapp, y luego poder exportar esas funciones a nuestro frontend \(nuestro componente `HelloWorld.js`\).
+
+👆🏽¡Este es el propósito exacto de nuestro archivo `interact.js`!
+
+Vaya a la carpeta `util` en su directorio `src`, y se dará cuenta de que hemos incluido un archivo llamado `interact.js` que contendrá todas nuestras funciones y variables de interacción de contratos inteligentes y cartera.
+
+```javascript
+// interact.js
+
+//export const helloWorldContract;
+
+export const loadCurrentMessage = async () => {}
+
+export const connectWallet = async () => {}
+
+const getCurrentWalletConnected = async () => {}
+
+export const updateMessage = async (message) => {}
+```
+
+Notará en la parte superior del archivo que hemos comentado el objeto `helloWorldContract`. Más adelante en este tutorial, dejaremos de comentar este objeto e instanciaremos nuestro contrato inteligente en esta variable, que luego exportaremos a nuestro componente `HelloWorld.js`.
+
+Las cuatro funciones no implementadas después de nuestro objeto `helloWorldContract` hacen lo siguiente:
+
+- `loadCurrentMessage` - esta función maneja la lógica de cargar el mensaje actual almacenado en el contrato inteligente. Hará una llamada _read_ al contrato inteligente de Hello World utilizando la [API de Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
+- `connectWallet` - esta función conectará el MetaMask del usuario a nuestra dapp.
+- `getCurrentWalletConnected` - esta función comprobará si una cuenta de Ethereum ya está conectada a nuestra dapp al cargar la página y actualizará nuestra interfaz de usuario en consecuencia.
+- `updateMessage` - esta función actualizará el mensaje almacenado en el contrato inteligente. Hará una llamada _write_ al contrato inteligente de Hello World, por lo que la cartera de MetaMask del usuario tendrá que firmar una transacción de Ethereum para actualizar el mensaje.
+
+Ahora que entendemos con qué estamos trabajando, ¡vamos a averiguar cómo leer de nuestro contrato inteligente!
+
+### Paso 3: Lea de su contrato inteligente {#step-3-read-from-your-smart-contract}
+
+Para leer de su contrato inteligente, tendrá que configurar con éxito:
+
+- Una conexión API a la cadena Ethereum
+- Una instancia cargada de su contrato inteligente
+- Una función para llamar a su función de contrato inteligente
+- Un oyente para estar atento a las actualizaciones cuando cambien los datos que esté leyendo del contrato inteligente
+
+Parecen demasiados pasos, ¡pero no te preocupes! ¡Te indicaremos como realizar cada uno de ellos paso a paso! :\)
+
+#### Establecer una conexión API con la cadena Ethereum {#establish-an-api-connection-to-the-ethereum-chain}
+
+Recuerdas cómo en el apartado 2 de este tutorial, utilizamos nuestra [llave de Alchemy Web3 para leer desde nuestro contrato inteligente](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library)? También necesitaras una llave de Alchemy Web3 en tu dapp para leer de la cadena de bloques.
+
+Si aún no lo tienes, instala primero [Alchemy](https://github.com/alchemyplatform/alchemy-web3) ingresando al directorio de raíz de `starter-files` y ejecutando el siguiente código en tu terminal:
+
+```text
+npm install @alch/alchemy-web3
+```
+
+[ Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) está construido sobre [Web3](https://docs.web3js.org/), de esta manera proporciona metodos mejorados de la API y otros beneficios importantes para que tu vida como desarrollador de Web3 sea mucho más fácil. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
+
+Luego, instala la librería [dotenv](https://www.npmjs.com/package/dotenv) en tu directorio de proyectos, así tendremos un lugar seguro para almancenar nuestra clave de la API una vez que lo obtengamos.
+
+```text
+npm install dotenv --save
+```
+
+Para nuestra dapp, ** utilizaremos nuestra clave para la API de Websockets ** en lugar de nuestra clave para la API HTTP, ya que nos permitirá configurar un listener que detectará cuando el mensaje guardado en el contrato inteligente cambie.
+
+Una vez que tengas la clave de la API, crea un archivo `.env` en tu directorio de raíz y agregale tu url de Alchemy Websockets. Acontinuación, tu archivo `.env` debería verse así:
+
+```javascript
+REACT_APP_ALCHEMY_KEY = wss://eth-goerli.ws.alchemyapi.io/v2/
+```
+
+¡Estamos listos para poner en marcha nuestra Alchemy Web3 endpoint en nuestra dapp! Volvamos de nuevo a nuestro `interact.js`, que se encuentra anidada dentro de nuestro archivo `util` y agrega el siguiente código al comienzo del archivo:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+//export const helloWorldContract;
+```
+
+Primero importamos la clave Alchemy de nuestro archivo `.env` y luego pasamos nuestro `alchemyKey` a `createAlchemyWeb3` para establecer nuestra Alchemy Web3 endpoint.
+
+Una vez listo el endpoint, ¡es momento de cargar nuestro Contrato inteligente!
+
+#### Carga de tu Contrato inteligente Hello World {#loading-your-hello-world-smart-contract}
+
+Para cargar tu Contrato inteligente Hello World, necesitaras la dirección del contrato y ABI, puedes encontrar ambos en Etherscan si has completado previamente [ la parte 3 de este tutorial.](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan)
+
+#### Cómo obtener tu contrato ABI de Etherscan {#how-to-get-your-contract-abi-from-etherscan}
+
+Si omitiste la parte 3 de este tutorial, puedes utilizar el contrato Hello World con dirección [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code). Puedes encontrar su ABI [aquí](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code).
+
+Se necesita un contrato ABI para especificar qué función utilizará un contrato y para asegurar que la función devolverá datos en el formato esperado. Una vez que hayamos copiado nuestro contrato ABI, lo guardaremos como un archivo JSON que se llamará `contract-abi.json` en tu directorio `src`.
+
+Tu contrato -abi.json deberá ser guardado en tu carpeta src.
+
+Con la dirección de nuestro contrato ABI y AlchemyWeb3 endpoint, podemos utilizar el [contract method](https://docs.web3js.org/api/web3-eth-contract/class/Contract) para cargar una instancia de nuestro Contrato inteligente. Importa tu contrato ABI dentro del archivo `interact.js` y agrega la direción de tu contratro.
+
+```javascript
+// interact.js
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+```
+
+Ahora podemos suprimir comentario de nuestra variable `helloWorldContract`, y cargar el contrato inteligente utilizando nuestro AlchemyWeb3 endpoint:
+
+```javascript
+// interact.js
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+A modo de repaso, las primeras 12 lineas de tu `interact.js` ahora deberían verse así:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+Ahora que tenemos cargado nuestro contrato, ¡podemos implementar nuestra función `loadCurrentMessage`!
+
+#### Implementación de `loadCurrentMessage` en tu archivo `interact.js` {#implementing-loadCurrentMessage-in-your-interact-js-file}
+
+Esta función es muy sencilla. Haremos una simple llamada async Web3 para así leer de nuestro contrato. Nuestra función devolverá el mensaje almacenado en el contrato inteligente:
+
+Actualiza el `loadCurrentMessage` en tu archivo `interact.js` de la siguiente manera:
+
+```javascript
+// interact.js
+
+export const loadCurrentMessage = async () => {
+ const message = await helloWorldContract.methods.message().call()
+ return message
+}
+```
+
+Dado que queremos mostrar este contrato inteligente en nuestra UI, actualizemos la función `useEffect` en nuestro componente `HelloWorld.js` de la siguiente manera:
+
+```javascript
+// HelloWorld.js
+
+//called only once
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+}, [])
+```
+
+Recuerda, solo queremos que nuestro `loadCurrentMessage` sea llamado una sola vez durante la primera renderización del componente. Pronto implementaremos `addSmartContractListener` para que actualice automáticamente la UI cada vez que cambie el mensaje en el contrato inteligente.
+
+Antes de profundizar sobre nuestro listener, ¡revisemos lo que tenemos hasta ahora! Guarda tus archivos `HelloWorld.js` y `interact.js` y luego ve a [http://localhost:3000/](http://localhost:3000/)
+
+Notaras que el mensaje actual ya no dice "Sin conexión a la red". En su lugar reflejará el mensaje almacenado en el contrato inteligente. ¡Fantástico!
+
+#### Ahora, tu UI debería reflejar el mensaje almacenado en el contrato inteligente {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract}
+
+Hablando del listener...
+
+#### Implementa `addSmartContractListener` {#implement-addsmartcontractlistener}
+
+Si haces memoria, en el archivo `HelloWorld.sol` que redactamos en [ la parte 1 de esta serie de tutoriales](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract), recordaras que existe un evento de contrato inteligente que se llama `UpdatedMessages` y que se emite una vez que la función `update` es utilizada \(ver lineas 9 y 27\):
+
+```javascript
+// HelloWorld.sol
+
+// Specifies the version of Solidity, using semantic versioning.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.7.3;
+
+// Defines a contract named `HelloWorld`.
+// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la blockchain de Ethereum. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ //Emitted when update function is called
+ //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // Declares a state variable `message` of type `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+Los eventos del contrato inteligente son una forma de comunicar que ha pasado algo \(es decir, hubo un _event_\) en la blockchain que repercutió en tu aplicación front-end. Podría tratarse de un 'listening' para eventos específicos y , al mismo tiempo, sobre las medidas de acción a implementar cuando ocurren.
+
+La función `addSmartContractListener` prestará atención a nuestro evento de contrato inteligente Hello World `UpdatedMessages`, y actualizará nuestro UI para que muestre el nuevo mensaje.
+
+Modifica `addSmartContractListener` de la siguiente manera:
+
+```javascript
+// HelloWorld.js
+
+function addSmartContractListener() {
+ helloWorldContract.events.UpdatedMessages({}, (error, data) => {
+ if (error) {
+ setStatus("😥 " + error.message)
+ } else {
+ setMessage(data.returnValues[1])
+ setNewMessage("")
+ setStatus("🎉 Your message has been updated!")
+ }
+ })
+}
+```
+
+Desmenucemos lo que pasa cuando el listener detecta un evento:
+
+- Si ocurre un error al momento de emitir el evento, este se verá reflejado en la UI a través de nuestra variable de estado `status`.
+- Caso contrario, utilizaremos el objeto devuelto `data`. `data.returnValues` es un arreglo indexado a cero donde el primer elemento almancena el mensaje anterior, mientras que el segundo elemento almacena el mensaje actualizado. En conjunto, en un evento eficaz colocaremos nuestro string `message` al mensaje actualizado, resetearemos el string `newMessage`, y actualizaremos nuestra variable de estado `status` para que refleje que un nuevo mensaje se ha publicado en nuestro contrato inteligente.
+
+Por último, ejecutemos nuestro listener en nuestra función `useEffect` para que se inicialize en la primera devolución del componente `HelloWorld.js`. Entonces, tu función `useEffect` debería verse así:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+}, [])
+```
+
+Ahora que podemos leer de nuestro contrato inteligente, también ¡sería genial descifrar cómo podemos escribirlo! Sin embargo, para escribir en nuestra dapp, primero debemos tener una wallet de Ethereum conectada a la misma.
+
+Por lo tanto, la próxima cuestión que abordaremos será crear nuestra wallet de Ethereum \(MetaMask\) para luego conectarla con nuestra dapp.
+
+### Paso 4: Crea tu wallet de Ethereum {#step-4-set-up-your-ethereum-wallet}
+
+Para poder escribir en la chain de Ethereum, los usuarios deben firmar las transacciones utilizando la clave privada de su wallet virtual. Para este tutorial, utilizaremos [MetaMask](https://metamask.io/), una billetera virtual en el browser que se utiliza para administrar la dirección de tu cuenta de Ethereum, ya que hace que la firma de esta transacción sea bastante simple para el usuario final.
+
+Si quiere más información sobre cómo funcionan las transacciones en Ethereum, eche un vistazo a [esta página](/developers/docs/transactions/) de Ethereum Foundation.
+
+#### Descargar MetaMask {#download-metamask}
+
+Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download.html). Cuando estes creando una cuenta, o si ya tienes una, asegurate de cambiar de “Goerli Test Network” en la parte superior \(para que no se trate de dinero real\).
+
+#### Añada ether a partir de un grifo {#add-ether-from-a-faucet}
+
+Necesitaremos algunos Eth falsos para poder firmar una transacción en la blockchain de Ethereum. Para obtener Eth puedes ir a [FaucETH](https://fauceth.komputing.org) e ingresar la direcciíon de tu cuenta Goerli, haz click en “Request funds”, luego selecciona “Ethereum Testnet Goerli” y por último, haz click en el botón “Request funds” nuevamente. Debería ver el Eth en su cuenta de MetaMask poco después.
+
+#### Revisa tu saldo {#check-your-balance}
+
+Para verificar que nuestro saldo esté ahí, realicemos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la [herramienta de compositor de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request» (Enviar Solicitud), debería ver una respuesta como esta:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**NOTA:** Este resultado esta en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
+
+¡Fiu! Nuestro dinero de prueba está ahí sin problemas. 🤑
+
+### Paso 5: Conectate a tu UI en MetaMask {#step-5-connect-metamask-to-your-UI}
+
+Ahora que nuestra billetera de MetaMask está configurada, vamos a conectar nuestra dapp a ella.
+
+#### Función `connectWallet` {#the-connectWallet-function}
+
+En nuestro archivo `interact.js`, implementaremos la función `connectWallet`, el cual podremos ejecutar en nuestro componente `HelloWorld.js` posteriormente.
+
+Procedamos a modificar `connectWallet` como se muestra a continuación:
+
+```javascript
+// interact.js
+
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Entonces ¿Qué hace exactamente este extenso código?
+
+Bueno, en primer lugar, verifica que `window.ethereum` este habilitado en tu navegador.
+
+`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de billeteras que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. Si es aprobado, puede leer información de la blockchain a la que está conectado el usuario y sugerir que este firme mensajes y transacciones. Revise la [documentación de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información.
+
+Si `window.ethereum` _no está_ presente, eso significa que MetaMask no está instalado. Esto resulta en la devolución de un objeto JSON, donde el `address` devuelto es una cadena vacía y el objeto JSX `status` muestra que el usuario debe instalar MetaMask.
+
+Ahora, si `window.ethereum` _está_ presente, las cosas se ponen interesantes.
+
+Al utilizar un try/catch loop, intentaremos conectarnos a MetaMask ejecutando
+
+window.ethereum.request({ method: "eth_requestAccounts" });. La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
+
+- Si el usuario decide conectarse, `method: "eth_requestAccounts"` devolverá un arreglo que contiene todas las direcciones de cuenta del usuario que se conectaron a la dapp. De igual manera, nuestra función `connectWallet` devolverá un objeto JSON que contine la _primera_ `address` de este arreglo \(ver la línea 9\) y un mensaje de `status` que solicita al usuario escribir un mensaje al contrato inteligente.
+- Si el usuario rechaza la conexión, el objeto JSON tendrá una cadena vacía para la `address` devuelta y un mensaje de `status` donde se refleje que el usuario rechazó la conexión.
+
+Una vez escrita la función `connectWallet`, el siguiente paso es ejecutarlo en nuestro componente `HelloWorld.js`.
+
+
+
+#### Agrega la función `connectWallet` a tu componente de UI `HelloWorld.js` {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component}
+
+Dirígitete a la función `onnectWalletPressed` en `HelloWorld.js`, y actualizalo de la siguiente manera:
+
+
+
+```javascript
+// HelloWorld.js
+
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+
+¿Notas como gran parte de nuestra funcionalidad se abstrae de nuestro componente `HelloWorld.js` del archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
+
+En `connectWalletPressed`, simplemente hacemos una llamada en espera a nuestra función `conectWallet` importada y, utilizando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus hooks de estado.
+
+Guardemos ambos archivos \(`HelloWorld.js` and `interact.js`\) y probemos nuestra UI.
+
+Abre tu navegador con el link [http://localhost:3000/](http://localhost:3000/), y presiona el botón "Conectar Wallet" en el margen superior derecho de la página.
+
+Si tiene MetaMask instalado, se le debería solicitar conectar su billetera a su dapp. Acepte la invitación para establecer la conexión.
+
+Deberías poder visualizar que, ahora, el botón de wallet muestra que tu dirección está conectada. ¡Fantástico!
+
+A continuación, pruebe actualizar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
+
+¡No tengas miedo! Podemos solucionarlo facilmente, implementando `getCurrentWalletConnected` (¿entiendes?). Esto verificará si ya existe una dirección conectada a nuestra dapp y, en consecuencia, actualizará nuestra UI.
+
+
+
+#### Función `getCurrentWalletConnected` {#the-getcurrentwalletconnected-function}
+
+Actualiza tu función `getCurrentWalletConnected` en el archivo `interact.js` como se muestra a continuación:
+
+
+
+```javascript
+// interact.js
+
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+
+Este código es _bastante_ similar a la función `connectWallet` que escribimos en el paso anterior.
+
+La principal diferencia es que, en vez de llamar al método `eth_requestAccount`, que abre MetaMask para que el usuario conecte su billetera, aquí llamamos al método `eth_accounts`, que simplemente devuelve un arreglo que contiene las direcciones de MetaMask que se encuentran conectadas a nuestra dapp.
+
+Para ver esta función, lo podemos ejecutar en nuestra función `useEffect` de nuestro componente `HelloWorld.js`:
+
+
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+
+Note que usamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
+
+Una vez que agregues este código, refrescaremos la ventana de nuestro navegador.
+
+¡Magnífico! El botón debería decir que está conectado y mostrar una vista previa de la dirección de su billetera conectada, incluso después de actualizar la página.
+
+
+
+#### Implementa `addWalletListener` {#implement-addwalletlistener}
+
+El último paso en la configuración de la billetera de dapp es implementar el oyente de billetera para que nuestra interfaz se actualice cuando el estado de la billetera cambie, por ejemplo, cuando el usuario se desconecte o cambie de cuenta.
+
+En tu archivo `HelloWorld.js`, modifica tu función `addWalletListener` como se ve a continuación:
+
+
+
+```javascript
+// HelloWorld.js
+
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ )
+ }
+}
+```
+
+
+En este punto, apuesto a que ni siquiera necesitas de nuestra ayuda para entender lo que ocurre. Pero, para ser más exhaustivos, desglosémoslo rápidamente:
+
+- Primero, nuestra función verifica si `window.ethereum` está habilitado \(esto es si MetaMask está instalado\).
+ - Si no lo está, simplemente establecemos nuestra variable de estado `status` a una cadena JSX que solicite al usuario instalar MetaMask.
+ - Si está habilitado, configuramos el oyente `window.ethereum.on("accountsChanged")` en la línea 3, que escucha cambios de estado en la billetera de MetaMask, incluyendo cuando el usuario conecte una cuenta adicional a la dapp, cambie de cuenta o desconecte una cuenta. Si hay por lo menos una cuenta conectada, la variable de estado `walletAddress` es actualizada como la primera cuenta en el arreglo `accounts` devuelto por el oyente. De lo contrario, `walletAddress` se establece como cadena vacía.
+
+Por último, debemos ejecutarlo en nuestra función `useEffect`:
+
+
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+
+¡Y eso es todo! Hemos terminado de programar toda la funcionalidad de nuestra wallet exitosamente! Nuestra última tarea es actualizar el mensaje almacenado en nuestro contrato inteligente.
+
+
+
+### Paso 6: Implementa la función `updateMessage` {#step-6-implement-the-updateMessage-function}
+
+¡Hemos legado final! En el `updateMessage` de tu archivo `interact.js`, haremos lo siguiente:
+
+1. Asegurate de que el mensaje que deseas publicar en nuestro contrato inteligente sea válido
+2. Firmamos la transacción utilizando MetaMask
+3. Ejecuta esta función desde nuestro componente frontend `HelloWorld.js`
+
+No nos llevará mucho ¡terminemos esta dapp!
+
+
+
+#### Manejo de errores de entrada {#input-error-handling}
+
+Tiene sentido tener algún chequeo de error en el input al comienzo de la función.
+
+Queremos que nuestra función retorne rápido si, no existe una extensión de MetaMask instalada, no existe una wallet conectada \(i.e. the `address` es un string vacío\), o `message` también es un string vacío. Agreguemos el siguiente chequeo de error a `updateMessage`:
+
+
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+}
+```
+
+
+Ahora que cuenta con un chegueo de error adecuado ¡ha llegado el momento de firmar la transacción con MetaMask!
+
+
+
+#### Firma de nuestra transacción {#signing-our-transaction}
+
+Si ya estás cómodo con las transacciones tradicionales web3 de Ethereum, el código que escribiremos a continuación te resultará bastante familiar. Debajo de tu código de chequeo de error, agrega lo siguiente a `pdateMessage`:
+
+
+
+```javascript
+// interact.js
+
+//set up transaction parameters
+const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: address, // must match user's active address.
+ data: helloWorldContract.methods.update(message).encodeABI(),
+}
+
+//sign the transaction
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will be
+ updated automatically.
+
+ ),
+ }
+} catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+}
+```
+
+
+Veamos qué es lo que ocurre. Primero, establezcamos los parámetros para nuestra transacción:
+
+- `to` especifica la dirección del receptor \(nuestro contrato inteligente\)
+- `from` muestra quién firma la transacción, la variable `address` muestra lo que pasamos a la función
+- `data` contiene la ejecución del método `update` de nuestro contrato inteligente Hello World, que recibe la variable de tipo cadena `message` como una entrada
+
+Luego, realizamos una ejecución en espera, `window.ethereum.request`, donde le pedimos a MetaMask que firme la transacción. Ten en cuenta que, en las lineas 11 y 12, especificamos nuestro método ETH `eth_sendTransaction` y le pasamos `transactionParameters`.
+
+En este punto, MetaMask se abrirá en el navegador y solicitará al usuario firmar o rechazar la transacción.
+
+- Si la transacción tiene éxito, la función devolverá un objeto de JSON donde el string JSX `status` le pedirá al usuario que revise Etherscan para obtener más información sobre su transacción.
+- Si la transacción falla, la función devolverá un objeto JSON donde el string `status` transmitirá el mensaje de error.
+
+Entonces, nuestra función `updateMessage` debería verse así:
+
+
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ //input error handling
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+
+ //set up transaction parameters
+ const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: address, // must match user's active address.
+ data: helloWorldContract.methods.update(message).encodeABI(),
+ }
+
+ //sign the transaction
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will
+ be updated automatically.
+
+ ),
+ }
+ } catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+ }
+}
+```
+
+
+Por último, necesitamos conectar nuestra función `updateMessage` a nuestro componente `HelloWorld.js`.
+
+
+
+#### Conecta `updateMessage` al frontend `HelloWorld.js` {#connect-updatemessage-to-the-helloworld-js-frontend}
+
+Nuestra función `onUpdatePressed` deberá realizar una ejecución en espera a la función importada `updateMessage` y modificar la variable de estado `status` para que muestre si funcionó o falló nuestra transacción:
+
+
+
+```javascript
+// HelloWorld.js
+
+const onUpdatePressed = async () => {
+ const { status } = await updateMessage(walletAddress, newMessage)
+ setStatus(status)
+}
+```
+
+
+Es simple y claro. Y adivina qué... ¡TU DAPP ESTÁ TERMINADA!
+
+¡Adelante, ve a probar el botón **Update**!
+
+
+
+### Crea tu propia dapp personalizada {#make-your-own-custom-dapp}
+
+¡Bravo! ¡Has llegado al final del tutorial! A modo de repaso, esto es lo que aprendiste:
+
+- como conectar una wallet de MetaMask a tu proyecto dapp
+- Leer los datos de su contrato inteligente utilizando la API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
+- Firmar transacciones de Ethereum usando MetaMask
+
+Ya estás preparado para aplicar los conocimientos que adquiriste en este tutorial, y así, crear tu propio proyecto dapp personalizado! De más está decir que, ante cualquier duda, puedes pedirnos ayuda en [AlchemyDiscord](https://discord.gg/gWuC7zB). 🧙♂️
+
+Cuando finalice este tutorial, cuéntenos cómo fue su experiencia o comparta algún comentario etiquetándonos en Twitter [@alchemyplatform](https://twitter.com/AlchemyPlatform).
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
index 371b40c82fc..68068a799a4 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
@@ -1,24 +1,31 @@
---
-title: Contrato inteligente de Hola, mundo para principiantes
+title: Contrato inteligente Hello World para principiantes
description: Tutorial introductorio para redactar e implementar un contrato inteligente sencillo en Ethereum.
author: "elanh"
tags:
- - "solidity"
+ - "solidez"
- "Hardhat"
- "alchemy"
- "contratos inteligentes"
- - "empezar"
- "implementación"
skill: beginner
lang: es
published: 2021-03-31
---
-Si es nuevo en el desarrollo de cadena de bloques y no sabe por dónde empezar, o si solo quiere entender cómo implementar e interactuar con contratos inteligentes, esta es su guía. Abordaremos cómo crear e implementar un contrato inteligente sencillo en la red de prueba Ropsten usando una billetera virtual ([MetaMask](https://metamask.io/)), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) y [Alchemy](https://alchemyapi.io/eth) (no se preocupe si aún no entiende lo que significa todo esto, lo explicaremos).
+Si es nuevo en el desarrollo de cadena de bloques y no sabe por dónde empezar, o si solo quiere entender cómo implementar e interactuar con contratos inteligentes, esta es su guía. Abordaremos cómo crear e implementar un contrato inteligente sencillo en la red de prueba Goerli usando una billetera virtual ([Metamask](https://metamask.io/)), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) y [Alchemy](https://alchemyapi.io/eth) (no se preocupe si aún no entiende lo que significa todo esto: lo explicaremos).
-En la parte 2 de este tutorial veremos cómo interactuar con nuestro contrato inteligente una vez implementado y en la parte 3 trataremos cómo publicarlo en Etherscan.
+> **Advertencia**
+>
+> 🚧 Aviso de baja
+>
+> Para toda esta guía, se está usando la red de prueba Goerli para crear e implementar un contrato inteligente. Sin embargo, tenga en cuenta que la Ethereum Foundation ha anuciado que [Goerli pronto se dará de baja](https://www.alchemy.com/blog/goerli-faucet-deprecation).
+>
+> Recomendamos usar [Sepolia](https://www.alchemy.com/overviews/sepolia-testnet) y el [grifo de Sepolia](https://sepoliafaucet.com/) para este tutorial.
-Si tiene alguna pregunta, no dude en consultar [Alchemy Discord](https://discord.gg/gWuC7zB)!
+En la [parte 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract) de este tutorial repasaremos cómo podemos interactuar con nuestro contrato inteligente una vez que se implemente aquí, y en [parte 3](https://docs.alchemy.com/docs/submitting-your-smart-contract-to-etherscan) mostraremos cómo publicarlo en Etherscan.
+
+Si tiene alguna pregunta, no dude en consultar el [Discord de Alchemy](https://discord.gg/gWuC7zB).
## Paso 1: Conectarse a la red Ethereum {#step-1}
@@ -26,13 +33,13 @@ Hay muchas maneras de hacer solicitudes a la cadena Ethereum. Por simplicidad, u
## Paso 2: Crear su aplicación (y llave API) {#step-2}
-Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá hacer peticiones a la red de pruebas de Ropsten. Si no está familiarizado con las redes de pruebas, revise [la página](/developers/docs/networks/).
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá hacer solicitudes a la red de prueba Goerli. Si no está familiarizado con las redes de prueba, revise [esta página](/developers/docs/networks/).
-1. Navegue a la página «Crear App» en su tablero Alchemy pasando el cursor sobre «Apps» en la barra de navegación y haciendo clic en «Crear App».
+1. Navegue a la página «Crear app» (Crear aplicación) en su tablero Alchemy pasando el cursor sobre «Apps» en la barra de navegación y haciendo click en «Crear app».
![Crear la aplicación Hola, mundo](./hello-world-create-app.png)
-2. Designe a su aplicación «Hola, mundo», y escriba una breve descripción, seleccione «Staging» para el ambiente (usado para la contabilidad de tu aplicación), y escoja «Ropsten» para su red.
+2. Nombre su aplicación “Hello World”, ofrezca una descripción corta, seleccione “Staging” para el entorno (usado para la contabilidad de su aplicación) y seleccione “Goerli” para la red.
![Crear App visualizar Hola, mundo](./create-app-view-hello-world.png)
@@ -40,44 +47,44 @@ Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API cr
## Paso 3: Crear una cuenta Ethereum (dirección) {#step-3}
-Necesitamos tener una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos MetaMask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Más información en [transacciones](/developers/docs/transactions/).
+Necesitamos tener una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Más información sobre las [transacciones](/developers/docs/transactions/).
-Puede descargar y crear una cuenta MetaMask gratis [aquí](https://metamask.io/download.html). Cuando esté creando una cuenta, o ya tenga una, asegúrese de cambiar a la «Red de pruebas de Robsten» en la parte superior derecha ( para que no tratemos con dinero real).
+Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download.html). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la “red de prueba Goerli” en la parte superior derecha (para no operar con dinero real).
-![ejemplo de MetaMask Ropsten](./metamask-ropsten-example.png)
+![ejemplo de Metamask Ropsten](./metamask-ropsten-example.png)
## Paso 4: Agregar ether de un Faucet {#step-4}
-Para desarrollar nuestro contrato inteligente en la red de prueba, necesitaremos ETH de prueba. Para obtener sus ETH de prueba, puede ir a [Ropsten faucet](https://faucet.dimensions.network/) e introducir la dirección de su cuenta de Ropsten, y hacer click en «Enviar Ropsten ETH». Puede llevar algo de tiempo recibir su ETH de prueba debido a la congestión de la red. ¡Deberían aparecer los ETH en su cuenta de MetaMask poco después!
+Para implementar nuestro contrato inteligente en la red de prueba, necesitaremos algo de Eth falso. Para obtener Eth puede ir al [grifo de Goerli](https://goerlifaucet.com/), iniciar sesión en su cuenta de Alchemy e introducir la dirección de su billetera; luego haga clic en "Send Me Eth." para enviárselo. Puede llevar algo de tiempo recibir el Eth de prueba debido a la congestión de la red. (Al momento de escribir esto, el envío tardó cerca de 30 minutos). Debería ver su Eth en su cuenta de MetaMask a la brevedad.
## Paso 5: Comprobar su balance {#step-5}
-Para comprobar que nuestro balance este ahí, hagamos una solicitud de [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance)usando [la herramienta de composición de Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto hará que aparezca la cantidad de ETH en nuestra billetera. Después de introducir la dirección de su cuenta de MetaMask y hacer click en «Enviar Solicitud», debería ver una respuesta como esta:
+Para comprobar que nuestro balance este ahí, hagamos una solicitud de [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando [la herramienta de composición de Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto hará que aparezca la cantidad de ETH en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer click en «Enviar Solicitud», debería ver una respuesta como esta:
```json
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```
-> **NOTA:**Este resultado es en wei no en ETH. Wei se usa como la denominación más pequeña de ether. La conversión de Wei a ETH es: 1 ETH = 1018wei. Entonces si queremos convertir 0x2B5E3AF16B1880000 a decimales obtenemos 5\*10¹⁸, que es igual a 5 ETH.
->
-> ¡Fiu! Nuestro dinero de prueba esta todo ahí .
+> **NOTA:** Este resultado es en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a ETH es: 1 eth = 1018 wei. Entonces si queremos convertir 0x2B5E3AF16B1880000 a decimales, obtenemos 5\*10¹⁸, que equivale a 5 ETH.
+>
+> ¡Fiu! Nuestro dinero de prueba está todo ahí .
## Paso 6: Iniciar nuestro proyecto {#step-6}
-Primero, necesitaremos crear un a carpeta para nuestro proyecto. Vaya a su línea de comando y teclee:
+Primero, necesitaremos crear una carpeta para nuestro proyecto. Vaya a su línea de comando y escriba:
```
mkdir hello-world
cd hello-world
```
-Ahora que estamos dentro de nuestra carpeta de proyecto, utulizaremos `npm init` a fin de inicializar el proyecto. Si no tiene instalado npm, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (también necesitaremos Node.js así que ¡descárgueselo también!).
+Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos `npm init` a fin de inicializar el proyecto. Si no tiene instalado npm, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (también necesitaremos Node.js, así que descárgueselo también).
```
npm init
```
-Realmente no importa la respuesta que dé a las preguntas de instalación, aquí le mostramos cómo lo hicimos nosotros:
+Realmente no importa cómo responda las preguntas de instalación; aquí le mostramos cómo lo hicimos nosotros:
```
package name: (hello-world)
@@ -104,13 +111,13 @@ About to write to /Users/.../.../.../hello-world/package.json:
}
```
-Aprueba el paquete.json y ¡estamos listos para comenzar!
+Apruebe el package.json y listo.
-## Paso 7: Descargar [Hardhat](https://hardhat.org/getting-started/#overview){#step-7}
+## Paso 7: Descargar [Hardhat](https://hardhat.org/getting-started/#overview) {#step-7}
-Hardhat es un entorno de desarrollo para compilar, desplegar, probar y depurar su software Ethereum. Ayuda a los desarrolladores para construir contratos inteligentes y dApps localmente antes de desplegarlos en la cadena en vivo.
+Hardhat es un entorno de desarrollo para compilar, implementar, probar y depurar su software de Ethereum. Ayuda a los desarrolladores cuando crean contratos inteligentes y dApps localmente antes de la implementación en la cadena real.
-Dentro de nuestro proyecto `hello-world` ejecuta:
+Dentro de nuestro proyecto `hello-world`, ejecute:
```
npm install --save-dev hardhat
@@ -171,26 +178,26 @@ Abra el proyecto Hola, mundo en su editor favorito (nosotros preferimos [VSCode]
```solidity
// Especifica la versión de Solidity, utilizando la versión semántica.
-// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragmma
-pragma solidity ^0.5.10;
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.7.0;
-// Define un contrato llamado `HelloWorld`.
-// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la blockchain de Ethereum. Más información: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+// Defines a contract named `HelloWorld`.
+// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la blockchain de Ethereum. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- // Declara una variable de estado `message` del tipo `string`.
- // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. La palabra clave `public` hace que las variables sean accesibles desde fuera de un contrato y crea una función que otros contratos o clientes pueden llamar para acceder al valor.
+ // Declares a state variable `message` of type `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
string public message;
- // Similar a muchos idiomas orientados a objetos basados en clases, un constructor es una función especial que sólo se ejecuta cuando se crea un contrato.
- // Los constructores se utilizan para inicializar los datos del contrato. Más información: https://solidity.readthedocs.io/es/v0.5.10/contracts.html#constructors
- constructor(string memory initMessage) public {
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
- // Acepta un argumento de cadena `initMessage` y establece el valor en la variable de almacenamiento `message` del contrato).
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
message = initMessage;
- }
+ }
- // Una función pública que acepta un argumento de cadena y actualiza la variable de almacenamiento `message`.
+ // A public function that accepts a string argument and updates the `message` storage variable.
function update(string memory newMessage) public {
message = newMessage;
}
@@ -199,13 +206,13 @@ contract HelloWorld {
Es un contrato inteligente muy sencillo que almacena un mensaje al momento de la creación y puede actualizarse con la función `update`.
-## Paso 11: Conectar MetaMask & Alchemy a su proyecto {#step-11}
+## Paso 11: Conectar Metamask & Alchemy a su proyecto {#step-11}
-Hemos creado una billetera de MetaMask, una cuenta de Alchemy y escrito nuestro contrato inteligente, ahora es momento de conectarlos entre sí.
+Hemos creado una billetera de Metamask, una cuenta de Alchemy y escrito nuestro contrato inteligente, ahora es momento de conectarlos entre sí.
Cada transacción enviada desde su billetera virtual requiere una firma utilizando su clave privada única. Para proporcionar este permiso a nuestro programa, podemos almacenar de manera segura nuestra clave privada (y clave Alchemy API) en un archivo de entorno.
-> Para saber más sobre el envío de transacciones, consulte[este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones usando web3.
+> Si quiere ahondar sobre el envío de transacciones, consulte [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones usando web3.
Primero, instale el paquete dotenv en su directorio de proyecto:
@@ -213,7 +220,7 @@ Primero, instale el paquete dotenv en su directorio de proyecto:
npm install dotenv --save
```
-Después, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añádale la llave inteligente de MetaMask y la API URL de HTTP Alchemy.
+Después, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añádale la llave inteligente de Metamask y la API URL de HTTP Alchemy.
- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su llave privada
- Abajo se le indica cómo obtener la API URL de HTTP Alchemy
@@ -225,8 +232,8 @@ Copie la API URL Alchemy
Su `.env` debería verse así:
```
-API_URL = "https://eth-ropsten.alchemyapi.io/v2/your-api-key"
-PRIVATE_KEY = "your-metamask-private-key"
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PRIVATE_KEY = "tu-clave privada-metamask"
```
Para conectarlos efectivamente a nuestro código, vincularemos estas variables en nuestro `hardhat.config.js` en el paso 13.
@@ -266,10 +273,10 @@ const { API_URL, PRIVATE_KEY } = process.env;
*/
module.exports = {
solidity: "0.7.3",
- defaultNetwork: "ropsten",
+ defaultNetwork: "goerli",
networks: {
hardhat: {},
- ropsten: {
+ goerli: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
}
@@ -330,7 +337,7 @@ Ejecutar `deploy()` en una `ContractFactory` iniciará el despliegue, y obtendr
¡Por fin estamos listos para desplegar nuestro contrato inteligente! Desde la linea de comandos, ejecute:
```
-npx hardhat run scripts/deploy.js --network ropsten
+hardhat npx ejecuta scripts/deploy.js --network goerli
```
Debería mostrarse algo parecido a esto:
@@ -339,11 +346,11 @@ Debería mostrarse algo parecido a esto:
Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```
-Si vamos a la dirección [Ropsten etherscan](https://ropsten.etherscan.io/) y buscamos la dirección de nuestro contrato, podremos comprobar que se ha desplegado correctamente. El objeto de la transacción tendrá un aspecto parecido a esto:
+Si vamos a la [Goerli etherscan](https://goerli.etherscan.io/) y buscamos la dirección de nuestro contrato, podremos comprobar que se ha implementado correctamente. El objeto de la transacción tendrá un aspecto parecido a esto:
![contrato etherscan](./etherscan-contract.png)
-La dirección `From` debe coincidir con su cuenta de MetaMask y la dirección de envío especificará «creación de contrato», pero al hacer click en la transacción veremos nuestra dirección en el campo `To`:
+La dirección `From` debe coincidir con su cuenta de Metamask y la dirección de envío especificará «creación de contrato», pero al hacer click en la transacción veremos nuestra dirección en el campo `To`:
![transacción etherscan](./etherscan-transaction.png)
@@ -351,7 +358,7 @@ La dirección `From` debe coincidir con su cuenta de MetaMask y la dirección de
Para entender lo que está pasando internamente, vayamos a la pestaña de Explorer en nuestro [panel Alchemy](https://dashboard.alchemyapi.io/explorer). Si tiene varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccionar «Hola, mundo». ![Explorador Hola, mundo](./hello-world-explorer.png)
-Aquí verá un puñado de ejecuciones JSON-RPC que Hardhat/Ethers hizo internamente por nosotros cuando ejecutamos a la función `.deploy()`. Dos solicitudes importantes a tener en cuenta aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud de escribir nuestro contrato en la cadena Ropsten, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash) que es una solicitud para leer información sobre nuestra transacción a partir de un hash (un patrón típico cuando realizamos transacciones). Para saber más sobre el envío de transacciones, consulte el siguiente tutorial [Enviar transacciones usando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
+Aquí verá un puñado de ejecuciones JSON-RPC que Hardhat/Ethers hizo internamente por nosotros cuando ejecutamos a la función `.deploy()`. Dos solicitudes importantes aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud para escribir nuestro contrato en la cadena de Goerli, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que consiste en una solicitud para obtener la información de nuestra transacción de acuerdo con un hash proporcionado (un patrón típico cuando realizamos transacciones). Para saber más sobre el envío de transacciones, consulte el siguiente tutorial [Enviar transacciones usando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
Aquí acaba la parte 1 de este tutorial, en la parte 2, [Interacción con nuestro contrato inteligente](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#part-2-interact-with-your-smart-contract), actualizaremos nuestro mensaje inicial, y en la parte 3 [Publicación de nuestro contrato inteligente en Etherscan](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#optional-part-3-publish-your-smart-contract-to-etherscan), veremos como publicar para que todo el mundo sepa cómo interactuar con él.
diff --git a/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
new file mode 100644
index 00000000000..428577b2118
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -0,0 +1,149 @@
+---
+title: Cómo implementar un mercado ERC-721
+description: Cómo poner elementos tokenizados a la venta en un tablero descentralizado de avisos clasificados
+author: "Alberto Cuesta Cañada"
+tags:
+ - "contratos inteligentes"
+ - "erc-721"
+ - "solidity"
+ - "tókenes"
+skill: intermediate
+lang: es
+published: 2020-03-19
+source: Hackernoon
+sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9
+---
+
+En este articulo, les mostraré cómo codificar Craiglist para la cadena de bloques de Ethereum.
+
+Antes de Gumtree, Ebay y Craigslist, los tableros de clasificados estaban hechos principalmente de corcho o papel. Había carteles de anuncios clasificados en los pasillos de las escuelas, periódicos, farolas, escaparates.
+
+Todo eso cambió con Internet. El número de personas que podían ver un tablero, fue multiplicado por muchas órdenes de magnitud. Con eso, el mercado que representa se hizo mucho mas eficiente y escalable globalmente. Ebay es un negocio masivo que tiene sus orígenes en estos tableros de anuncios clasificados físicos.
+
+Con la cadena de bloques, estos mercados están listos para cambiar de nuevo, permíteme mostrarte cómo.
+
+## Monetización {#monetization}
+
+El modelo de negocio de una junta pública de clasificaciones de blockchain tendrá que ser diferente del de Ebay y de la empresa.
+
+Primero, esta [el ángulo de descentralización](/developers/docs/web2-vs-web3/). Las plataformas existentes necesitan mantener sus propios servidores. Una plataforma descentralizada es mantenida por sus usuarios, por lo que el costo de correr la plataforma central cae a cero para el propietario de la plataforma.
+
+Luego está el front-end, el sitio web o interfaz que da acceso a la plataforma. Aquí hay muchas opciones. Los dueños de la plataforma pueden restringir el acceso y obligar a todos a utilizar su interfaz, cobrando una cuota. También pueden decidir abrir el acceso (Poder a la gente!) y dejar que cualquiera construya interfaces a la plataforma. O los dueños pueden decidir cualquier enfoque en medio de esos dos extremos.
+
+_Los líderes empresariales con mayor visión a la mía, sabrán como monetizar esto. Todo lo que veo es que esto es diferente del status quo y probablemente rentable._
+
+Además, existe el ángulo de automatización y pagos. Algunas cosas pueden ser muy [efectivamente tokenizadas](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) e intercambiadas en un tablero de clasificaciones. Los activos tokenizados se transfieren fácilmente en una cadena de bloques. Los métodos de pago altamente complejos se pueden implementar fácilmente en una cadena de bloques.
+
+Sólo estoy aprovechando una oportunidad de negocio aquí. Una tabla clasificada sin gastos de funcionamiento puede ser implementada fácilmente, con complejas rutas de pago incluidas en cada transacción. Estoy seguro de que alguien saldrá con una idea sobre para que usar esto.
+
+Estoy feliz contruyendolo. Echemos un vistazo al código.
+
+## Implementación {#implementation}
+
+Hace algún tiempo iniciamos un [repositorio de código abierto](https://github.com/HQ20/contracts?ref=hackernoon.com) con implementaciones de ejemplos de casos de negocio y otras cosas, por favor, eche un vistazo.
+
+El código de este [Tablón de Clasificados de Ethereum](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com) está ahí, por favor úsalo y abusa de él. Solo hay que tener en cuenta que el código no ha sido auditado y hay que hacer la debida comprobación antes de dejar que el dinero entre en él.
+
+Los fundamentos del tablero no son complejos. Todos los anuncios en el tablero serán sólo una estructura con unos pocos datos:
+
+```solidity
+struct Trade {
+ address poster;
+ uint256 item;
+ uint256 price;
+ bytes32 status; // Open, Executed, Cancelled
+}
+```
+
+Así que hay alguien que publica el anuncio. Un artículo a la venta. Un precio para el artículo. El estado de la operación, que puede ser abierta, ejecutada o cancelada.
+
+Todas estas operaciones se guardarán en un mapeo. Porque todo en Solidity parece ser un mapeo. También porque es conveniente.
+
+```solidity
+mapping(uint256 => Trade) public trades;
+```
+
+El uso de un mapeo sólo significa que tenemos que llegar a una identificación para cada anuncio antes de publicarlo, y necesitaremos saber la identificación de un anuncio antes de poder operar en él. Hay múltiples maneras de tratar esto, ya sea en el contrato inteligente o en el front-end. Por favor, pregunte si necesita algunos datos.
+
+A continuación se plantea la cuestión de cuáles son esos artículos con los que tratamos, y cuál es esa moneda que se utiliza para pagar la transacción.
+
+Para los artículos, sólo vamos a pedir que implementen la interfaz [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com), que realmente es sólo una forma de representar artículos del mundo real en una blockchain, aunque [funciona mejor con activos digitales](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com). Vamos a especificar nuestro propio contrato ERC721 en el constructor, lo que significa que cualquier activo en nuestro tablón de anuncios necesita haber sido tokenizado de forma anticipada.
+
+Para los pagos, vamos a hacer algo parecido. La mayoría de los proyectos de blockchain definen su propia criptomoneda [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com). Otros prefieren utilizar uno convencional como el DAI. En este tablón de anuncios, sólo tienes que decidir en la construcción cuál será tu moneda. Fácil.
+
+```solidity
+constructor (
+ address _currencyTokenAddress, address _itemTokenAddress
+) public {
+ currencyToken = IERC20(_currencyTokenAddress);
+ itemToken = IERC721(_itemTokenAddress);
+ tradeCounter = 0;
+}
+```
+
+Ya lo estamos consiguiendo. Tenemos anuncios, artículos para comercializar y una moneda para hacer pagos. Hacer un anuncio significa poner un artículo en un depósito (escrow) para mostrar que lo tiene y que no lo ha publicado dos veces, posiblemente en un tablero diferente.
+
+El siguiente código hace exactamente eso. Pone el artículo en depósito, crea el anuncio, hace algunas gestiones.
+
+```solidity
+function openTrade(uint256 _item, uint256 _price)
+ public
+{
+ itemToken.transferFrom(msg.sender, address(this), _item);
+ trades[tradeCounter] = Trade({
+ poster: msg.sender,
+ item: _item,
+ price: _price,
+ status: "Open"
+ });
+ tradeCounter += 1;
+ emit TradeStatusChange(tradeCounter - 1, "Open");
+}
+```
+
+Aceptar la comercialización significa elegir un anuncio (comercializar), pagar el precio y recibir el objeto. El código de abajo recupera una operación. Comprueba su disponibilidad. Paga el objeto. Recupera el objeto. Actualiza el anuncio.
+
+```solidity
+function executeTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(trade.status == "Abierto", "El comercio no está abierto.");
+ currencyToken.transferFrom(msg.sender, trade.poster, trade.price);
+ itemToken.transferFrom(address(this), msg.sender, trade.item);
+ trades[_trade].status = "Ejecutado";
+ emit TradeStatusChange(_trade, "Ejecutado");
+}
+```
+
+Por último, tenemos la opción de que los vendedores cancelen una operación antes de que el comprador la acepte. En algunos modelos, los anuncios estarían publicados en cambio durante un período de tiempo antes de que caduquen. Es su elección, dependiendo del diseño de su mercado.
+
+El código es muy similar al usado para ejecutar una operación, solo que no hay moneda y el artículo vuelve a quien publicó el anuncio.
+
+```solidity
+function cancelTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(
+ msg.sender == trade.poster,
+ "Trade can be cancelled only by poster."
+ );
+ require(trade.status == "Open", "Trade is not Open.");
+ itemToken.transferFrom(address(this), trade.poster, trade.item);
+ trades[_trade].status = "Cancelled";
+ emit TradeStatusChange(_trade, "Cancelled");
+}
+```
+
+Eso es todo. Ha llegado al final de la implementación. Es bastante sorprendente lo compactos que son algunos conceptos de negocio cuando se expresan en código, y este es uno de esos casos. Revise el contrato completo [en nuestro repositorio](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol).
+
+## Conclusión {#conclusion}
+
+Los tableros de anuncios clasificados son una configuración de mercado común que creció enormemente con Internet, convirtiéndose en un modelo de negocio altamente popular con unos pocos ganadores monopolísticos.
+
+Los tableros de anuncios clasificados también resultan ser una herramienta fácil de replicar en un entorno de cadena de bloques, con características muy específicas que harán posible un desafío a los gigantes existentes.
+
+En este artículo, he tratado de conectar la realidad del negocio de los tableros de anuncios clasificados con la implementación tecnológica. Este conocimiento debería ayudarle a crear una visión y un mapa de ruta para la implementación si tiene las habilidades adecuadas.
+
+Como siempre, si quiere crear algo divertido y le gustaría recibir algún consejo, [envíeme un mensaje](https://albertocuesta.es/), será bienvenido. Siempre estoy encantado de ayudar.
diff --git a/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
new file mode 100644
index 00000000000..9b87f91c40f
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -0,0 +1,106 @@
+---
+title: Cómo simular contratos inteligentes de Solidity para probarlos
+description: '¿Por qué debería burlarse de sus contratos al probarlos?'
+author: Markus Waas
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "pruebas"
+ - "simular"
+skill: intermediate
+published: 2020-05-02
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/mocking-contracts
+---
+
+[Los objetos simulados](https://wikipedia.org/wiki/Mock_object) son un patrón de diseño común en la programación orientada a objetos. Viene de la antigua palabra francesa «mocquer» con el significado de «reírse de algo» y evolucionó a «imitar a algo real» que es, en realidad, lo que hacemos en programación. Por tanto, ríase todo lo que quiera de sus contratos inteligentes si quieres, pero simúlelos siempre que pueda. ¡Le simplifica la vida!
+
+## Pruebas unitarias de contratos con simulaciones {#unit-testing-contracts-with-mocks}
+
+Simular un contrato significa básicamente crear una segunda versión del contrato que se comporta de manera muy similar al original, pero de una forma que el desarrollador puede controlar fácilmente. A menudo suele uno acabar con contratos complejos cuando lo único que quiere es [ hacer pruebas unitarias en partes pequeñas del contrato.](/developers/docs/smart-contracts/testing/). El problema es: ¿qué sucedería si esta pequeña parte requiere un estado de contrato muy específico que es complicado para comenzar?
+
+Puede escribir una lógica de configuración de prueba compleja cada vez que el contrato se encuentre en el estado requerido, o escriba una simulación. Simular un contrato es fácil con herencia. Simplemente crea un segundo contrato simulado que hereda del original. Ahora puede sobrescribir funciones a su imitación. Veámoslo mejor poniendo un ejemplo.
+
+## Ejemplo: ERC20 privado {#example-private-erc20}
+
+Usamos el ejemplo de un contrato ERC-20 que tiene un tiempo inicial privado. El propietario puede administrar usuarios privados y solo ellos estarán autorizados a recibir tókenes al principio. Una vez transcurrido un periodo específico, cualquiera podrá usar los tókenes. Si le pica la curiosidad, estamos usando el hook [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/3.x/extending-contracts#using-hooks) de los nuevos contratos v3 de OpenZeppelin.
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/Ownable.sol";
+
+contract PrivateERC20 is ERC20, Ownable {
+ mapping (address => bool) public isPrivateUser;
+ uint256 private publicAfterTime;
+
+ constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public {
+ publicAfterTime = now + privateERC20timeInSec;
+ }
+
+ function addUser(address user) external onlyOwner {
+ isPrivateUser[user] = true;
+ }
+
+ function isPublic() public view returns (bool) {
+ return now >= publicAfterTime;
+ }
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
+ super._beforeTokenTransfer(from, to, amount);
+
+ require(_validRecipient(to), "PrivateERC20: invalid recipient");
+ }
+
+ function _validRecipient(address to) private view returns (bool) {
+ if (isPublic()) {
+ return true;
+ }
+
+ return isPrivateUser[to];
+ }
+}
+```
+
+Y ahora vamos a simularlo.
+
+```solidity
+pragma solidity ^0.6.0;
+import "../PrivateERC20.sol";
+
+contract PrivateERC20Mock is PrivateERC20 {
+ bool isPublicConfig;
+
+ constructor() public PrivateERC20(0) {}
+
+ function setIsPublic(bool isPublic) external {
+ isPublicConfig = isPublic;
+ }
+
+ function isPublic() public view returns (bool) {
+ return isPublicConfig;
+ }
+}
+```
+
+Recibirás uno de los siguientes mensajes de error:
+
+- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.`
+- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.`
+
+Ya que estamos usando la nueva versión 0.6 de Solidity, tenemos que añadir la palabra clave `virtual` para funciones que puedan ser sobrescritas y sobrescribir para la función de sobrescribir. Entonces, añadámoslas a ambas funciones `isPublic`.
+
+Ahora, en sus pruebas unitarias, puede usar `PrivateERC20Mock` en su lugar. Cuando quiera probar el comportamiento durante un tiempo privado de uso, utilice `setIsPublic(false)` al igual que `setIsPublic(true)` para probar el tiempo público de uso. Por supuesto, en nuestro ejemplo también podemos usar únicamente [ayudas de tiempo](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) para cambiar los tiempos según corresponda. Esperamos que la idea de simular le haya quedado ahora clara y puede imaginar situaciones en las que todo no es tan sencillo como simplemente hacer avanzar el tiempo.
+
+## Simular varios contratos {#mocking-many-contracts}
+
+Puede volverse un tanto caótico si tiene que crear otro contrato para cada imitación única. Si esto le preocupa, puede revisar la biblioteca [MockContract](https://github.com/gnosis/mock-contract). Le permite sobrescribir y cambiar los comportamientos de los contratos sobre la marcha. Sin embargo, esto solo funciona para simular la activación de otro contrato, por lo que no funcionará para nuestro ejemplo.
+
+## Simular puede ser aún más eficaz {#mocking-can-be-even-more-powerful}
+
+Los poderes de la simulación no terminan aquí.
+
+- Añadir funciones: no solo sobrescribir una función específica es útil, también lo es añadir funciones adicionales. Un buen ejemplo para los tókenes es contar con una función adicional `mint` para permitir a cualquier usuario consiga los nuevos tókenes sin coste.
+- Uso en redes de prueba: cuando implemente y pruebe sus contratos en redes de pruebas junto con su DApp, considere el usar una versión simulada. Evita el tener que sobreescribir las funciones, a menos que sea realmente necesario. Al fin y al cabo, se trata de probar la lógica real. Pero agregar, por ejemplo, una función de reinicio puede ser útil para simplemente restablecer el contrato a su estado inicial, sin requerir un nuevo despliegue. Obviamente, no haría eso en un contrato de red principal.
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
new file mode 100644
index 00000000000..695e39d0c43
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -0,0 +1,693 @@
+---
+title: Cómo utilizar Echidna para probar contratos inteligentes
+description: Cómo utilizar Echidna para probar smart contracts automáticamente
+author: "Trailofbits"
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "seguridades"
+ - "pruebas"
+ - "auditorías de seguridad"
+skill: advanced
+published: 2020-10-04
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna
+---
+
+## Instalación {#installation}
+
+Echidna se puede instalar a través de docker o por medio del binario precompilado.
+
+### Echidna a través de docker {#echidna-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_El comando de arriba ejecuta eth-security-toolbox en un docker que tiene acceso a tu directorio actual. Puedes cambiar los archivos desde tu host y correr las herramientas dentro de los archivos desde docker_
+
+Dentro de docker, ejecuta:
+
+```bash
+solc-select 0.5.11
+cd /home/training
+```
+
+### Binario {#binary}
+
+[https://github.com/crytic/echidna/releases/tag/v1.4.0.0](https://github.com/crytic/echidna/releases/tag/v1.4.0.0)
+
+## Introducción a las auditorías de seguridad basadas en propiedades {#introduction-to-property-based-fuzzing}
+
+Echidna es un auditor basado en propiedades, está descrito en nuestros blogposts anteriores ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/)).
+
+### Fuzzing (auditoría de seguridad) {#fuzzing}
+
+[Fuzzing](https://wikipedia.org/wiki/Fuzzing) es una técnica conocida en la comunidad de la seguridad. Esta consiste en la generación de entradas que son más o menos aleatorias para encontrar errores en el programa. Se sabe que software tradicional (como [AFL](http://lcamtuf.coredump.cx/afl/) o [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) son herramientas eficientes para encontrar errores.
+
+Más allá de la generación de insumos aleatorios, existen muchas técnicas y estrategias para generar insumos validos, que incluyen:
+
+- Obtener retroalimentación de cada ejecución y generación de guías usándola. Por ejemplo, si una entrada recién generada conduce al descubrimiento de una nueva ruta, puede tener sentido generar nuevas entradas más cercanas a ella.
+- Generando la entrada respetando una restricción estructural. Por ejemplo, si su entrada contiene un encabezado con una suma de control, tendrá sentido dejar que el fuzzer genere una entrada que valide la suma de control.
+- Uso de entradas conocidas para generar nuevas entradas: si tienes acceso a un gran conjunto de datos de entrada válida, tu fuzzer puede generar nuevas entradas a partir de ellos, en lugar de comenzar la generación desde cero. Estas se conocen usualmente como _seeds_.
+
+### Fuzzing basado en propiedades {#property-based-fuzzing}
+
+Echidna pertenece a una familia específica de fuzzer: fuzzing basado en propiedades inspiradas en [QuickCheck](https://wikipedia.org/wiki/QuickCheck). En contraste a un fuzzer de legado que intentará encontrar bloqueos, Echidna intentará romper invariantes definidas por el usuario.
+
+En smart contracts, las invariantes son funciones de Solidity, que pueden representar cualquier estado incorrecto o inválido al que el contrato pueda llegar, incluyendo:
+
+- Control de acceso erróneo: el atacante se convierte en el propietario del contrato.
+- Estado de máquina incorrecto: fichas pueden ser transferidas mientras el contrato está en pausa.
+- Aritmética incorrecta: el usuario puede rebasar su saldo y obtener fichas gratis ilimitadas.
+
+### Probando una propiedad con Echidna {#testing-a-property-with-echidna}
+
+Veremos cómo probar un smart contract con Echidna. El objetivo es el siguiente smart contract [`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol):
+
+```solidity
+contract Token{
+ mapping(address => uint) public balances;
+ function airdrop() public{
+ balances[msg.sender] = 1000;
+ }
+ function consume() public{
+ require(balances[msg.sender]>0);
+ balances[msg.sender] -= 1;
+ }
+ function backdoor() public{
+ balances[msg.sender] += 1;
+ }
+}
+```
+
+Supondremos que esta ficha debe tener las siguientes propiedades:
+
+- Cualquier persona puede tener como máximo 1000 fichas
+- La ficha no puede ser transferida (no es una ficha ERC20)
+
+### Escribe una propiedad {#write-a-property}
+
+Las propiedades de Echidna son funciones de Solidity. Una propiedad debe:
+
+- No tener ningún argumento
+- Devolver `true` si es exitosa
+- Que su nombre comience con ` echidna `
+
+Echidna va a:
+
+- Automáticamente generar transacciones arbitrarias para probar la propiedad.
+- Reportar cualquier transacción que lleve a una propiedad a devolver ` false ` o arrojar un error.
+- Descartar efectos secundarios al llamar a una propiedad (es decir, si la propiedad cambia una variable de estado, se descarta después de la prueba)
+
+La siguiente propiedad comprueba que el llamador no tenga más de 1000 fichas:
+
+```solidity
+function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+}
+```
+
+Usa herencia para separar tu contrato de tus propiedades:
+
+```solidity
+contract TestToken is Token{
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) implementa la propiedad y hereda de la ficha.
+
+### Inicia un contrato {#initiate-a-contract}
+
+Echidna necesita un [constructor](/developers/docs/smart-contracts/anatomy/#constructor-functions) sin argumento. Si tu contrato necesita una inicialización específica, debes hacerlo en el constructor.
+
+Hay algunas direcciones específicas en Echidna:
+
+- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72` la cual llama al constructor.
+- `0x10000`, `0x20000`, y `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` que llama de forma aleatoria a las otras funciones.
+
+No necesitamos ninguna inicialización en particular en nuestro ejemplo actual, como resultado, nuestro constructor está vacío.
+
+### Ejecuta Echidna {#run-echidna}
+
+Echidna se inicial con:
+
+```bash
+echidna-test contract.sol
+```
+
+Si contract.sol contiene varios contratos, puedes especificar el objetivo:
+
+```bash
+echidna-test contract.sol --contract MyContract
+```
+
+### Resumen: Probando una propiedad {#summary-testing-a-property}
+
+A continuación se resume la ejecución de echidna en nuestro ejemplo:
+
+```solidity
+contract TestToken is Token{
+ constructor() public {}
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+```bash
+echidna-test testtoken.sol --contract TestToken
+...
+
+echidna_balance_under_1000: failed!💥
+ Call sequence, shrinking (1205/5000):
+ airdrop()
+ backdoor()
+
+...
+```
+
+Echidna descubrió que la propiedad se viola si se llama a ` backdoor `.
+
+## Filtrado de funciones para llamar durante una campaña fuzzing {#filtering-functions-to-call-during-a-fuzzing-campaign}
+
+Veremos cómo filtrar las funciones a ser "fuzzed". El objetivo es el siguiente smart contract:
+
+```solidity
+contract C {
+ bool state1 = false;
+ bool state2 = false;
+ bool state3 = false;
+ bool state4 = false;
+
+ function f(uint x) public {
+ require(x == 12);
+ state1 = true;
+ }
+
+ function g(uint x) public {
+ require(state1);
+ require(x == 8);
+ state2 = true;
+ }
+
+ function h(uint x) public {
+ require(state2);
+ require(x == 42);
+ state3 = true;
+ }
+
+ function i() public {
+ require(state3);
+ state4 = true;
+ }
+
+ function reset1() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function reset2() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function echidna_state4() public returns (bool) {
+ return (!state4);
+ }
+}
+```
+
+Este pequeño ejemplo obliga a Echidna a encontrar una secuencia determinada de transacciones para cambiar una variable de estado. Esto es difícil para un fuzzer (se recomienda utilizar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos ejecutar Echidna para verificar esto:
+
+```bash
+echidna-test multi.sol
+...
+echidna_state4: passed! 🎉
+Seed: -3684648582249875403
+```
+
+### Filtrando funciones {#filtering-functions}
+
+Echidna tiene problemas para encontrar la secuencia correcta para probar este contrato porque las dos funciones de reinicio (`reset1` y `reset2`) establecerán todas las variables de estado a `false`. Sin embargo, podemos usar una función especial de Echidna para crear un blacklist de la función de reinicio o para crear un whitelist con las funciones `f`, `g`, `h` y `i`.
+
+Para incluir funciones en la blacklist, podemos usar este archivo de configuración:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["reset1", "reset2"]
+```
+
+Otro enfoque para filtrar funciones es enumerar las funciones incluidas en la whitelist. Para ello, podemos utilizar este archivo de configuración:
+
+```yaml
+filterBlacklist: false
+filterFunctions: ["f", "g", "h", "i"]
+```
+
+- `filterBlacklist` es `true` de forma predeterminada.
+- El filtrado se realizará únicamente por nombre (sin parámetros). Si tienes `f()` y `f(uint256)`, el filtro `"f"` coincidirá con ambas funciones.
+
+### Ejecuta Echidna {#run-echidna-1}
+
+Para ejecutar Echidna con un archivo de configuración `blacklist.yaml`:
+
+```bash
+echidna-test multi.sol --config blacklist.yaml
+...
+echidna_state4: failed!💥
+ Call sequence:
+ f(12)
+ g(8)
+ h(42)
+ i()
+```
+
+Echidna encontrará la secuencia de transacciones para falsificar la propiedad casi de inmediato.
+
+### Resumen: Filtrando funciones {#summary-filtering-functions}
+
+Echidna puede incluir funciones en una blacklist o una whitelist para llamar durante una campaña de fuzzing utilizando:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["f1", "f2", "f3"]
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+Echidna comienza una campaña de fuzzing, ya sea "blacklisting" `f1`, `f2` y `f3` o solo los llama, según al valor del booleano (tipo de dato lógico) `filterBlacklist`.
+
+## Cómo probar la afirmación de Solidity con Echidna {#how-to-test-soliditys-assert-with-echidna}
+
+En este breve tutorial, mostraremos cómo usar Echidna para probar la verificación de afirmaciones en contratos. Supongamos que tenemos un contrato como este:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ // tmp <= counter
+ return (counter - tmp);
+ }
+}
+```
+
+### Escribe una afirmación {#write-an-assertion}
+
+Queremos asegurarnos de que `tmp` sea menor o igual que `counter` después de devolver su diferencia. Podríamos escribir una propiedad de Echidna, pero tendremos que almacenar el valor `tmp` en algún lugar. En su lugar, podríamos usar una afirmación como esta:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+### Ejecuta Echidna {#run-echidna-2}
+
+Para habilitar la prueba de fracaso de la afirmación, crea un [archivo de configuración de Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+
+```yaml
+checkAsserts: true
+```
+
+Al ejecutar este contrato en Echidna obtenemos los resultados esperados:
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+Como puedes ver, Echidna informa de un error de afirmación en la función `inc`. Es posible agregar más de una afirmación por función, pero Echidna no puede distinguir cual afirmación falló.
+
+### Cómo y cuándo utilizar afirmaciones {#when-and-how-use-assertions}
+
+Las afirmaciones pueden usarse como alternativas a propiedades explícitas, especialmente si las condiciones a verificar están directamente relacionadas con el uso correcto de alguna operación `f`. Agregar afirmaciones luego de un poco de código hará que la verificación suceda inmediatamente después de la ejecución:
+
+```solidity
+function f(..) public {
+ // some complex code
+ ...
+ assert (condition);
+ ...
+}
+
+```
+
+Por el contrario, el uso de una propiedad explícita de echidna ejecutará transacciones de forma aleatoria y no hay una manera fácil de asegurar exactamente cuándo esta se comprobará. Es posible utilizar esta alternativa:
+
+```solidity
+function echidna_assert_after_f() public returns (bool) {
+ f(..);
+ return(condition);
+}
+```
+
+Sin embargo, existen algunos problemas:
+
+- Falla si `f` se declara como `internal` o `external`.
+- No está claro qué argumentos deben usarse para llamar a `f`.
+- Si `f` se revierte, la propiedad fallará.
+
+En general, recomendamos seguir la [recomendación de John Regehr](https://blog.regehr.org/archives/1091) sobre cómo utilizar las afirmaciones:
+
+- No forces ningún efecto secundario durante la verificación de afirmaciones. Por ejemplo: `assert(ChangeStateAndReturn() == 1)`
+- No hagas afirmaciones obvias. Por ejemplo `assert(var >= 0)` donde `var` es declarado como `uint`.
+
+Por último, **no utilices** `require` en lugar de `assert`, ya que Echidna no podrá detectarlo (pero el contrato se revertirá de todos modos).
+
+### Resumen: verificación de afirmaciones {#summary-assertion-checking}
+
+A continuación, se resume la ejecución de echidna en nuestro ejemplo:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+Echidna descubrió que la aserción en `inc` puede fallar si se llama a esta función varias veces con argumentos grandes.
+
+## Recolectar y modificar un corpus de Echidna {#collecting-and-modifying-an-echidna-corpus}
+
+Veremos cómo recopilar y utilizar un corpus de transacciones con Echidna. El objetivo es el siguiente smart contract [`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol):
+
+```solidity
+contract C {
+ bool value_found = false;
+ function magic(uint magic_1, uint magic_2, uint magic_3, uint magic_4) public {
+ require(magic_1 == 42);
+ require(magic_2 == 129);
+ require(magic_3 == magic_4+333);
+ value_found = true;
+ return;
+ }
+
+ function echidna_magic_values() public returns (bool) {
+ return !value_found;
+ }
+
+}
+```
+
+El ejemplo a continuación obliga a Echidna a encontrar ciertos valores para cambiar una variable de estado. Esto es difícil para un fuzzer (se recomienda utilizar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos ejecutar Echidna para verificar esto:
+
+```bash
+echidna-test magic.sol
+...
+
+echidna_magic_values: passed! 🎉
+
+Seed: 2221503356319272685
+```
+
+Sin embargo, aún podemos usar Echidna para recolectar el corpus cuando ejecutemos esta campaña de fuzzing.
+
+### Recolectando un corpus {#collecting-a-corpus}
+
+Para habilitar la recolección de un corpus, crea un directorio de corpus:
+
+```bash
+mkdir corpus-magic
+```
+
+Y un [archivo de configuración de Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+
+```yaml
+coverage: true
+corpusDir: "corpus-magic"
+```
+
+Ahora podemos ejecutar nuestra herramienta y verificar el corpus recopilado:
+
+```bash
+echidna-test magic.sol --config config.yaml
+```
+
+Echidna aún no puede encontrar los valores mágicos correctos, pero podemos ver el corpus que recopiló. Por ejemplo, uno de estos archivos era:
+
+```json
+[
+ {
+ "_gas'": "0xffffffff",
+ "_delay": ["0x13647", "0xccf6"],
+ "_src": "00a329c0648769a73afac7f9381e08fb43dbea70",
+ "_dst": "00a329c0648769a73afac7f9381e08fb43dbea72",
+ "_value": "0x0",
+ "_call": {
+ "tag": "SolCall",
+ "contents": [
+ "magic",
+ [
+ {
+ "contents": [
+ 256,
+ "93723985220345906694500679277863898678726808528711107336895287282192244575836"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [256, "334"],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [
+ 256,
+ "68093943901352437066264791224433559271778087297543421781073458233697135179558"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "tag": "AbiUInt",
+ "contents": [256, "332"]
+ }
+ ]
+ ]
+ },
+ "_gasprice'": "0xa904461f1"
+ }
+]
+```
+
+Claramente, esta entrada no provocará la falla en nuestra propiedad. Sin embargo, en el siguiente paso veremos cómo modificarla para ello.
+
+### Sembrando un corpus {#seeding-a-corpus}
+
+Echidna necesita ayuda para lidiar con la función `magic`. Vamos a copiar y modificar la entrada para usar los parámetros adecuados para ella:
+
+```bash
+cp corpus/2712688662897926208.txt corpus/new.txt
+```
+
+Modificaremos `new.txt` para llamar a `magic (42,129,333,0)`. Ahora, podemos volver a ejecutar Echidna:
+
+```bash
+echidna-test magic.sol --config config.yaml
+...
+echidna_magic_values: failed!💥
+ Call sequence:
+ magic(42,129,333,0)
+
+
+Unique instructions: 142
+Unique codehashes: 1
+Seed: -7293830866560616537
+
+```
+
+En esta ocasión, encontró que la propiedad es violada inmediatamente.
+
+## Encontrando transacciones con alto consumo de gas {#finding-transactions-with-high-gas-consumption}
+
+Veremos cómo encontrar las transacciones con un alto consumo de gas utilizando Echidna. El objetivo es el siguiente smart contract:
+
+```solidity
+contract C {
+ uint state;
+
+ function expensive(uint8 times) internal {
+ for(uint8 i=0; i < times; i++)
+ state = state + i;
+ }
+
+ function f(uint x, uint y, uint8 times) public {
+ if (x == 42 && y == 123)
+ expensive(times);
+ else
+ state = 0;
+ }
+
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+
+}
+```
+
+Aquí `expensive` puede tener un gran consumo de gas.
+
+Actualmente, Echidna siempre necesita una propiedad para probar: aquí `echidna_test` siempre devuelve `true`. Podemos ejecutar Echidna para verificar:
+
+```
+echidna-test gas.sol
+...
+echidna_test: passed! 🎉
+
+Seed: 2320549945714142710
+```
+
+### Midiendo el consumo de gas {#measuring-gas-consumption}
+
+Para activar el consumo de gas con Echidna, creamos un archivo de configuración `config.yaml`:
+
+```yaml
+estimateGas: true
+```
+
+En este ejemplo, también reduciremos el tamaño de la secuencia de la transacción para que los resultados sean más fáciles de entender:
+
+```yaml
+seqLen: 2
+estimateGas: true
+```
+
+### Ejecuta Echidna {#run-echidna-3}
+
+Una vez que tenemos el archivo de configuración creado, podemos ejecutar Echidna así:
+
+```bash
+echidna-test gas.sol --config config.yaml
+...
+echidna_test: passed! 🎉
+
+f used a maximum of 1333608 gas
+ Call sequence:
+ f(42,123,249) Gas price: 0x10d5733f0a Time delay: 0x495e5 Block delay: 0x88b2
+
+Unique instructions: 157
+Unique codehashes: 1
+Seed: -325611019680165325
+
+```
+
+- El gas que se muestra es una estimación proporcionada por [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-).
+
+### Filtrando llamadas de reducción de gas {#filtering-out-gas-reducing-calls}
+
+El tutorial sobre **funciones de filtrado para llamar durante una campaña de fuzzing** anterior muestra cómo eliminar algunas funciones de sus pruebas.
+Esto puede ser fundamental para obtener una estimación precisa del gas. Considera el siguiente ejemplo:
+
+```solidity
+contract C {
+ address [] addrs;
+ function push(address a) public {
+ addrs.push(a);
+ }
+ function pop() public {
+ addrs.pop();
+ }
+ function clear() public{
+ addrs.length = 0;
+ }
+ function check() public{
+ for(uint256 i = 0; i < addrs.length; i++)
+ for(uint256 j = i+1; j < addrs.length; j++)
+ if (addrs[i] == addrs[j])
+ addrs[j] = address(0x0);
+ }
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+}
+```
+
+Si Echidna puede llamar a todas las funciones, no encontrará fácilmente transacciones con un alto costo de gas:
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+pop used a maximum of 10746 gas
+...
+check used a maximum of 23730 gas
+...
+clear used a maximum of 35916 gas
+...
+push used a maximum of 40839 gas
+```
+
+Eso es porque el costo depende del tamaño de ` addrs ` y las llamadas aleatorias tienden a dejar el vector casi vacío. Sin embargo, incluir `pop` y `clear` en un blacklist nos da mejores resultados:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["pop", "clear"]
+```
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+push used a maximum of 40839 gas
+...
+check used a maximum of 1484472 gas
+```
+
+### Resumen: Buscando transacciones con alto consumo de gas {#summary-finding-transactions-with-high-gas-consumption}
+
+Echidna puede encontrar transacciones con un alto consumo de gas utilizando la opción de configuración `estimateGas`:
+
+```yaml
+estimateGas: true
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+Echidna reportará una secuencia con el consumo máximo de gas para cada función, una vez finalizada la campaña de fuzzing.
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..69bee3261fc
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,515 @@
+---
+title: Cómo usar Manticore para encontrar errores en contratos inteligentes
+description: Cómo usar Manticore para encontrar automáticamente errores en contratos inteligentes
+author: Trailofbits
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "seguridades"
+ - "pruebas"
+ - "verificación formal"
+skill: advanced
+published: 2020-01-13
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore
+---
+
+El objetivo de este tutorial es mostrar cómo se usa Manticore para encontrar errores automáticamente en los contratos inteligentes.
+
+## Instalación {#installation}
+
+Manticore requiere >= python 3.6. Se puede instalar a través de pip o usando docker.
+
+### Manticore a través de docker {#manticore-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_El comando de arriba ejecuta eth-security-toolbox en un docker que tiene acceso a tu directorio actual. Puedes cambiar los archivos desde tu host y correr las herramientas dentro de los archivos desde docker_
+
+Al estar en el docker, ejecute:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### Manticore a través de pip {#manticore-through-pip}
+
+```bash
+pip3 install --user manticore
+```
+
+Se recomienda solc 0.5.11.
+
+### Ejecutando un script {#running-a-script}
+
+Ejecutando un script python con python 3:
+
+```bash
+python3 script.py
+```
+
+## Introducción a la ejecución simbólica dinámica {#introduction-to-dynamic-symbolic-execution}
+
+### Descripción breve de la ejecución simbólica dinámica {#dynamic-symbolic-execution-in-a-nutshell}
+
+La ejecución simbólica dinámica (DSE) es una técnica de análisis de programas que explora un espacio de estados con un alto grado de conciencia semántica. Esta técnica se basa en el descubrimiento de "rutas del programa" representadas con fórmulas matemáticas denominadas `path predicates`. Conceptualmente, esta técnica opera en predicados de ruta en dos pasos:
+
+1. Contruyéndolos con restricciones sobre la entrada del programa.
+2. Usándolos para generar entradas del programa para ejecutar las rutas asociadas.
+
+Este enfoque previene falsos positivos porque todos los estados de programa identificados se pueden activar durante la ejecución concreta. Por ejemplo, si el análisis encuentra un desbordamiento de enteros, se garantiza que sea reproducible.
+
+### Ejemplo de predicado de ruta {#path-predicate-example}
+
+Para conocer el funcionamiento de la DSE, considere el siguiente ejemplo:
+
+```solidity
+function f(uint a){
+
+ if (a == 65) {
+ // A bug is present
+ }
+
+}
+```
+
+Como `f()` contiene dos rutas, una DSE construirá dos predicados de ruta diferentes:
+
+- Ruta 1: `a == 65`
+- Ruta 2: `Not (a == 65)`
+
+Cada predicado de ruta es una fórmula matemática que puede ser dada a un [resolutor de SMT](https://wikipedia.org/wiki/Satisfiability_modulo_theories), que intentará resolver la ecuación. En `Path 1`, el resolutor dirá que la ruta puede ser explorada con `a = 65`. En `Path 2`, el resolutor puede dar a `a` cualquier valor distinto de 65, por ejemplo, `a = 0`.
+
+### Verificación de propiedades {#verifying-properties}
+
+Manticore permite control pleno sobre toda la ejecución de cada ruta. Como resultado, permite añadir restricciones arbitrarias a casi cualquier cosa. Este control permite la creación de propiedades en el contrato.
+
+Considere el siguiente ejemplo:
+
+```solidity
+function unsafe_add(uint a, uint b) returns(uint c){
+ c = a + b; // sin protección de desbordamiento
+ return c;
+}
+```
+
+Aquí solo hay un camino para explorar en la función:
+
+- Ruta 1: `c = a + b`
+
+Usando Manticore se puede comprobar si hay desbordamiento y añadir restricciones al predicado de ruta:
+
+- `c = a + b AND (c < a OR c < b)`
+
+Si es posible encontrar un valor de `a` y `b` donde el predicado de ruta de arriba sea factible, significa que se ha encontrado un desbordamiento. Por ejemplo, el solucionador puede generar la entrada `a = 10 , b = MAXUINT256`.
+
+Si considera una versión corregida:
+
+```solidity
+function safe_add(uint a, uint b) returns(uint c){
+ c = a + b;
+ require(c>=a);
+ require(c>=b);
+ return c;
+}
+```
+
+La fórmula asociada con la comprobación de desbordamiento sería:
+
+- `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)`
+
+Esta fórmula no se puede resolver; en otro estadio esto es una **prueba** de que en `safe_add`, `c` siempre aumentará.
+
+DSE es una potente herramienta que puede verificar restricciones arbitrarias en el código.
+
+## Ejecutando bajo Mantícora {#running-under-manticore}
+
+Veamos cómo explorar un contrato inteligente con la API Manticore. El objetivo es el siguiente smart contract [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Ejecute una exploración independiente {#run-a-standalone-exploration}
+
+Ejecute Manticore directamente en el contrato inteligente con el siguiente comando (`project` que puede ser un Solidity File o un roject directory):
+
+```bash
+$ manticore project
+```
+
+Obtendrá una salida de casos de prueba como esta (el orden puede cambiar):
+
+```
+...
+... m.c.manticore:INFO: Generated testcase No. 0 - STOP
+... m.c.manticore:INFO: Generated testcase No. 1 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 2 - RETURN
+... m.c.manticore:INFO: Generated testcase No. 3 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 4 - STOP
+... m.c.manticore:INFO: Generated testcase No. 5 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 6 - REVERT
+... m.c.manticore:INFO: Results in /home/ethsec/workshops/Automated Smart Contracts Audit - TruffleCon 2018/manticore/examples/mcore_t6vi6ij3...
+```
+
+Sin información adicional, Manticore va a explorar el contrato con nuevas transacciones simbólicas hasta que no haya nuevas rutas en el contrato. Manticore no ejecutará nuevas transacciones después de una fallida (por ejemplo: después de una reversión).
+
+Manticore mostrará la información en un directorio `mcore_*`. Entre otros, encontrará en este directorio:
+
+- `global.summary`: cobertura y advertencias del compilador
+- `test_XXXX.summary`: cobertura, última instrucción, balance de cuenta por caso de prueba
+- `test_XXXX.tx`: lista detallada de transacciones por caso de prueba
+
+Aquí Manticore encuentra 7 casos de prueba que corresponden (el orden de nombres de archivo puede cambiar):
+
+| | Transacción 0 | Transacción 1 | Transacción 2 | Resultado |
+|:--------------------:|:--------------------:|:------------------:| ------------------ |:---------:|
+| **test_00000000.tx** | Creación de contrato | f(!=65) | f(!=65) | DETENER |
+| **test_00000001.tx** | Creación de contrato | función de reserva | | REVERTIR |
+| **test_00000002.tx** | Creación de contrato | | | REGRESAR |
+| **test_00000003.tx** | Creación de contrato | f(65) | | REVERTIR |
+| **test_00000004.tx** | Creación de contrato | f(!=65) | | DETENER |
+| **test_00000005.tx** | Creación de contrato | f(!=65) | f(65) | REVERTIR |
+| **test_00000006.tx** | Creación de contrato | f(!=65) | función de reserva | REVERTIR |
+
+_Resumen de exploración f(!=65) muestra f llamada con cualquier valor diferente a 65._
+
+Como se ve, Manticore genera un caso de prueba único para cada transacción exitosa o revertida.
+
+Use la marca `--quick-mode` si desea una exploración rápida de código (deshabilita los detectores de errores, el cálculo de gas, ...)
+
+### Manipular un contrato inteligente a través de la API {#manipulate-a-smart-contract-through-the-api}
+
+Esta sección describe los detalles para manipular un contrato inteligente a través de la API de Manticore Python. Se puede crear un nuevo archivo con la extensión python `*.py` y escribir el código necesario agregando los comandos API (los básicos que se describen a continuación) en este archivo y luego ejecutarlo con el comando `$ python3 *.py`. También puede ejecutar los siguientes comandos directamente en la consola python, ejecutando el comando `$ python3`.
+
+### Creación de cuentas {#creating-accounts}
+
+Lo primero es iniciar un nuevo blockchain con los siguientes comandos:
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+```
+
+Se crea una cuenta sin contrato con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
+
+```python
+user_account = m.create_account(balance=1000)
+```
+
+Se despliega un Solidity contract usando [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract):
+
+```solidity
+source_code = '''
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+'''
+# Initiate the contract
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+```
+
+#### Resumen {#summary}
+
+- Puedes crear cuentas de usuario y contratos con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) y [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
+
+### Ejecución de transacciones {#executing-transactions}
+
+Manticore admite dos tipos de transacción:
+
+- Transacción en bruto (raw): se exploran todas las funciones
+- Transacción con nombre: solo se explora una función
+
+#### Transacción en bruto {#raw-transaction}
+
+La transacción en bruto se ejecuta usando [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction):
+
+```python
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=data,
+ value=value)
+```
+
+El invocante, la dirección, los datos o el valor de la transacción pueden ser tanto concretos como simbólicos:
+
+- [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) crea un valor simbólico.
+- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) crea un array de bytes simbólico.
+
+Por ejemplo:
+
+```python
+symbolic_value = m.make_symbolic_value()
+symbolic_data = m.make_symbolic_buffer(320)
+m.transaction(caller=user_account,
+ address=contract_address,
+ data=symbolic_data,
+ value=symbolic_value)
+```
+
+Si los datos son simbólicos, Manticore explorará todas las funciones del contrato durante la ejecución de la transacción. Es útil ver la explicación de la función Fallback en el artículo [Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/) para entender cómo funciona la selección de funciones.
+
+#### Transacción con nombre {#named-transaction}
+
+Las funciones pueden ejecutarse a través de su nombre. Para ejecutar `f(uint var)` con un valor simbólico, de user_account y con 0 ether, use:
+
+```python
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var, caller=user_account, value=0)
+```
+
+Si `value` de la transacción no se especifica, es 0 por defecto.
+
+#### Resumen {#summary-1}
+
+- Los argumentos de una transacción pueden ser concretos o simbólicos
+- Una transacción en bruto explorará todas las funciones
+- La función puede ser llamada por su nombre
+
+### Workspace {#workspace}
+
+`m.workspace` es el directorio usado como directorio de salida para todos los archivos generados:
+
+```python
+print("Results are in {}".format(m.workspace))
+```
+
+### Terminar la exploración {#terminate-the-exploration}
+
+Para detener la exploración, use [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize). No se deben enviar más transacciones cuando se llama a este método, y Manticore genera casos de prueba para cada una de las rutas exploradas.
+
+### Resumen: ejecutar con Manticore {#summary-running-under-manticore}
+
+Reuniendo los pasos previos, obtenemos:
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+print("Results are in {}".format(m.workspace))
+m.finalize() # stop the exploration
+```
+
+Todo el código de arriba que encuentra en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+
+## Obtener throwing paths {#getting-throwing-paths}
+
+Ahora generaremos entradas específicas para las rutas que plantean una excepción en `f()`. El objetivo sigue siendo el contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Uso de información de estado {#using-state-information}
+
+Cada ruta ejecutada tiene un estado en la cadena de bloques. Un estado está listo o es aniquilado, lo que significa que alcanza una instrucción THROW o REVERT:
+
+- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): la lista de estados que están listos (no ejecutaron un REVERT/INVALID)
+- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): lista de estados aniquilados
+- [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): todos los estados
+
+```python
+for state in m.all_states:
+ # do something with state
+```
+
+Puede acceder a la información de estado. Por ejemplo:
+
+- `state.platform.get_balance(account.address)`: el saldo de la cuenta
+- `state.platform.transactions`: la lista de transacciones
+- `state.platform.transactions[-1].return_data`: los datos devueltos por la última transacción
+
+Los datos devueltos por la última transacción son un array que puede convertirse en un valor con ABI.deserialize, por ejemplo:
+
+```python
+data = state.platform.transactions[0].return_data
+data = ABI.deserialize("uint", data)
+```
+
+### Cómo generar testcase {#how-to-generate-testcase}
+
+Use [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) para generar el testcase:
+
+```python
+m.generate_testcase(state, 'BugFound')
+```
+
+### Resumen {#summary-2}
+
+- Se puede iterar sobre el estado con m.all_state
+- `state.platform.get_balance(account.address)` devuelve el saldo de la cuenta
+- `state.platform.transactions` devuelve la lista de transacciones
+- `transaction.return_data` corresponde a los datos devueltos
+- `m.generate_testcase(state, name)` genera entradas para el estado
+
+### Resumen: obtener Throwing Path {#summary-getting-throwing-path}
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m. reate_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account. (symbolic_var)
+
+## Comprobar si una ejecución termina con un REVERT o un INVALID
+para el estado en m. erminated_states:
+ last_tx = state.platform. ransactions[-1]
+ if last_tx.result in ['REVERT', 'INVALID']:
+ print('Throw found {}'.format(m.workspace))
+ m.generate_testcase (estate, 'ThrowFound')
+```
+
+Todo el código anterior que puede encontrar en el [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+
+_Note que podríamos haber generado un script mucho más simple, ya que todos los estados devueltos por terminated_state tienen REVERT o INVALID en su resultado: este ejemplo solo estaba destinado a demostrar cómo manipular la API._
+
+## Adición de restricciones {#adding-constraints}
+
+Veremos cómo restringir la exploración. Supondremos que la documentación de `f()` indica que la función nunca es llamada con `a == 65`, así que cualquier error con `a == 65` no es un error real. El objetivo sigue siendo este contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Operadores {#operators}
+
+El módulo sobre [Operadores](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) facilita la manipulación de restricciones y provee, entre otras cosas:
+
+- Operators.AND,
+- Operators.OR,
+- Operators.UGT (sin firma mayores que),
+- Operators.UGE (sin firma mayores que o iguales a),
+- Operators.ULT (sin firma menores que),
+- Operators.ULE (sin firma menores o iguales a).
+
+Para importar el módulo, use:
+
+```python
+operadores de importación desde manticore.core.smtlib
+```
+
+`Operators.CONCAT` se usa para concatenar un array a un valor. Por ejemplo, el return_data de una transacción necesita cambiarse a un valor para ser comprobado contra otro valor:
+
+```python
+last_return = Operadors.CONCAT(256, *last_return)
+```
+
+### Restricciones {#state-constraint}
+
+Puede usar restricciones globalmente o para un estado específico.
+
+#### Restricción global {#state-constraint}
+
+Use `m.constran(constraint)` para agregar una restricción global. Por ejemplo, puede llamar a un contrato desde una dirección simbólica y restringir esta dirección para que sean valores específicos:
+
+```python
+symbolic_address = m.make_symbolic_value()
+m.restricint(Operators.OR(simbólico == 0x41, symbolic_address == 0x42))
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=m.make_symbolic_buffer(320),
+ value=0)
+```
+
+#### Restricción de estado {#state-constraint}
+
+Use [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) para añadir una restricción a un estado específico. Se puede usar para restringir el estado después de su exploración para verificar alguna propiedad en él.
+
+### Restricción de verificación {#checking-constraint}
+
+Use `solver.check(state.restricints)` para saber si una restricción todavía es viable. Por ejemplo, esto restringirá symbolic_value para que sea diferente de 65 y comprobará si el estado es todavía viable:
+
+```python
+state.constrain(symbolic_var != 65)
+if solver.check(state.restricints):
+ # el estado es factible
+```
+
+### Resumen: adición de restricciones {#summary-adding-constraints}
+
+Al añadir restricción al código anterior, se obtiene:
+
+```python
+from manticore.ethereum import ManticoreEVM
+from manticore.core.smtlib.solver import Z3Solver
+
+solver = Z3Solver. nstance()
+
+m = ManticoreEVM()
+
+con open("example.sol") as f:
+ source_code = f.read()
+
+user_account = m. reate_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m. ake_symbolic_value()
+contract_account.f(symbolic_var)
+
+no_bug_found = True
+
+## Comprueba si una ejecución termina con un REVERT o un INVALID
+para el estado en m. erminated_states:
+ last_tx = state.platform.transactions[-1]
+ if last_tx. esult en ['REVERT', 'INVALID']:
+ # no consideramos que la ruta sea un == 65
+ condición = symbolic_var ! 65
+ si m. enerate_testcase(state, name="BugFound", only_if=condition):
+ print(f'error encontrado, los resultados están en {m.workspace}')
+ no_bug_found = False
+
+if no_bug_found:
+ print(f'No se encontró error')
+```
+
+Todo el código anterior que se puede encontrar en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..72a3c492fe6
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,238 @@
+---
+title: Cómo usar Slither para encontrar errores en contratos inteligentes
+description: Cómo usar Manticore para encontrar errores automáticamente en contratos inteligentes
+author: Trailofbits
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "seguridades"
+ - "pruebas"
+ - "análisis estático"
+skill: advanced
+published: 2020-06-09
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither
+---
+
+## Cómo usar Slither {#how-to-use-slither}
+
+El objetivo de este tutorial es mostrar cómo usar Slither para encontrar errores de manera automática en los contratos inteligentes.
+
+- [Instalación](#installation)
+- [Uso de línea de comandos](#command-line)
+- [Introducción al análisis estático](#static-analysis): breve introducción al análisis estático
+- [API](#api-basics): descripción de la API de Python
+
+## Instalación {#installation}
+
+Slither usa Python >= 3.6. Puede ser instalado a traves de pip o usando docker.
+
+Slither a través de pip:
+
+```bash
+pip3 install --user slither-analyzer
+```
+
+Slither a través de docker:
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/trufflecon trailofbits/eth-security-toolbox
+```
+
+_El comando de arriba ejecuta eth-security-toolbox en un docker que tiene acceso a su directorio actual. Puede cambiar los archivos desde su host y correr las herramientas dentro de los archivos desde el docker._
+
+Dentro del docker, ejecute:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### Ejecución de un script {#running-a-script}
+
+Para ejecutar un script de python con python 3:
+
+```bash
+python3 script.py
+```
+
+### Línea de comandos {#command-line}
+
+**Línea de comandos vs. scripts definidos por el usuario.** Slither viene con un conjunto de detectores predefinidos que encuentran muchos errores comunes. Al llamar a Slither desde la línea de comandos, se ejecutarán todos los detectores sin necesidad de tener conocimientos detallados de análisis estático:
+
+```bash
+slither project_paths
+```
+
+Además de los detectores, Slither tiene capacidades de revisión de código por medio de [impresoras](https://github.com/crytic/slither#printers) y [herramientas](https://github.com/crytic/slither#tools).
+
+Use [crytic.io](https://github.com/crytic) para acceder a los detectores privados y a la integración con GitHub.
+
+## Análisis estático {#static-analysis}
+
+Las capacidades y el diseño del framework de análisis estático de Slither han sido descritos en entradas de blog ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/), [2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) y en un [documento académico](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf).
+
+El análisis estático existe en distintas formas. Lo más probable es que se dé cuenta de que compiladores como [clang](https://clang-analyzer.llvm.org/) y [gcc](https://lwn.net/Articles/806099/) dependen de estas técnicas de investigación, pero también sustenta ([Infer](https://fbinfer.com/), [CodeClimate](https://codeclimate.com/), [FindBugs](http://findbugs.sourceforge.net/) y herramientas basadas en métodos formales como [Frama-C](https://frama-c.com/) y [Polyspace](https://www.mathworks.com/products/polyspace.html).
+
+No vamos a repasar aquí en detalle las técnicas de análisis estático y el investigador. En cambio, nos centraremos en lo necesario para entender cómo funciona Slither y así poder utilizarlo de forma más eficaz para encontrar errores y entender el código.
+
+- [Representación del código](#code-representation)
+- [Análisis de código](#analysis)
+- [Representación intermedia](#intermediate-representation)
+
+### Representación del código {#code-representation}
+
+A diferencia del análisis dinámico, que se basa en una única ruta de ejecución, el análisis estático se basa en todas las rutas a la vez. Para ello, se basa en una representación de código diferente. Los dos más comunes son el árbol de sintaxis abstracta (AST) y el gráfico de flujo de control (CFG).
+
+### Árboles de sintaxis abstracta (AST) {#abstract-syntax-trees-ast}
+
+Los AST se utilizan cada vez que el compilador analiza el código. Es probablemente la estructura más básica sobre la que se puede realizar un análisis estático.
+
+En pocas palabras, un AST es un árbol estructurado en el que, normalmente, cada hoja contiene una variable o una constante, y los nodos internos son operadores u operaciones de flujo de control. Considere el siguiente código:
+
+```solidity
+function safeAdd(uint a, uint b) pure internal returns(uint){
+ if(a + b <= a){
+ revert();
+ }
+ return a + b;
+}
+```
+
+El AST correspondiente se muestra en:
+
+![AST](./ast.png)
+
+Slither utiliza el AST exportado por solc.
+
+Si bien es sencillo de construir, el AST es una estructura anidada. A veces, esto no es lo más sencillo de analizar. Por ejemplo, para identificar las operaciones usadas por la expresión `a + b <= a`, primero debe analizarla `<=` y luego `+`. Un enfoque común es utilizar el llamado patrón de visitantes, que navega por el árbol recursivamente. Slither contiene un visitante genérico en [`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py).
+
+El siguiente código utiliza `ExpressionVisitor` para detectar si la expresión contiene una adición:
+
+```python
+from slither.visitors.expression.expression import ExpressionVisitor
+from slither.core.expressions.binary_operation import BinaryOperationType
+
+class HasAddition(ExpressionVisitor):
+
+ def result(self):
+ return self._result
+
+ def _post_binary_operation(self, expression):
+ if expression.type == BinaryOperationType.ADDITION:
+ self._result = True
+
+visitor = HasAddition(expression) # expression is the expression to be tested
+print(f'The expression {expression} has a addition: {visitor.result()}')
+```
+
+### Gráfico de flujo de control (CFG) {#control-flow-graph-cfg}
+
+La segunda representación de código más común es el gráfico de flujo de control (CFG). Como su nombre indica, es una representación basada en un gráfico que expone todas las rutas de ejecución. Cada nodo contiene una o varias instrucciones. Los bordes en el gráfico representan las operaciones de flujo de control (if/then/else, loop, etc). El CFG de nuestro ejemplo anterior es:
+
+![CFG](./cfg.png)
+
+El CFG es la representación sobre la que se construye la mayoría de los análisis.
+
+Existen muchas otras representaciones de código. Cada representación tiene ventajas y desventajas según el análisis que se quiera realizar.
+
+### Análisis {#analysis}
+
+El tipo de análisis más sencillo que se puede realizar con Slither es el análisis sintáctico.
+
+### Análisis de sintaxis {#syntax-analysis}
+
+Slither puede explorar los diferentes componentes del código y su representación para encontrar inconsistencias y defectos usando un enfoque del tipo coincidencia de patrones.
+
+Por ejemplo, los siguientes detectores buscan problemas relacionados con la sintaxis:
+
+- [Sombreado (shadowing) de variable de estado](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing): itera sobre todas las variables de estado y verifica si hay sombra de una variable de un contrato heredado ([state.py#L51-L62](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/shadowing/state.py#L51-L62))
+
+- [Interfaz ERC20 incorrecta](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface): busca firmas de funciones ERC20 incorrectas ([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55))
+
+### Análisis semántico {#semantic-analysis}
+
+En contraste con el análisis de sintaxis, un análisis semántico profundizará y analizará el “significado” del código. Esta familia incluye algunos amplios tipos de análisis. Conducen a resultados más potentes y útiles, pero también son más complejos de escribir.
+
+Los análisis semánticos se usan para las detecciones de vulnerabilidad más avanzadas.
+
+#### Análisis de dependencias de datos {#fixed-point-computation}
+
+Se dice que una variable `variable_a` tiene una dependencia de datos de `variable_b` si hay una ruta para la cual el valor de `variable_a` está influenciado por `variable_b`.
+
+En el siguiente código, `variable_a` depende de `variable_b`:
+
+```solidity
+// ...
+variable_a = variable_b + 1;
+```
+
+Slither viene con capacidades de [dependencia de datos](https://github.com/crytic/slither/wiki/data-dependency), gracias a su representación intermedia (se verá en una sección posterior).
+
+Se puede encontrar un ejemplo de uso de dependencia de datos en [detector de equidad estricta peligrosa](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities). Aquí Slither buscará una comparación estricta de equidad con un valor peligroso ([incorrec_strict_equality. y#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87)) e informará al usuario que debe usar `>=` o `<=` en lugar de `==` para impedir que un atacante atrape el contrato. Entre otros, el detector considerará peligroso el valor de retorno de una llamada a `balanceOf(address)` ([incorrect_strict_equality.py#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64)) y usará el motor de dependencias de datos para rastrear su uso.
+
+#### Cómputo de punto fijo {#fixed-point-computation}
+
+Si su análisis explora el CFG y sigue las aristas, o bordes, es probable que vea nodos ya visitados. Por ejemplo, si un bucle se presenta como se muestra a continuación:
+
+```solidity
+for(uint i; i < range; ++){
+ variable_a += 1
+}
+```
+
+Su análisis necesitará saber cuándo detenerse. Hay dos estrategias principales aquí: (1) iterar en cada nodo un número finito de veces, (2) calcular un _punto de fijación_. Un punto fijo, o fixpoint, básicamente significa que el análisis de este nodo no proporciona ninguna información significativa.
+
+Un ejemplo de punto fijo puede estar en los detectores de reentrada: Slither explora los nodos y busca llamadas externas, escribir y leer para almacenar. Una vez que haya alcanzado un punto fijo ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)), detiene la exploración y analiza los resultados para ver si una reentrada está presente a través de diferentes patrones de reentrada ([reentrancy_benign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py), [reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py), [reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py)).
+
+Escribir análisis utilizando un cálculo de punto fijo eficiente requiere una buena comprensión de cómo el análisis propaga su información.
+
+### Representación intermedia {#intermediate-representation}
+
+Una representación intermedia (IR) es un lenguaje que pretende ser más susceptible al análisis estático que el original. Slither traduce Solidity a su propio IR: [SlithIR](https://github.com/crytic/slither/wiki/SlithIR).
+
+Entender SlithIR no es necesario si solo desea escribir comprobaciones básicas. Sin embargo, será útil si tiene pensado escribir análisis semánticos avanzados. Los resultados de [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir) y [SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa) le ayudarán a entender cómo se traduce el código.
+
+## Aspectos básicos de la API {#api-basics}
+
+Slither tiene una API que le permite explorar los atributos básicos del contrato y sus funciones.
+
+Para cargar una base de código:
+
+```python
+from slither import Slither
+slither = Slither('/path/to/project')
+
+```
+
+### Exploración de contratos y funciones {#exploring-contracts-and-functions}
+
+Un objeto de `Slither` tiene:
+
+- `contracts (list(Contract)`: lista de contratos
+- `contracts_derived (list(Contract)`: lista de contratos que no son heredados por otro contrato (subconjunto de contratos)
+- `get_contract_from_name (str)`: retorna un contrato a partir de su nombre
+
+Un objeto `Contract` tiene:
+
+- `name (str)`: nombre del contrato
+- `functions (list(Function))`: lista de funciones
+- `modifiers (list(Modifier))`: lista de funciones
+- `all_functions_called (list(Function/Modifier))`: lista de todas las funciones internas accesibles para el contrato
+- `inheritance (list(Contract))`: lista de los contratos heredados
+- `get_function_from_signature (str)`: retorna una función desde su firma
+- `get_modifier_from_signature (str)`: retorna un modificador desde su firma
+- `get_state_variable_from_name (str)`: retorna una StateVariable desde su nombre
+
+Una `Function` o un objeto `Modifier` tiene:
+
+- `name (str)`: nombre de la función
+- `contract (contract)`: el contrato donde se declara la función
+- `nodes (list(Node))`: lista de los nodos que componen el CFG de la función/modificador
+- `entry_point (Node)`: punto de entrada del CFG
+- `variables_read (list(Variable))`: lista de variables a leer
+- `variables_written (list(Variable))`: lista de variables escritas
+- `state_variables_read (list(StateVariable))`: lista de variables de estado a leer (subconjunto de variables a leer)
+- `state_variables_written (list(StateVariable))`: lista de variables de estado escritas (subconjunto de variables escritas)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
new file mode 100644
index 00000000000..d6744b8f702
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -0,0 +1,84 @@
+---
+title: Cómo configurar el contador como tu servidor
+description: Una guía para comenzar a integrar el oráculo contador en tu protocolo
+author: "Contador"
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "oráculos"
+skill: beginner
+published: 2021-06-29
+source: Documentos Tellor
+sourceUrl: https://docs.tellor.io/tellor/
+---
+
+Pregunta: Su protocolo esta casi terminado, pero necesita de un oracle para tener acceso a datos off-chain..¿Qué necesitas?
+
+## Prerrequisitos (fáciles) {#soft-prerequisites}
+
+Este post pretende hacer que el acceso a una alimentación de oráculo sea lo más directo y sencillo posible. Dicho esto, estamos asumiendo lo siguiente sobre tu nivel de habilidad de codificación para centrarnos en el aspecto del oráculo.
+
+Supuestos:
+
+- puedes navegar por un terminal
+- tienes npm instalado
+- sabes cómo usar npm para gestionar dependencias
+
+Tellor es un oráculo en vivo y de código abierto listo para su implementación. Esta guía para principiantes está aqui para demostrar la facilidad con la que uno puede implementar y poner en marchar Tellor, proporcionando a tu proyecto con un oracle completamente decentralizado y resistente a la censura.
+
+## Resumen {#overview}
+
+Tellor es un sistema de oráculo donde las partes pueden solicitar el valor de un punto de datos fuera de la cadena (ej. BTC/USD) y los mineros compiten para agregar este valor a un banco de datos en cadena, accesible por todos los contratos ingeligentes de Ethereum. Las entradas a este banco de datos están aseguradas por una red de mineros participativa. Tellor utiliza mecanismos de incentivos criptoeconómicos, recompensando las presentaciones honestas de datos de los mineros y castigando a los malos actores por medio de la emisión del token de Tellor, Tributes (TRB) y un mecanismo de disputa.
+
+En este tutorial abarcaremos:
+
+- Configurar el kit de herramientas inicial que necesitarás para ponerte en marcha.
+- Pasar por un ejemplo sencillo.
+- Listar las direcciones de la testnet de pruebas de redes en las que actualmente puedes probar Tellor.
+
+## Usando Tellor {#usingtellor}
+
+Lo primero que querrás hacer es instalar las herramientas básicas necesarias para usar Tellor como tu oráculo. Usa [este paquete](https://github.com/tellor-io/usingtellor) para instalar los Contratos de Usuario de Tellor:
+
+`npm install usingtellor`
+
+Una vez instalado esto permitirá a sus contratos heredar las funciones del contrato 'UsingTellor'.
+
+¡Genial! Ahora que las herramientas están listas, continuemos con un pequeño ejercicio donde solicitaremos el precio de bitcoin:
+
+### Ejemplo BTC/USD {#btcusd-example}
+
+Heredar el contrato de UsingTellor, pasando la dirección de Tellor como argumento constructor:
+
+Le mostramos un ejemplo:
+
+```solidity
+import "usingtellor/contracts/UsingTellor.sol";
+
+contract PriceContract is UsingTellor {
+ uint256 public btcPrice;
+
+ //This Contract now has access to all functions in UsingTellor
+
+constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}
+
+function setBtcPrice() public {
+ bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd"));
+ bytes32 _queryId = keccak256(_b);
+
+ uint256 _timestamp;
+ bytes _value;
+
+ (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes);
+
+ btcPrice = abi.decode(_value,(uint256));
+ }
+}
+```
+
+Para un listado completo de direcciones de contrato visite [aquí](https://docs.tellor.io/tellor/the-basics/contracts-reference).
+
+Para la facilidad de uso, el repositorio UsingTellor incluye una versión del contrato de[patio de juegos de Tellor](https://github.com/tellor-io/TellorPlayground) para una integración más fácil. Visite [aquí](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) para un listado de funciones útiles.
+
+Para una implementación más robusta del oráculo de Tellor, revise el listado completo de funciones disponibles [aquí](https://github.com/tellor-io/usingtellor/blob/master/README.md).
diff --git a/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md b/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
new file mode 100644
index 00000000000..4a5dcdde355
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
@@ -0,0 +1,177 @@
+---
+title: Interactúe con otros contratos desde Solidity
+description: Cómo implementar un contrato inteligente desde un contrato existente e interactuar con él
+author: "jdourlens"
+tags:
+ - "contratos inteligentes"
+ - "Solidity"
+ - "remix"
+ - "implementación"
+ - "capacidad de composición"
+skill: advanced
+lang: es
+published: 2020-04-05
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/interact-with-other-contracts-from-solidity/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+En los tutoriales anteriores aprendimos mucho sobre [cómo implementar su primer contrato inteligente](/developers/tutorials/deploying-your-first-smart-contract/) y agregar algunas funciones como [control de acceso con modificadores](https://ethereumdev.io/organize-your-code-and-control-access-to-your-smart-contract-with-modifiers/) o [manejo de errores en Solidity](https://ethereumdev.io/handle-errors-in-solidity-with-require-and-revert/). En este tutorial aprenderemos cómo implementar un contrato inteligente desde un contrato existente e interactuar con él.
+
+Vamos a hacer un contrato que permita a cualquiera tener su propio contrato inteligente de `Counter` mediante la creación de una fábrica para tal propósito: se llamará `CounterFactory`. En primer lugar, aquí tenemos el código del contrato inteligente `Counter` inicial:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+```
+
+Tenga en cuenta que modificamos ligeramente el código del contrato para controlar la dirección de la fábrica y la dirección del contrato del propietario. Al hacer una llamada al código de un contrato desde otro contrato, msg.sender hará referencia a la dirección de la fábrica del contrato. Este es **un punto realmente importante que hay que entender**, ya que utilizar un contrato para interactuar con otros contratos es una práctica común. Por tanto, se debería prestar a atención a quién es el remitente en casos complejos.
+
+Por esta razón, también añadimos un modificador `onlyFactory` que se asegure de que la función de cambio de estado solo pueda ser invocada por la fábrica que pasará el invocador inicial como parámetro.
+
+Dentro de nuestro `CounterFactory` que administrará todos los demás Counters, agregaremos un mapeo que asociará a un propieatario con la dirección de este contrato de contador:
+
+```solidity
+mapping(address => Counter) _counters;
+```
+
+En Ethereum, los mapeos, o mappings, son equivalentes a los objetos en JavaScript: permiten asociar una clave de tipo A a un valor de tipo B. En este caso, asociamos la dirección de un propietario con la instancia de su contador.
+
+La instanciación de un Contador nuevo para alguien se verá de la siguiente manera:
+
+```solidity
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+```
+
+Primero, revisaremos si la persona en cuestión ya es propietaria de un contador. Si ese no es el caso, instanciaremos un nuevo contador pasando su dirección al constructor de `Counter` y asignar la instancia recientemente creada al mapeo.
+
+Para obtener el conteo de un Contador específico, se verá así:
+
+```solidity
+function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+}
+
+function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+}
+```
+
+La primera función revisa si el contrato del Contador existe para una dirección proporcionada y luego llama al método `getCount` desde la instancia. La segunda función, `getMyCount`, es solo un extremo corto para pasar el msg.sender directamente a la función `getMyCount`.
+
+La función `increment` es bastante similar, pero pasa el emisor de la transacción original al contrato `Counter`:
+
+```solidity
+function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+```
+
+Note que si es llamado muchas veces, nuestro contador podría ser víctima del desbordamiento, u overflow. Debe usar la [biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/) tanto como sea posible para evitar esta situación.
+
+Para implementar nuestro contrato, necesitará proporcionar el código de `CounterFactory` y el `Counter`. Al realizar la implementación, por ejemplo, en Remix, deberá seleccionar CounterFactory.
+
+Este es el código completo:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+
+contract CounterFactory {
+
+ mapping(address => Counter) _counters;
+
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+
+ function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+
+ function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+ }
+
+ function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+ }
+
+}
+```
+
+Luego de la compilación, en la sección de implementación de Remix, debe seleccionar la fábrica a implementar:
+
+![Seleccionar la fábrica a implementar en Remix](./counterfactory-deploy.png)
+
+Luego puede experimentar con su fábrica de contratos y revisar el valor cambiante. Si desea invocar el contrato inteligente desde una dirección diferente, necesitará cambiar la dirección en la selección de Cuenta en Remix.
diff --git a/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
new file mode 100644
index 00000000000..dbb869a3ca0
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
@@ -0,0 +1,110 @@
+---
+title: Comience a desarrollar DApp frontend con create-eth-app
+description: Un resumen de cómo usar create-eth-app y sus aplicaciones
+author: "Markus Waas"
+tags:
+ - "crear-eth-app"
+ - "interfaz"
+ - "javascript"
+ - "ethers.js"
+ - "The Graph"
+ - "defi"
+skill: beginner
+lang: es
+published: 2020-04-27
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/create-eth-app
+---
+
+En el artículo anterior revisamos [el panorama global de Solidity](https://soliditydeveloper.com/solidity-overview-2020) y mencionamos [create-eth-app](https://github.com/PaulRBerg/create-eth-app). Ahora descubrirá como usarla y qué aplicaciones tiene integradas, además de otras ideas para ampliar su utilidad. Lanzada por Paul Razvan Berg, el fundador de [Sablier](http://sablier.com/), esta aplicación le permitirá comenzar su desarrollo en el frontend y tiene varias integraciones entre las que podrá seleccionar.
+
+## Instalación {#installation}
+
+La instalación requiere Yarn 0.25 o una versión más reciente (`npm install yarn --global`). Es tan simple como ejecutar:
+
+```bash
+yarn create eth-app my-eth-app
+cd my-eth-app
+yarn react-app:start
+```
+
+Esto usa [create-react-app](https://github.com/facebook/create-react-app) implicitamente. Para ver su app, navegue a `http://localhost:3000/`. Cuando esté listo para empezar con la producción, cree un minipaquete con yarn build. Una posible opción para hospedar esta página es en [Netlify](https://www.netlify.com/). Puede crear un repositorio GitHub, añadirlo a Netlify, configurar el comando de build y ¡ya está! Tu app se hospedará y estará disponible para todos. ¡Y todo ello completamente gratis!
+
+## Características {#features}
+
+### React & create-react-app {#react--create-react-app}
+
+En primer lugar, el núcleo de la aplicación React y todas las características adicionales que provee _create-react-app_. Usar estas tecnologías de por sí es una gran alternativa, incluso si no quiere integrar Ethereum. [React](https://reactjs.org/) hace que construir una interfaz interactiva sea realmente sencillo. Quizá no sea tan fácil para los principiantes como [Vue](https://vuejs.org/), pero es el más usado, tiene más funcionalidades y lo más importante es que tiene miles de bibliotecas disponibles. _Create-react-app_ hace que comenzar sea muy sencillo, al incluir:
+
+- React, JSX, ES6, TypeScript, soporte para sintaxis de Flow.
+- Funcionalidades adicionales de programación, como ES6 y posteriores como el operador «spread» para objetos.
+- CSS con prefijo automático, para que no tengas que usar Webkit ni ningún otro prefijo.
+- Un ejecutor de test unitarios rápido e interactivo con soporte por defecto para informes de cobertura.
+- Un servidor de desarrollo que le advierte de errores frecuentes.
+- Un script que empaqueta los JS, CSS y las imágenes para produccion, anadiendo hashes y sourcemaps.
+
+_Create-eth-app_ en concreto hace uso del nuevo [efecto «hooks»](https://reactjs.org/docs/hooks-effect.html). Este método permite escribir componentes funcionales muy pequenos y eficaces. En la sección Apollo más abajo, podrá ver cómo se utilizan en _create-eth-app_.
+
+### Espacios de trabajo de Yarn {#yarn-workspaces}
+
+[Los espacios de trabajo de Yarn](https://classic.yarnpkg.com/en/docs/workspaces/) le permiten tener varios paquetes, pero siendo capaz de gestionarlos todos desde la carpeta raíz e instalar dependencias para todos ellos a la vez usando `yarn install`. Esto cobra especial importancia en paquetes adicionales más pequeños, como los usados para gestionar direcciones de contratos inteligentes/ABI (dan información sobre dónde y qué contratos inteligentes implementó y cómo comunicarse con ellos) o la integración de gráficos. Ambos ejemplos son parte de `create-eth-app`.
+
+### ethers.js {#ethersjs}
+
+A pesar de que [Web3](https://docs.web3js.org/) es todavia la opcion más usada, [ethers.js](https://docs.ethers.io/) ha ido ganando terreno como alternativa en el último año y viene integrada en _create-eth-app_. Puede trabajar en ella, cambiarse a Web3 o tal vez plantearse el actualizar a [ethers.js v5](https://docs-beta.ethers.io/) que casi ha dejado de estar en beta.
+
+### The Graph {#the-graph}
+
+[GraphQL](https://graphql.org/) es una alternativa para manejar datos, en vez de la [API Restful](https://restfulapi.net/). Presenta varias ventajas frente a la API Restful, especialmente en lo referente a los datos de la cadena de bloques descentralizada. Si le interesa profundizar más al respecto, eche un vistazo a [GraphQL permitirá la web descentralizada](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a).
+
+Normalmente, conseguirá los datos directamente de su contrato inteligente. ¿Quieres saber la hora de la última operación? Tan solo escriba `MyContract.methods.latestTradeTime().call()` que obtiene los datos de un nodo de Ethereum a su DApp. Pero, ¿qué pasa si se necesitan cientos de puntos de datos diferentes? Eso resultaría en centenares de solicitudes de datos al nodo, con su [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) cada una de ellas, lo que ralentizaría e inutiliaría a su DApp. Una alternativa sería instalar una función de obtención en su contrato que devuelva varios datos a la vez. Aunque no siempre es lo ideal.
+
+O también puede que le interese obtener datos históricos. Quiere saber no sólo la fecha de la última operación, sino también la de todas las operaciones que haya realizado alguna vez. Puede utilizar el paquete de subgrafo de _create-eth-app_, leer la [documentación](https://thegraph.com/docs/define-a-subgraph) y adaptarlo a sus propios contratos. Si busca contratos inteligentes populares, puede que incluso ya exista un subgrafo. Compruebe el [explorador de subgrafo](https://thegraph.com/explorer/).
+
+Una vez tenga un subgrafo, este le permitirá escribir una sencilla consulta en su DApp que recupera todos los datos importantes de la cadena de bloques, incluyendo los datos históricos que necesita, solo con activar esta funcionalidad una vez.
+
+### Apollo {#apollo}
+
+Gracias a la integración con [Apollo Boost](https://www.apollographql.com/docs/react/get-started/), puedes integrar fácilmente el grafo en tu dapp de React. Especialmente al usar [hooks de React y Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2), obtener datos es tan sencillo como escribir una única consulta GraphQL en su componente:
+
+```js
+const { loading, error, data } = useQuery(myGraphQlQuery)
+
+React.useEffect(() => {
+ if (!loading && !error && data) {
+ console.log({ data })
+ }
+}, [loading, error, data])
+```
+
+## Plantillas {#templates}
+
+Además de eso, puede instalar numerosas plantillas. Hasta el momento, puede utilizar la integración con Aave, Compound, UniSwap o Sablier. Todos aportan importantes servicios con direcciones de contratos inteligentes, además de integraciones con subgrafos listos para utilizarse. Simplemente añada la plantilla al comando de creación, como `yarn create eth-app my-eth-app --with-template aave`.
+
+### Aave {#aave}
+
+[Aave](https://aave.com/) es un mercado descentralizado de préstamo de dinero. Los depositantes proporcionan liquidez al mercado a cambio de obtener ingresos pasivos, mientras que los prestatarios pueden pedir prestado con garantías. Una característica única de Aave son los [préstamos flash](https://docs.aave.com/developers/guides/flash-loans) que le permiten pedir prestado dinero sin ningún tipo de garantía, siempre y cuando lo devuelva en la siguiente transacción. Esto puede ser útil por ejemplo para tener dinero extra para transacciones de arbitrage.
+
+Los tókenes que le han reporado intereses se llaman _aTokens_.
+
+Cuando integra Aave con _create-eth-app_, ya obtiene una [integración de subgrafo](https://docs.aave.com/developers/getting-started/using-graphql) por defecto. Aave usa The Graph y le ofrece varios subgrafos listos para utilizarlos en [Ropsten](https://thegraph.com/explorer/subgraph/aave/protocol-ropsten) y la [red principal](https://thegraph.com/explorer/subgraph/aave/protocol) [con](https://thegraph.com/explorer/subgraph/aave/protocol) o [sin](https://thegraph.com/explorer/subgraph/aave/protocol-raw) formato.
+
+![Meme de préstamo Flash Aave – "Síííí, si pudiera mantener mi préstamo flash más de una transacción, sería genial"](./flashloan-meme.png)
+
+### Compound {#compound}
+
+[Compound](https://compound.finance/) es similar a Aave. La integración ya incluye el nuevo [subgrafo Compound v2](https://medium.com/graphprotocol/https-medium-com-graphprotocol-compound-v2-subgraph-highlight-a5f38f094195). Sorprendentemente, a los tókenes que pueden ganar intereses, aquí se les llama _cTokens_.
+
+### Uniswap {#uniswap}
+
+[Uniswap](https://uniswap.exchange/) es un sistema de intercambio descentralizado (DEX). Los usuarios que aporten liquidez pueden ganar comisiones, aportando los tókenes o el ether requeridos para ambos lados de una operación. Es de uso generalizado y, por lo tanto, tiene una de las mayores cantidades de liquidez para una gama muy amplia de tókenes. Puede integrarlo fácilmente en su DApp para, por ejemplo, permitir a los usuarios intercambiar sus ETH por DAI.
+
+Por desgracia, al cierre de editorial de este artículo, la integración es sólo para Uniswap v1 y no para el [v2 publicado recientemente](https://uniswap.org/blog/uniswap-v2/).
+
+### Sablier {#sablier}
+
+[Sablier](https://sablier.com/) le permite a los usuarios emitir pagos. En vez de un solo día de pago, puede recibir su dinero constantemente sin ninguna administración adicional después de la configuración inicial. La integración incluye su [propio subgrafo](https://thegraph.com/explorer/subgraph/sablierhq/sablier).
+
+## ¿Y ahora qué? {#whats-next}
+
+Si quiere hacer consultas sobre _create-eth-app_, diríjase al [servidor de la comunidad de Sablier](https://discord.gg/bsS8T47), donde puedes ponerse en contacto con los autores de _create-eth-app_. Como algunos de los próximos pasos que desee dar, es posible que quiera integrar un entorno de desarrollo de IU como [Material UI](https://material-ui.com/), escribir consultas GraphQL de los datos que necesite y preparar la implementación.
diff --git a/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
new file mode 100644
index 00000000000..cf78823addb
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -0,0 +1,272 @@
+---
+title: Aprende temas fundamentales de Ethereum con SQL
+description: Este tutorial ayudara a los lectores a comprender conceptos fundamentales de Ethereum incluyendo transacciones, bloques y gas consultando datos en cadena con el lenguaje de consulta estructurada (SQL).
+author: "Paul Apivat"
+tags:
+ - "SQL"
+ - "Consultando"
+ - "Transacciones"
+skill: beginner
+lang: es
+published: 2021-05-11
+source: paulapivat.com
+sourceUrl: https://paulapivat.com/post/query_ethereum/
+---
+
+Muchos tutoriales de Ethereum estan dirigidos a desarrolladores, pero hacen falta recursos educativos para analistas de datos o para personas que quieren ver datos on-chain sin tener que ejecutar un cliente o nodo.
+
+Este tutorial ayuda a los lectores a entender los conceptos fundamentals de Ethereum, incluyendo transacciones, bloques y gas consultando datos on-chain con el lenguaje de consulta estructurada (SQL) a través de una interfaz proporcionada por [Dune Analytics](https://dune.xyz/home).
+
+Los datos on-chain pueden ayudarnos a entender Ethereum, la red y como una económia para el poder compuacional y debería de servir como una base para entender los cambios a los que se enferenta Ethereum a dia de hoy (p.e. el aumento de los costos de gas) y, más importante, discuciones sobre soluciones de escalabilidad.
+
+### Transacciones {#transactions}
+
+El viaje de un usuario en Ethereum comienza con la inicialización de una cuenta controlada por el usuario o de una entidad con un saldo ETH. Hay dos tipos de cuentas - las controladas por los usuarios o un contrato inteligente (ver [ethereum.org](/developers/docs/accounts/)).
+
+Cualquier cuenta puede ser vista en un explorador de bloques como [Etherscan](https://etherscan.io/). Los exploradores de bloques son un portal a los datos de Ethereum. Muestran en tiempo real datos en bloques, transacciones, mineros, cuentas y otra actividad on-chain. (Ver [here](/developers/docs/data-and-analytics/block-explorers/)).
+
+De todos modos, un usuario puede desear consultar los datos directamente para conciliar la información brindada por los exploradores de bloques externos. [Dune Analytics](https://duneanalytics.com/) proporciona esta capacidad a cualquier persona con algún conocimiento de SQL.
+
+Para referencia, la cuenta de contrato Inteligente para la Fundación Ethereum (FE) puede consultarse en [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae).
+
+Una cosa a tener en cuenta es que todas las cuentas, incluidas las FE's, tienen una dirección pública que se puede utilizar para enviar y recibir transacciones.
+
+El saldo de la cuenta en Etherscan comprende transacciones regulares y transacciones internas. Las transacciones internas, a pesar de su nombre, no son _ transacciones reales_ que cambian el estado de la cadena. Son transferencias de valor iniciadas al ejecutar un contrato ([source](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). Dado que las transacciones internas no tienen firma, **no están** incluidas en la cadena de bloques y no se pueden consultar con Dune Analytics.
+
+Por lo tanto, este tutorial se centrará en las transacciones regulares. Esto puede ser consultado como tal:
+
+```sql
+WITH temp_table AS (
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ value / 1e18 AS ether,
+ gas_used,
+ gas_price / 1e9 AS gas_price_gwei
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+)
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ ether,
+ (gas_used * gas_price_gwei) / 1e9 AS txn_fee
+FROM temp_table
+```
+
+Esto generará la misma información que se proporciona en la página de transacciones de Etherscan. A modo de comparación, aquí están las dos fuentes:
+
+#### Etherscan {#etherscan}
+
+![](./etherscan_view.png)
+
+[Página de contratos de EF's en Etherscan.](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
+
+#### Dune Analytics {#dune-analytics}
+
+![](./dune_view.png)
+
+Puedes encontrar el panel [aquí](https://duneanalytics.com/paulapivat/Learn-Ethereum). Haz click en la tabla para ver el comando (también ver arriba).
+
+### Rompiendo transacciones {#breaking_down_transactions}
+
+Una transacción enviada incluye varias piezas de información incluyendo ([fuente](/developers/docs/transactions/)):
+
+- **Receptor**: La dirección receptora (identificada como "to")
+- **Firma**: Mientras las claves privadas del emisor firman una transacción, lo que podemos consultar con SQL es la dirección pública del emisor ("from").
+- **Valor**: Esta es la cantidad de ETH transferida (ver la columna `ether`).
+- **Datos**: Esta es la información arbitraria que ha sido troceada (ver la columna `data`)
+- **LímiteDeGas**: Cantidad máxima de unidades de gas que puede consumir la transacción. Las unidades de gas representan pasos computacionales
+- **maxPriorityFeePerGas**: la cantidad máxima de gas que se incluirá como recompensa para el minero
+- **maxFeePerGas** - la cantidad máxima de gas que se pagará para la transacción (inclusiva de baseFeePerGas y maxPriorityFeePerGas)
+
+Podemos consultas esass piezas específicas de información para transacciones a la dirección pública de la Fundación Ethereum:
+
+```sql
+SELECT
+ "to",
+ "from",
+ value / 1e18 AS ether,
+ data,
+ gas_limit,
+ gas_price / 1e9 AS gas_price_gwei,
+ gas_used,
+ ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### Bloques {#blocks}
+
+Cada transacción cambiará el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)) ([fuente](/developers/docs/transactions/)). Las transacciones son transmitidas a la red para ser verificadas e incluidas en un bloque. Cada transacción es asociada con un número de bloque. Para ver la información, podemos consultar un número de bloque en específico: 12396854 (el bloque más reciente de las transacciones realizadas por la Fundación Ethereum al momento de escribir este artículo, 11/5/21).
+
+Además, cuando consultamos los dos siguientes bloques,podemos ver que cada bloque contiene el hash del anterior (ej: hash padre), ilustrando cómo la cadena de bloques es formada.
+
+Cada bloque contiene una referencia a su bloque padre. Esto es mostrado abajo entre las columnas de `hash` y `parent_hash` ([fuente](/developers/docs/blocks/)):
+
+![parent_hash](./parent_hash.png)
+
+Esta es la [consulta](https://duneanalytics.com/queries/44856/88292) en Dune Analytics:
+
+```sql
+SELECT
+ time,
+ number,
+ hash,
+ parent_hash,
+ nonce
+FROM ethereum."blocks"
+WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
+LIMIT 10
+```
+
+Podemos examinar un bloque al consultar el tiempo, número de bloque, dificultad, hash, hash padre y el nonce.
+
+Lo único no cubierto por esta consulta es la _lista de transacción_, que requiere una consulta por separado abajo y el _estado raíz_. Un nodo completo o archivado almacenará todas las transacciones y estado de transiciones, permitiendo a los clientes consultar el estado de la cadena en cualquier momento. Porque esto requiere un espacio amplio, poremos separar la información de la cadena de la información del estado:
+
+- Información de la cadena (listado de bloques, transacciones)
+- Información de estado (resultado del estado de transición de cada transacción)
+
+El estado de raíz falla en esto último y es información _implícita_ (no almacenada en la cadena), mientras la información de la cadena es explícita y almacenada en la propia cadena ([fuente](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored)).
+
+Para este tutorial, nos enfocaremos en la información en la cadena que _puede_ ser consultada con SQL a través de Dune Analytics.
+
+Como se mencionó anteriormente, cada bloque contiene un listado de transacciones, que podemos consultar al filtrar por un bloque en específico. Probaremos el bloque más reciente, 12396854:
+
+```sql
+SELECT * FROM ethereum."transactions"
+WHERE block_number = 12396854
+ORDER BY block_time DESC`
+```
+
+Aquí está el resultado de la consulta en Dune:
+
+![](./list_of_txn.png)
+
+Al este único bloque ser agregado a la cadena, cambia el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)). A veces docenas o centenares de transacciones son verificadas a la vez. En este caso en específico, 222 transacciones se incluyeron.
+
+Para ver cuántas fueron exitosas, poremos agregar otro filtro al contador de transacciones exitosas:
+
+```sql
+WITH temp_table AS (
+ SELECT * FROM ethereum."transactions"
+ WHERE block_number = 12396854 AND success = true
+ ORDER BY block_time DESC
+)
+SELECT
+ COUNT(success) AS num_successful_txn
+FROM temp_table
+```
+
+Para el bloque 12396854, de un total de 222 transacciones, 204 fueron verificadas con éxito:
+
+![](./successful_txn.png)
+
+Las solicitudes de transacciones ocurren docenas de veces por segundo, pero los bloques son consignados aproximadamente una vez cada 15 segundos ([fuente](/developers/docs/blocks/)).
+
+Para ver que hay un bloque producido aproximadamente cada 15 segundos, podemos tomar el número de segundos en un día (86400) dividido entre 15 para obtener un promedio estimado del número de bloques por día (~ 5760).
+
+El cuadro para los bloques de Ethereum producidos por día (2016 - presente) es:
+
+![](./daily_blocks.png)
+
+El número promedio de bloques producidos a diario durante este periodo es ~5,874:
+
+![](./avg_daily_blocks.png)
+
+Las consultas Sql son:
+
+```sql
+# query to visualize number of blocks produced daily since 2016
+
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+
+# average number of blocks produced per day
+
+WITH temp_table AS (
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+)
+SELECT
+ AVG(block_count) AS avg_block_count
+FROM temp_table
+```
+
+El número promedio de bloques producidos por día desde 2016 es ligeramente superior que el número en 5,874. Alternativamente, dividiendo 86400 secundos por 5874 bloques promedio resulta en 14.7 segundos o aproximadamente un bloque cada 15 segundos.
+
+### Gas {#gas}
+
+Los bloques están delimitados en tamaño. El tamaño máximo de bloque es dinámico y varía de acuerdo a la demanda de la red entre 12,500,000 y 25,000,000 unidades. Los límites son requeridos para prevenir arbitrariamente los tamaños largos de bloques, lo que estresa a los nodos completos en términos de espacio en disco y requisitos de velocidad ([fuente](/developers/docs/blocks/)).
+
+Una manera de conceptualizar el límite de gas de un bloque es pensar en esto como el **suministro** de espacio de bloques disponible en las transacciones grupales. El límite de gas de los bloques puede ser consultado y visualizado desde 2016 hasta el presente:
+
+![](./avg_gas_limit.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_limit) AS avg_block_gas_limit
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+Entonces ahí está el gas actual utilizado a diario para pagar por la computación realizada en la cadena de Ethereum (ej: enviando transacciones, llamando un contrato inteligente, minteando un NFT). Esta es la **demanda** para el espacio de bloques disponibles en Ethereum:
+
+![](./daily_gas_used.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_used) AS avg_block_gas_used
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+También podemos yuxtaponer estos dos gráficos juntos para ver cómo **la demanda y el suministro** se alínean:
+
+![gas_demand_supply](./gas_demand_supply.png)
+
+Por lo tanto, podemos comprender el precio de gas como una función de demanda para el espacio de bloques de Ethereum, de acuerdo al suministro disponible.
+
+Finalmente, puede que queramos consultar el promedio diario del precio de gas para la cadena de Ethereum, sin embargo, hacerlo puede resultar en un tiempo especialmente largo de consulta, por lo que filtraremos nuestra consulta a la cantidad promedio de gas pagado por transacción por la Fundación Ethereum.
+
+![](./ef_daily_gas.png)
+
+Podemos ver los precios de gas pagados por todas las transacciones hechas a la dirección de la Fundación Ethereum a lo largo de los años. Aquí está la consulta:
+
+```sql
+SELECT
+ block_time,
+ gas_price / 1e9 AS gas_price_gwei,
+ value / 1e18 AS eth_sent
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### Resumen {#summary}
+
+Con este tutorial, compremdemos los conceptos fundamentales de Ethereum y cómo funciona el blockchain de Ethereum consultando y obteniendo una idea de datos on-chain.
+
+El panel que contiene todo el código utilizado en este tutorial se puede encontrar [aquí](https://duneanalytics.com/paulapivat/Learn-Ethereum).
+
+Para más usos de datos para explorar web3 [encuéntrame en Twitter](https://twitter.com/paulapivat).
diff --git a/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
new file mode 100644
index 00000000000..158b27cb8a4
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
@@ -0,0 +1,66 @@
+---
+title: Registrar datos de contratos inteligentes con eventos
+description: Una introducción eventos en contratos inteligentes y cómo pueden utilizarse para registrar datos.
+author: "jdourlens"
+tags:
+ - "contratos inteligentes"
+ - "remix"
+ - "solidity"
+ - "eventos"
+skill: intermediate
+lang: es
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/logging-data-with-events/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+En Solidity, los contratos inteligentes pueden envíar [eventos](/developers/docs/smart-contracts/anatomy/#events-and-logs). Las DApps o cualquier aplicación conectada a la API JSON-RPC de Ethereum, puede escuchar estos eventos y obrar según corresponda. El evento también puede indexarse, para que el historial de eventos se pueda buscar más adelante.
+
+## Eventos {#events}
+
+El evento más común en la cadena de bloques de Ethereum en el cierre de redacción de este artículo es el evento de transferencia que emiten los tókenes ERC20 cuando alguien transfiere tókenes.
+
+```solidity
+event Transfer(address indexed from, address indexed to, uint256 value);
+```
+
+La firma del evento se declara dentro del código del contrato y se puede emitir con la palabra clave emitida. Por ejemplo, el evento de transferencia registra quién envió la transferencia (_de_), a quién (_para_) y cuántos tókenes se transfirieron (_valor_).
+
+Si regresamos a nuestro programa contador del contrato inteligente y decidimos registrar el valor cada vez que cambie. Dado que este contrato no pretende ejecutarse, sino que sirve de base para construir otro contrato ampliándolo, se le llama contrato abstracto. En el caso de nuestro ejemplo de contador, sería de la manera siguiente:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ event ValueChanged(uint oldValue, uint256 newValue);
+
+ // Private variable of type unsigned int to keep the number of counts
+ uint256 private count = 0;
+
+ // Function that increments our counter
+ function increment() public {
+ count += 1;
+ emit ValueChanged(count - 1, count);
+ }
+
+ // Getter to get the count value
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+Tenga en cuenta que:
+
+- **Línea 5**: declaramos nuestro evento y su contenido, el valor antiguo y el nuevo.
+
+- **Línea 13**: cuando incrementamos nuestra variable de conteo, emitimos el evento.
+
+Si ahora desplegamos el contrato y seleccionamos la función de incremento, veremos que Remix lo mostrará automáticamente, si hace clic en la nueva transacción dentro de los registros con nombre.
+
+![Captura de pantalla de Remix](./remix-screenshot.png)
+
+Los registros son realmente útiles a la hora de depurar sus contratos inteligentes, pero también son importantes si construye aplicaciones utilizadas por diferentes personas. También facilitan los análisis para averiguar y entender cómo se utiliza su contrato inteligente. Los registros generados por transacciones se muestran en exploradores de bloques populares y también puede utilizarlos, por ejemplo, para crear scripts fuera de la cadena para escuchar eventos específicos y emprender acciones cuando ocurran.
diff --git a/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
new file mode 100644
index 00000000000..c0b55391e78
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -0,0 +1,241 @@
+---
+title: Pruebas de Merkle para la integridad de los datos fuera de línea
+description: Asegurar la integridad de los datos en la cadena para los datos que se almacenan, sobre todo, fuera de la cadena.
+author: Ori Pomerantz
+tags:
+ - "almacenamiento"
+skill: advanced
+lang: es
+published: 2021-12-30
+---
+
+## Introducción {#introduction}
+
+Idóneamente, nos gustaría guardar todo en el almacenamiento de Ethereum, el cual se guarda en miles de computadoras y tiene una disponibilidad extremadamente alta (los datos no pueden ser censurados) e integridad (los datos no pueden ser modificados de una manera no autorizada), sin embargo almacenar una palabra de 32 bytes suele costar 20.000 gas. En el momento de redactar este artículo, el coste actual es de 6,60 $. A 21 centavos por byte esto es demasiado costoso para muchos usos.
+
+Para resolver este problema, el ecosistema de Ethereum desarrolló [muchas formas alteranativas de almacenar datos de una manera decentralizada](/developers/docs/storage/). Usualmente involucran compensar entre disponibilidad y precio. Sin embargo, normalmente se asegura la integridad.
+
+En este artículo, descubrirá **cómo** asegurar la integridad de los datos sin almacenar los datos en la cadena de bloques, usando [Pruebas de Merkle](https://computersciencewiki.org/index.php/Merkle_proof).
+
+## ¿Cómo funciona? {#how-does-it-work}
+
+En teoría podríamos almacenar el hash de los datos en cadena y enviar todos los datos en transacciones que lo requieran. No obstante, sigue siendo demasiado caro. Un byte de data a una transacción cuesta alrededor de 16 gas, actualmente cerca de medio centavo, o aproximadamente 5 dólares por kilobyte. A 5.000 $ por megabyte, esto sigue siendo demasiado caro para muchos usos, incluso sin el coste añadido de acelerar los datos.
+
+La solución consiste en acelerar repetidamente diferentes subconjuntos de los datos, de forma que para los datos que no necesite enviar, pueda simplemente enviar un hash. Esto se hace utilizando un árbol Merkle, una estructura de datos en arbol donde cada nodo es un hash de los nodos debajo:
+
+![Árbol de Merkle](tree.png)
+
+El hash en la raíz es la única parte que necesita almacenarse en cadena. Para demostrar un determinado valor, proporcione todos los hash que necesitan combinarse con él para obtener la raíz. Por ejemplo, para probar `C` proporcionas `D`, `H(A-B)`y `H(E-H)`.
+
+![Prueba del valor de C](proof-c.png)
+
+## Implementación {#implementation}
+
+[El código de muestra se proporciona aquí](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity).
+
+### Código fuera de la cadena {#off-chain-code}
+
+En este artículo, utilizamos JavaScript para los cálculos fuera de la cadena. La mayoría de las aplicaciones descentralizadas tienen su componente fuera de la cadena en JavaScript.
+
+#### Crear la raíz de Merkle {#creating-the-merkle-root}
+
+Primero necesitamos proporcionar la raíz de Merkle a la cadena.
+
+```javascript
+const ethers = require("ethers")
+```
+
+[Utilizamos la función hash del paquete ethers](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256).
+
+```javascript
+// The raw data whose integrity we have to verify. The first two bytes a
+// are a user identifier, and the last two bytes the amount of tokens the
+// user owns at present.
+const dataArray = [
+ 0x0bad0010, 0x60a70020, 0xbeef0030, 0xdead0040, 0xca110050, 0x0e660060,
+ 0xface0070, 0xbad00080, 0x060d0091,
+]
+```
+
+Codificar cada entrada en un único entero de 256 bits resulta en un código menos legible que el de JSON, por ejemplo. Sin embargo, esto significa un procesamiento significativamente menor para recuperar los datos en el contrato, unos costes de gas mucho menores. [Puede leer JSON en la cadena](https://github.com/chrisdotn/jsmnSol), aunque no es muy aconsejable, si se puede evitar.
+
+```javascript
+// The array of hash values, as BigInts
+const hashArray = dataArray
+```
+
+En este caso para empezar nuestros datos son valores de 256 bits, por que no se necesita ningún procesamiento. Si utilizamos una estructura de datos más compleja, como cadenas, necesitamos asegurarnos de que hacemos hash los datos primero para obtener una matriz de hashes. Tenga en cuenta que esto también es porque no nos importa que los usuarios conozcan la información de otros usuarios. De lo contrario, habríamos tenido que hacer hash para que el usuario 1 no sepa el valor para el usuario 0, el usuario 2 no sabrá el valor del usuario 3, etc.
+
+```javascript
+// Convert between the string the hash function expects and the
+// BigInt we use everywhere else.
+const hash = (x) =>
+ BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0)))
+```
+
+La función hash de ethers espera obtener una cadena de JavaScript con un número hexadecimal, como `0x60A7`, y responde con otra cadena con la misma estructura. Sin embargo, para el resto de código es más fácil usar `BigInt`, para convertir a una cadena hexadecimal y viceversa.
+
+```javascript
+// Symmetrical hash of a pair so we won't care if the order is reversed.
+const pairHash = (a, b) => hash(hash(a) ^ hash(b))
+```
+
+Esta función es simétrica (hash de un [xor](https://en.wikipedia.org/wiki/Exclusive_or) b). Esto significa que cuando revisamos la prueba de Merkle no debemos preocuparnos sobre si el valor de la prueba debe ser colocado antes o después del valor calculado. La revisión de la prueba de Merkle se realiza en la cadena, así que cuanto menos necesitemos hacer, mejor.
+
+Advertencia: la criptografía es más complicada de lo que parece. La versión inicial de este artículo tuvo la función de hash `hash(a^b)`. Y no muy nada **atinado**, porque esto significaba que si conocía los valores legítimos de `a` y `b`, podría usar `b' = a^b^a'` para probar cualquier valor deseado de `a'`. Con esta función tendrías que calcular `b'` tal que `hash(a') ^hash(b')` es igual a un valor conocido (la siguiente rama en el camino a la raíz), lo que es más difícil.
+
+```javascript
+// The value to denote that a certain branch is empty, doesn't
+// have a value
+const empty = 0n
+```
+
+Cuando el número de valores no es un entero potencia de dos, necesitamos manejar ramas vacías. La manera en que este programa lo hace es colocando cero como marcador de posición.
+
+![Árbol Merkle con ramas faltantes](merkle-empty-hash.png)
+
+```javascript
+// Calculate one level up the tree of a hash array by taking the hash of
+// each pair in sequence
+const oneLevelUp = (inputArray) => {
+ var result = []
+ var inp = [...inputArray] // To avoid over writing the input // Add an empty value if necessary (we need all the leaves to be // paired)
+
+ if (inp.length % 2 === 1) inp.push(empty)
+
+ for (var i = 0; i < inp.length; i += 2)
+ result.push(pairHash(inp[i], inp[i + 1]))
+
+ return result
+} // oneLevelUp
+```
+
+La función «escala» un nivel en el árbol Merkle al hacer hash de los pares de valores en la capa actual. Observe que esta no es la implementación más eficiente, porque podríamos haber evitado copiar el resultado y solo añadir `hashEmpty` cuando sea apropiado en el bucle, pero este código está optimizado para una mejor lectura.
+
+```javascript
+const getMerkleRoot = (inputArray) => {
+ var result
+
+ result = [...inputArray] // Climb up the tree until there is only one value, that is the // root. // // If a layer has an odd number of entries the // code in oneLevelUp adds an empty value, so if we have, for example, // 10 leaves we'll have 5 branches in the second layer, 3 // branches in the third, 2 in the fourth and the root is the fifth
+
+ while (result.length > 1) result = oneLevelUp(result)
+
+ return result[0]
+}
+```
+
+Para obtener la raíz, escalamos hasta que solo quede un valor.
+
+#### Cómo crear una prueba de Merkle {#creating-a-merkle-proof}
+
+Una prueba de Merkle son los valores que se mezclan junto con el valor que se demuestra para recuperar la raíz de Merkle. Por lo general, el valor para probar está disponible a partir de otros datos, por eso prefiero proporcionarlo de manera separada, en vez de como una parte del código.
+
+```javascript
+// A merkle proof consists of the value of the list of entries to
+// hash with. Because we use a symmetrical hash function, we don't
+// need the item's location to verify the proof, only to create it
+const getMerkleProof = (inputArray, n) => {
+ var result = [], currentLayer = [...inputArray], currentN = n
+
+ // Until we reach the top
+ while (currentLayer.length > 1) {
+ // No odd length layers
+ if (currentLayer.length % 2)
+ currentLayer.push(empty)
+
+ result.push(currentN % 2
+ // If currentN is odd, add with the value before it to the proof
+ ? currentLayer[currentN-1]
+ // If it is even, add the value after it
+ : currentLayer[currentN+1])
+
+```
+
+Unimos `(v[0],v[1])`, `(v[2],v[3])`, etc. Encontes, para valores pares necesitamos el siguiente, y para valores impares, el anterior.
+
+```javascript
+ // Move to the next layer up
+ currentN = Math.floor(currentN/2)
+ currentLayer = oneLevelUp(currentLayer)
+ } // while currentLayer.length > 1
+
+ return result
+} // getMerkleProof
+```
+
+### Código en la cadena {#on-chain-code}
+
+Por último, tenemos el código que comprueba la prueba. El código en la cadena se escribe en [Solidity](https://docs.soliditylang.org/en/v0.8.11/). La optimización es más importante aquí porque el gas es relativamente caro.
+
+```solidity
+//SPDX-License-Identifier: Public Domain
+pragma solidity ^0.8.0;
+
+import "hardhat/console.sol";
+```
+
+Escribí esto usando el [entorno de desarrollo Hardhat](https://hardhat.org/), que nos permite tener [resultados de la consola desde Solidity](https://hardhat.org/tutorial/debugging-with-hardhat-network.html) mientras desarrollamos.
+
+```solidity
+
+contract MerkleProof {
+ uint merkleRoot;
+
+ function getRoot() public view returns (uint) {
+ return merkleRoot;
+ }
+
+ // Extremely insecure, in production code access to
+ // this function MUST BE strictly limited, probably to an
+ // owner
+ function setRoot(uint _merkleRoot) external {
+ merkleRoot = _merkleRoot;
+ } // setRoot
+```
+
+Establecer y obtener funciones para la raíz de Merkle. Permitir que cualquiera actualice la raíz de Merkle es una _idea totalmente desaconsejable_ en un sistema de producción. Aquí lo hago con el objetivo de la simplicidad en el código de ejemplo. **No lo haga en un sistema donde la integridad de los datos realmente importe**.
+
+```solidity
+ function hash(uint _a) internal pure returns(uint) {
+ return uint(keccak256(abi.encode(_a)));
+ }
+
+ function pairHash(uint _a, uint _b) internal pure returns(uint) {
+ return hash(hash(_a) ^ hash(_b));
+ }
+```
+
+Esta función genera un par hash. Solo es la traducción de Solidity del código de JavaScript para `hash` y `pairHash`.
+
+**Nota**: Este es otro caso de optimización para la lectura. Basado en la [definición de función](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm), es posible almacenar los datos como un valor [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) y evitar las conversiones.
+
+```solidity
+ // Verify a Merkle proof
+ function verifyProof(uint _value, uint[] calldata _proof)
+ public view returns (bool) {
+ uint temp = _value;
+ uint i;
+
+ for(i=0; i<_proof.length; i++) {
+ temp = pairHash(temp, _proof[i]);
+ }
+
+ return temp == merkleRoot;
+ }
+
+} // MarkleProof
+```
+
+En notación matemática, la verificación de prueba de Merkle dice así: `H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`. Este código lo implementa.
+
+## Las pruebas de Merkle y los rollups no se mezclan {#merkle-proofs-and-rollups}
+
+Las pruebas de Merkle no funcionan bien con las acumulaciones o [rollups](/developers/docs/scaling/#rollups). La razón es que los rollups escriben todos los datos de la transacción en L1, pero los procesa en L2. El costo de enviar una prueba de Merkle con una transacción se promedia en 638 de gas por capa (actualmente, un byte en un llamado de datos cuesta 16 de gas si es diferente a cero y 4 si es cero). Si tenemos 1024 palabras de datos, una prueba de Merkle requiere diez capas o un total de 6380 de gas.
+
+Veamos como ejemplo a [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m), escribir L1 cuesta alrededor de 100 gwei en gas y L2 cuesta 0,001 gwei en gas (ese es un precio normal, puede aumentar con la congestión). Entonces para el coste de un gas L1 podemos gastar mil de gas en L2. Asumiendo que no hemos sobrescrito el almacenamiento, esto significa que podemos escribir alrededor de cinco palabras en el almacenamiento en L2 para el precio de un gas L1. Para una única prueba de Merkle podemos escribir el total de 1.024 palabras en el almacenamiento (asimiendo que se pueden calcular en la cadena para empezar, en vez de proporcionarlas en la transacción) y todavía tenemos la mayoría del gas restante.
+
+## Conclusión {#conclusion}
+
+En la vida real puede que nunca implemente árboles de Merkle por su cuenta. Hay bibliotecas bien conocidas y auditadas que puede utilizar y, por lo general, es mejor no implementar criptográficos primitivos por su cuenta. Pero espero que ahora comprenda mejor las pruebas de Merkle y pueda decidir cuándo es mejor usarlas.
+
+Note que mientras las pruebas de Merkle preservan la _integridad_, no preservan la _disponibilidad_. Saber que nadie puede adueñarse de sus activos es una pequeña consolación si el almacenamiento de datos decide desactivar el acceso y no puede construir un árbol de Merkle para acceder a estos. Por tanto, es mejor usar los árboles de Merkle con algún tipo de almacenamiento descentralizado, como IPFS.
diff --git a/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
new file mode 100644
index 00000000000..c07d326fc07
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
@@ -0,0 +1,147 @@
+---
+title: Monitoreando Geth con InfluxDB y Grafana
+description:
+author: "Mario Havel"
+tags:
+ - "clientes"
+ - "nodos"
+skill: intermediate
+lang: es
+published: 2021-01-13
+---
+
+Este tutorial le ayudará a configurar el monitoreo de su nodo Geth para que pueda comprender mejor su rendimiento e identificar problemas potenciales.
+
+## Pre requisitos {#prerequisites}
+
+- Ya deberías estar ejecutando una instancia de Geth.
+- La mayoría de los pasos y ejemplos son para el entorno linux, el conocimiento básico de la terminal será útil.
+- Echa un vistazo a este video resumen del conjunto de métricas de Geth: [Monitorización de una infraestructura Ethereum por Péter Szilágyi](https://www.youtube.com/watch?v=cOBab8IJMYI).
+
+## Monitorización {#monitoring-stack}
+
+Un cliente de Ethereum recopila muchos datos que pueden ser leídos en forma de una base de datos cronológica. Para facilitar el monitoreo, usted puede alimentar esto en software de visualización de datos. Hay varias opciones disponibles:
+
+- [Prometheus](https://prometheus.io/) (pull model)
+- [InfluxDB](https://www.influxdata.com/get-influxdb/) (modelo push)
+- [Telegraf](https://www.influxdata.com/get-influxdb/)
+- [Grafana](https://www.grafana.com/)
+- [Datadog](https://www.datadoghq.com/)
+- [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/)
+
+También hay [Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter), una opción preconfigurada con InfluxDB y Grafana. Puedes configurarlo fácilmente usando docker y [Ethbian OS](https://ethbian.org/index.html) para RPi 4.
+
+En este tutorial configuraremos su cliente Geth para enviar datos a InfluxDB para crear una base de datos y Grafana para crear una visualización gráfica de los datos. Hacerlo manualmente le ayudará a entender el proceso mejor, modificarlo, e implementarlo en diferentes entornos.
+
+## Configurando InfluxDB {#setting-up-influxdb}
+
+Primero, vamos a descargar e instalar InfluxDB. Varias opciones de descarga se pueden encontrar en [Influxdata release page](https://portal.influxdata.com/downloads/). Elige el que se adapte a tu entorno. También puede instalarlo desde un [repositorio](https://repos.influxdata.com/). Por ejemplo en la distribución basada en Debian:
+
+```
+curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
+source /etc/lsb-release
+echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
+sudo apt update
+sudo apt install influxdb -y
+sudo systemctl enable influxdb
+sudo systemctl start influxdb
+sudo apt install influxdb-client
+```
+
+Después de instalar InfluxDB, asegúrese de que se está ejecutando en segundo plano. Por defecto, es accesible en `localhost:8086`. Antes de usar el cliente `influx`, tienes que crear un nuevo usuario con privilegios de administrador. Este usuario servirá para una gestión de alto nivel, creando bases de datos y usuarios.
+
+```
+curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"
+```
+
+Ahora puede utilizar el cliente influx para ingresar [InfluxDB shell](https://docs.influxdata.com/influxdb/v1.8/tools/shell/) con este usuario.
+
+```
+influx -username 'username' -password 'password'
+```
+
+Directamente comunicándose con InfluxDB en su shell, puede crear bases de datos y usuario para las métricas geth.
+
+```
+create database geth
+create user geth with password choosepassword
+```
+
+Verificar entradas creadas con:
+
+```
+show databases
+show users
+```
+
+Deja el shell de InfluxDB.
+
+```
+exit
+```
+
+InfluxDB se está ejecutando y configurado para almacenar métricas de Geth.
+
+## Preparando Geth {#preparing-geth}
+
+Después de configurar la base de datos, necesitamos habilitar la recolección de métricas en Geth. Presta atención a `METRICS AND STATS OPTIONS` en `geth --help`. Se pueden encontrar múltiples opciones, en este caso queremos que Geth envíe datos a InfluxDB. La configuración básica especifica el endpoint donde InfluxDB es accesible y la autenticación para la base de datos.
+
+```
+geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"
+```
+
+Estos parámetros pueden ser añadidos a un comando que inicia el cliente o guardados en el archivo de configuración.
+
+Puede verificar que Geth está enviando datos con éxito, por ejemplo listando métricas en la base de datos. Deja el shell de InfluxDB:
+
+```
+use geth
+show measurements
+```
+
+## Configurando Grafana {#setting-up-grafana}
+
+El siguiente paso es instalar Grafana que interpretará los datos gráficamente. Siga el proceso de instalación para su entorno en la documentación de Grafana. Asegúrese de instalar la versión OSS si no desea otra cosa. Ejemplo de pasos de instalación para las distribuciones de Debian utilizando el repositorio:
+
+```
+curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
+echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
+sudo apt update
+sudo apt install grafana
+sudo systemctl enable grafana-server
+sudo systemctl start grafana-server
+```
+
+Cuando tengas a Grafana funcionando, debería ser accesible en `localhost:3000`. Utilice su navegador preferido para acceder a esta ruta, luego inicie sesión con las credenciales predeterminadas (usuario: `admin` y contraseña: `admin`). Cuando se le solicite, cambie la contraseña por defecto y guárdela.
+
+![](./grafana1.png)
+
+Serás redirigido a la página principal de Grafana. Primero, configura tus datos de origen. Haga clic en el icono de configuración de la barra izquierda y seleccione "Fuentes de datos".
+
+![](./grafana2.png)
+
+No hay ninguna fuente de datos creada todavía, haga clic en "Añadir fuente de datos" para definir una.
+
+![](./grafana3.png)
+
+Para esta configuración, seleccione "InfluxDB" y proceda.
+
+![](./grafana4.png)
+
+La configuración de la fuente de datos es bastante directa si está ejecutando herramientas en la misma máquina. Necesita configurar la dirección de InfluxDB y los detalles para acceder a la base de datos. Consulte la siguiente imagen.
+
+![](./grafana5.png)
+
+Si todo está completado e InfluxDB es alcanzable, haga click en "Save and test" y espere que se muestre la confirmación.
+
+![](./grafana6.png)
+
+Grafana ahora está configurado para leer datos de InfluxDB. Ahora necesitas crear un panel que se encargará de interpretarla y mostrarla. Las propiedades de los paneles están codificados en archivos JSON que pueden ser creados por cualquier persona y fácilmente importados. En la barra lateral, haga click en "Create and Import".
+
+![](./grafana7.png)
+
+Para un panel de monitoreo de Geth, copie el ID de [este panel](https://grafana.com/grafana/dashboards/13877/) y péguelo en la "página de Importación" de Grafana. Luego de guardar el panel, debería verse así:
+
+![](./grafana8.png)
+
+Puedes modificar tus paneles. Cada panel puede ser editado, movido, removido o agregado. Puedes cambiar tus configuraciones. ¡Tú decides! Para leer más sobre el funcionamiento de los paneles, consulte la [documentación de Grafana](https://grafana.com/docs/grafana/latest/dashboards/). También puede que muestres interés en [Alerting](https://grafana.com/docs/grafana/latest/alerting/). Esto te permite configurar notificaciónes de alertas para cuando las métricas alcancen ciertos valores. Varios canales de comunicación están soportados.
diff --git a/public/content/translations/es/developers/tutorials/nft-minter/index.md b/public/content/translations/es/developers/tutorials/nft-minter/index.md
new file mode 100644
index 00000000000..9ce858d109e
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/nft-minter/index.md
@@ -0,0 +1,874 @@
+---
+title: Tutorial de minteador de NFT
+description: En este tutorial, creará un minteador de NFT y aprenderá cómo crear una dapp de pila completa conectando su contrato inteligente a un frontend de React por medio de Metamask y herramientas web3.
+author: "smudgil"
+tags:
+ - "solidity"
+ - "NFT"
+ - "alchemy"
+ - "contratos inteligentes"
+ - "frontend"
+ - "Pinata"
+skill: intermediate
+lang: es
+published: 2021-10-06
+---
+
+Uno de los mayores desafíos para los desarrolladores que vienen de un entorno web2 es averiguar cómo conectar su contrato inteligente a un proyecto de frontend e interactuar con él.
+
+Creando un minteador de NFT —una interfaz de usuario sencilla donde puede introducir un enlace a su activo digital, un título y una descripción—, aprenderá como:
+
+- Establecer conexión con MetaMask a través del proyecto de frontend
+- Invocar métodos de contrato inteligente desde su frontend
+- Firmar transacciones usando MetaMask
+
+En este tutorial, usaremos [React](https://reactjs.org/) como framework de frontend. Debido a que este tutorial se centra principalmente en el desarrollo web3, no vamos a dedicar mucho tiempo a profundizar en los fundamentos de React. En su lugar, nos enfocaremos en aportar funcionalidad a nuestro proyecto.
+
+Como requisito previo, debe tener una comprensión básica de React, es decir, cómo funcionan los componentes, props, useState/useEffect y las llamadas a funciones básicas. Si nunca ha oído hablar de alguno de esos términos antes, tal vez quiera revisar este [tutorial de introducción a React](https://reactjs.org/tutorial/tutorial.html). Para los alumnos más visuales, recomendamos encarecidamente esta excelente serie de videos [Tutorial completo de React moderno](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) de Net Ninja.
+
+Y si aún no lo ha hecho, definitivamente necesitará una cuenta de Alchemy para completar este tutorial, así como crear cualquier cosa en la cadena de bloques. Regístrese para obtener una cuenta gratuita [aquí](https://alchemy.com/).
+
+Sin más preámbulos, ¡comencemos!
+
+## Aspectos básicos sobre creación de NFT {#making-nfts-101}
+
+Antes de incluso empezar a experimentar con el código, es importante entender se qué se trata crear un NFT. Implica dos pasos:
+
+### Publicar un contrato inteligente de NFT en la cadena de bloques de Ethereum {#publish-nft}
+
+La mayor diferencia entre los dos estándares de contrato inteligente de NFT es que ERC-1155 es un estándar multitoken e incluye funcionalidad por lotes, mientras que ERC-721 es un estándar de un solo token, por lo tanto solo permite la transferencia de un token a la vez.
+
+### Invocar la función de minteo {#minting-function}
+
+Generalmente, esta función de minteo requiere pasar dos variables como parámetros, primero el `recipient`, que especifica la dirección que recibirá su NFT recién minteado, y luego el `tokenURI` del NFT, una cadena que resuelve a un documento JSON que describe los metadatos del NFT.
+
+Los metadatos de un NFT son realmente lo que le dan vida, permitiéndole tener propiedades como nombre, descripción, imagen (o un activo digital diferente) y otros atributos. Este es un [ejemplo de un tokenURI](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2), el cual contiene los metadatos de un NFT.
+
+En este tutorial, vamos a centrarnos en la parte 2, donde invocaremos la función de minteo de un contrato inteligente de NFT existente utilizando nuestra interfaz de usuario de React.
+
+[Aquí hay un enlace](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) al contrato inteligente de NFT ERC-721 que invocaremos en este tutorial. Si quiere aprender cómo lo hicimos, le recomendamos que revise nuestro otro tutorial [Cómo crear un NFT](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+
+Bien, ahora que entendemos cómo es crear un NFT, ¡clonemos nuestros archivos de inicio!
+
+## Clone los archivos de inicio {#clone-the-starter-files}
+
+Primero, vaya al [repositorio de GitHub nft-minter-tutorial](https://github.com/alchemyplatform/nft-minter-tutorial) para obtener los archivos de inicio de este proyecto. Clone este repositorio en su entorno local.=
+
+Cuando abra el repositorio clonado `nft-minter-tutorial`, notará que contiene dos carpetas: `minter-starter-files` y `nft-minter`.
+
+- `minter-starter-files` contiene los archivos de inicio (esencialmente la interfaz de usuario de React) para este proyecto. En este tutorial, **trabajaremos en este directorio** para que vea cómo dar vida a esta UI conectándola a su billetera de Ethereum y a un contrato inteligente de NFT.
+- `nft-minter` contiene todo el tutorial completado y está disponible como **referencia** ** si se estanca.**
+
+A continuación, abra su copia de `minter-starter-files` en su editor de código y luego vaya a la carpeta `src`.
+
+Todo el código que escribiremos permanecerá en la carpeta `src`. Editaremos el componente `Minter.js` y escribiremos archivos javascript adicionales para dar a nuestro proyecto funcionalidad Web3.
+
+## Paso 2: Revisar nuestros archivos de inicio {#step-2-check-out-our-starter-files}
+
+Antes de empezar a programar, es importante comprobar lo que ya se nos ha proporcionado en los archivos de inicio.
+
+### Ejecute su proyecto de react {#get-your-react-project-running}
+
+Comencemos por ejecutar el proyecto React en nuestro navegador. La belleza de React es que, una vez que tenemos nuestro proyecto corriendo en el navegador, cualquier cambio que guardemos será actualizado en vivo en el navegador.
+
+Para ejecutar el proyecto, vaya al directorio raíz de la carpeta `minter-starter-files` y ejecute `npm install` en su terminal para instalar las dependencias del proyecto:
+
+```bash
+cd minter-starter-files
+npm install
+```
+
+Una vez que hayan terminado de instalarse, ejecute `npm start` en su terminal:
+
+```bash
+npm start
+```
+
+Al hacerlo, se debería abrir http://localhost:3000/ en el navegador, donde verá el frontend de nuestro proyecto. Debe constar de 3 campos: un lugar para introducir un enlace al activo de su NFT, uno para introducir el nombre del NFT y otro para proporcionar una descripción.
+
+Si intenta hacer clic en los botones "Connect Wallet" o "Mint NFT", notará que no funcionan: es porque todavía necesitamos programar su funcionalidad. :\)
+
+### El componente Minter.js {#minter-js}
+
+**NOTA:** Asegúrese de estar en la carpeta `minter-starter-files` y no en la carpeta `nft-minter`.
+
+Volvamos a la carpeta `src` en nuestro editor y abramos el archivo `Minter.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
+
+En la parte superior de este archivo, tenemos nuestras variables de estado que actualizaremos después de eventos específicos.
+
+```javascript
+//State variables
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [name, setName] = useState("")
+const [description, setDescription] = useState("")
+const [url, setURL] = useState("")
+```
+
+¿Nunca escuchó hablar de variables de estado o hooks de estado de React? Échale un vistazo a [estos](https://reactjs.org/docs/hooks-state.html) documentos.
+
+Esto es lo que representa cada una de las variables:
+
+- `walletAddress`: cadena que almacena la dirección de la billetera del usuario
+- `status`: cadena que contiene un mensaje para mostrar en la parte inferior de la interfaz de usuario
+- `name`: cadena que almacena el nombre del NFT
+- `description`: cadena que almacena la descripción del NFT
+- `url`: cadena que actúa como enlace al activo digital del NFT
+
+Después de las variables de estado, verá tres funciones no implementadas: `useEffect`, `connectWalletPressed` y `onMintPressed`. Notará que todas estas funciones son `async`, ¡eso es porque vamos a hacer llamadas asincrónicas de API en ellas! Sus nombres son epónimos con sus funcionalidades:
+
+```javascript
+useEffect(async () => {
+ //TODO: implement
+}, [])
+
+const connectWalletPressed = async () => {
+ //TODO: implement
+}
+
+const onMintPressed = async () => {
+ //TODO: implement
+}
+```
+
+- [`useEffect`](https://reactjs.org/docs/hooks-effect.html): este es un hook de React que es invocado después de renderizar su componente. Debido a que tiene un prop `[]` de array vacío que se pasa a él (ver línea 3), solo se lo invocará en el _primer_ render del componente. Aquí llamaremos a nuestro oyente de billetera y otra función de billetera para actualizar nuestra interfaz de usuario a fin de reflejar si una billetera ya está conectada.
+- `connectWalletPressed`: esta función será invocada para conectar la billetera en MetaMask del usuario a nuestra dapp.
+- `onMintPressed`: esta función será invocada para mintear el NFT del usuario.
+
+Cerca del final de este archivo, tenemos la interfaz de usuario de nuestro componente. Si analiza este código cuidadosamente, notará que actualizamos nuestras variables de estado `url`, `name` y `description` cuando la entrada en sus campos de texto correspondientes cambian.
+
+También verá que `conectWalletPressed` y `onMintPressed` son invocadas cuando se hace clic en los botones con los ID `mintButton` y `walletButton`.
+
+```javascript
+//the UI of our component
+return (
+
+
+
+
+
🧙♂️ Alchemy NFT Minter
+
+ Simply add your asset's link, name, and description, then press "Mint."
+
+
+
+
{status}
+
+)
+```
+
+Finalmente, abordemos dónde se añade este componente Minter.
+
+Si va al archivo `App.js`, que es el componente principal de React que actúa como contenedor de todos los demás componentes, verá que nuestro componente Minter se inyecta en la línea 7.
+
+**En este tutorial, solo editaremos el `archivo Minter.js` y añadiremos archivos en nuestra carpeta `src`.**
+
+Ahora que entendemos con qué estamos trabajando, configuremos nuestra billetera de Ethereum.
+
+## Configure su billetera de Ethereum {#set-up-your-ethereum-wallet}
+
+Para que los usuarios puedan interactuar con su contrato inteligente, necesitarán conectar su billetera de Ethereum a su dapp.
+
+### Descargar MetaMask {#download-metamask}
+
+Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Si desea más información sobre cómo funcionan las transacciones en Ethereum, eche un vistazo a [esta página](/developers/docs/transactions/).
+
+Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download.html). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la "Red de prueba Ropsten" en la parte superior derecha \(para no usar dinero real\).
+
+### Añada ether a partir de un grifo {#add-ether-from-faucet}
+
+Para mintear nuestros NFTs (o firmar cualquier transacción en la cadena de bloques de Ethereum), necesitaremos algo de Eth de prueba (de mentira). Para obtener el Eth, puede ir al [grifo de Ropsten](https://faucet.ropsten.be/) e introducir la dirección de su cuenta de Ropsten y dar clic en "Send Ropsten Eth". Debería ver el Eth en su cuenta de MetaMask poco después.
+
+### Compruebe su saldo {#check-your-balance}
+
+Para verificar que nuestro saldo esté ahí, realicemos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la [herramienta de compositor de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request», debería ver una respuesta como esta:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**NOTA:** Este resultado esta en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
+
+¡Fiu! Nuestro dinero de prueba está ahí sin problemas.
+
+## Conecte Metamask a su UI {#connect-metamask-to-your-UI}
+
+Ahora que nuestra billetera de MetaMask está configurada, vamos a conectar nuestra dapp a ella.
+
+Debido a que queremos prescribir al paradigma [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), vamos a crear un archivo separado que contenga nuestras funciones para gestionar la lógica, los datos y las reglas de nuestra dapp, para luego pasar estas funciones a nuestro frontend (nuestro componente Minter.js).
+
+### Función `connectWallet` {#connect-wallet-function}
+
+Para hacer eso, vamos a crear una nueva carpeta llamada `utils` en el directorio `src` y agregaremos un archivo llamado `interact.js` dentro de esta, que contendrá todas las funciones de interacción de nuestra billetera y contrato inteligente.
+
+En nuestro archivo `interact.js`, escribiremos una función `connectWallet`, que luego importaremos y llamaremos en nuestro componente `Minter.js`.
+
+En el archivo `interact.js`, añada lo siguiente:
+
+```javascript
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Analicemos lo que hace este código:
+
+Primero, nuestra función revisa si `window.ethereum` está activado en su navegador.
+
+`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de billeteras que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. En caso de aprobación, puede leer información de la cadena de bloques a la que el usuario se encuentra conectado y sugerir al usuario que firme mensajes y transacciones. Revise la [documentación de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información.
+
+Si `window.ethereum` _no está_ presente, eso significa que MetaMask no está instalado. Esto resulta en la devolución de un objeto JSON, donde el `address` devuelto es una cadena vacía y el objeto JSX `status` muestra que el usuario debe instalar MetaMask.
+
+**Muchas de las funciones que escribamos mostrarán objetos JSON que podemos usar para actualizar nuestras variables de estado y UI.**
+
+Ahora, si `window.ethereum` _está_ presente, las cosas se ponen interesantes.
+
+Usando un bucle try/catch, trataremos de conectar con MetaMask invocando `[window.ethereum.request({ method: "eth_requestAccounts" });](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts)`. La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
+
+- Si el usuario elige conectarla, `method: "eth_requestAccounts"` devolverá un arreglo que contiene todas las direcciones de la cuenta del usuario que están conectadas a la dapp. De igual manera, nuestra función `connectWallet` devolverá un objeto JSON que contine la _primera_ `address` de este arreglo \(ver la línea 9\) y un mensaje de `status` que solicita al usuario escribir un mensaje al contrato inteligente.
+- Si el usuario rechaza la conexión, el objeto JSON tendrá una cadena vacía para la `address` devuelta y un mensaje de `status` donde se refleje que el usuario rechazó la conexión.
+
+### Agregue la función connectWallet a su componente Minter.js {#add-connect-wallet}
+
+Ahora que hemos escrito esta función `connectWallet`, vamos a conectarla con nuestro componente `Minter.js`.
+
+Primero, tenemos que importar nuestra función a nuestro archivo `Minter.js` agregando `import { connectWallet } from "./utils/interact.js";` en la parte superior del archivo `Minter.js`. Las primeras 11 líneas de `Minter.js` deberían lucir así:
+
+```javascript
+import { useEffect, useState } from "react";
+import { connectWallet } from "./utils/interact.js";
+
+const Minter = (props) => {
+
+ //State variables
+ const [walletAddress, setWallet] = useState("");
+ const [status, setStatus] = useState("");
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [url, setURL] = useState("");
+```
+
+Luego, dentro de nuestra función `connectWalletPressed`, llamaremos a nuestra función `connectWallet` de la siguiente manera:
+
+```javascript
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+¿Nota cómo gran parte de nuestra funcionalidad es abstraída de nuestro componente `Minter.js` del archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
+
+En `connectWalletPressed`, simplemente hacemos una llamada en espera a nuestra función `conectWallet` importada y, utilizando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus hooks de estado.
+
+Ahora, guardemos ambos archivos `Minter.js` e `interact.js`, y probemos nuestra UI.
+
+Abra el navegador en localhost:3000 y presione el botón "Connect Wallet" en la parte superior derecha de la página.
+
+Si tiene MetaMask instalado, se le debería solicitar conectar su billetera a su dapp. Acepte la invitación para establecer la conexión.
+
+Debería ver que el botón de billetera ahora muestra que su dirección está conectada.
+
+A continuación, pruebe actualizar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
+
+¡No se preocupe! Podemos solucionarlo con facilidad implementando una función llamada `getCurrentWalletConnected`, que revisará si ya hay una dirección conectada a nuestra dapp y actualizará nuestra interfaz como corresponda.
+
+### La función getCurrentWalletConnected {#get-current-wallet}
+
+En su archivo `interact.js`, agregue la siguiente función `getCurrentWalletConnected`:
+
+```javascript
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Este código es _muy_ silimar a la función `connectWallet` que escribimos previamente.
+
+La principal diferencia es que, en vez de llamar al método `eth_requestAccount`, que abre MetaMask para que el usuario conecte su billetera, aquí llamamos al método `eth_accounts`, que simplemente devuelve un arreglo que contiene las direcciones de MetaMask que se encuentran conectadas a nuestra dapp.
+
+Para ver esta función en acción, vamos a llamarla en la función `useEffect` de nuestro componente `Minter.js`.
+
+Como hicimos para `connectWallet`, debemos importar esta función de nuestro archivo `interact.js` a nuestro archivo `Minter.js`:
+
+```javascript
+import { useEffect, useState } from "react"
+import {
+ connectWallet,
+ getCurrentWalletConnected, //import here
+} from "./utils/interact.js"
+```
+
+Ahora, simplemente la llamamos en nuestra función `useEffect`:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+Note que usamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
+
+Una vez agregado este código, pruebe actualizar la ventana del navegador. El botón debería decir que está conectado y mostrar una vista previa de la dirección de su billetera conectada, incluso después de actualizar la página.
+
+### Implemente addWalletListener {#implement-add-wallet-listener}
+
+El último paso en la configuración de la billetera de dapp es implementar el oyente de billetera para que nuestra interfaz se actualice cuando el estado de la billetera cambie, por ejemplo, cuando el usuario se desconecte o cambie de cuenta.
+
+En el archivo `Minter.js`, agregue una función `addWalletListener` que luzca así:
+
+```javascript
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ )
+ }
+}
+```
+
+Analicemos rápidamente lo que sucede aquí:
+
+- Primero, nuestra función verifica si `window.ethereum` está habilitado \(esto es si MetaMask está instalado\).
+ - Si no lo está, simplemente establecemos nuestra variable de estado `status` a una cadena JSX que solicite al usuario instalar MetaMask.
+ - Si está habilitado, configuramos el oyente `window.ethereum.on("accountsChanged")` en la línea 3, que escucha cambios de estado en la billetera de MetaMask, incluyendo cuando el usuario conecte una cuenta adicional a la dapp, cambie de cuenta o desconecte una cuenta. Si hay por lo menos una cuenta conectada, la variable de estado `walletAddress` es actualizada como la primera cuenta en el arreglo `accounts` devuelto por el oyente. De lo contrario, `walletAddress` se establece como cadena vacía.
+
+Finalmente, debemos llamarlo en nuestra función `useEffect`:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+¡Y voilá! ¡Hemos completado la programación de nuestra funcionalidad de billetera! ¡Ahora que nuestra billetera está configurada, veamos cómo mintear nuestro NFT!
+
+## Aspectos básicos sobre metadatos de NFT {#nft-metadata-101}
+
+Recordemos los metadatos de NFT sobre los que hablamos en el Paso 0 de este tutorial: dan vida a un NFT, permitiendo que tenga propiedades, tales como un activo digital, un nombre, una descripción y otros atributos.
+
+Vamos a tener que configurar estos metadatos como objeto JSON y almacenarlo para poder pasarlos como parámetro `tokenURI` cuando invoquemos la función `mintNFT` de nuestro contrato inteligente.
+
+El texto en los campos "Link to Asset", "Name" y "Description" comprenderá las diferentes propiedades de los metadatos de nuestro NFT. Formatearemos estos metadatos como un objeto JSON, pero hay un par de opciones para almacenar este objeto JSON:
+
+- Podríamos almacenarlo en la cadena de bloques de Ethereum; sin embargo, hacer esto puede ser muy caro.
+- Podríamos almacenarlo en un servidor centralizado, como AWS o Firebase. Pero esto iría en contra de nuestro espíritu de descentralización.
+- Podríamos usar IPFS, un protocolo descentralizado y red entre pares para almacenar y compartir datos en un sistema de archivos distribuido. Como este protocolo es descentralizado y gratuito, es nuestra mejor opción.
+
+Para almacenar nuestros metadatos en IPFS, usaremos [Pinata](https://pinata.cloud/), una conveniente API de IPFS y kit de herramientas. En el siguiente paso, explicaremos exactamente cómo hacer esto.
+
+## Use Pinata para fijar sus metadatos en IPFS {#use-pinata-to-pin-your-metadata-to-IPFS}
+
+Si no tiene una cuenta de [Pinata](https://pinata.cloud/), cree una cuenta gratuita [aquí](https://pinata.cloud/signup) y complete los pasos para verificar su correo electrónico y su cuenta.
+
+### Cree su clave de API de Pinata {#create-pinata-api-key}
+
+Navegue a la página [https://pinata.cloud/kets](https://pinata.cloud/keys), luego seleccione el botón "New Key" en la parte superior, establezca el widget de Administrador como habilitado y asigne un nombre a su clave.
+
+Luego verá una ventana emergente con la información de su API. Asegúrese de guardar estos datos en un lugar seguro.
+
+Ahora que nuestra clave está configurada, vamos a agregarla a nuestro proyecto para poder usarla.
+
+### Cree un archivo .env {#create-a-env}
+
+Podemos almacenar de manera segura nuestra clave y secreto de Pinata en un archivo de entorno. Vamos a instalar el [paquete dotenv](https://www.npmjs.com/package/dotenv) en el directorio del proyecto.
+
+Abra una nueva pestaña en su terminal \(separada de la que está ejecutando local host\) y asegúrese de que estar en la carpeta `minter-starter-files`; luego ejecute el siguiente comando en el terminal:
+
+```text
+npm install dotenv --save
+```
+
+A continuación, cree un archivo `.env` en el directorio raíz de `minter-starter-files` ingresando lo siguiente el la línea de comandos:
+
+```javascript
+vim.env
+```
+
+Esto abrirá el archivo `.env` en vim \(un editor de texto\). Para guardarlo, presione "esc" + ":" + "q" en el teclado en dicho orden.
+
+A continuación, en VSCode, navegue a su archivo `.env` y agregue su clave de API y secreto de API de Pinata a este, de la siguiente manera:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+```
+
+Guarde el archivo y luego estará listo para iniciar la escritura de la función para subir los metadatos JSON a IPFS.
+
+### Implemente pinJSONToIPFS {#pin-json-to-ipfs}
+
+Afortunadamente para nosotros, Pinata tiene una [API específicamente para subir datos JSON a IPFS](https://pinata.cloud/documentation#PinJSONToIPFS) y un práctico ejemplo de JavaScript con axios que podemos usar, con algunas ligeras modificaciones.
+
+En la carpeta `utils`, vamos a crear otro archivo llamado `pinata.js` y luego importar su secreto y clave de Pinata desde el archivo .env de la siguiente manera:
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+```
+
+A continuación, pegue el código adicional que se encuentra abajo en su archivo `pinata.js`. ¡No se preocupe, explicaremos lo que significa todo esto!
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+
+const axios = require("axios")
+
+export const pinJSONToIPFS = async (JSONBody) => {
+ const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS`
+ //making axios POST request to Pinata ⬇️
+ return axios
+ .post(url, JSONBody, {
+ headers: {
+ pinata_api_key: key,
+ pinata_secret_api_key: secret,
+ },
+ })
+ .then(function (response) {
+ return {
+ success: true,
+ pinataUrl:
+ "https://gateway.pinata.cloud/ipfs/" + response.data.IpfsHash,
+ }
+ })
+ .catch(function (error) {
+ console.log(error)
+ return {
+ success: false,
+ message: error.message,
+ }
+ })
+}
+```
+
+Entonces, ¿qué hace este código exactamente?
+
+Primero, importa [axios](https://www.npmjs.com/package/axios), un cliente HTTP basado en promesas para el navegador y node.js, que usaremos para hacer una solicitud a Pinata.
+
+Luego, tenemos nuestra función asíncrona `pinJSONToIPFS`, que toma un `JSONBody` como su entrada, además de la clave y secreto de la API de Pinata en su encabezado, todo para hacer una solicitud POST a su API de `pinJSONToIPFS`.
+
+- Si esta solicitud POST es exitosa, nuestra función devuelve un objeto JSON con el booleano `success` como verdadero y la `pinataUrl` donde fueron fijados nuestros metadatos. Usaremos esta `pinataUrl` devuelta como la entrada `tokenURI` a la función de minteo de nuestro contrato inteligente.
+- Si esta solicitud POST falla, la función devuelve un objeto JSON con el booleano `success` como falso y una cadena `message` que muestra el error.
+
+Como sucede con los tipos de retorno de la función `connectWallet`, estamos devolviendo objetos JSON para poder usar sus parámetros con la finalidad de actualizar nuestras variables de estado e interfaz.
+
+## Suba el contrato inteligente {#load-your-smart-contract}
+
+Ahora que tenemos una manera de cargar los metadatos de nuestro NFT a IPFS a través de la función `pinJSONToIPFS`, necesitaremos una manera de cargar una instancia del contrato inteligente para invocar su función `mintNFT`.
+
+Como se mencionó previamente, en este tutorial usaremos [este contrato inteligente de NFT existente](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE); sin embargo, si desea aprender cómo lo hicimos o crear uno por su cuenta, recomendamos consultar nuestro otro tutorial [Cómo crear un NFT](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+
+### ABI del contrato {#contract-abi}
+
+Si ha examinado nuestros archivos en detalle, habrá notado que en nuestro directorio `src` hay un archivo `contract-abi.json`. Un ABI es necesario para especificar qué función invocará un contrato y para asegurar que la función devolverá datos en el formato esperado.
+
+Tambien necesitaremos una clave de API de Alchemy y la API Web3 de Alchemy para establecer conexión con la cadena de bloques de Ethereum y cargar nuestro contrato inteligente.
+
+### Cree su clave API de Alchemy {#create-alchemy-api}
+
+Si todavía no tiene una cuenta de Alchemy, [cree una cuenta gratuita aquí](https://alchemy.com/?a=eth-org-nft-minter).
+
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá hacer solicitudes a la red de pruebas de Ropsten.
+
+Vaya a la página "Create App" en el panel de Alchemy colocando el cursor sobre "Apps" en la barra de navegación y haciendo click en "Create App".
+
+Asigne un nombre a la aplicación (nosotros elegimos "Mi primer NFT"), ofrezca una descripción, seleccione "Staging" para el Entorno usado para la contabilidad de la aplicación y seleccione "Ropsten" para la red.
+
+¡Haga clic en «Crear app» y ya está! Su aplicación debería aparecer en la siguiente tabla.
+
+¡Genial! Ahora que hemos creado la URL HTTP de la API de Alchemy, cópiela en el portapapeles...
+
+… y luego vamos a agregarla al archivo `.env`. En definitiva el archivo .env debe lucir así:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/
+```
+
+Ahora que tenemos nuestro ABI de contrato y la clave de API de Alchemy, estamos listos para cargar nuestro contrato inteligente usando [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
+
+### Configure el terminal y contrato de Alchemy Web3 {#setup-alchemy-endpoint}
+
+Primero, si aún no lo tiene, necesita instalar [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando al directorio de inicio: `nft-minter-tutorial` en el terminal:
+
+```text
+cd ..
+npm install @alch/alchemy-web3
+```
+
+A continuación, regresemos a nuestro archivo `interact.js`. En la parte superior del archivo, agregue el siguiente código para importar la clave de Alchemy desde el archivo .env y configurar su terminal de Alchemy Web3:
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+```
+
+[ Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) está construido sobre [Web3](https://docs.web3js.org/), de esta manera proporciona metodos mejorados de la API y otros beneficios importantes para que tu vida como desarrollador de Web3 sea mucho más fácil. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
+
+Ahora, agreguemos nuestro ABI de contrato y la dirección del contrato a nuestro archivo.
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE"
+```
+
+Una vez que tengamos ambos, estamos listos para comenzar con el código de nuestra función de minteo.
+
+## Implemente la función mintNFT {#implement-the-mintnft-function}
+
+Dentro del archivo `interact.js`, vamos a definir nuestra función, `mintNFT`, que de forma epónima minteará nuestro NFT.
+
+Debido a que realizaremos varias llamadas asíncronas \(a Pinata para fijar los metadatos a IPFS, a Alchemy Web3 para cargar nuestro contrato inteligente y a MetaMask para firmar las transacciones\), nuestra función también será asíncrona.
+
+Las tres entradas a nuestra función serán la `url` de nuestro activo digital, `name` y `description`. Agregue la siguiente firma de función debajo de la función `connectWallet`:
+
+```javascript
+export const mintNFT = async (url, name, description) => {}
+```
+
+### Manejo de errores de entrada {#input-error-handling}
+
+Naturalmente, tiene sentido tener algún tipo de manejo de errores de entrada en el inicio de la función, por lo que podemos abandonar esta función si nuestros parámetros de entrada son incorrectos. Dentro de nuestra función, agreguemos el siguiente código:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+}
+```
+
+Básicamente, si cualquiera de los parámetros de entrada son una cadena vacía, devolvemos un objeto JSON donde el booleano `success` es falso y la cadena `status` muestre que deben completarse todos los campos en nuestra UI.
+
+### Subir los metadatos a IPFS {#upload-metadata-to-ipfs}
+
+Una vez sabemos que sepamos que nuestros metadatos están formateados correctamente, el siguiente paso es ponerlos en un objeto JSON y subirlos a IPFS a través del `pinJSONToIPFS` que escribimos.
+
+Para hacer eso, primero necesitamos importar la función `pinJSONToIPFS` en el archivo `interact.js`. En la parte superior de `interact.js`, vamos a agregar:
+
+```javascript
+import { pinJSONToIPFS } from "./pinata.js"
+```
+
+Recuerde que `pinJSONToIPFS` toma un cuerpo JSON. Antes de hacer una invocación, necesitaremos formatear los parámetros `url`, `name` y `description` en un objeto JSON.
+
+Actualicemos nuestro código para crear un objeto JSON llamado `metadata` y luego hacer un llamado a `pinJSONToIPFS` con este parámetro de `metadata`:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //make pinata call
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+}
+```
+
+Note que guardamos la respuesta de nuestra llamada a `pinJSONToIPFS(metadata)` en el objeto `pinataResponse`. Luego, analizamos este objeto para buscar errores.
+
+Si hay un error, devolvemos un objeto JSON donde el booleano `success` es falso y nuestra cadena `status` transmita que nuestra llamada falló. De lo contrario, extraemos el `pinataURL` de `pinataResponse` y lo almacenamos como variable `tokenURI`.
+
+Ahora es momento de cargar nuestro contrato inteligente usando la API web3 de Alchemy que inicializamos en la parte superior de nuestro archivo. Agregue la siguiente línea de código al final de la función `mintNFT` para establecer el contrato en la variable global `window.contract`:
+
+```javascript
+window.contract = await new web3.eth.Contract(contractABI, contractAddress)
+```
+
+Lo último por agregar en nuestra función `mintNFT` es nuestra transacción de Ethereum:
+
+```javascript
+//set up your Ethereum transaction
+const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+}
+
+//sign the transaction via MetaMask
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+} catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+}
+```
+
+Si ya está familiarizado con las transacciones de Ethereum, notará que la estructura es muy similar a lo que ha visto.
+
+- Primero establecemos los parámetros de las transacciones.
+ - `to` especifica la dirección del receptor \(nuestro contrato inteligente\)
+ - `from` especifica el firmante de la transacción \(la dirección conectada del usuario a MetaMask: `window.ethereum.selectedAddress`\)
+ - `data` contiene el llamado al método `mintNFT` de nuestro contrato inteligente, que recibe nuestro `tokenURI` y la dirección de la billetera del usuario, `window.ethereum.selectedAddress` como entradas
+- Luego hacemos una llamada de espera, `window.ethereum.request`, donde le solicitamos a MetaMask firmar la transacción. Fíjese que en esta solicitud estamos especificando nuestro método eth \(eth_SentTransaction\) y pasando nuestros `transactionParameters`. En este punto, MetaMask se abrirá en el navegador y solicitará al usuario firmar o rechazar la transacción.
+ - Si la transacción es exitosa, la función devolverá un objeto JSON donde el booleano `success` es establecido como verdadero y la cadena `status` solicita al usuario revisar Etherscan para ver más información sobre la transacción.
+ - Si la transacción falla, la función devolverá un objeto JSON donde el booleano `success` es establecido en falso y la cadena `status` muestra el mensaje de error.
+
+En definitiva nuestra función `mintNFT` debería lucir así:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //pinata pin request
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+
+ //load smart contract
+ window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract();
+
+ //set up your Ethereum transaction
+ const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+ }
+
+ //sign transaction via MetaMask
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+ } catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+ }
+}
+```
+
+¡Es una función gigante! Ahora solo necesitamos conectar nuestra función `mintNFT` a nuestro componente `Minter.js`...
+
+## Conecte minterNFT a nuestro frontend Minter.js {#connect-our-frontend}
+
+Abra el archivo `Minter.js` y actualice la línea `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` al inicio a:
+
+```javascript
+import {
+ connectWallet,
+ getCurrentWalletConnected,
+ mintNFT,
+} from "./utils/interact.js"
+```
+
+Finalmente, implemente la función `onMintPressed` para hacer una llamada en espera a su función `mintNFT` importada y actualice la variable de estado `status` para reflejar si nuestra transacción se realizó correctamente o falló:
+
+```javascript
+const onMintPressed = async () => {
+ const { status } = await mintNFT(url, name, description)
+ setStatus(status)
+}
+```
+
+## Implemente el NFT a un sitio web {#deploy-your-NFT}
+
+¿Está preparado para implementar su proyecto para que los usuarios interactúen? Revise [este tutorial](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online) para implementar el Minteador en un sitio web.
+
+Un último paso...
+
+## Tome el mundo de la cadena de bloques por asalto {#take-the-blockchain-world-by-storm}
+
+¡Solo bromeaba! Ha llegado al final del tutorial.
+
+Para recapitular, al crear un minteador de NFT, ha aprendido correctamente cómo:
+
+- Conectar a MetaMask a través del frontend de su proyecto
+- Llamar a métodos de contrato inteligente desde tu frontend
+- Firmar transacciones usando MetaMask
+
+Seguramente le gustaría poder mostrar los NFT minteados a través de su dapp en su billetera, así que asegúrese de revisar nuestro tutorial rápido [Cómo ver su NFT en su billetera](https://docs.alchemyapi.io/alchemy/tutorials/how-to-write-and-deploy-a-nft-smart-contract/how-to-view-your-nft-in-your-wallet).
+
+Como siempre, si tiene alguna pregunta, estamos aquí para ayudarlo en el [Discord de Alchemy](https://discord.gg/gWuC7zB). Estamos ansiosos de ver cómo aplica lo que aprendió en este tutorial en sus proyectos.
diff --git a/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
new file mode 100644
index 00000000000..040e57893b4
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -0,0 +1,1277 @@
+---
+title: "Paseo por el contrato estándar de puente en Optimism"
+description: '¿Cómo funciona el puente estándar para Optimism? ¿Por qué funciona de esta forma?'
+author: Ori Pomerantz
+tags:
+ - "solidity"
+ - "puente"
+ - "capa 2"
+skill: intermediate
+published: 2022-03-30
+lang: es
+---
+
+[Optimism](https://www.optimism.io/) es un [Rollup Optimista](/developers/docs/scaling/optimistic-rollups/). Los Rollups Optimistas pueden procesar transacciones por un precio mucho más bajo que la red Mainnet de Ethereum (también conocido como capa 1 o L1) porque las transacciones sólo son procesadas por unos pocos nodos, en lugar de cada nodo de la red. Al mismo tiempo, los datos se escriben en L1 para que todo pueda ser probado y reconstruido con todas las garantías de integridad y disponibilidad de Mainnet.
+
+Para utilizar activos L1 en Optimism (o cualquier otra L2), los activos deben ser [puenteados](/bridges/#prerequisites). Una manera de lograr esto es que los usuarios bloqueen activos (ETH y [tokens ERC-20](/developers/docs/standards/tokens/erc-20/) son los más comunes) en L1, y recibir activos equivalentes a usar en L2. Eventualmente, quien acabe poseyéndolos puede querer puentearlos de vuelta a la L1. Al hacer esto, los activos se queman en L2 y luego se liberan al usuario en L1.
+
+Así es como funciona el [puente estándar Optimism](https://community.optimism.io/docs/developers/bridge/standard-bridge). En este artículo pasamos por el código fuente de ese puente para ver cómo funciona y estudiarlo como un ejemplo de código de Solidity bien escrito.
+
+## Flujos de control {#control-flows}
+
+El puente tiene dos flujos principales:
+
+- Depósito (de L1 a L2)
+- Retiro (de L2 a L1)
+
+### Flujo de depósito {#deposit-flow}
+
+#### Capa 1 {#deposit-flow-layer-1}
+
+1. Si se deposita un ERC-20, el depósito le da al puente una asignación para gastar la cantidad depositada
+2. El depositante llama al puente L1 (`depositERC20`, `depositERC20To`, `depositETH`, o `depositETHTo`)
+3. El puente L1 toma posesión del activo puentado
+ - ETH: El activo es transferido por el depositante como parte de la llamada
+ - ERC-20: El activo es transferido por el puente a sí mismo utilizando la asignación proporcionada por el depósito
+4. El puente L1 utiliza el mecanismo de mensajes de dominio cruzado para llamar a `finalizeDeposit` en el puente L2
+
+#### Capa 2 {#deposit-flow-layer-2}
+
+5. El puente L2 verifica que la llamada a `finalizeDeposit` esté legitimada:
+ - Procede del contrato de mensajes de dominio cruzado
+ - Era originalmente del puente en L1
+6. El puente de L2 comprueba si el contrato de token ERC-20 en L2 es el correcto:
+ - El contrato L2 informa de que su contraparte L1 es la misma de la que provienen los tokens del L1
+ - El contrato L2 informa que soporta la interfaz correcta ([usando ERC-165](https://eips.ethereum.org/EIPS/eip-165)).
+7. Si el contrato L2 es el correcto, llámelo para acuñar el número apropiado de tokens a la dirección apropiada. Si no, inicie un proceso de retiro para permitir al usuario reclamar las fichas en L1.
+
+### Flujo de retiro {#withdrawal-flow}
+
+#### Capa 2 {#withdrawl-flow-layer-2}
+
+1. Aquél que realiza el retiro llama al puente L2 (`withdraw` or `withdrawTo`)
+2. El puente L2 quema el número apropiado de tokens pertenecientes a `msg.sender`
+3. El puente L2 utiliza el mecanismo de mensajes entre dominios para llamar a `finalizeETHWithdrawal` o `finalizeERC20Withdrawal` en el puente L1
+
+#### Capa 1 {#withdrawl-flow-layer-1}
+
+4. El puente L1 verifica que la llamada a `finalizeETHWithdrawal` o `finalizeERC20Withdrawal` sea legítima:
+ - Procede del mecanismo de mensajes cruzados entre dominios
+ - Era originalmente del puente en L2
+5. El puente L1 transfiere el activo apropiado (ETH o ERC-20) a la dirección apropiada
+
+## Código de capa 1 {#layer-1-code}
+
+Este es el código que se ejecuta en L1, la Red Principal Ethereum.
+
+### IL1ERC20Bridge {#IL1ERC20Bridge}
+
+[Esta interfaz está definida aquí](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol). Incluye funciones y definiciones requeridas para puentear tokens ERC-20.
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+[La mayor parte del código de Optimism está liberado bajo la licencia MIT](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-).
+
+```solidity
+pragma solidity >0.5.0 <0.9.0;
+```
+
+Al instante de esta escritura la última versión de Solidity es 0.8.12. Hasta que la versión 0.9.0 sea liberada, no sabemos si este código es compatible con él o no.
+
+```solidity
+/**
+ * @title IL1ERC20Bridge
+ */
+interface IL1ERC20Bridge {
+ /**********
+ * Events *
+ **********/
+
+ event ERC20DepositInitiated(
+```
+
+En la terminología de puente de Optimism _deposit_ significa transferir de L1 a L2, y _withdrawal_ significa transferir de L2 a L1.
+
+```solidity
+ address indexed _l1Token,
+ address indexed _l2Token,
+```
+
+En la mayoría de los casos, la dirección de un ERC-20 en L1 no es la misma dirección del ERC-20 equivalente en L2. [Puedes ver la lista de direcciones de tokens aquí](https://static.optimism.io/optimism.tokenlist.json). La dirección con `chainId` 1 está en L1 (Red Principal) y la dirección con `chainId` 10 está en L2 (Optimism). Los otros dos valores `chainId` son para la red de pruebas Kovan (42) y la red de pruebas Optimistic Kovan (69).
+
+```solidity
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+Es posible agregar notas a las transferencias, en cuyo caso se añaden a los eventos que las reportan.
+
+```solidity
+ event ERC20WithdrawalFinalized(
+ address indexed _l1Token,
+ address indexed _l2Token,
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+El mismo contrato de puente maneja las transferencias en ambas direcciones. En el caso del puente L1, esto significa inicialización de depósitos y finalización de retiros.
+
+```solidity
+
+ /********************
+ * Public Functions *
+ ********************/
+
+ /**
+ * @dev get the address of the corresponding L2 bridge contract.
+ * @return Address of the corresponding L2 bridge contract.
+ */
+ function l2TokenBridge() external returns (address);
+```
+
+Esta función no es realmente necesaria, porque en L2 es un contrato predesplegado, así que siempre está en la dirección `0x4200000000000000000000000000000000000010`. Está aquí por simetría con el puente L2, porque la dirección del puente L1 _no_ es trivial de conocer.
+
+```solidity
+ /**
+ * @dev deposit an amount of the ERC20 to the caller's balance on L2.
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _amount Amount of the ERC20 to deposit
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20(
+ address _l1Token,
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+El parámetro `_l2Gas` es la cantidad de gas L2 que la transacción puede gastar. [Hasta cierto límite (alto), es gratuito](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), así que a menos que el contrato ERC haga algo realmente extraño a la hora de acuñar, no debería ser un problema. Esta función se encarga del escenario común, donde un usuario puentea activos a la misma dirección en una cadena de bloques diferente.
+
+```solidity
+ /**
+ * @dev deposit an amount of ERC20 to a recipient's balance on L2.
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _to L2 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20To(
+ address _l1Token,
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+Esta función es casi idéntica a `depositERC20`, pero le permite enviar el ERC-20 a una dirección diferente.
+
+```solidity
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ERC20 token.
+ * This call will fail if the initialized withdrawal from L2 has not been finalized.
+ *
+ * @param _l1Token Address of L1 token to finalizeWithdrawal for.
+ * @param _l2Token Address of L2 token where withdrawal was initiated.
+ * @param _from L2 address initiating the transfer.
+ * @param _to L1 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _data Data provided by the sender on L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+Los retiros (y otros mensajes de L2 a L1) en Optimism son un proceso de dos pasos:
+
+1. Una transacción iniciante en L2.
+2. Una finalización o reclamación de transacción en L1. Esta transacción debe ocurrir después de que finalice el [periodo de desafío de falta](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) para la transacción L2.
+
+### IL1StandardBridge {#il1standardbridge}
+
+[Esta interfaz está definida aquí](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol). Este archivo contiene definiciones de eventos y funciones para ETH. Estas definiciones son muy similares a las definidas en `IL1ERC20Bridge` arriba para ERC-20.
+
+La interfaz de puente está dividida entre dos archivos porque algunos tokens ERC-20 requieren un procesamiento personalizado y no pueden ser manejados por el puente estándar. De esta manera el puente personalizado que maneja tal token puede implementar `IL1ERC20Bridge` y no tener que puentear también ETH.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+import "./IL1ERC20Bridge.sol";
+
+/**
+ * @title IL1StandardBridge
+ */
+interface IL1StandardBridge is IL1ERC20Bridge {
+ /**********
+ * Events *
+ **********/
+ event ETHDepositInitiated(
+ address indexed _from,
+ address indexed _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+Este evento es casi idéntico a la versión ERC-20 (`ERC20DepositInitiated`), excepto sin las direcciones L1 y L2 del token. Lo mismo es válido para otros eventos y las funciones.
+
+```solidity
+ event ETHWithdrawalFinalized(
+ .
+ .
+ .
+ );
+
+ /********************
+ * Public Functions *
+ ********************/
+
+ /**
+ * @dev Deposit an amount of the ETH to the caller's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable;
+
+ /**
+ * @dev Deposit an amount of ETH to a recipient's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable;
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called
+ * before the withdrawal is finalized.
+ .
+ .
+ .
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+### CrossDomainEnabled {#crossdomainenabled}
+
+[Este contrato](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol) es heredado por ambos puestes ([L1](#the-l1-bridge-contract) y [L2](#the-l2-bridge-contract)) para enviar mensajes a la otra capa.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+/* Interface Imports */
+import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
+```
+
+[Esta interfaz](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol) le dice al contrato cómo enviar mesajes a la otra capa, usando el mensajero de dominio cruzado. Este mensajero de dominio cruzado es un sistema completamente diferente, y merece su propio artículo, que espero escribir en el futuro.
+
+```solidity
+/**
+ * @title CrossDomainEnabled
+ * @dev Helper contract for contracts performing cross-domain communications
+ *
+ * Compiler used: defined by inheriting contract
+ */
+contract CrossDomainEnabled {
+ /*************
+ * Variables *
+ *************/
+
+ // Messenger contract used to send and receive messages from the other domain.
+ address public messenger;
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _messenger Address of the CrossDomainMessenger on the current layer.
+ */
+ constructor(address _messenger) {
+ messenger = _messenger;
+ }
+```
+
+El único parámetro que el contrato necesita saber, la dirección del mensajero de dominio cruzado en esta capa. Este parámetro se establece una vez, en el constructor, y nunca cambia.
+
+```solidity
+
+ /**********************
+ * Function Modifiers *
+ **********************/
+
+ /**
+ * Enforces that the modified function is only callable by a specific cross-domain account.
+ * @param _sourceDomainAccount The only account on the originating domain which is
+ * authenticated to call this function.
+ */
+ modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {
+```
+
+La mensajería entre dominios es accesible por cualquier contrato en la cadena de bloques donde se esté ejecutando (ya sea la Red Principal de Ethereum u Optimism). Pero necesitamos que el puente de cada lado _sólo_ confíe en ciertos mensajes si provienen del puente del otro lado.
+
+```solidity
+ require(
+ msg.sender == address(getCrossDomainMessenger()),
+ "OVM_XCHAIN: messenger contract unauthenticated"
+ );
+```
+
+Solo se pueden confiar en los mensajes del mensajero transversal apropiado (`messenger`, como ves a continuación).
+
+```solidity
+
+ require(
+ getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,
+ "OVM_XCHAIN: wrong sender of cross-domain message"
+ );
+```
+
+La forma en que el mensajero de dominio cruzado proporciona la dirección que envió un mensaje con la otra capa es [la `.xDomainMessageSender()` función](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol#L122-L128). Siempre y cuando se llame en la transacción que fue iniciada por el mensaje puede proporcionar esta información.
+
+Tenemos que asegurarnos de que el mensaje que recibimos vino del otro puente.
+
+```solidity
+
+ _;
+ }
+
+ /**********************
+ * Internal Functions *
+ **********************/
+
+ /**
+ * Gets the messenger, usually from storage. This function is exposed in case a child contract
+ * needs to override.
+ * @return The address of the cross-domain messenger contract which should be used.
+ */
+ function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {
+ return ICrossDomainMessenger(messenger);
+ }
+```
+
+Esta función devuelve el mensajero de dominio cruzado. Utilizamos una función en lugar de la variable `messenger` para permitir que los contratos que heredan de ésta usen un algoritmo para especificar qué mensajero de dominio cruzado usar.
+
+```solidity
+
+ /**
+ * Sends a message to an account on another domain
+ * @param _crossDomainTarget The intended recipient on the destination domain
+ * @param _message The data to send to the target (usually calldata to a function with
+ * `onlyFromCrossDomainAccount()`)
+ * @param _gasLimit The gasLimit for the receipt of the message on the target domain.
+ */
+ function sendCrossDomainMessage(
+ address _crossDomainTarget,
+ uint32 _gasLimit,
+ bytes memory _message
+```
+
+Finalmente, la función que envía un mensaje a la otra capa.
+
+```solidity
+ ) internal {
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+```
+
+[Slither](https://github.com/crytic/slither) es un analizador estático que Optimism ejecuta en cada contrato para buscar vulnerabilidades y otros potenciales problemas. En este caso, la siguiente línea dispara dos vulnerabilidades:
+
+1. [Eventos de reentrada](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3)
+2. [Reentrada benigna](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2)
+
+```solidity
+ getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);
+ }
+}
+```
+
+En este caso no estamos preocupados sobre reentradas ya que sabemos que `getCrossDomainMessenger()` devuelve una dirección confiable, incluso si Slither no tiene manera de saberlo.
+
+### El contrato de puente L1 {#the-l1-bridge-contract}
+
+[El códgo fuente para este contrato está aquí](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol).
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+```
+
+Las interfaces pueden ser parte de otros contratos, por lo que tienen que soportar una amplio rango de versiones de Solidity. Pero el puente en sí es nuestro contrato, y podemos ser estrictos con qué versión de Solidity utiliza.
+
+```solidity
+/* Interface Imports */
+import { IL1StandardBridge } from "./IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol";
+```
+
+[IL1ERC20Bridge](#IL1ERC20Bridge) y [IL1StandardBridge](#IL1StandardBridge) están explicados arriba.
+
+```solidity
+import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol";
+```
+
+[Esta interfaz](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) nos permite crear mensajes para controlar el puente estándar en L2.
+
+```solidity
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[Esta interfaz](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) nos permite controlar contratos ERC-20. [Puedes leer más al respecto aquí](/developers/tutorials/erc20-annotated-code/#the-interface).
+
+```solidity
+/* Library Imports */
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+```
+
+[Como se explicó más arriba](#crossdomainenabled), este contrato se utiliza para mensajear entre capas.
+
+```solidity
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+```
+
+[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol) tiene las direcciones para los contratos en L2 que siempre tienen la misma dirección. Esto incluye el puente estándar en L2.
+
+```solidity
+import { Address } from "@openzeppelin/contracts/utils/Address.sol";
+```
+
+[Utilidades de dirección de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol). Se utiliza para distinguir entre las direcciones del contrato y las que pertenecen a cuentas de propiedad externa (EOA).
+
+Tenga en cuenta que esta no es una solución perfecta, porque no hay forma de distinguir entre llamadas directas y llamadas hechas del constructor de un contrato, pero al menos nos permite identificar y prevenir algunos errores de usuario comunes.
+
+```solidity
+import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+```
+
+[El estándar ERC-20](https://eips.ethereum.org/EIPS/eip-20) soporta dos formas para que un contrato reporte fallido:
+
+1. Revertir
+2. Devolver `false`
+
+Manejar ambos casos complicaría nuestro código, así que en su lugar utilizamos[SafeERC20`de OpenZeppelin`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol), el cual asegura[que todos los fallos resulten en una reversión](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96).
+
+```solidity
+/**
+ * @title L1StandardBridge
+ * @dev The L1 ETH and ERC20 Bridge is a contract which stores deposited L1 funds and standard
+ * tokens that are in use on L2. It synchronizes a corresponding L2 Bridge, informing it of deposits
+ * and listening to it for newly finalized withdrawals.
+ *
+ */
+contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
+ using SafeERC20 for IERC20;
+```
+
+Esta línea es cómo especificamos usar el envoltorio `SafeERC20` cada vez que usamos la interfaz `IERC20`.
+
+```solidity
+
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l2TokenBridge;
+```
+
+La dirección de [L2StandardBridge](#the-l2-bridge-contract).
+
+```solidity
+
+ // Maps L1 token to L2 token to balance of the L1 token deposited
+ mapping(address => mapping(address => uint256)) public deposits;
+```
+
+Un [mapeo](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) doble como éste es la forma en que se define una [matriz bidimensional dispersa](https://en.wikipedia.org/wiki/Sparse_matrix). Los valores en esta estructura de datos se identifican como `deposit[L1 token addr][L2 token addr]`. El valor por defecto es cero. Sólo las celdas que están configuradas en un valor diferente se escriben en el almacenamiento.
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ // This contract lives behind a proxy, so the constructor parameters will go unused.
+ constructor() CrossDomainEnabled(address(0)) {}
+```
+
+Para poder actualizar este contrato sin tener que copiar todas las variables en el almacenamiento. Para ello usamos un [`Proxy`](https://docs.openzeppelin.com/contracts/3.x/api/proxy), un contrato que usa [`delegatecall`](https://solidity-by-example.org/delegatecall/) para transferir llamadas a un contacto separado cuya dirección se almacena en el contrato proxy (cuando actualice se le dice al proxy que cambie esa dirección). Cuando usas `delegatecall` el almacenamiento sigue siendo el almacenamiento del contrato _de llamada_, para que los valores de todas las variables del estado del contrato no se vean afectados.
+
+Un efecto de este patrón es que el almacenamiento del contrato que es el _called_ de `delegatecall` no se utiliza y por tanto, los valores del constructor que le son pasados no importan. Esta es la razón por la que podemos proporcionar un valor sin sentido al constructor `CrossDomainEnabled`. También es la razón por la que la inicialización a continuación es independiente del constructor.
+
+```solidity
+ /******************
+ * Initialization *
+ ******************/
+
+ /**
+ * @param _l1messenger L1 Messenger address being used for cross-chain communications.
+ * @param _l2TokenBridge L2 standard bridge address.
+ */
+ // slither-disable-next-line external-function
+```
+
+Esta [prueba Slither](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) identifica funciones que no son llamadas desde el código del contrato y por lo tanto podrían declararse `external` en lugar de `public`. El coste de gas de `external` puede ser menor, porque pueden ser proporcionadas con parámetros en los datos de llamada. Las funciones declaradas `public` deben ser accesibles desde el contrato. Los contratos no pueden modificar sus propios datos de llamada, por lo que los parámetros deben estar en memoria. Cuando tal función se llama externamente, es necesario copiar los datos de llamada a la memoria, lo que cuesta gas. En este caso la función sólo se llama una vez, por lo que la ineficiencia no nos importa.
+
+```solidity
+ function initialize(address _l1messenger, address _l2TokenBridge) public {
+ require(messenger == address(0), "Contract has already been initialized.");
+```
+
+La función `initialize` debe ser llamada una única vez. Si la dirección del mensajero de dominio cruzado L1 o el token de puente L2 cambia, creamos un nuevo proxy y un nuevo puente que lo llame. Es poco probable que esto ocurra, excepto cuando se actualiza todo el sistema, algo muy raro.
+
+Tenga en cuenta que esta función no tiene ningún mecanismo que restringe _quién_ puede llamarlo. Esto significa que en teoría un atacante podría esperar hasta que despliegue el proxy y la primera versión del puente y luego [front-run](https://solidity-by-example.org/hacks/front-running/) para llegar a la función `initialize` antes de que el usuario legítimo lo haga. Pero hay dos métodos para prevenir esto:
+
+1. Si los contratos se despliegan no directamente por un EOA sino [en una transacción que tiene otro contrato que los crea](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595) el proceso completo puede ser atómico, y terminar antes de que se ejecute cualquier otra transacción.
+2. Si falla la llamada legítima a `initialize` siempre es posible ignorar el proxy recién creado y el puente, y crear uno nuevo.
+
+```solidity
+ messenger = _l1messenger;
+ l2TokenBridge = _l2TokenBridge;
+ }
+```
+
+Estos son los dos parámetros que el puente necesita conocer.
+
+```solidity
+
+ /**************
+ * Depositing *
+ **************/
+
+ /** @dev Modifier requiring sender to be EOA. This check could be bypassed by a malicious
+ * contract via initcode, but it takes care of the user error we want to avoid.
+ */
+ modifier onlyEOA() {
+ // Used to stop deposits from contracts (avoid accidentally lost tokens)
+ require(!Address.isContract(msg.sender), "Account not EOA");
+ _;
+ }
+```
+
+Esta es la razón por la que necesitábamos las utilidades de `Address` de OpenZeppelin.
+
+```solidity
+ /**
+ * @dev This function can be called with no data
+ * to deposit an amount of ETH to the caller's balance on L2.
+ * Since the receive function doesn't take data, a conservative
+ * default amount is forwarded to L2.
+ */
+ receive() external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes(""));
+ }
+```
+
+Esta función existe con fines de prueba. Tenga en cuenta que no aparece en las definiciones de la interfaz - no es para uso normal.
+
+```solidity
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable {
+ _initiateETHDeposit(msg.sender, _to, _l2Gas, _data);
+ }
+```
+
+Estas dos funciones son envolturas alrededor de `_initiateETHDeposit`, la función que gestiona el depósito ETH actual.
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by storing the ETH and informing the L2 ETH Gateway of
+ * the deposit.
+ * @param _from Account to pull the deposit from on L1.
+ * @param _to Account to give the deposit to on L2.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateETHDeposit(
+ address _from,
+ address _to,
+ uint32 _l2Gas,
+ bytes memory _data
+ ) internal {
+ // Construct calldata for finalizeDeposit call
+ bytes memory message = abi.encodeWithSelector(
+```
+
+La forma en que funcionan los mensajes entre dominios es que el contrato de destino es llamado con el mensaje como sus datos de llamada. Los contratos de Solidity interpretan siempre que sus datos de llamada están de acuerdo con [las especificaciones ABI](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html). La función de Solidity [`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions) crea esos datos de llamada.
+
+```solidity
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ address(0),
+ Lib_PredeployAddresses.OVM_ETH,
+ _from,
+ _to,
+ msg.value,
+ _data
+ );
+```
+
+El mensaje aquí es llamar a [la función `finalizeDeposit`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148) con estos parámetros:
+
+| Parámetro | Valor | Significado |
+| ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
+| \_l1Token | address(0) | Valor especial para representar ETH (que no es un token ERC-20) en L1 |
+| \_l2Token | Lib_PredeployAddresses.OVM_ETH | El contrato L2 que administra ETH en Optimism, `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000` (este contrato es sólo para uso interno de Optimism) |
+| \_from | \_from | La dirección en L1 que envía el ETH |
+| \_to | \_to | La dirección en L2 que recibe el ETH |
+| amount | msg.value | Cantidad de wei enviados (que ya ha sido enviado al puente) |
+| \_data | \_data | Fecha adicional a adjuntar al depósito |
+
+```solidity
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+```
+
+Enviar el mensaje a través del mensajero de dominio cruzado.
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ emit ETHDepositInitiated(_from, _to, msg.value, _data);
+ }
+```
+
+Emitir un evento para informar de cualquier aplicación descentralizada que escuche esta transferencia.
+
+```solidity
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20(
+ .
+ .
+ .
+ ) external virtual onlyEOA {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20To(
+ .
+ .
+ .
+ ) external virtual {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data);
+ }
+```
+
+Estas dos funciones son envolturas alrededor de `_initiateERC20Deposit`, la función que gestiona el depósito ERC-20 actual.
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by informing the L2 Deposited Token
+ * contract of the deposit and calling a handler to lock the L1 funds. (e.g. transferFrom)
+ *
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _from Account to pull the deposit from on L1
+ * @param _to Account to give the deposit to on L2
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateERC20Deposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) internal {
+```
+
+Esta función es similar a la función `_initiateETHDeposit` anterior, con algunas diferencias importantes. La primera diferencia es que esta función recibe las direcciones del token y la cantidad a transferir como parámetros. En el caso de ETH la llamada al puente ya incluye la transferencia del activo a la cuenta del puente (`msg.value`).
+
+```solidity
+ // When a deposit is initiated on L1, the L1 Bridge transfers the funds to itself for future
+ // withdrawals. safeTransferFrom also checks if the contract has code, so this will fail if
+ // _from is an EOA or address(0).
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
+```
+
+Las transferencias de tokens ERC-20 siguen un proceso diferente de ETH:
+
+1. El usuario (`_from`) le da una autorización al puente para transferir los tokens apropiados.
+2. El usuario llama al puente con la dirección del contrato de token, la cantidad, etc.
+3. El puente transfiere los tokens (a sí mismo) como parte del proceso de depósito.
+
+El primer paso puede ocurrir en una transacción separada de los dos últimos. Sin embargo, ejecutar front-running no es un problema porque las dos funciones que llaman a `_initiateERC20Deposit` (`depositERC20` y `depositERC20To`) solo llaman a esta función con `msg.sender` como el parámetro `_from`.
+
+```solidity
+ // Construct calldata for _l2Token.finalizeDeposit(_to, _amount)
+ bytes memory message = abi.encodeWithSelector(
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ _l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+
+ // slither-disable-next-line reentrancy-benign
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount;
+```
+
+Añade la cantidad de tokens depositados a la estructura de datos de `depósitos`. Puede haber varias direcciones en L2 que correspondan con el mismo token ERC-20 L1, por lo que no es suficiente con usar el saldo del puente del token ERC-20 L1 para hacer un seguimiento de los depósitos.
+
+```solidity
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+El puente L2 envía un mensaje al mensajero de dominio cruzado L2 que causa que el mensajero de dominio cruzado L1 llame a esta función (una vez que [la transacción que finaliza el mensaje](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions) se envía en L1, por supuesto).
+
+```solidity
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+Asegúrate de que este es un mensaje _legítimo_, proveniente del mensajero de dominio cruzado y que se origina con el token de puente L2. Esta función se utiliza para retirar ETH del puente, así que tenemos que asegurarnos de que sólo es llamada por el llamador autorizado.
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ (bool success, ) = _to.call{ value: _amount }(new bytes(0));
+```
+
+La forma de transferir ETH es llamar al recipiente con la cantidad de wei en el `msg.value`.
+
+```solidity
+ require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
+
+ // slither-disable-next-line reentrancy-events
+ emit ETHWithdrawalFinalized(_from, _to, _amount, _data);
+```
+
+Emitir un evento sobre el retiro.
+
+```solidity
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+Esta función es similar a la función `finalizeETHWithdrawal` anterior, con los cambios necesarios para los tokens de ERC-20.
+
+```solidity
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount;
+```
+
+Actualizar la estructura de datos de `depósitos`.
+
+```solidity
+
+ // When a withdrawal is finalized on L1, the L1 Bridge transfers the funds to the withdrawer
+ // slither-disable-next-line reentrancy-events
+ IERC20(_l1Token).safeTransfer(_to, _amount);
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20WithdrawalFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+
+ /*****************************
+ * Temporary - Migrating ETH *
+ *****************************/
+
+ /**
+ * @dev Adds ETH balance to the account. This is meant to allow for ETH
+ * to be migrated from an old gateway to a new gateway.
+ * NOTE: This is left for one upgrade only so we are able to receive the migrated ETH from the
+ * old contract
+ */
+ function donateETH() external payable {}
+}
+```
+
+Hubo una implementación anterior del puente. Cuando pasamos de la implementación a ésta, tuvimos que mover todos los activos. Los tokens ERC-20 pueden moverse sin más. Sin embargo, para transferir ETH a un contrato necesitas la aprobación de ese contrato, que es lo que `donateETH` nos proporciona.
+
+## Tokens ERC-20 en L2 {#erc-20-tokens-on-l2}
+
+Para que un token ERC-20 se ajuste al puente estándar, necesita permitir el puente estándar, y _solo_ el puente estándar, para acuñar el token. Esto es necesario porque los puentes deben garantizar que el número de tokens que circulan en Optimism sea igual al número de tokens que se encuentran bloqueados dentro del contrato de puente L1. Si hay demasiados tokens en L2 algunos usuarios no podrían puentear sus activos de vuelta a L1. En lugar de un puente de confianza, esencialmente recrearíamos [banca de reserva fraccionaria](https://www.investopedia.com/terms/f/fractionalreservebanking.asp). Si hay demasiados tokens en L1, algunos de esos tokens permanecerían bloqueados dentro del contrato de puente para siempre porque no hay forma de liberarlos sin quemar los tokens de L2.
+
+### IL2StandardERC20 {#il2standarderc20}
+
+Todos los tokens ERC-20 en L2 que utilicen el puente estándar deben proporcionar [esta interfaz](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol), que tiene las funciones y eventos que el puente estándar necesita.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[La interfaz estándar de ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) no incluye las funciones `mint` y `burn`. Esos métodos no son requeridos por [el estándar ERC-20](https://eips.ethereum.org/EIPS/eip-20), lo que deja sin especificar los mecanismos para crear y destruir tokens.
+
+```solidity
+import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+```
+
+[La interfaz ERC-165](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol) se utiliza para especificar que funciones proporciona un contrato. [Puedes leer el estándar aquí](https://eips.ethereum.org/EIPS/eip-165).
+
+```solidity
+interface IL2StandardERC20 is IERC20, IERC165 {
+ function l1Token() external returns (address);
+```
+
+Esta función proporciona la dirección del token L1 que está puenteado a este contrato. Tenga en cuenta que no tenemos una función similar en la dirección opuesta. Tenemos que ser capaces de puentear cualquier token L1, independientemente de que el soporte a L2 se haya planificado o no cuando se implementó.
+
+```solidity
+
+ function mint(address _to, uint256 _amount) external;
+
+ function burn(address _from, uint256 _amount) external;
+
+ event Mint(address indexed _account, uint256 _amount);
+ event Burn(address indexed _account, uint256 _amount);
+}
+```
+
+Funciones y eventos para acuñar (cear) y quemar (destruir) tokens. El puente debe ser la única entidad que puede ejecutar estas funciones para asegurar que el número de tokens es correcto (igual al número de tokens bloqueados en L1).
+
+### L2StandardERC20 {#L2StandardERC20}
+
+[Esta es nuestra implementación de la interfaz `IL2StandardERC20`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol). A menos que necesite algún tipo de lógica personalizada, debería utilizar esta.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+```
+
+[El contrato OpenZeppelin ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). Optimism no cree en reinventar la rueda, especialmente cuando la rueda está bien auditada y necesita ser lo suficientemente fiable como para mantener los activos.
+
+```solidity
+import "./IL2StandardERC20.sol";
+
+contract L2StandardERC20 is IL2StandardERC20, ERC20 {
+ address public l1Token;
+ address public l2Bridge;
+```
+
+Estos son los dos parámetros de configuración adicionales que requerimos, y ERC-20 normalmente no lo hace.
+
+```solidity
+
+ /**
+ * @param _l2Bridge Address of the L2 standard bridge.
+ * @param _l1Token Address of the corresponding L1 token.
+ * @param _name ERC20 name.
+ * @param _symbol ERC20 symbol.
+ */
+ constructor(
+ address _l2Bridge,
+ address _l1Token,
+ string memory _name,
+ string memory _symbol
+ ) ERC20(_name, _symbol) {
+ l1Token = _l1Token;
+ l2Bridge = _l2Bridge;
+ }
+```
+
+Primero llamamos al constructor del contrato del que heredamos (`ERC20(_name, _symbol)`) y luego establecemos nuestras propias variables.
+
+```solidity
+
+ modifier onlyL2Bridge() {
+ require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
+ _;
+ }
+
+
+ // slither-disable-next-line external-function
+ function supportsInterface(bytes4 _interfaceId) public pure returns (bool) {
+ bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
+ bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^
+ IL2StandardERC20.mint.selector ^
+ IL2StandardERC20.burn.selector;
+ return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
+ }
+```
+
+Esta es la manera en que [ERC-165](https://eips.ethereum.org/EIPS/eip-165) funciona. Cada interfaz es un número de funciones soportadas, y se identifica como la [exclusiva o](https://en.wikipedia.org/wiki/Exclusive_or) de los [selectores de funciones ABI](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector) de esas funciones.
+
+El puente L2 utiliza ERC-165 como comprobación de la cordura para asegurarse de que el contrato ERC-20 al que envía activos es un `IL2StandardERC20`.
+
+**Nota:** No hay nada que impida que un contrato deshonesto proporcione respuestas falsas a `supportsInterface`, por lo que se trata de un mecanismo de comprobación de salubridad, _no_ de un mecanismo de seguridad.
+
+```solidity
+ // slither-disable-next-line external-function
+ function mint(address _to, uint256 _amount) public virtual onlyL2Bridge {
+ _mint(_to, _amount);
+
+ emit Mint(_to, _amount);
+ }
+
+ // slither-disable-next-line external-function
+ function burn(address _from, uint256 _amount) public virtual onlyL2Bridge {
+ _burn(_from, _amount);
+
+ emit Burn(_from, _amount);
+ }
+}
+```
+
+Sólo el puente L2 puede acuñar y quemar activos.
+
+`_mint` y `_burn` están actualmente definidos en el [contrato OpenZeppelin ERC-20](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn). Ese contrato simplemente no los expone externamente, porque las condiciones para acuñar y quemar tokens son tan variadas como el número de maneras de usar ERC-20.
+
+## Código Puente L2 {#l2-bridge-code}
+
+Este es el código que ejecuta el puente sobre Optimism. [La fuente de este contrato está aquí](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol).
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+/* Interface Imports */
+import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol";
+import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol";
+```
+
+La interfaz [IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) es muy similar a la [L1 equivalente](#IL1ERC20Bridge) que vimos arriba. Hay dos diferencias significativas:
+
+1. En L1 usted inicia depósitos y finaliza retiros. Aquí usted inicia retiros y finaliza depósitos.
+2. En L1 es necesario distinguir entre ETH y tokens ERC-20. En L2 podemos usar las mismas funciones para ambos porque internamente los saldos ETH en Optimism son manejados como un token ERC-20 con la dirección[0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD000](https://optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000).
+
+```solidity
+/* Library Imports */
+import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+
+/* Contract Imports */
+import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol";
+
+/**
+ * @title L2StandardBridge
+ * @dev The L2 Standard bridge is a contract which works together with the L1 Standard bridge to
+ * enable ETH and ERC20 transitions between L1 and L2.
+ * This contract acts as a minter for new tokens when it hears about deposits into the L1 Standard
+ * bridge.
+ * This contract also acts as a burner of the tokens intended for withdrawal, informing the L1
+ * bridge to release L1 funds.
+ */
+contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l1TokenBridge;
+```
+
+Mantener un registro de la dirección del puente L1. Tenga en cuenta que en contraste con el equivalente L1, aquí _necesitamos_ esta variable. La dirección del puente L1 no es conocida de antemano.
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _l2CrossDomainMessenger Cross-domain messenger used by this contract.
+ * @param _l1TokenBridge Address of the L1 bridge deployed to the main chain.
+ */
+ constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
+ CrossDomainEnabled(_l2CrossDomainMessenger)
+ {
+ l1TokenBridge = _l1TokenBridge;
+ }
+
+ /***************
+ * Withdrawing *
+ ***************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdraw(
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdrawTo(
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data);
+ }
+```
+
+Estas dos funciones inician retiros. Tenga en cuenta que no hay necesidad de especificar la dirección del token L1. Se espera que los tokens L2 nos digan la dirección equivalente en L1.
+
+```solidity
+
+ /**
+ * @dev Performs the logic for withdrawals by burning the token and informing
+ * the L1 token Gateway of the withdrawal.
+ * @param _l2Token Address of L2 token where withdrawal is initiated.
+ * @param _from Account to pull the withdrawal from on L2.
+ * @param _to Account to give the withdrawal to on L1.
+ * @param _amount Amount of the token to withdraw.
+ * @param _l1Gas Unused, but included for potential forward compatibility considerations.
+ * @param _data Optional data to forward to L1. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateWithdrawal(
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) internal {
+ // When a withdrawal is initiated, we burn the withdrawer's funds to prevent subsequent L2
+ // usage
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).burn(msg.sender, _amount);
+```
+
+Ten en cuenta que _no _ dependemos del parámetro `_from` sino de `msg.sender` que es mucho más difícil de falsificar (imposible, por lo que sé).
+
+```solidity
+
+ // Construct calldata for l1TokenBridge.finalizeERC20Withdrawal(_to, _amount)
+ // slither-disable-next-line reentrancy-events
+ address l1Token = IL2StandardERC20(_l2Token).l1Token();
+ bytes memory message;
+
+ if (_l2Token == Lib_PredeployAddresses.OVM_ETH) {
+```
+
+En L1 es necesario distinguir entre ETH y tokens ERC-20.
+
+```solidity
+ message = abi.encodeWithSelector(
+ IL1StandardBridge.finalizeETHWithdrawal.selector,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ } else {
+ message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ }
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, _l1Gas, message);
+
+ // slither-disable-next-line reentrancy-events
+ emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data);
+ }
+
+ /************************************
+ * Cross-chain Function: Depositing *
+ ************************************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function finalizeDeposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+Esta función es llamada por `L1StandardBridge`.
+
+```solidity
+ ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) {
+```
+
+Asegúrese de que la fuente del mensaje es legítima. Esto es importante porque esta función llama a `_mint` y podría ser usada para entregar tokens que no están cubiertos por los tokens que el puente posee en L1.
+
+```solidity
+ // Check the target token is compliant and
+ // verify the deposited token on L1 matches the L2 deposited token representation here
+ if (
+ // slither-disable-next-line reentrancy-events
+ ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) &&
+ _l1Token == IL2StandardERC20(_l2Token).l1Token()
+```
+
+Comprobaciones de sanidad:
+
+1. La interfaz correcta está soportada
+2. La dirección del contrato ERC-20 L2 en L1 coincide con la fuente L1 de los tokens
+
+```solidity
+ ) {
+ // When a deposit is finalized, we credit the account on L2 with the same amount of
+ // tokens.
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).mint(_to, _amount);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+```
+
+Si las comprobaciones de sanidad se superan, finaliza el depósito:
+
+1. Acuña los tokens
+2. Emite el evento apropiado
+
+```solidity
+ } else {
+ // Either the L2 token which is being deposited-into disagrees about the correct address
+ // of its L1 token, or does not support the correct interface.
+ // This should only happen if there is a malicious L2 token, or if a user somehow
+ // specified the wrong L2 token address to deposit into.
+ // In either case, we stop the process here and construct a withdrawal
+ // message so that users can get their funds out in some cases.
+ // There is no way to prevent malicious token contracts altogether, but this does limit
+ // user error and mitigate some forms of malicious contract behavior.
+```
+
+Si un usuario realizó un error detectable mediante el uso de la dirección de token L2 incorrecta, queremos cancelar el depósito y devolver los tokens en L1. La única vía de hacerlo desde L2 es enviar un mensaje que tenga que esperar el período del desafío de falta, pero eso es mucho mejor para el usuario que perder los tokens permanentemente.
+
+```solidity
+ bytes memory message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ _l1Token,
+ _l2Token,
+ _to, // switched the _to and _from here to bounce back the deposit to the sender
+ _from,
+ _amount,
+ _data
+ );
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, 0, message);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+ }
+}
+```
+
+## Conclusión {#conclusion}
+
+El puente estándar es el mecanismo más flexible para las transferencias de activos. Sin embargo, debido a que es tan genérico no siempre es el mecanismo más fácil de utilizar. Especialmente para retiros, la mayoría de los usuarios prefieren usar [puentes de terceros](https://www.optimism.io/apps/bridges) que no esperen el periodo de desafío y no requieren una prueba de Merkle para finalizar el retiro.
+
+Estos puentes normalmente funcionan teniendo activos en L1, que proporcionan inmediatamente por una pequeña tarifa (a menudo menor que el costo del gas para un retiro de puente estándar). Cuando el puente (o la gente que lo ejecuta) anticipa quedarse corto en activos L1 transfiere suficientes activos de L2. Como se trata de retiros muy grandes, el coste de la retirada se amortiza sobre una gran cantidad y es un porcentaje mucho menor.
+
+Esperemos que este artículo le haya ayudado a entender más sobre cómo funciona la capa 2, y cómo escribir el código de Solidity de manera clara y segura.
diff --git a/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
new file mode 100644
index 00000000000..104af390c9c
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -0,0 +1,744 @@
+---
+title: "Aplicación de ingeniería inversa en un contrato"
+description: Cómo entender un contrato cuando no tiene el código fuente
+author: Ori Pomerantz
+lang: es
+tags:
+ - "evm"
+ - "códigos de operación"
+skill: advanced
+published: 2021-12-30
+---
+
+## Introducción {#introduction}
+
+_No hay secretos en la cadena de bloques_, todo lo que sucede es consistente, verificable y se encuentra públicamente disponible. Idealmente, [los contratos debieran tener su codigo fuente publicado y verificado en Etherscan](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code). Sin embargo, [este no siempre es el caso](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code). En este articulo puede aprender cómo aplicar ingenieria inversa a los contratos revisando el contrato sin su código fuente, [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f).
+
+Hay compiladores inversos, pero no siempre producen [resultados utilizables](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f). En este artículo aprenderá a realizar ingeniería inversa manualmente y entender un contrato a partir de [los códigos de operación](https://github.com/wolflo/evm-opcodes), así como a interpretar los resultados de un decompilador.
+
+Para poder entender este artículo, ya debería conocer los conceptos básicos de la EVM y estar al menos un poco familiarizado con el ensamblador de EVM. [Puede leer sobre estos temas aquí](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e).
+
+## Preparar el código ejecutable {#prepare-the-executable-code}
+
+Puede obtener los códigos de operación yendo a Etherscan para el contrato, haciendo clic en la pestaña **Contract** y luego en **Switch to Opcodes View**. Obtendrá una vista que mostrará un código de operación por línea.
+
+![Vista de código de operación de Etherscan](opcode-view.png)
+
+Sin embargo, para poder entender los saltos, necesita saber en qué parte del código se encuentra cada código de operación. Para ello, una forma es abrir una hoja de cálculo de Google y pegar los códigos de operación en la columna C. [Puede omitir los siguientes pasos haciendo una copia de esta hoja de cálculo ya preparada](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing).
+
+El siguiente paso es obtener las ubicaciones correctas del código para entender los saltos. Pondremos el tamaño del código de operación en la columna B y la ubicación (en hexadecimal) en la columna A. Escriba esta función en la celda `B1` y luego cópiela y péguela para el resto de la columna B, hasta el final del código. Después de hacer esto, puede ocultar la columna B.
+
+```
+=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0)
+```
+
+Primero, esta función agrega un byte para el código de operación en sí y luego busca `PUSH`. Los códigos de operación push son especiales porque necesitan tener bytes adicionales para el valor que se está empujando. Si el código de operación es `PUSH`, extraemos el número de bytes y lo añadimos.
+
+En `A1` ponga el primer desplazamiento, cero. Luego, en `A2`, ponga esta función y vuelva a copiarla y pegarla para el resto de la columna A:
+
+```
+=dec2hex(hex2dec(A1)+B1)
+```
+
+Necesitamos que esta función nos dé el valor hexadecimal porque los valores que se empujan antes de los saltos (`JUMP` y `JUMPI`) se nos dan en valor hexadecimal.
+
+## El punto de entrada (0x00) {#the-entry-point-0x00}
+
+Los contratos siempre se ejecutan desde el primer byte. Esta es la parte inicial del código:
+
+| Offset | Código de operación | Pila (después del código de operación) |
+| ------:| ------------------- | -------------------------------------- |
+| 0 | PUSH1 0x80 | 0x80 |
+| 2 | PUSH1 0x40 | 0x40, 0x80 |
+| 4 | MSTORE | Vacío |
+| 5 | PUSH1 0x04 | 0x04 |
+| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
+| 8 | LT | CALLDATASIZE<4 |
+| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE<4 |
+| C | JUMPI | Vacío |
+
+Este código hace dos cosas:
+
+1. Escribe 0x80 como valor de 32 bytes en las ubicaciones de memoria 0x40-0x5F (0x80 se almacena en 0x5F, y 0x40-0x5E son todos ceros).
+2. Leer el tamaño de los datos de llamada. Normalmente, los datos de llamada de un contrato de Ethereum siguen [la ABI (interfaz binaria de la aplicación)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html), que como mínimo requiere cuatro bytes para el selector de funciones. Si el tamaño de los datos de la llamada es inferior a cuatro, se salta a 0x5E.
+
+![Diagrama de flujo de esta porción](flowchart-entry.png)
+
+### El controlador en 0x5E (para datos de llamadas que no son ABI) {#the-handler-at-0x5e-for-non-abi-call-data}
+
+| Offset | Código de operación |
+| ------:| ------------------- |
+| 5E | JUMPDEST |
+| 5F | CALLDATASIZE |
+| 60 | PUSH2 0x007c |
+| 63 | JUMPI |
+
+Este fragmento comienza con un `JUMPDEST`. Los programas de EVM (máquina virtual de Ethereum) lanzan una excepción si salta a un código de operación que no sea `JUMPDEST`. Luego mira el CALLDATASIZE y si es "verdadero" (es decir, distinto de cero), salta a 0x7C. Veremos esto a continuación.
+
+| Offset | Código de operación | Pila (después del código de operación) |
+| ------:| ------------------- | ----------------------------------------------------------------------------------- |
+| 64 | CALLVALUE | [Wei](/glossary/#wei) proporcionado por la llamada. Llamado `msg.value` en Solidity |
+| 65 | PUSH1 0x06 | 6 CALLVALUE |
+| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
+| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
+| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
+| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
+
+Así que cuando no hay datos de llamada, leemos el valor de Storage[6]. Todavía no sabemos cuál es este valor, pero podemos buscar transacciones que el contrato haya recibido sin datos de llamada. Las transacciones que solo transfieren ETH sin ningún dato de llamada (y, por lo tanto, ningún método) tienen en Etherscan el método `Transfer`. De hecho, [la primera transacción que recibió el contrato](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) es una transferencia.
+
+Si miramos en esa transacción y hacemos clic en **Click to see More**, vemos que los datos de llamada, llamados datos de entrada, están de hecho vacíos (`0x`). Tenga en cuenta también que el valor es de 1,559 ETH, lo que será relevante más adelante.
+
+![Los datos de la llamada están vacíos](calldata-empty.png)
+
+A continuación, haga clic en la pestaña **State** y expanda el contrato en el que estamos haciendo ingeniería inversa (0x2510...). Puede ver que `Storage[6]` cambió durante la transacción, y si cambia Hex a **Number**, verá que se convirtió en 1.559.000.000.000.000.000, el valor transferido en wei (añadí los puntos para mayor claridad), correspondiente al valor del contrato siguiente.
+
+![El cambio en Storage[6]](storage6.png)
+
+Si miramos los cambios de estado causados por [otras transacciones `Transfer` del mismo período](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange), vemos que `Storage[6]` realizó un seguimiento del valor del contrato durante un tiempo. Por ahora lo llamaremos `Value*`. El asterisco (`*`) nos recuerda que aún no _sabemos_ lo que hace esta variable, pero no puede ser solo para rastrear el valor del contrato porque no hay necesidad de usar el almacenamiento, que es muy caro, cuando puede obtener el saldo de sus cuentas usando `ADDRESS BALANCE`. El primer código de operación empuja la dirección del contrato. El segundo lee la dirección en la parte superior de la pila y la reemplaza con el saldo de esa dirección.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | --------------------------------------------- |
+| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
+| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
+| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 74 | JUMP | |
+
+Seguiremos rastreando este código en el destino de salto.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------------------- |
+| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+
+El `NOT` es bitwise, por lo que invierte el valor de cada bit en el valor de llamada.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------------------------------------- |
+| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AE | ISZERO | Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AF | PUSH2 0x01df | 0x01DF Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1B2 | JUMPI | |
+
+Saltamos si `Value*` es menor que 2^256-CALLVALUE-1 o igual. Esto parece lógica para evitar el desbordamiento. Y, de hecho, vemos que después de algunas operaciones sin sentido (escribir en la memoria está a punto de eliminarse, por ejemplo) en el desplazamiento 0x01DE, el contrato se revierte si se detecta el desbordamiento, que es un comportamiento normal.
+
+Tenga en cuenta que tal desbordamiento es extremadamente improbable, porque requeriría que el valor de llamada más `Value*` sea comparable a 2^256 wei, alrededor de 10^59 ETH. [El suministro total de ETH, al momento de escribir esto, es inferior a doscientos millones](https://etherscan.io/stat/supply).
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------- |
+| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
+| 1E3 | JUMP | |
+
+Si llegamos aquí, obtenga `Value* + CALLVALUE` y salte al desplazamiento 0x75.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | --------------------------------- |
+| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
+| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
+| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
+| 78 | SSTORE | 0 CALLVALUE |
+
+Si llegamos aquí (lo que requiere que los datos de la llamada estén vacíos), añadimos a `Value*` el valor de la llamada. Esto es consistente con lo que decimos que hacen las transferencias `Transfer`.
+
+| Offset | Código de operación |
+| ------:| ------------------- |
+| 79 | POP |
+| 7A | POP |
+| 7B | DETENER |
+
+Finalmente, borre la pila (no es necesario) e indique el final exitoso de la transacción.
+
+En resumen, aquí hay un diagrama de flujo del código inicial.
+
+![Diagrama de flujo del punto de entrada](flowchart-entry.png)
+
+## El controlador en 0x7C {#the-handler-at-0x7c}
+
+No puse a propósito en el encabezado lo que hace este controlador. El punto no es enseñarle cómo funciona este contrato específico, sino cómo aplicar ingeniería inversa a los contratos. Aprenderá lo que hace de la misma manera que yo, siguiendo el código.
+
+Llegamos aquí desde varios lugares:
+
+- Si hay datos de llamada de 1, 2 o 3 bytes (desde el desplazamiento 0x63)
+- Si se desconoce la firma del método (de los desplazamientos 0x42 y 0x5D)
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------- |
+| 7C | JUMPDEST | |
+| 7D | PUSH1 0x00 | 0x00 |
+| 7F | PUSH2 0x009d | 0x9D 0x00 |
+| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
+| 84 | SLOAD | Storage[3] 0x9D 0x00 |
+
+Esta es otra celda de almacenamiento, una que no pude encontrar en ninguna transacción, por lo que es más difícil saber lo que significa. El siguiente código lo hará más claro.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------------------------------------- | ------------------------------- |
+| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
+| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
+
+Estos códigos de operación truncan el valor que leemos de Storage[3] a 160 bits, la longitud de una dirección de Ethereum.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------- |
+| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
+| 9C | JUMP | Storage[3]-as-address 0x00 |
+
+Este salto es superfluo, ya que vamos al siguiente código de operación. Este código no es tan eficiente en materia de gas como podría ser.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------- |
+| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
+| 9E | SWAP1 | 0x00 Storage[3]-as-address |
+| 9F | POP | Storage[3]-as-address |
+| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
+| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
+
+Al principio del código establecimos Mem[0x40] en 0x80. Si miramos 0x40 más adelante, vemos que no lo cambiamos, por lo que podemos asumir que es 0x80.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------- |
+| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
+| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
+
+Copie todos los datos de la llamada a la memoria, comenzando en 0x80.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------------------------------------------------------------------- |
+| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
+| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
+| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AF | DELEGATE_CALL | |
+
+Ahora las cosas están mucho más claras. Este contrato puede actuar como [proxy](https://blog.openzeppelin.com/proxy-patterns/), llamando a la dirección en Storage[3] para que haga el trabajo real. `DELEGATE_CALL` llama a un contrato separado, pero permanece en el mismo almacenamiento. Esto significa que el contrato delegado, para el que somos un proxy, accede al mismo espacio de almacenamiento. Los parámetros de la llamada son:
+
+- _Gas_: Todo el gas restante
+- _Called address_: Storage[3]-as-address
+- _Call data_: Los bytes CALLDATASIZE a partir de 0x80, que es donde ponemos los datos de llamada originales
+- _Return data_: Ninguno (0x00 - 0x00); obtendremos los datos de devolución por otros medios (ver más abajo)
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | --------------------------------------------------------------------------------------------- |
+| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+
+Aquí copiamos todos los datos de retorno al búfer de memoria a partir de 0x80.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BF | REGRESAR | |
+
+Así que después de la llamada copiamos los datos de retorno en el búfer 0x80 - 0x80+RETURNDATASIZE, y si la llamada tiene éxito, entonces devolvemos (`RETURN`) con exactamente ese búfer.
+
+### DELEGATECALL fallido {#delegatecall-failed}
+
+Si llegamos aquí, a 0xC0, significa que el contrato al que llamamos se revirtió. Como solo somos un proxy de ese contrato, queremos devolver los mismos datos y también revertirlos.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C3 | REVERTIR | |
+
+Así que hacemos `REVERT` con el mismo búfer que usamos para `RETURN` antes: 0x80 - 0x80+RETURNDATASIZE
+
+![Diagrama de flujo de llamada a proxy](flowchart-proxy.png)
+
+## Llamadas a ABI {#abi-calls}
+
+Si el tamaño de los datos de la llamada es de cuatro bytes o más, esta podría ser una llamada ABI válida.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------- |
+| D | PUSH1 0x00 | 0x00 |
+| F | CALLDATALOAD | (((First word (256 bits) of the call data))) |
+| 10 | PUSH1 0xe0 | 0xE0 (((First word (256 bits) of the call data))) |
+| 12 | SHR | (((first 32 bits (4 bytes) of the call data))) |
+
+Etherscan nos dice que `1C` es un código de operación desconocido, porque [se añadió después de que Etherscan escribiera esta función](https://eips.ethereum.org/EIPS/eip-145) y no la han actualizado. Una [tabla actualizada de códigos de operación](https://github.com/wolflo/evm-opcodes) nos muestra que esto es un cambio a la derecha (shift right).
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------------------------------------------------------------------------------------------- |
+| 13 | DUP1 | (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
+| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
+| 19 | GT | 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1D | JUMPI | (((first 32 bits (4 bytes) of the call data))) |
+
+Al dividir las pruebas de coincidencia de firma del método en dos de esta forma, esto ahorra la mitad de las pruebas en promedio. El código que inmediatamente sigue esto y el código en 0x43 siguen el mismo patrón: `DUP1` los primeros 32 bits de los datos de llamada, `PUSH4 (((method signature>`, ejecutar `EQ` para revisar la equidad y luego `JUMPI` si la firma del método coincide. Aquí están las firmas del método, sus direcciones y, si se conoce, la [definición de método correspondiente](https://www.4byte.directory/):
+
+| Método | Firma del método | Offset para saltar |
+| -------------------------------------------------------------------------------------- | ---------------- | ------------------ |
+| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
+| ??? | 0x81e580d3 | 0x0138 |
+| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
+| ??? | 0x1f135823 | 0x00C4 |
+| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
+
+Si no se encuentra ninguna coincidencia, el código salta al [controlador de proxy en 0x7C](#the-handler-at-0x7c), con la esperanza de que el contrato en el que somos proxy tenga una coincidencia.
+
+![Diagrama de flujo de llamadas ABI](flowchart-abi.png)
+
+## splitter() {#splitter}
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ----------------------------- |
+| 103 | JUMPDEST | |
+| 104 | CALLVALUE | CALLVALUE |
+| 105 | DUP1 | CALLVALUE CALLVALUE |
+| 106 | ISZERO | CALLVALUE==0 CALLVALUE |
+| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE |
+| 10A | JUMPI | CALLVALUE |
+| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
+| 10D | DUP1 | 0x00 0x00 CALLVALUE |
+| 10E | REVERTIR | |
+
+Lo primero que hace esta función es comprobar que la llamada no haya enviado ETH. Esta función no es [`pagable`](https://solidity-by-example.org/payable/). Si alguien nos envió ETH, debe ser un error, y queremos revertir (`REVERT`) para evitar tener ETH que no puedan recuperar.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------------------------------------- | --------------------------------------------------------------------------- |
+| 10F | JUMPDEST | |
+| 110 | POP | |
+| 111 | PUSH1 0x03 | 0x03 |
+| 113 | SLOAD | (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 114 | PUSH1 0x40 | 0x40 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 116 | MLOAD | 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12C | SWAP1 | 0x80 0xFF...FF (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12D | SWAP2 | (((Storage[3] a.k.a the contract for which we are a proxy))) 0xFF...FF 0x80 |
+| 12E | AND | ProxyAddr 0x80 |
+| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
+| 130 | MSTORE | 0x80 |
+
+Y 0x80 ahora contiene la dirección del proxy
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | --------- |
+| 131 | PUSH1 0x20 | 0x20 0x80 |
+| 133 | ADD | 0xA0 |
+| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
+| 137 | JUMP | 0xA0 |
+
+### El código E4 {#the-e4-code}
+
+Esta es la primera vez que vemos estas líneas, pero se comparten con otros métodos (ver más abajo). Así que llamaremos al valor de la pila X y simplemente recordaremos que en `splitter()` el valor de esta X es 0xA0.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ----------- |
+| E4 | JUMPDEST | X |
+| E5 | PUSH1 0x40 | 0x40 X |
+| E7 | MLOAD | 0x80 X |
+| E8 | DUP1 | 0x80 0x80 X |
+| E9 | SWAP2 | X 0x80 0x80 |
+| EA | SUB | X-0x80 0x80 |
+| EB | SWAP1 | 0x80 X-0x80 |
+| EC | REGRESAR | |
+
+Por lo tanto, este código recibe un puntero de memoria en la pila (X) y hace que el contrato haga `RETURN` con un búfer que es 0x80 - X.
+
+En el caso de `splitter()`, esto devuelve la dirección para la que somos un proxy. `RETURN` devuelve el búfer en 0x80-0x9F, que es donde escribimos estos datos (desplazamiento 0x130 arriba).
+
+## currentWindow() {#currentwindow}
+
+El código en los desplazamientos 0x158-0x163 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que `currentWindow()` tampoco es `payable`.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------- |
+| 164 | JUMPDEST | |
+| 165 | POP | |
+| 166 | PUSH2 0x00da | 0xDA |
+| 169 | PUSH1 0x01 | 0x01 0xDA |
+| 16B | SLOAD | Storage[1] 0xDA |
+| 16C | DUP2 | 0xDA Storage[1] 0xDA |
+| 16D | JUMP | Storage[1] 0xDA |
+
+### El código DA {#the-da-code}
+
+Este código también se comparte con otros métodos. Así que llamaremos al valor de la pila Y y simplemente recordaremos que en `currentWindow()` el valor de esta Y es Storage[1].
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ---------------- |
+| DA | JUMPDEST | Y 0xDA |
+| DB | PUSH1 0x40 | 0x40 Y 0xDA |
+| DD | MLOAD | 0x80 Y 0xDA |
+| DE | SWAP1 | Y 0x80 0xDA |
+| DF | DUP2 | 0x80 Y 0x80 0xDA |
+| E0 | MSTORE | 0x80 0xDA |
+
+Escriba Y en 0x80-0x9F.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------- |
+| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
+| E3 | ADD | 0xA0 0xDA |
+
+Y el resto ya está explicado [arriba](#the-e4-code). Así que salta a 0xDA, escribe la parte superior de la pila (Y) en 0x80-0x9F y devuelve ese valor. En el caso de `currentWindow()`, devuelve Storage[1].
+
+## merkleRoot() {#merkleroot}
+
+El código en los desplazamientos 0xED-0xF8 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que `merkleRoot()` tampoco es `payable`.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------- |
+| F9 | JUMPDEST | |
+| FA | POP | |
+| FB | PUSH2 0x00da | 0xDA |
+| FE | PUSH1 0x00 | 0x00 0xDA |
+| 100 | SLOAD | Storage[0] 0xDA |
+| 101 | DUP2 | 0xDA Storage[0] 0xDA |
+| 102 | JUMP | Storage[0] 0xDA |
+
+Lo que sucede después del salto [ya lo descubrimos](#the-da-code). Así que `merkleRoot()` devuelve Storage[0].
+
+## 0x81e580d3 {#0x81e580d3}
+
+El código en los desplazamientos 0x138-0x143 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que esta función tampoco es `payable`.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ------------------------------------------------------------ |
+| 144 | JUMPDEST | |
+| 145 | POP | |
+| 146 | PUSH2 0x00da | 0xDA |
+| 149 | PUSH2 0x0153 | 0x0153 0xDA |
+| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
+| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
+| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 197 | SLT | CALLDATASIZE-4<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+
+Parece que esta función toma al menos 32 bytes (una palabra) de datos de llamada.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | -------------------------------------------- |
+| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19F | REVERTIR | |
+
+Si no recibe los datos de la llamada, la transacción se revierte sin ningún dato de devolución.
+
+Veamos qué sucede si la función _sí_ obtiene los datos de llamada que necesita.
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ---------------------------------------- |
+| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA |
+
+`calldataload(4)` es la primera palabra de los datos de llamada _después_ de la firma del método
+
+| Offset | Código de operación | Pila |
+| ------:| ------------------- | ---------------------------------------------------------------------------- |
+| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA |
+| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA |
+| 1A5 | POP | 0x0153 calldataload(4) 0xDA |
+| 1A6 | JUMP | calldataload(4) 0xDA |
+| 153 | JUMPDEST | calldataload(4) 0xDA |
+| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA |
+| 157 | JUMP | calldataload(4) 0xDA |
+| 16E | JUMPDEST | calldataload(4) 0xDA |
+| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA |
+| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA |
+| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA |
+| 173 | SLOAD | Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 174 | DUP2 | calldataload(4) Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 175 | LT | calldataload(4))`, y otro es `isClaimed()`, así que parece un contrato de airdrop. En lugar de ver el resto opcode por opcode, podemos [probar el decompilador](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), que produce resultados utilizables para tres funciones de este contrato. La ingeniería inversa de los otros se deja como ejercicio para el lector.
+
+### scaleAmountByPercentage {#scaleamountbypercentage}
+
+Esto es lo que el decompilador nos da para esta función:
+
+```python
+def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable:
+ require calldata.size - 4 >=′ 64
+ if _param1 and _param2 > -1 / _param1:
+ revert with 0, 17
+ return (_param1 * _param2 / 100 * 10^6)
+```
+
+Las primeras pruebas `require` que tienen los datos de la llamada, además de los cuatro bytes de la firma de la función, al menos 64 bytes, suficientes para los dos parámetros. Si no, obviamente hay algo mal.
+
+La declaración `if` parece comprobar que `_param1` no es cero y que `_param1 * _param2` no es negativo. Probablemente sea para evitar casos de wrap around.
+
+Por último, la función devuelve un valor escalado.
+
+### claim {#claim}
+
+El código que crea el decompilador es complejo, y no todo es relevante para nosotros. Voy a omitir algo de eso para centrarme en las líneas que creo que proporcionan información útil.
+
+```python
+def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable:
+ ...
+ require _param2 == addr(_param2)
+ ...
+ if currentWindow <= _param1:
+ revert with 0, 'cannot claim for a future window'
+```
+
+Aquí vemos dos cosas importantes:
+
+- `_param2`, aunque se declara como `uint256`, es en realidad una dirección
+- `_param1` es la ventana reclamada, que tiene que ser `currentWindow` o anterior.
+
+```python
+ ...
+ if stor5[_claimWindow][addr(_claimFor)]:
+ revert with 0, 'Account already claimed the given window'
+```
+
+Así que ahora sabemos que Storage[5] es una serie de ventanas y direcciones, y si la dirección reclamó la recompensa por esa ventana.
+
+```python
+ ...
+ idx = 0
+ s = 0
+ while idx < _param4.length:
+ ...
+ if s + sha3(mem[(32 * _param4.length) + 328 len mem[(32 * _param4.length) + 296]]) > mem[(32 * idx) + 296]:
+ mem[mem[64] + 32] = mem[(32 * idx) + 296]
+ ...
+ s = sha3(mem[_62 + 32 len mem[_62]])
+ continue
+ ...
+ s = sha3(mem[_66 + 32 len mem[_66]])
+ continue
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+```
+
+Sabemos que `unknown2eb4a7ab` es en realidad la función `merkleRoot()`, por lo que este código parece que está verificando una [prueba de merkle](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5). Esto significa que `_param4` es una prueba de merkle.
+
+```python
+ call addr(_param2) with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+ gas 30000 wei
+```
+
+Así es como un contrato transfiere su propio ETH a otra dirección (contrato o de propiedad externa). Lo llama con un valor que es la cantidad a transferir. Así que parece que se trata de un airdrop de ETH.
+
+```python
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+```
+
+Las dos últimas líneas nos dicen que Storage[2] también es un contrato al que llamamos. Si [miramos la transacción del constructor](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange), vemos que este contrato es [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), un contrato de Ether envuelto (Wrapped Ether) [cuyo código fuente se subió a Etherscan](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code).
+
+Así que parece que el contrato intenta enviar ETH a `_param2`. Si puede hacerlo, genial. Si no, intenta enviar [WETH](https://weth.io/). Si `_param2` es una cuenta de propiedad externa (EOA), siempre puede recibir ETH, pero los contratos pueden negarse a recibir ETH. Sin embargo, WETH es ERC-20 y los contratos no pueden negarse a aceptarlo.
+
+```python
+ ...
+ log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success)
+```
+
+Al final de la función vemos que se genera una entrada de registro. [Mire las entradas de registro generadas](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) y filtre el tema que comienza con `0xdbd5...`. Si [hacemos clic en una de las transacciones que generaron dicha entrada](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274), vemos que, de hecho, parece una reclamación: la cuenta envió un mensaje al contrato en el que estamos haciendo ingeniería inversa y como retribución obtuvo ETH.
+
+![Transacción de reclamación (claim)](claim-tx.png)
+
+### 1e7df9d3 {#1e7df9d3}
+
+Esta función es muy similar a [`claim`](#claim) arriba. También comprueba una prueba de merkle, intenta transferir ETH a la primera y produce el mismo tipo de entrada de registro.
+
+```python
+def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
+ ...
+ idx = 0
+ s = 0
+ while idx < _param3.length:
+ if idx >= mem[96]:
+ revert with 0, 50
+ _55 = mem[(32 * idx) + 128]
+ if s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) > mem[(32 * idx) + 128]:
+ ...
+ s = sha3(mem[_58 + 32 len mem[_58]])
+ continue
+ mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]])
+ ...
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+ ...
+ call addr(_param1) with:
+ value s wei
+ gas 30000 wei
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value s wei
+ gas gas_remaining wei
+ ...
+ log 0xdbd5389f: addr(_param1), s, bool(ext_call.success)
+```
+
+La principal diferencia es que el primer parámetro, la ventana para hacer el retiro, no está ahí. En su lugar, hay un bucle sobre todas las ventanas que se podrían reclamar.
+
+```python
+ idx = 0
+ s = 0
+ while idx < currentWindow:
+ ...
+ if stor5[mem[0]]:
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s
+ continue
+ ...
+ stor5[idx][addr(_param1)] = 1
+ if idx >= unknown81e580d3.length:
+ revert with 0, 50
+ mem[0] = 4
+ if unknown81e580d3[idx] and _param2 > -1 / unknown81e580d3[idx]:
+ revert with 0, 17
+ if s > !(unknown81e580d3[idx] * _param2 / 100 * 10^6):
+ revert with 0, 17
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s + (unknown81e580d3[idx] * _param2 / 100 * 10^6)
+ continue
+```
+
+Así que parece una variante de `claim` que reclama todas las ventanas.
+
+## Conclusión {#conclusion}
+
+A estas alturas debería saber cómo entender los contratos cuyo código fuente no esté disponible, utilizando los códigos de operación (u opcodes) o, cuando funcione, el decompilador. Como es evidente en la longitud de este artículo, la ingeniería inversa de un contrato no es trivial, pero, en un sistema donde la seguridad es esencial, es una habilidad importante poder verificar que los contratos funcionen según lo previsto.
diff --git a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
index 667dd81163c..74fc1fe5e9a 100644
--- a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
@@ -1,267 +1,185 @@
---
title: Cómo convertir su Raspberry Pi 4 en un nodo simplemente con la tarjeta MicroSD
-description: Actualice su Raspberry Pi 4, a través de un cable de ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi en un nodo Ethereum completo ejecutando la capa de ejecución, o la capa de consenso (cadena de baliza / validador)
+description: Flashee su Raspberry Pi 4, conecte un cable Ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi 4 en un nodo Ethereum completo + validador
author: "EthereumOnArm"
tags:
- - "clients"
+ - "clientes"
- "capa de ejecución"
- "capa de consenso"
- "nodos"
lang: es
skill: intermediate
-published: 2020-05-07
-source: r/ethereum
-sourceUrl: https://www.reddit.com/r/ethereum/comments/gf3nhg/ethereum_on_arm_raspberry_pi_4_images_release/
+published: 2022-06-10
+source: Ethereum on ARM
+sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
---
-**TL;DR**: Actualice su Raspberry Pi 4, a través de un cable de ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi en un nodo Ethereum completo ejecutando la capa de ejecución, o la capa de consenso (cadena de baliza / validador)
+**Ethereum on Arm es una imagen personalizada de Linux que puede convertir una Raspberry Pi en un nodo de Ethereum.**
-[Más información acerca de las actualizaciones de Ethereum](/roadmap/)
+Para usar Ethereum on Arm para convertir una Raspberry Pi en un nodo de Ethereum, se recomienda el siguiente hardware:
-Primero, veamos un poco de contexto. Como saben, nos hemos encontrado con algunos problemas de memoria [[1]](/developers/tutorials/run-node-raspberry-pi/#references) con la imagen de Raspberry Pi 4 ya que Raspbian OS todavía está en 32 bits [[2]](/developers/tutorials/run-node-raspberry-pi/#references) (al menos a nivel de usuario). Si bien preferimos seguir con el sistema operativo oficial, llegamos a la conclusión de que, para resolver estos problemas, debemos migrar a un sistema operativo nativo de 64 bits
-
-Además, los clientes de consenso no admiten binarios de 32 bits, por lo que el uso de Raspbian excluiría a Raspberry Pi 4 de ejecutar un nodo de capa de consenso (y la posibilidad de apuesta).
-
-De modo que, tras varias pruebas, ahora lanzamos 2 imágenes diferentes basadas en Ubuntu 20.04 de 64bits las ediciones de [[3]](/developers/tutorials/run-node-raspberry-pi/#references): capa de ejecución y de capa de consenso.
-
-Básicamente, ambas son la misma imagen e incluyen las mismas características que las imágenes basadas en Raspbian. Pero están configuradas para ejecutar el programa de capa de ejecución o programa de capa de consenso por defecto.
-
-**Las imágenes se encargan de todos los pasos necesarios**, desde la configuración del entorno y el formato del disco SSD hasta la instalación y ejecución del software Ethereum, así como del inicio de la sincronización de la cadena de bloques.
-
-## Características principales {#main-features}
-
-- Basado en Ubuntu 20.04 64bit
-- Fragmentación y formato automático del disco USB
-- Añade memoria de intercambio (módulo del núcleo ZRAM + un archivo de intercambio) basada en el trabajo Armbian [[7]](/developers/tutorials/run-node-raspberry-pi/#references)
-- Cambia el nombre de host a uno parecido a «ethnode-e2a3e6fe» basado en hash MAC
-- Ejecuta el software como un servicio de sistema y comienza a sincronizar la cadena de bloques
-- Incluye un repositorio APT para instalar y actualizar el software Ethereum
-- Incluye un panel de control basado en Grafana / Prometeo
-
-## Software incluido {#software-included}
-
-Ambas imágenes incluyen los mismos paquetes, la única diferencia entre ellas es que la versión de ejecución ejecuta Geth por defecto y la versión de consenso ejecuta la cadena de baliza Prysn por defecto.
-
-### Clientes de ejecución {#execution-clients}
-
-- Geth [[8]](/developers/tutorials/run-node-raspberry-pi/#references): 1.9.13 (binario oficial)
-- Parity [[9]](/developers/tutorials/run-node-raspberry-pi/#references): 2.7.2 (binario oficial)
-- Nethermind [[10]](/developers/tutorials/run-node-raspberry-pi/#references): 1.8.28 (compilación cruzada)
-- Hyperledger Besu [[11]](/developers/tutorials/run-node-raspberry-pi/#references): 1.4.4 (compilado)
-
-### Clientes de consenso {#consensus-clients}
-
-- Prysm [[12]](/developers/tutorials/run-node-raspberry-pi/#references): 1.0.0-alpha6 (binario oficial)
-- Lighthouse [[13]](/developers/tutorials/run-node-raspberry-pi/#references): 0.1.1 (compilado)
-
-### Entorno de desarrollo Ethereum {#ethereum-framework}
-
-- Swarm [[14]](/developers/tutorials/run-node-raspberry-pi/#references): 0.5.7 (oficial binario)
-- Raiden Network [[15]](/developers/tutorials/run-node-raspberry-pi/#references): 0.200.0~rc1 (oficial binanrio)
-- IPFS [[16]](/developers/tutorials/run-node-raspberry-pi/#references): 0.5.0 (oficial binario)
-- Statusd [[17]](/developers/tutorials/run-node-raspberry-pi/#references): 0.52.3 (compilado)
-- Vipnode [[18]](/developers/tutorials/run-node-raspberry-pi/#references): 2.3.3 (binario oficial)
-
-## Guía de instalación y uso {#installation-guide-and-usage}
-
-### Hardware y configuración recomendados {#recommended-hardware-and-setup}
-
-- Raspberry 4 (modelo B) - 4GB
-- Tarjeta MicroSD (16 GB clase 10 mínimo)
-- Disco SSD USB 3.0 (ver sección de almacenamiento)
+- Raspberry 4 (modelo B 8 GB), Odroid M1 o Rock 5B (8 GB/16 GB de RAM)
+- Tarjeta MicroSD (16 GB clase 10 como mínimo)
+- Disco USB 3.0 mínimo SSD de 2 TB o un SSD con una carcasa USB a SATA
- Alimentación eléctrica
- Cable de Ethernet
-- Redirección del puerto 30303 (capa de ejecución) y redirección de puerto 13000 (capa de consenso) [[4]](/developers/tutorials/run-node-raspberry-pi/#references)
-- Una caja con disipador y ventilador (opcional pero encarecidamente recomendado)
-- Teclado USB, pantalla y cable HDMI (microHDMI) (opcional)
-
-## Almacenamiento {#storage}
-
-Necesitará un disco SSD para ejecutar los clientes de Ethereum (sin una unidad SSD no hay ninguna posibilidad de sincronizar la cadena de bloques de Ethereum). Hay 2 opciones:
+- Reenvío de puertos (consulte los clientes para obtener más información)
+- Una carcasa con disipador de calor y ventilador
+- Teclado USB, monitor y cable HDMI (micro-HDMI) (Opcional)
-- Utilice un disco SSD portátil USB como el Samsung T5 Portable SSD.
-- Use una caja de disco duro externo USB 3.0 con un disco SSD. En nuestro caso usamos un Inateck 2.5 Hard Drive Enclosure FE2011. Asegúrese de comprar una caja con un chip compatible con UAS, en particular, uno de estos: JMicron (JMS567 o JMS578) o ASMedia (ASM1153E).
+## ¿Por qué ejecutar Ethereum on ARM? {#why-run-ethereum-on-arm}
-En ambos casos, evite obtener discos SSD de baja calidad ya que es un componente clave del nodo y puede afectar drásticamente al rendimiento (y tiempos de sincronización).
+Las placas ARM son computadoras pequeños y flexibles y muy asequibles. Son buenas opciones para ejecutar nodos de Ethereum porque son baratos, pueden configurarse para que todos sus recursos se centren solo en el nodo, lo que los hace eficientes, consumen bajas cantidades de energía y son físicamente pequeños para encajar discretamente en cualquier hogar. También es muy fácil hacer funcionar los nodos porque la MicroSD de la Raspberry Pi simplemente se puede flashear con una imagen preconstruida, sin necesidad de descargar o crear software.
-Tenga en cuenta que necesita conectar el disco a un puerto USB 3.0 (azul)
+## ¿Cómo funciona? {#how-does-it-work}
-## Descarga e instalación de las imágenes {#image-download-and-installation}
+La tarjeta de memoria de la Raspberry Pi se flashea con una imagen preconstruida. Esta imagen contiene todo lo necesario para ejecutar un nodo Ethereum. Con una tarjeta flasheada, todo lo que el usuario tiene que hacer es encender la Raspberry Pi. Todos los procesos necesarios para ejecutar el nodo se inician automáticamente. Esto funciona porque la tarjeta de memoria contiene un sistema operativo (SO) basado en Linux sobre el cual se ejecutan automáticamente procesos a nivel de sistema que convierten la unidad en un nodo Ethereum.
-### 1. Descargue las imágenes de ejecución y capa de consenso {#1-download-execution-or-consensus-images}
+Ethereum no se puede ejecutar usando el popular sistema operativo Linux Raspberry Pi "Raspbian" porque Raspbian todavía utiliza una arquitectura de 32 bits que lleva a los usuarios de Ethereum a tener problemas de memoria y los clientes de consenso no admiten binarios de 32 bits. Para resolver esto, el equipo de Ethereum on Arm migró a un sistema operativo nativo de 64 bits llamado "Armbian".
-
- Descargue la imagen de la capa de ejecución
-
+**Las imágenes se encargan de todos los pasos necesarios**, desde la configuración del entorno y el formato del disco SSD hasta la instalación y ejecución del software de Ethereum, así como del inicio de la sincronización de la cadena de bloques.
-sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c
+## Nota sobre los clientes de ejecución y de consenso {#note-on-execution-and-consensus-clients}
-
- Descargue la imagen de la capa de consenso
-
+La imagen de Ethereum on Arm incluye clientes de ejecución y consenso precreados como servicios. Un nodo Ethereum requiere que ambos clientes estén sincronizados y ejecutándose. Solo tiene que descargar y flashear la imagen y luego iniciar los servicios. La imagen está precargada con los siguientes clientes de ejecución:
-sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e
+- Geth
+- Nethermind
+- Besu
-### 2. Actualice la imagen {#2-flash-the-image}
+y los siguientes clientes de consenso:
-Inserte la tarjeta microSD en su ordenador de sobremesa / portátil y descargue el archivo (por ejemplo, la capa de ejecución):
-
-```bash
-wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
-```
+- Lighthouse
+- Nimbus
+- Prysm
+- Teku
-Nota: Si no se siente cómodo con la línea de comandos o si está ejecutando Windows, puede usar [Etcher](https://etcher.io)
+Debe elegir uno de cada uno para ejecutar: todos los clientes de ejecución son compatibles con todos los clientes de consenso. Si no selecciona explícitamente un cliente, el nodo volverá a sus valores predeterminados, Geth y Lighthouse, y los ejecutará automáticamente al encender la placa. Debe abrir el puerto 30303 en su router para que Geth pueda encontrar y conectarse a los pares, o peers.
-Abra un terminal y compruebe el nombre del dispositivo MicroSD en ejecución:
+## Descargar la imagen {#downloading-the-image}
-```bash
-sudo fdisk -l
-```
+La imagen de Raspberry Pi 4 Ethereum es una imagen "plug and play" que instala y configura automáticamente tanto los clientes de ejecución como los de consenso, configurándolos para que interactúen entre sí y se conecten a la red Ethereum. El usuario solo debe iniciar sus procesos con un simple comando.
-Debería ver un dispositivo llamado mmcblk0 o sdd. Descomprima y actualice la imagen:
+Descargar la imagen de Raspberry Pi de [Ethereum on Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) y verificar el hash SHA256:
-```bash
-unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
-sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync
+```sh
+# Del directorio que contiene la imagen descargada
+shasum -a 256 ethonarm_22.04.00.img.zip
+# Hash debe salir: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f
```
-### 3. Inserte la MicroSD en la Raspberry Pi 4. Conecte un cable Ethernet y el disco SSD vía USB (asegúrese de que está usando un puerto azul). {#3-insert-the-microsd-into-the-raspberry-pi-4-connect-an-ethernet-cable-and-attach-the-usb-ssd-disk-make-sure-you-are-using-a-blue-port}
-
-### 4. Encienda el dispositivo {#4-power-on-the-device}
+Tenga en cuenta que las imágenes de las placas Rock 5B y Odroid M1 están disponibles en la [página de descargas](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html) de Ethereum on Arm.
-El sistema operativo Ubuntu arrancará en menos de un minuto, pero **tendrá que esperar aproximadamente 10 minutos** para permitir que el script realice las tareas necesarias para convertir el dispositivo en un nodo de Ethereum y reiniciar el Raspberry.
+## Flashear la MicroSD {#flashing-the-microsd}
-Dependiendo de la imagen que use, se ejecutará:
+La tarjeta MicroSD que se utilizará para la Raspberry Pi debe insertarse primero en una computadora de escritorio o portátil para flashearla. Luego, los siguientes comandos de terminal flasherán la imagen descargada en la tarjeta SD:
-- Cliente de ejecución: Geth como cliente predeterminado de sincronización de la cadena de bloques
-- Cliente de consenso: Prysm como cliente predeterminado de sincronización de la cadena de baliza (red de prueba Goerli)
-
-### 5. Inicio de sesión {#5-log-in}
-
-Puede iniciar sesión a través de SSH o usando la consola (si tiene una pantalla y un teclado conectados)
+```shell
+# check the MicroSD card name
+sudo fdisk -l
-```bash
-User: ethereum
-Password: ethereum
+>> sdxxx
```
-La primera vez que inicie sesión, se le pedirá que cambie la contraseña, por lo tanto, tendrá que iniciar sesión dos veces.
-
-### 6. Abra el puerto 30303 para Geth y 13000 si está ejecutando la cadena de baliza de Prysm. Si no sabe cómo hacerlo, teclee en Google «reenvío de puertos» seguido de su modelo de router. {#6-open-30303-port-for-geth-and-13000-if-you-are-running-prysm-beacon-chain-if-you-dont-know-how-to-do-this-google-port-forwarding-followed-by-your-router-model}
-
-### 7. Obtenga la salida de la consola {#7-get-console-output}
-
-Puede ver lo que está pasando en segundo plano escribiendo:
+Es muy importante que el nombre sea correcto porque el siguiente comando incluye `dd`, que borra completamente el contenido existente de la tarjeta antes de grabar la imagen en ella. Para continuar, vaya al directorio que contiene la imagen comprimida:
-```bash
-sudo tail -f /var/log/syslog
+```shell
+# unzip and flash image
+unzip ethonarm_22.04.00.img.zip
+sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/ conv=fdatasync status=progress
```
-**Enhorabuena. Ahora está ejecutando un nodo completo en su Raspberry Pi 4.**
+La tarjeta ahora está flasheada, por lo que se puede insertar en la Raspberry Pi.
-## Sincronización de la cadena de bloques {#syncing-the-blockchain}
+## Iniciar el nodo {#start-the-node}
-Seguidamente tendrá que esperar a que la cadena de bloques se sincronice por completo. En el caso de la capa de ejecución, llevará varios días en función de factores concretos, pero puede esperar aproximadamente 5-7 días.
+Con la tarjeta SD insertada en la Raspberry Pi, conecte el cable Ethernet y el SSD, y luego encienda las unidades. El sistema operativo arrancará y comenzará a realizar automáticamente las tareas preconfiguradas que convierten a la Raspberry Pi en un nodo Ethereum, incluida la instalación y creación del software del cliente. Esto probablemente tardará de 10 a 15 minutos.
-Si está ejecutando la capa de consenso en la red de prueba Goerli la sincronización con la cadena de la baliza puede llevar entre 1 y 2 días. Recuerde que necesitará configurar el validador más adelante para poder iniciar el proceso de apuesta. [Cómo ejecutar el validador de la capa de consenso](/developers/tutorials/run-node-raspberry-pi/#validator)
+Una vez que todo esté instalado y configurado, inicie sesión en el dispositivo a través de una conexión ssh o utilizando el terminal directamente si hay un monitor y un teclado conectados a la placa. Utilice la cuenta `ethereum` para iniciar sesión, ya que tiene los permisos necesarios para iniciar el nodo.
-## Paneles de control {#monitoring-dashboards}
-
-En esta primera versión, hemos incluido 3 paneles de control basados en Prometheus [[5]](/developers/tutorials/run-node-raspberry-pi/#references) / Grafana [[6]](/developers/tutorials/run-node-raspberry-pi/#references) para controlar el nodo y los datos de los clientes (Geth y Besu). Puede acceder a través de su navegador web:
-
-```bash
-URL: http://your_raspberrypi_IP:3000
-User: admin
+```shell
+User: ethereum
Password: ethereum
```
-## Cambiar de cliente {#switching-clients}
-
-Todos los clientes se ejecutan como un servicio de sistema. Esto es importante, porque si surge un problema, el sistema iniciará el proceso automáticamente.
-
-Las cadenas de baliza Geth y Prysm se ejecutan por defecto (en función de lo que esté sincronizando, de la capa de ejecución o de consenso) por lo tanto, si quiere pasar a otros clientes (de Geth a Nethermind, por ejemplo), tendrá que parar y desactivar primero Geth y activar e iniciar el otro cliente:
+El cliente de ejecución predeterminado, Geth, se iniciará automáticamente. Puede confirmar esto comprobando los registros utilizando el siguiente comando de terminal:
-```bash
-sudo systemctl stop geth && sudo systemctl disable geth
+```sh
+sudo journalctl -u geth -f
```
-Comandos para activar e iniciar cada cliente de ejecución:
+El cliente de consenso debe iniciarse explícitamente. Para hacer esto, primero abra el puerto 9000 en su enrutador para que Lighthouse pueda encontrar y conectarse a otros pares. A continuación, habilite e inicie el servicio Lighthouse:
-```bash
-sudo systemctl enable besu && sudo systemctl start besu
-sudo systemctl enable nethermind && sudo systemctl start nethermind
-sudo systemctl enable parity && sudo systemctl start parity
+```sh
+sudo systemctl enable lighthouse-beacon
+sudo systemctl start lighthouse-beacon
```
-Clientes de consenso:
+Compruebe el cliente utilizando los registros:
-```bash
-sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beacon
-sudo systemctl start lighthouse && sudo systemctl enable lighthouse
+```sh
+sudo journalctl -u lighthouse-beacon
```
-## Cambiar parámetros {#changing-parameters}
+Tenga en cuenta que el cliente de consenso se sincronizará en unos minutos porque utiliza la sincronización de puntos de control. El cliente de ejecución tardará más, posiblemente varias horas, y no se iniciará hasta que el cliente de consenso haya terminado la sincronización (esto se debe a que el cliente de ejecución necesita un objetivo con el que sincronizarse, que proporciona el cliente de consenso sincronizado).
-Los archivos de configuración de los clientes están ubicados en el directorio /etc/ethereum/. Puede editar estos archivos y reiniciar el servicio systemd para guardar cambios. La única excepción es Nethermind que, además, tiene un archivo de configuración de Mainnet ubicado aquí:
+Con los servicios de Geth y Lighthouse funcionando y sincronizados, ¡su Raspberry Pi es ahora un nodo de Ethereum! Es más común interactuar con la red Ethereum utilizando la consola Javascript de Geth, que se puede conectar al cliente de Geth en el puerto 8545. También es posible enviar comandos con formato de objetos JSON utilizando una herramienta de solicitud como Curl. Vea más detalles en la [documentación de Geth](https://geth.ethereum.org/).
-```bash
-/etc/nethermind/configs/mainnet.cfg
-```
+Geth está preconfigurado para informar métricas a un panel de control de Grafana que se puede ver en el navegador. Los usuarios más avanzados podrían querer usar esta función para controlar el estado de su nodo navegando a `ipaddress:3000`, pasando `user: admin` y `passwd: ethereum`.
+
+## Validadores {#validators}
-Los datos de los clientes de la cadena de bloques se almacenan en la cuenta principal de Ethereum de la siguiente manera (no se olvide de incluir el punto antes del nombre del directorio):
+También se puede añadir opcionalmente un validador al cliente de consenso. El software validador permite que su nodo participe activamente en el consenso y proporciona a la red seguridad criptoeconómica. Obtendrá una recompensa por este trabajo en ETH. Para ejecutar un validador, primero debe tener 32 ETH, que deben depositarse en el contrato de depósito. **Este es un compromiso a largo plazo; todavía no es posible retirar este ETH**. El depósito se puede hacer siguiendo la guía paso a paso en el [Launchpad](https://launchpad.ethereum.org/). Haga esto en una computadora de escritorio/portátil, pero no genere claves; esto se puede hacer directamente en la Raspberry Pi.
-### Capa de ejecución {#execution-layer}
+Abra un terminal en la Raspberry Pi y ejecute el siguiente comando para generar las claves de depósito:
-```bash
-/home/ethereum/.geth
-/home/ethereum/.parity
-/home/ethereum/.besu
-/home/ethereum/.nethermind
+```
+sudo apt-get update
+sudo apt-get install staking-deposit-cli
+cd && deposit new-mnemonic --num_validators 1
```
-### Capa de consenso {#consensus-layer}
+¡Guarde la frase mnemotécnica de manera segura! El comando anterior generó dos archivos en el almacén de claves del nodo: las claves del validador y un archivo de datos de depósito. Los datos de depósito deben subirse a la plataforma de lanzamiento, o lanzador, por lo que deben copiarse desde la Raspberry Pi al escritorio/portátil. Esto se puede hacer utilizando una conexión ssh o cualquier otro método de copiar/pegar.
-```bash
-/home/ethereum/.eth2
-/home/ethereum/.eth2validators
-/home/ethereum/.lighthouse
-```
+Una vez que el archivo de datos de depósito esté disponible en el ordenador que ejecuta la plataforma de lanzamiento, se puede arrastrar y soltar en el `+` en la pantalla de la plataforma de lanzamiento. Siga las instrucciones de la pantalla para enviar una transacción al contrato de depósito.
-## Nethermind y Hyperledger Besu {#nethermind-and-hyperledger-besu}
+De vuelta en la Raspberry Pi, se puede iniciar un validador. Esto requiere importar las claves del validador, establecer la dirección para recopilar recompensas y luego iniciar el proceso del validador preconfigurado. El siguiente ejemplo es para Lighthouse: las instrucciones para otros clientes de consenso están disponibles en los documentos de [Ethereum on Arm](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/):
-Estos 2 excelentes clientes de ejecución han terminando por ser buenas alternativas a Geth y Parity. Cuanta más diversidad haya en la red, mejor, probándolos contribuye a mejorar la salud de la red.
+```shell
+# import the validator keys
+lighthouse account validator import --directory=/home/ethereum/validator_keys
-Ambos necesitan más pruebas, así que experimente a sus anchas con ellos e informe de su opinión.
+# set the reward address
+sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf
-## Cómo ejecutar el validador de consenso (apuestas) {#validator}
+# start the validator
+sudo systemctl start lighthouse-validator
+```
-Una vez que la cadena de baliza de la red de pruebas Goerli está sincronizada, puede ejecutar un validador en el mismo dispositivo. Necesitará seguir [estos pasos de participación](https://prylabs.net/participate).
+¡Muy bien, ahora tiene un nodo y un validador de Ethereum completos ejecutándose en una Raspberry Pi!
-La primera vez, necesita crear manualmente una cuenta ejecutando el binario «validador» y configurando una contraseña. Una vez que haya completado este paso, puede agregar la contraseña a `/etc/ethereum/prysm-validator.conf` e iniciar el validador como un servicio systemd.
+## Más detalles {#more-details}
-## Apreciamos sus comentarios {#feedback-appreciated}
+Esta página le brindó una descripción general de cómo configurar un nodo y un validador de Geth-Lighthouse usando Raspberry Pi. Hay instrucciones más detalladas disponibles en el sitio web [Ethereum-on-Arm](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
-Hemos puesto mucho trabajo en la configuración del Raspberry Pi 4 como un nodo completo de Ethereum ya que sabemos que la base de usuario masiva de este dispositivo puede tener un impacto muy positivo en la red.
+## Agradecemos sus comentarios {#feedback-appreciated}
-Por favor, tenga en cuenta que esta es la primera imagen basada en Ubuntu 20.04 por lo que puede que haya algunos errores. Si es así, abra un problema en [GitHub](https://github.com/diglos/ethereumonarm) o contáctenos en [Twitter](https://twitter.com/EthereumOnARM).
+Sabemos que la Raspberry Pi tiene una enorme base de usuarios que podría tener un impacto muy positivo en la salud de la red Ethereum. Profundice en este tutorial, intente ejecutar en redes de prueba, eche un vistazo a Ethereum on Arm GitHub, dé su opinión, plantee problemas y solicitudes de pull, y ayude a avanzar en la tecnología y la documentación.
## Referencias {#references}
-1. [geth se bloquea repetidamente con SIGSEGV](https://github.com/ethereum/go-ethereum/issues/20190)
-2. [https://github.com/diglos/ethereumonarm](https://github.com/diglos/ethereumonarm)
-3. https://ubuntu.com/download/raspberry-pi
-4. https://wikipedia.org/wiki/Port_forwarding
-5. https://prometheus.io
-6. https://grafana.com
-7. https://forum.armbian.com/topic/5565-zram-vs-swap/
-8. https://geth.ethereum.org
-9. https://github.com/openethereum/openethereum \* **Tenga en cuenta que OpenEthereum [ha quedado obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) y no tiene mantenimiento.** Úselo con precaución y, preferiblemente, cambie a otra implementación de cliente.
-10. https://nethermind.io
-11. https://www.hyperledger.org/projects/besu
-12. https://github.com/prysmaticlabs/prysm
-13. https://lighthouse.sigmaprime.io
-14. https://ethersphere.github.io/swarm-home
-15. https://raiden.network
-16. https://ipfs.io
-17. https://status.im
-18. https://vipnode.org
+1. https://ubuntu.com/download/raspberry-pi
+2. https://wikipedia.org/wiki/Port_forwarding
+3. https://prometheus.io
+4. https://grafana.com
+5. https://forum.armbian.com/topic/5565-zram-vs-swap/
+6. https://geth.ethereum.org
+7. https://nethermind.io
+8. https://www.hyperledger.org/projects/besu
+9. https://github.com/prysmaticlabs/prysm
+10. https://lighthouse.sigmaprime.io
+11. https://ethersphere.github.io/swarm-home
+12. https://raiden.network
+13. https://ipfs.io
+14. https://status.im
+15. https://vipnode.org
diff --git a/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
new file mode 100644
index 00000000000..5a499d4c4b3
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
@@ -0,0 +1,56 @@
+---
+title: Lista de verificación de seguridad de los contratos inteligentes
+description: Un flujo de trabajo recomendado para escribir contratos inteligentes seguros
+author: "Trailofbits"
+tags:
+ - "contratos inteligentes"
+ - "seguridades"
+ - "solidity"
+skill: intermediate
+lang: es
+published: 2020-09-07
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md
+---
+
+## Lista de verificación de desarrollo de contratos inteligente {#smart-contract-development-checklist}
+
+Le indicamos un proceso altamente eficiente que le recomendamos seguir cuando escriba sus contratos inteligentes.
+
+Compruebe cualquier problema de seguridad conocido:
+
+- Revisa tus contratos con [Slither](https://github.com/crytic/slither). Tiene más de 40 detectores integrados para vulnerabilidades comunes. Ejecútelo en cada comprobación con un nuevo código y asegúrese de obtener un informe limpio (o utilice el modo de cribado para silenciar ciertos problemas).
+- Revise sus contratos con [Crytic](https://crytic.io/). Comprueba 50 problemas que Slither no revisa. Crytic puede ayudar a que su equipo se mantenga a la cabecera, al descubrir fácilmente problemas de seguridad en Pull Requests en GitHub.
+
+Tenga en cuenta las características especiales de su contrato:
+
+- ¿Sus contratos pueden mejorarse? Revise su código de mejora para errores con [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) o [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/). Hemos documentado 17 formas en que las actualizaciones pueden fallar.
+- ¿Sus contratos pretenden ajustarse a los ERC? Compruébalos con [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance). Esta herramienta identifica instantáneamente las desviaciones de seis especificaciones comunes.
+- ¿Tienes pruebas unitarias en Truffle? Compleméntelos con [`slither-prop`](https://github.com/crytic/slither/wiki/Property-generation). Genera automáticamente un robusto conjunto de propiedades de seguridad para las funciones de ERC20 basadas en su código específico.
+- ¿Se integra con tókenes de terceros? Revise nuestra [lista de verificación de integración de tókenes](/developers/tutorials/token-integration-checklist/) antes de depender de contratos externos.
+
+Inspeccione visualmente las características de seguridad críticas de su código:
+
+- Revise la impresión en consola [heredance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) de Slither. Evite problemas de operaciones en paralelo involuntarias y de linearización C3.
+- Revise la impresion en consola [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) de Slither. Informa de la visibilidad de las funciones y los controles de acceso.
+- Revise la impresion en consola [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) de Slither. Informa de los controles de acceso sobre las variables de estado.
+
+Documente propiedades de seguridad críticas y utilice generadores de pruebas automatizados para evaluarlas:
+
+- Aprende a [documentar propiedades de seguridad para su código](/developers/tutorials/guide-to-smart-contract-security-tools/). Es difícil al principio, pero es la actividad más importante para lograr un buen resultado. También es un requisito previo para utilizar cualquiera de las técnicas avanzadas en este tutorial.
+- Defina propiedades de seguridad en Solidity, para su uso con [Echidna](https://github.com/crytic/echidna) y [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html). Concéntrese en su máquina de estado, controles de acceso, operaciones aritméticas, interacciones externas y conformidad con los estándares.
+- Defina las propiedades de seguridad con [la API Python de Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/). Concéntrese en la herencia, dependencias variables, controles de acceso y otras cuestiones estructurales.
+- Ejecute sus pruebas de propiedad en cada comando commit con [Crytic](https://crytic.io). Crytic puede consumir y evaluar pruebas de propiedad de seguridad para que todos los miembros de su equipo puedan ver fácilmente que pasan por GitHub. Las pruebas fallidas pueden bloquear los commits.
+
+Por último, tenga en cuenta los problemas que las herramientas automatizadas no pueden encontrar fácilmente:
+
+- Falta de privacidad: todos los demás pueden ver sus transacciones mientras están en cola de espera.
+- Transacciones en ejecución frontal
+- Operaciones criptográficas
+- Interacciones arriesgadas con componentes DeFi externos
+
+## Pedir ayuda {#ask-for-help}
+
+[El horario de oficina de Ethereum](https://calendly.com/dan-trailofbits/ethereum-office-hours) funciona cada martes por la tarde. Estas sesiones individuales de una hora de duración son una oportunidad para hacernos cualquier pregunta que tenga sobre la seguridad, solucionar problemas usando nuestras herramientas y obtener comentarios de expertos sobre su enfoque actual. Le ayudaremos a trabajar con esta guía.
+
+Únase a nuestro Slack: [Pirateando el imperio](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw). Siempre estamos disponibles en los canales #crytic y #ethereum si tiene alguna duda.
diff --git a/public/content/translations/fr/developers/tutorials/send-token-etherjs/index.md b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
similarity index 59%
rename from public/content/translations/fr/developers/tutorials/send-token-etherjs/index.md
rename to public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
index 8352a365b03..cd4dd34a040 100644
--- a/public/content/translations/fr/developers/tutorials/send-token-etherjs/index.md
+++ b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
@@ -1,35 +1,35 @@
---
-title: Envoyer des jetons avec ethers.js
-description: Guide à l'intention des débutants sur l'envoi de jetons à l'aide d'ether.js.
+title: Enviar tokens usando ethers.js
+description: Guía para principiantes sobre el envío de tokens usando ethers.js.
author: Kim YongJun
tags:
- "ETHERS.JS"
- "ERC-20"
- - "JETONS"
+ - "TOKENS"
skill: beginner
-lang: fr
+lang: es
published: 2021-04-06
---
-## Envoyer un jeton avec ethers.js (5.0) {#send-token}
+## Enviar token usando ethers.js(5.0) {#send-token}
-### Dans ce tutoriel, vous allez apprendre à {#you-learn-about}
+### En este tutorial aprenderá: {#you-learn-about}
-- Importer ethers.js
-- Transférer un jeton
-- Définir le prix du gaz en fonction de l'état du trafic réseau
+- Cómo importar ethers.js
+- Cómo transferir tokens
+- Cómo establecer el precio del gas según la situación de tráfico de la red
-### Pour commencer {#to-get-started}
+### Para comenzar {#to-get-started}
-Pour commencer, nous devons d'abord importer la bibliothèque ethers.js dans notre JavaScript en intégrant ethers.js (5.0)
+Para comenzar, primero debemos importar la biblioteca de ethers.js en nuestro javascript Incluya ethers.js(5.0)
-### Installation {#install-ethersjs}
+### Instalación {#install-ethersjs}
```shell
/home/ricmoo> npm install --save ethers
```
-ES6 dans le navigateur :
+ES6 en el navegador
```html
```
-ES3 (UMD) dans le navigateur :
+ES3(UMD) en el navegador
```html
```
-### Paramètres {#param}
+### Parámetros {#param}
-1. **`contract_address`** : l'adresse du contrat du jeton (l'adresse du contrat est nécessaire lorsque le jeton que vous voulez transférer n'est pas de l'ether)
-2. **`send_token_amount`** : le montant que vous désirez envoyer au destinataire
-3. **`to_address`** : l'adresse du destinataire
-4. **`send_account`** : l'adresse de l'expéditeur
-5. **`private_key`** : clé privée de l'expéditeur afin de signer la transaction et de transférer véritablement les jetons
+1. **`contract_address`**: la dirección del contrato del token (se necesita la dirección cuando el token que quiere transferir no es ether)
+2. **`send_token_amount`**: la cantidad que quiere enviar al receptor
+3. **`to_address`**: la dirección del receptor
+4. **`send_account`**: la dirección del que envía
+5. **`private_key`**: la clave privada del remitente para firmar la transacción y tranferir los tokens
-## Remarque {#notice}
+## Aviso {#notice}
-`signTransaction(tx)` est retiré car `sendTransaction()` le fait en interne.
+`signTransaction(tx)` se eliminó porque `sendTransaction()` lo hace internamente.
-## Procédure d'envoi {#procedure}
+## Procedimientos de envío {#procedure}
-### 1. Se connecter au réseau (testnet) {#connect-to-network}
+### 1. Conectarse a la red de prueba (testnet) {#connect-to-network}
-#### Définir le fournisseur (Infura) {#set-provider}
+#### Establecer el proveedor (Infura) {#set-provider}
-Se connecter au réseau de test Ropsten
+Conectarse a la red de prueba Ropsten
```javascript
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
```
-### 2. Créer un portefeuille {#create-wallet}
+### 2. Crear una billetera {#create-wallet}
```javascript
let wallet = new ethers.Wallet(private_key)
```
-### 3. Connecter le portefeuille au réseau {#connect-wallet-to-net}
+### 3. Conectar la billetera a la red {#connect-wallet-to-net}
```javascript
let walletSigner = wallet.connect(window.ethersProvider)
```
-### 4. Obtenir le prix actuel du gaz {#get-gas}
+### 4. Obtener el precio actual de gas {#get-gas}
```javascript
window.ethersProvider.getGasPrice() // gasPrice
```
-### 5. Définir la transaction {#define-transaction}
+### 5. Definir la transacción {#define-transaction}
-Les variables définies ci-dessous sont dépendantes de `send_token()`
+Estas variables definidas a continuación dependen del `send_token()`
-### Paramètres de la transaction {#transaction-params}
+### Parámetros de transacción {#transaction-params}
-1. **`send_account`** : adresse de l'expéditeur du jeton
-2. **`to_address`** : adresse du destinataire du jeton
-3. **`send_token_amount`** : nombre de jetons à envoyer
-4. **`gas_limit`** : limite de gaz
-5. **`gas_price`** : prix du gaz
+1. **`send_account`**: dirección del emisor de tokens
+2. **`to_address`**: dirección del receptor de tokens
+3. **`send_token_amount`**: la cantidad de tokens a enviar
+4. **`gas_limit`**: límite de gas
+5. **`gas_price`**: precio del gas
-[Voir ci-dessous pour savoir comment les utiliser](#how-to-use)
+[Vea a continuación cómo usar](#how-to-use)
```javascript
const tx = {
@@ -114,7 +114,7 @@ const tx = {
}
```
-### 6. Transférer {#transfer}
+### 6. Transferir {#transfer}
```javascript
walletSigner.sendTransaction(tx).then((transaction) => {
@@ -123,7 +123,7 @@ walletSigner.sendTransaction(tx).then((transaction) => {
})
```
-## Comment l’utiliser {#how-to-use}
+## Cómo utilizarlo {#how-to-use}
```javascript
let private_key =
@@ -146,9 +146,9 @@ send_token(
)
```
-### Réussi ! {#success}
+### ¡Éxito! {#success}
-![image de la transaction effectuée avec succès](./successful-transaction.png)
+![imagen de transacción realizada con éxito](./successful-transaction.png)
## send_token() {#send-token-method}
diff --git a/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
new file mode 100644
index 00000000000..be56d31b4e8
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -0,0 +1,206 @@
+---
+title: Enviar transacciones usando la Web3
+description: "Esta es un guia apta para principiantes sobre cómo enviar transacciones de Ethereum usando la Web3. Hay tres pasos esenciales para enviar una transacción a la cadena de bloques de Ethereum, que son: crear, firmar y emitir. Analizaremos los tres."
+author: "Elan Halpern"
+tags:
+ - "transacciones"
+ - "web3.js"
+ - "alchemy"
+skill: beginner
+lang: es
+published: 2020-11-04
+source: Documentos de Alchemy
+sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
+---
+
+Esta es un guia apta para principiantes sobre cómo enviar transacciones de Ethereum usando la Web3. Existen tres pasos esenciales para enviar una transacción a la blockchain de Ethereum: crear, firmar y emitir. Explicaremos los tres pasos y esperamos responder a cualquier duda que puedas tener. En este tutorial, usaremos [Alchemy](https://www.alchemy.com/) para enviar nuestras transacciones a la red de Ethereum. Puede [crear una cuenta de Alchemy aquí](https://auth.alchemyapi.io/signup).
+
+**NOTA:** Esta guía es para firmar sus transacciones en el _backend_ para su aplicación. Si quiere integrar la firma de sus transacciones en el frontend, consulte[Integrar Web3 con un proveedor de navegador](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
+
+## Los fundamentos {#the-basics}
+
+Como la mayoría de desarrolladores de cadena de bloques cuando comienzan, es posible que haya indagado sobre cómo enviar una transacción (algo que debería ser muy sencillo) y que se haya topado con una gran cantidad de guías, cada una de ellas diciendo cosas diferentes, que le dejan a uno un poco aturdido y confundido. Por lo tanto, si se encuentra en esa situación, no desespere. ¡Todos lo hemos pasado por ello en algún momento! Así que, antes de comenzar, aclaremos algunos puntos:
+
+### 1\. Alchemy no almacena sus claves privadas {#alchemy-does-not-store-your-private-keys}
+
+- Esto significa que Alchemy no puede firmar ni enviar transacciones en su nombre. Es así por motivos de seguridad. Alchemy nunca le pedirá que comparta su clave privada, ni tampoco debería compartir nunca su clave privada con un nodo alojado (ni con nadie).
+- Puede leer desde la cadena de bloques usando la API del nucleo de Alchemy, pero para escribirlo, necesitará usar algo más para firmar sus transacciones antes de enviarlas mediante Alchemy (esto es lo mismo para cualquier otro [servicio de nodo](/developers/docs/nodes-and-clients/nodes-as-a-service/)).
+
+### 2\. ¿Qué es un «signatario»? {#what-is-a-signer}
+
+- Los firmantes firmarán las transacciones por usted con su clave privada. En este tutorial, nosotros usaremos [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) para firmar nuestra transacción, aunque también puede usar cualquier otra biblioteca Web 3.
+- En el frontend, un buen ejemplo de firmante sería [MetaMask](https://metamask.io/), que firmará y enviará las transacciones en su nombre.
+
+### 3\. ¿Por qué tengo que firmar mis transacciones? {#why-do-i-need-to-sign-my-transactions}
+
+- Todo usuario que quiera enviar una transacción en la red Ethereum debe firmarla (utilizando su clave privada), para validar que la transacción proviene de quien afirma proceder.
+- Es sumamente importante proteger esta clave privada, ya que tener acceso a ella otorga el control absoluto de su cuenta de Ethereum y le permite a usted (o a cualquier persona con acceso) realizar transacciones en su nombre.
+
+### 4\. ¿Cómo puedo proteger mi clave privada? {#how-do-i-protect-my-private-key}
+
+- Hay muchas formas de proteger tu clave privada y de utilizarla para enviar transacciones. En este tutorial utilizaremos un archivo `.env`. Sin embargo, también puede utilizar un proveedor independiente que almacene claves privadas, utilizar un banco de claves u otras opciones.
+
+### 5\. ¿Cuál es la diferencia entre `eth_sendTransaction` y `eth_sendRawTransaction`? {#difference-between-send-and-send-raw}
+
+`eth_sendTransaction` y `eth_sendRawTransaction` son funciones de la API de Ethereum que emiten una transacción en la red de Ethereum para que se añada a un nuevo bloque. Se diferencian en cómo gestionan la firma de las transacciones.
+
+- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) se utiliza para enviar transacciones _sin firmar_, lo que significa que el nodo al que se envía debe gestionar su clave privada para que pueda firmar la transacción antes de difundirla en la cadena. Dado que Alchemy no almacena las claves privadas de los usuarios, no utilizamos este método.
+- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) se utiliza para emitir las transacciones que ya han sido firmadas. Esto significa que primero debes usar [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction), y luego enviar el resultado a `eth_sendRawTransaction`.
+
+Cuando se utiliza web3, se puede acceder a `eth_sendRawTransaction` a través de la función [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction).
+
+Esto es lo que vamos a usar en este tutorial.
+
+### 6\. ¿Qué es la biblioteca Web3? {#what-is-the-web3-library}
+
+- Web3.js es una biblioteca de «wrappers» o programas que rodean las funciones estándar JSON-RPC que son muy comunes en el desarrollo de Ethereum.
+- Hay muchas blibiotecas en Web3 para diferentes lenguajes. En este tutorial usaremos [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) que está desarrollado en JavaScript. Puede consultar [aquí](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) otras opciones, como [ethers.js](https://docs.ethers.org/v5/).
+
+Bien, ahora que ya hemos resuelto algunas de estas dudas, comencemos con el tutorial. ¡No dude preguntar sus dudas en cualquier momento a través del canal [discord](https://discord.gg/gWuC7zB) de Alchemy!
+
+### 7\. ¿Cómo enviar transacciones seguras, privadas y con gas optimizado? {how-to-send-secure-gas-optimized-and-private-transactions}
+
+- [Alchemy tiene un conjunto de API para transacciones](https://docs.alchemy.com/reference/transact-api-quickstart). Puede usarlas para enviar transacciones reforzadas, simular transacciones antes de que ocurran, enviar transacciones privadas y transacciones con gas optimizado.
+- También puede utilizar la [API de Notify](https://docs.alchemy.com/docs/alchemy-notify) para recibir alertas cuando su transacción se toma desde la zona de espera y se añade a la cadena.
+
+**NOTA:** Para consultar esta guía, debe tener una cuenta de Alchemy, una dirección de Ethereum o una cartera MetaMask, NodeJs, y npm instaladas. De lo contrario, siga estos pasos:
+
+1. [Cree una cuenta gratuita de Alchemy](https://auth.alchemyapi.io/signup)
+2. [Crea una cuenta de Metamask](https://metamask.io/) (u obtenga una dirección de Ethereum)
+3. [Siga estos pasos para instalar NodeJs y NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
+
+## Pasos para enviar su transacción {#steps-to-sending-your-transaction}
+
+### 1\. Crea una aplicación de Alchemy en la red de pruebas de Sepolia {#create-an-alchemy-app-on-the-sepolia-testnet}
+
+Vaya a su [panel de control de Alchemy](https://dashboard.alchemyapi.io/) y cree una nueva aplicación, seleccionando Sepolia (u otra red de pruebas) para su red.
+
+### 2\. Solicitar ETH desde un grifo Sepolia {#request-eth-from-sepolia-faucet}
+
+Sigue las instrucciones en el [faucet (o grifo) Sepolia de Alchemy](https://www.sepoliafaucet.com/) para recibir ETH. Asegúrese de incluir su dirección Ethereum de **Sepolia** (desde MetaMask) y no otra red. Después de seguir las indicaciones, compruebe dos veces que ha recibido los ETH en su cartera.
+
+### 3\. Crea un nuevo directorio de proyecto y `cd` en él {#create-a-new-project-direction}
+
+Cree un nuevo directorio de proyecto desde la ventana de comandos (terminal para macs) y navega hasta ella:
+
+```
+mkdir sendtx-example
+cd sendtx-example
+```
+
+### 4\. Instale Alchemy Web3 (o cualquier biblioteca en Web3) {#install-alchemy-web3}
+
+Ejecute el siguiente comando en el directorio del proyecto que instalará [Alchemy Web3](https://docs.alchemy.com/reference/api-overview):
+
+Observe que si quiere utilizar la biblioteca de ethers.js, [debe seguir estas instrucciones](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum).
+
+```
+npm install @alch/alchemy-web3
+```
+
+### 5\. Instala dotenv {#install-dotenv}
+
+Utilizaremos un archivo `.env` para almacenar de manera segura nuestra clave API y clave privada.
+
+```
+npm install dotenv --save
+```
+
+### 6\. Cree el archivo `.env` {#create-the-dotenv-file}
+
+Cree un archivo `.env` en el directorio de su proyecto y añada lo siguiente (sustituyendo "`your-api-url`" y "`your-private-key`")
+
+- Para encontrar la URL de la API de Alchemy, vaya a la página de información de la aplicación que acaba de crear en su panel de control, haga clic en «Ver clave» en la esquina superior derecha y obtenga la URL HTTP.
+- Para encontrar su clave privada utilizando Metamask, consulte esta [guía](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key).
+
+```
+API_URL = "your-api-url"
+PRIVATE_KEY = "your-private-key"
+```
+
+
+¡No exponga su .env! Asegúrese de que nunca comparte ni expone su archivo .env con nadie, si ello conlleva revelar sus secretos. Si está haciendo un control de la versión, añada .env a un archivo gitignore.
+
+
+### 7\. Cree el archivo `sendTx.js` {#create-sendtx-js}
+
+Vale, ahora que su información confidencial ya está protegida en un archivo `.env`, iniciemos la programación. Para nuestro ejemplo de envío de transacción, enviaremos ETH de vuelta al grifo Sepolia.
+
+Cree un archivo `sendTx.js`, que es donde configuraremos y enviaremos nuestra transacción de muestra, y añádale las siguientes líneas de código:
+
+```
+async function main() {
+ require('dotenv').config();
+ const { API_URL, PRIVATE_KEY } = process.env;
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
+ const web3 = createAlchemyWeb3(API_URL);
+ const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
+
+ const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
+
+ const transaction = {
+ 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
+ 'value': 1000000000000000000, // 1 ETH
+ 'gas': 30000,
+ 'nonce': nonce,
+ // optional data field to send message or execute smart contract
+ };
+
+ const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
+
+ web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
+ if (!error) {
+ console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
+ } else {
+ console.log("❗Something went wrong while submitting your transaction:", error)
+ }
+ });
+}
+
+main();
+```
+
+Asegúrese de reemplazar la dirección en la **línea 6** por su propia dirección pública.
+
+Ahora, antes de pasar a la ejecución de este código, hablaremos sobre algunos de los componentes.
+
+- `nonce`: la especificación del nonce se utiliza para hacer un seguimiento del número de transacciones enviadas desde su dirección. La necesitamos por motivos de seguridad y para evitar [ataques repetitivos](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para conocer el número de transacciones enviadas desde su dirección, utilizamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
+- `transaction`: la transacción tiene algunos aspectos que debemos especificar.
+ - `to`: Es la dirección a la que queremos enviar ETH. En este caso, estamos enviando ETH de regreso al [grifo Sepolia](https://sepoliafaucet.com/) al que inicialmente le solicitamos.
+ - `value`: Esta es la cantidad que deseamos enviar, especificada en Wei, donde 10^18 Wei = 1 ETH
+ - `gas`: hay numerosas formas de determinar la cantidad correcta de gas que se debe incluir en la transacción. Incluso, Alchemy tiene un [webhook del precio de del gas](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) que informa cuando el precio del gas se encuentra dentro de un límite determinado. Una buena práctica para transacciones en la red principal consiste en consultar una calculadora de gas como [ETH Gas Station](https://ethgasstation.info/) para determinar la cantidad correcta de gas por añadir. La cantidad mínima de gas que utiliza una operación en Ethereum es de 21.000; por tanto, y para asegurarnos de que nuestra transacción se ejecute, añadiremos 30.000.
+ - `nonce`: consulte la definición anteriormente mencionada. Nonce empieza a contar desde cero.
+ - [OPTIONAL] datos: utilizado para enviar información adicional con su transferencia, o para activar un contrato inteligente ―no requerido para transferencias de saldo― consulte la nota de abajo.
+- `signedTx`: para firmar nuestro objeto de transacción utilizaremos el método `signTransaction` con nuestra `PRIVATE_KEY`
+- `sendSignedTransaction`: una vez que tenemos una transacción firmada, podemos enviarla para que se incluya en un bloque posterior utilizando `sendSignedTransaction`
+
+**Una nota sobre los datos** Hay dos tipos principales de transacciones que se pueden enviar en Ethereum.
+
+- Transferencia de saldo: enviar ETC de una dirección a otra. No se requiere ningún campo de datos, sin embargo, si desea enviar información adicional junto a su transacción, puede incluir esa información en formato HEX en este campo.
+ - Por ejemplo, digamos que queremos escribir el hash de un documento IPFS a la cadena de Ethereum para darle una fecha y hora inmutable. Nuestro campo de datos debe mostrarse como datos: `web3.utils.toHex(‘IPFS hash‘)`. Ahora cualquiera puede consultar la cadena y ver cuándo se añadió el documento.
+- Transacción de contrato inteligente: ejecute algún código de contrato inteligente en la cadena. En este caso, el campo de datos debería tener la función inteligente que desee ejecutar, junto a cualquier parámetro.
+ - Para un ejemplo práctico, consulte el paso 8 en este [Tutorial abierto a todos los públicos](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction).
+
+### 8\. Ejecuta el código usando `node sendTx.js` {#run-the-code-using-node-sendtx-js}
+
+Navegue hasta la terminal o línea de comandos y ejecute:
+
+```
+node sendTx.js
+```
+
+### 9\. Consulta tu transacción en el Mempool {#see-your-transaction-in-the-mempool}
+
+Abra la página de la [Zona de espera](https://dashboard.alchemyapi.io/mempool) en su panel de control de Alchemy y filtre la aplicación que creó para encontrar su transacción. Aquí es donde podemos ver la transición de nuestra transacción desde un estado pendiente a un estado acuñado (si tiene éxito) o a un estado descartado si no tiene éxito. Asegúrese de conservarlo en «Todos» para reflejar las transacciones «acuñadas», «pendientes» y «descartadas». También puede buscar su transacción por transacciones enviadas a la dirección `0x31b98d14007bdee637298086988a0bbd31184523` .
+
+Para ver los detalles de su transacción una vez que la haya encontrado, seleccione el hash de tx, que debería llevarle a una pantalla parecida a esta:
+
+![Captura de pantalla de la Zona de espera](./mempool.png)
+
+Aquí puede ver su transacción en Etherscan pulsando el icono dentro de un círculo rojo.
+
+**¡Enhorabuena! Acabas de realizar tu primera transacción en Ethereum con Alchemy 🎉**
+
+_Si desea ver comentarios y sugerencias sobre esta guía, envíe un mensaje a Elan en el canal [Discord](https://discord.gg/A39JVCM) de Alchemy._
+
+_Publicado originalmente en [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy)_
diff --git a/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
new file mode 100644
index 00000000000..bdeebf488ae
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -0,0 +1,94 @@
+---
+title: Configura web3.js para utilizar el blockchain de Ethereum en JavaScript
+description: Cómo usar un contrato inteligente para interactuar con un token a través del lenguaje Solidity.
+author: "jdourlens"
+tags:
+ - "web3.js"
+ - "javascript"
+skill: beginner
+lang: es
+published: 2020-04-11
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+En este tutorial, veremos cómo comenzar con [web3.js](https://web3js.readthedocs.io/) para interactuar con el blockchain de Ethereum. Web3.js se puede utilizar tanto en frontends como en backends para leer datos del blockchain, realizar transacciones e incluso implementar smart contracts.
+
+El primer paso es incluir web3.js en tu proyecto. Para usarlo en una página web, puedes importar la biblioteca directamente usando un CDN como JSDelivr.
+
+```html
+
+```
+
+Si prefieres instalar la biblioteca para usarla en un proyecto de backend o frontend que usa compilación, puedes instalarla usando npm:
+
+```bash
+npm install web3 --save
+```
+
+Luego, para importar Web3.js a una secuencia de comandos de Node.js o a un proyecto de frontend de Browserify, puedes utilizar la siguiente línea de JavaScript:
+
+```js
+const Web3 = require("web3")
+```
+
+Ahora que incluimos la librería en el proyecto, necesitamos inicializarla. Tu proyecto necesita ser capaz de comunicarse con cadena de bloques. La mayoría de las bibliotecas de Ethereum se comunican con un [nodo](/developers/docs/nodes-and-clients/) a través de llamadas RPC. Para iniciar nuestro proveedor de web3, crearemos una instancia de Web3 pasando como constructor el URL del proveedor. Si tienes un nodo o una [instancia de ganache ejecutándose en tu computadora](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/), se verá así:
+
+```js
+const web3 = new Web3("http://localhost:8545")
+```
+
+Si te gustaría acceder directamente a un nodo rentado, puedes encontrar opciones en [ nodos como servicio.](/developers/docs/nodes-and-clients/nodes-as-a-service).
+
+```js
+const web3 = new Web3("https://cloudflare-eth.com")
+```
+
+Para probar que nuestra instancia Web3 se ha configurado correctamente, trataremos de recuperar el último número de bloque usando la función `getBlockNumber`. Esta función acepta una devolución de llamada como parámetro y devuelve el número de bloque como un número entero.
+
+```js
+var Web3 = require("web3")
+const web3 = new Web3("https://cloudflare-eth.com")
+
+web3.eth.getBlockNumber(function (error, result) {
+ console.log(result)
+})
+```
+
+Si ejecutas este programa, simplemente imprimirá el último número de bloque: la parte superior del blockchain. También puedes usar las llamadas de función `await/async` para evitar anidar las devoluciones de llamadas en el código:
+
+```js
+async function getBlockNumber() {
+ const latestBlockNumber = await web3.eth.getBlockNumber()
+ console.log(latestBlockNumber)
+ return latestBlockNumber
+}
+
+getBlockNumber()
+```
+
+Puedes ver todas las funciones disponibles en la instancia Web3 en [la documentación oficial de web3.js](https://docs.web3js.org/).
+
+La mayoría de las bibliotecas Web3 son asíncronas porque, en segundo plano, la biblioteca realiza llamadas JSON RPC al nodo que devuelve el resultado.
+
+
+
+Si estás trabajando en el navegador, algunas billeteras inyectan directamente una instancia Web3 y deberías tratar de usarla cuando sea posible, especialmente si planeas interactuar con la dirección Ethereum del usuario para hacer transacciones.
+
+Aquí está el fragmento para detectar si una billetera MetaMask está disponible y probar activarla si lo está. Más tarde, te permitirá leer el saldo del usuario y permitirle validar las transacciones que te gustaría que hicieran en el blockchain de Ethereum:
+
+```js
+if (window.ethereum != null) {
+ state.web3 = new Web3(window.ethereum)
+ try {
+ // Request account access if needed
+ await window.ethereum.enable()
+ // Accounts now exposed
+ } catch (error) {
+ // User denied account access...
+ }
+}
+```
+
+Existen alternativas a web3.js como [Ethers.js](https://docs.ethers.io/) y son muy usadas. En el siguiente tutorial, veremos [cómo escuchar fácilmente los nuevos bloques entrantes en el blockchain y ver lo que contienen](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/).
diff --git a/public/content/translations/es/developers/tutorials/short-abi/index.md b/public/content/translations/es/developers/tutorials/short-abi/index.md
new file mode 100644
index 00000000000..7671522a18e
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/short-abi/index.md
@@ -0,0 +1,656 @@
+---
+title: "ABIs cortas para la Optimización de Calldata"
+description: Optimizando contratos inteligentes para Optimistic Rollups
+author: Ori Pomerantz
+lang: es
+tags:
+ - "capa 2"
+skill: intermediate
+published: 2022-04-01
+---
+
+## Introducción {#introduction}
+
+En este artículo aprenderá sobre [optimistic rollups](/developers/docs/scaling/optimistic-rollups), el coste de transacciones en ellos, y cómo esa estructura de coste diferente requiere que optimicemos para cosas diferentes que en la Red principal de Ethereum. También aprenderá a implementar esta optimización.
+
+### Divulgación completa {#full-disclosure}
+
+Soy un empleado a tiempo completo de [Optimism](https://www.optimism.io/), así que los ejemplos de este artículo se ejecutarán en Optimism. Sin embargo, la técnica explicada aquí debería funcionar igual de bien para otros rollups.
+
+### Terminología {#terminology}
+
+Cuando se discuten rollups, el término 'capa 1' (L1) se utiliza para Mainnet, la red de producción Ethereum. El término 'capa 2' (L2) se utiliza para rollup o cualquier otro sistema que se base en L1 para la seguridad, pero realiza la mayor parte de su procesamiento fuera de cadena.
+
+## ¿Cómo podemos reducir aún más el coste de las transacciones en L2? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
+
+[Los Optimistic rollups](/developers/docs/scaling/optimistic-rollups) tienen que preservar un registro de cada transacción histórica para que cualquiera pueda pasar por ellos y verificar que el estado actual es correcto. La forma más barata de obtener datos en el Ethereum Mainnet es escribirlos como datos de llamada. Esta solución fue elegida por [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) y [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups).
+
+### Coste de transacciones en L2 {#cost-of-l2-transactions}
+
+El coste de las transacciones en L2 se compone de dos componentes:
+
+1. Procesamiento en L2, que generalmente es extremadamente barato
+2. Almacenamiento L1, que está vinculado a los costes de gas de La Red Principal
+
+Mientras escribo esto, en Optimism el costo del gas en L2 es 0.001 [Gwei](/developers/docs/gas/#pre-london). Por otra parte, el coste del gas en L1 es de aproximadamente 40 gwei. [Puedes ver los precios actuales aquí](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m).
+
+Un byte de calldata cuesta 4 de gas (si es cero) o 16 de gas (si es cualquier otro valor). Una de las operaciones más caras en la EVM es escribir en el almacenamiento. El coste máximo de escribir una palabra de 32 bytes para almacenar en L2 es de 22100 gas. Actualmente, esto es 22.1 gwei. Así que si podemos guardar un único byte cero de calldata, podremos escribir unos 200 bytes en el almacenamiento y aún así saldremos adelante.
+
+### El ABI {#the-abi}
+
+La gran mayoría de las transacciones acceden a un contrato desde una cuenta de propiedad externa. La mayoría de los contratos están escritos en Solidity e interpretan su campo de datos por [la interfaz binaria de la aplicación (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+
+Sin embargo, el ABI fue diseñado para L1, donde un byte de datos de llamada cuesta aproximadamente lo mismo que cuatro operaciones aritméticas, y no para L2, donde un byte de datos de llamada cuesta más de mil operaciones aritméticas. Por ejemplo, [aquí está una transacción de transferencia de ERC-20](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998). Los datos de llamada se dividen así:
+
+| Sección | Longitud | Bytes | Bytes consumidos | Gas consumido | Bytes necesarios | Gas necesario |
+| --------------------- | --------:| -----:| ----------------:| -------------:| ----------------:| -------------:|
+| Selector de funciones | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| Ceros | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| Dirección de destino | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| Monto | 32 | 36-67 | 17 | 64 | 15 | 240 |
+| Total | 68 | | | 160 | | 576 |
+
+Explicación:
+
+- **Function selector**: Contrato con menos de 256 funciones, para que podamos distinguirlos con un solo byte. Estos bytes suelen ser distintos de cero y, por lo tanto, [cuesta dieciséis de gas](https://eips.ethereum.org/EIPS/eip-2028).
+- **Ceros**: estos bytes son siempre cero porque una dirección de veinte bytes no requiere una palabra de treinta y dos bytes para contenerla. Bytes que contienen cuatro gas de costo cero ([ver el yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf), Apéndice G, pag. 27, el valor de `G``txdatazero`).
+- **Amount**: Si asumimos que en este contrato `decimals` es dieciocho (el valor normal) y la cantidad máxima de tokens que transferiremos será 1018, obtenemos una cantidad máxima de 1036. 25615 > 1036, entonces quince bytes serán suficientes.
+
+Un desperdicio de 160 en gas en L1 normalmente es insignificante. Una transacción cuesta al menos [21.000 de gas](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), por lo que un 0,8% adicional no importa. Sin embargo, en L2 las cosas son diferentes. Casi todo el costo de la transacción es escrito en L1. Además de los datos de llamada de la transacción, hay 109 bytes de encabezado de transacción (dirección de destino, firma, etc.). Por lo tanto, el costo total es `109*16+576+160=2480`, y estamos desperdiciando alrededor del 6,5 % de eso.
+
+## Reducir costes cuando no controlas el destino {#reducing-costs-when-you-dont-control-the-destination}
+
+Suponiendo que no tienes control sobre el contrato de destino, aún puedes usar una solución similar a [ésta](https://github.com/qbzzt/ethereum.org-20220330-shortABI). Repasemos los archivos relevantes.
+
+### Token.sol {#token-sol}
+
+[Este es el contrato de destino](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol). Es un contrato ERC-20 estándar, con una característica adicional. Esta función `faucet` permite a cualquier usuario obtener algún token para usar. Haría inútil un contrato de producción de ERC-20, pero hace la vida más fácil cuando existe un ERC-20 sólo para facilitar las pruebas.
+
+```solidity
+ /**
+ * @dev Gives the caller 1000 tokens to play with
+ */
+ function faucet() external {
+ _mint(msg.sender, 1000);
+ } // function faucet
+```
+
+[Puede ver un ejemplo de la implementación de este contrato aquí](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol}
+
+[Este es el contrato al que se supone que deben llamar las transacciones con datos de llamada más cortos](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol). Vamos a repasarlo línea por línea.
+
+```solidity
+//SPDX-License-Identifier: Unlicense
+pragma solidity ^0.8.0;
+
+
+import { OrisUselessToken } from "./Token.sol";
+```
+
+Necesitamos la función token para saber cómo llamarla.
+
+```solidity
+contract CalldataInterpreter {
+
+ OrisUselessToken public immutable token;
+```
+
+La dirección del token del que somos proxy.
+
+```solidity
+
+ /**
+ * @dev Specify the token address
+ * @param tokenAddr_ ERC-20 contract address
+ */
+ constructor(
+ address tokenAddr_
+ ) {
+ token = OrisUselessToken(tokenAddr_);
+ } // constructor
+```
+
+La dirección del token es el único parámetro que debemos especificar.
+
+```solidity
+ function calldataVal(uint startByte, uint length)
+ private pure returns (uint) {
+```
+
+Leer el valor desde el calldata.
+
+```solidity
+ uint _retVal;
+
+ require(length < 0x21,
+ "calldataVal length limit is 32 bytes");
+
+ require(length + startByte <= msg.data.length,
+ "calldataVal trying to read beyond calldatasize");
+```
+
+Vamos a cargar una sola palabra de 32 bytes (256 bits) en la memoria y eliminar los bytes que no forman parte del campo que queremos. Este algoritmo no funciona para valores de más de 32 bytes y, por supuesto, no podemos leer más allá del final de los datos de llamada. En L1 puede que sea necesario saltarse estas pruebas para ahorrar gasolina, pero en L2 el gas es extremadamente barato, lo que permite realizar cualquier control de seguridad que podamos imaginar.
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+Podríamos haber copiado los datos de la llamada a `fallback()` (ver más abajo), pero es más fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), el lenguaje ensamblador del EVM.
+
+Aquí usamos [el código de operación CALLDATALOAD](https://www.evm.codes/#35) para leer los bytes `startByte` a `startByte+31` en la pila. En general, la sintaxis de un código de operación en Yul es `(,...)`.
+
+```solidity
+
+ _retVal = _retVal >> (256-length*8);
+```
+
+Sólo los bytes de `length` más significativos forman parte del campo, por lo que [desplazamiento a la derecha](https://en.wikipedia.org/wiki/Logical_shift) para obtener deshacerse de los otros valores. Esto tiene la ventaja adicional de mover el valor a la derecha del campo, por lo que es el valor en sí mismo en lugar del valor multiplicado por 256algo.
+
+```solidity
+
+ return _retVal;
+ }
+
+
+ fallback() external {
+```
+
+Cuando una llamada a un contrato de Solidity no coincide con ninguna de las firmas de función, llama [la función `fallback()`](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) (suponiendo que exista una). En el caso de `CalldataInterpreter`, _cualquier_ llamada llega aquí porque no hay ningún otro `external` o `public` funciones.
+
+```solidity
+ uint _func;
+ _func = calldataVal(0, 1);
+```
+
+
+Lea el primer byte del calldata, que nos dice la función. Hay dos razones por las que una función no estaría disponible aquí:
+
+1. Las funciones que son `pure` o `view` no cambian el estado y no cuestan gas (cuando se llaman fuera de la cadena). No tiene sentido tratar de reducir su costo de gas.
+2. Funciones que dependen de
+
+`msg.sender`.
+El valor de `msg.sender` será la dirección de `CalldataInterpreter`, no la persona que llama.
+
+Desafortunadamente, [mirando las especificaciones ERC-20](https://eips.ethereum.org/EIPS/eip-20), esto deja solo una función, `transfer`. Esto nos deja con sólo dos funciones: `transfer` (porque podemos llamar a `transferFrom`) y `faucet` (porque podemos transferir los tokens a quien haya llamado a nosotros).
+
+
+
+```solidity
+
+ // Call the state changing methods of token using
+ // information from the calldata
+
+ // faucet
+ if (_func == 1) {
+```
+
+
+Una llamada a `faucet()`, que no tiene parámetros.
+
+
+
+```solidity
+ token.faucet();
+ token.transfer(msg.sender,
+ token.balanceOf(address(this)));
+ }
+```
+
+
+Después de llamar a `token.faucet()` obtenemos tokens. Sin embargo, como contrato de proxy, no **necesitamos** tokens. El EOA (externally owned account) o o contrato que nos llama lo hace. Entonces transferimos todos nuestros tokens a quien nos llamó.
+
+
+
+```solidity
+ // transfer (assume we have an allowance for it)
+ if (_func == 2) {
+```
+
+
+La transferencia de tokens requiere dos parámetros: la dirección de destino y la cantidad.
+
+
+
+```solidity
+ token.transferFrom(
+ msg.sender,
+```
+
+
+Solo permitimos que las personas que llaman transfieran tokens de su propiedad
+
+
+
+```solidity
+ address(uint160(calldataVal(1, 20))),
+```
+
+
+La dirección de destinación empieza en byte #1 (byte #0 es la función). Como una dirección, es de 20 bytes de largo.
+
+
+
+```solidity
+ calldataVal(21, 2)
+```
+
+
+Por este contrato en particular asumimos que el número máximo de tokens que alguien querría transferir en 2 bytes (menos que 65536).
+
+
+
+```solidity
+ );
+ }
+```
+
+
+En general, una transferencia toma 35 bytes de datos de llamada:
+
+| Sección | Longitud | Bytes |
+| --------------------- | --------:| -----:|
+| Selector de funciones | 1 | 0 |
+| Dirección de destino | 32 | 1-32 |
+| Monto | 2 | 33-34 |
+
+
+
+
+```solidity
+ } // fallback
+
+} // contract CalldataInterpreter
+```
+
+
+
+
+### prueba.js {#test-js}
+
+[Esta unidad de prueba de JavaScript](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) nos muestra cómo usar este mecanismo (y cómo verificar si funciona correctamente). Voy a asumir que entendiste [chai](https://www.chaijs.com/) y [ethers](https://docs.ethers.io/v5/) y solo voy a explicar específicamente las partes para aplicar un contrato.
+
+
+
+```js
+const { expect } = require("chai");
+
+describe("CalldataInterpreter", function () {
+ it("Should let us use tokens", async function () {
+ const Token = await ethers.getContractFactory("OrisUselessToken")
+ const token = await Token.deploy()
+ await token.deployed()
+ console.log("Token addr:", token.address)
+
+ const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+ const cdi = await Cdi.deploy(token.address)
+ await cdi.deployed()
+ console.log("CalldataInterpreter addr:", cdi.address)
+
+ const signer = await ethers.getSigner()
+```
+
+
+Empezamos implementando ambos contratos.
+
+
+
+```javascript
+ // Get tokens to play with
+ const faucetTx = {
+```
+
+
+No podemos usar las funciones de alto nivel que normalmente usamos (como `token.faucet()`) para crear transacciones, porque no seguimos el ABI. En cambio, tenemos que construir la transacción por nuestra cuenta y después enviarla.
+
+
+
+```javascript
+ to: cdi.address,
+ data: "0x01"
+```
+
+
+Hay dos parámetros necesarios que debemos proporcionar para la transacción:
+
+1. `to`, la dirección de destino. Este es el contrato intérprete de calldata.
+
+2. `data`, el calldata por enviar. En caso de un llamado de grifo, la información es un único byte, `0x01`.
+
+
+
+```javascript
+
+ }
+ await (await signer.sendTransaction(faucetTx)).wait()
+```
+
+
+Llamamos al [método `sendTransaction` del firmante](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) porque ya especificamos el destino (`faucetTx.to`) y necesitamos que la transacción sea firmada.
+
+
+
+```javascript
+// Check the faucet provides the tokens correctly
+expect(await token.balanceOf(signer.address)).to.equal(1000)
+```
+
+
+Aquí verificamos el balance. No es necesario ahorrar gas en las funciones `view`, por lo que las ejecutamos con normalidad.
+
+
+
+```javascript
+// Give the CDI an allowance (approvals cannot be proxied)
+const approveTX = await token.approve(cdi.address, 10000)
+await approveTX.wait()
+expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
+```
+
+
+Otorgue al intérprete de calldata la autorización para realizar transferencias.
+
+
+
+```javascript
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+```
+
+
+Crea una transacción de transferencia. El primer byte es "0x02", seguido por la dirección de destino y finalmente la cantidad (0x0100, que es 256 en decimal).
+
+
+
+```javascript
+ await (await signer.sendTransaction(transferTx)).wait()
+
+ // Check that we have 256 tokens less
+ expect (await token.balanceOf(signer.address)).to.equal(1000-256)
+
+ // And that our destination got them
+ expect (await token.balanceOf(destAddr)).to.equal(256)
+ }) // it
+}) // describe
+```
+
+
+
+
+### Ejemplo {#example}
+
+Si quieres ver esos archivos en acción sin ejecutarlas por ti mismo, sigue estos enlaces:
+
+1. [Despliegue de `OrisUselessToken`](https://kovan-optimistic.etherscan.io/tx/1410744) a [la dirección `0x950c753c0edbde44a74d3793db738a318e9c8ce8`](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+2. [Despliegue de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1410745) a [la dirección `0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55`](https://kovan-optimistic.etherscan.io/address/0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55).
+3. [Llama a `faucet()`](https://kovan-optimistic.etherscan.io/tx/1410746).
+4. [Llama a `OrisUselessToken.approve()`](https://kovan-optimistic.etherscan.io/tx/1410747). Este llamado debe ir directamente al contrato del token porque el procesamiento depende de `msg.sender`.
+
+5. [Llama a `transfer()`](https://kovan-optimistic.etherscan.io/tx/1410748).
+
+
+
+## Reduciendo el costo cuando controlas el contrato de destino {#reducing-the-cost-when-you-do-control-the-destination-contract}
+
+Si controlas el contrato de la dirección de destino puedes crear funciones para omitir las revisiones de `msg.sender` porque confían en el intérprete de calldata. [Aquí puedes ver un ejemplo de cómo esto funciona en la rama de `control-contract`](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract).
+
+Si el contrato sólo ha respondido a transacciones externas, podemos arreglárnoslas teniendo sólo un contrato. Sin embargo, eso puede romper la [capacidad de composición](/developers/docs/smart-contracts/composability/). Es mejor tener un contrato que responda a llamados normales ERC-20 y otro contrato que responda a transacciones con llamados cortos de datos.
+
+
+
+### Token.sol {#token-sol-2}
+
+En este ejemplo podemos modificar `Token.sol`. Esto nos permite tener un número de funciones que sólo el proxy podría llamar. Aquí están las nuevas partes:
+
+
+
+```solidity
+ // The only address allowed to specify the CalldataInterpreter address
+ address owner;
+
+ // The CalldataInterpreter address
+ address proxy = address(0);
+```
+
+
+El contrato ERC-20 necesita conocer la identidad del proxy autorizado. Sin embargo, no podemos establecer esta variable en el constructor, porque aún no conocemos el valor. El contrato es instanciado primero porque el proxy espera la dirección del token en su constructor.
+
+
+
+```solidity
+ /**
+ * @dev Calls the ERC20 constructor.
+ */
+ constructor(
+ ) ERC20("Oris useless token-2", "OUT-2") {
+ owner = msg.sender;
+ }
+```
+
+
+La dirección del creador (llamada `owner`) es almacenada aquí porque esa es la única dirección permitida para establecer el proxy.
+
+
+
+```solidity
+ /**
+ * @dev set the address for the proxy (the CalldataInterpreter).
+ * Can only be called once by the owner
+ */
+ function setProxy(address _proxy) external {
+ require(msg.sender == owner, "Can only be called by owner");
+ require(proxy == address(0), "Proxy is already set");
+
+ proxy = _proxy;
+ } // function setProxy
+```
+
+
+El proxy tiene acceso privilegiado, porque puede omitir las revisiones de seguridad. Para asegurarnos que podemos confier en el proxy solo le permitimos al `owner` llamar esta función y solo una vez. Una vez que `proxy` tiene un valor real (diferente a cero), ese valor no puede cambiar, incluso si el propietario decide volverse pícaro o el mnemotécnico para este es revelado, entonces todavía estamos seguros.
+
+
+
+```solidity
+ /**
+ * @dev Some functions may only be called by the proxy.
+ */
+ modifier onlyProxy {
+```
+
+
+Esta es una [función `modifier`](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), esta modifica la manera en que operan otras funciones.
+
+
+
+```solidity
+ require(msg.sender == proxy);
+```
+
+
+Primero, verificamos que nos ha llamado el proxy y nadie más. Si no, `revert`.
+
+
+
+```solidity
+ _;
+ }
+```
+
+
+En caso de ser así, ejecutamos la función que modificamos.
+
+
+
+```solidity
+ /* Functions that allow the proxy to actually proxy for accounts */
+
+ function transferProxy(address from, address to, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _transfer(from, to, amount);
+ return true;
+ }
+
+ function approveProxy(address from, address spender, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _approve(from, spender, amount);
+ return true;
+ }
+
+ function transferFromProxy(
+ address spender,
+ address from,
+ address to,
+ uint256 amount
+ ) public virtual onlyProxy() returns (bool)
+ {
+ _spendAllowance(from, spender, amount);
+ _transfer(from, to, amount);
+ return true;
+ }
+```
+
+
+Esas son tres operaciones que normalmente requieren que el mensaje proviene directamente de la entidad transfiriendo tokens o aprovando una autorización. Aquí tenemos una versión proxy de estas operaciones que:
+
+1. Es modificada por `onlyProxy()`, por lo que nadie cuenta con la autorización de controlarlo.
+2. Obtiene la dirección que normalmente sería `msg.sender` como un parámetro adicional.
+
+
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol-2}
+
+El intérprete de calldata es casi idéntico al que se encuentra arriba, con la excepción de que las funciones de proxy reciben un parámetro `msg.sender` y no es necesaria una asignación para `transfer`.
+
+
+
+```solidity
+ // transfer (no need for allowance)
+ if (_func == 2) {
+ token.transferProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // approve
+ if (_func == 3) {
+ token.approveProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // transferFrom
+ if (_func == 4) {
+ token.transferFromProxy(
+ msg.sender,
+ address(uint160(calldataVal( 1, 20))),
+ address(uint160(calldataVal(21, 20))),
+ calldataVal(41, 2)
+ );
+ }
+```
+
+
+
+
+### Test.js {#test-js-2}
+
+Hay algunos cambios entre el anterior código de prueba y este.
+
+
+
+```js
+const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+const cdi = await Cdi.deploy(token.address)
+await cdi.deployed()
+await token.setProxy(cdi.address)
+```
+
+
+Necesitamos decirle al contrato ERC-20 en cual proxy debe confiar
+
+
+
+```js
+console.log("CalldataInterpreter addr:", cdi.address)
+
+// Need two signers to verify allowances
+const signers = await ethers.getSigners()
+const signer = signers[0]
+const poorSigner = signers[1]
+```
+
+
+Para revisar `approve()` y `transferFrom()` necesitamos un segundo firmante. Lo llamaremos `poorSigner` porque no obtiene alguno de nuestros tókens (por supuesto, no es necesario contar con ETH).
+
+
+
+```js
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+await (await signer.sendTransaction(transferTx)).wait()
+```
+
+
+Debido a que el contrato ERC-20 confía en el proxy (`cdi`), no necesitamos una asignación para retransmitir transferencias.
+
+
+
+```js
+// approval and transferFrom
+const approveTx = {
+ to: cdi.address,
+ data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
+}
+await (await signer.sendTransaction(approveTx)).wait()
+
+const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206"
+
+const transferFromTx = {
+ to: cdi.address,
+ data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF",
+}
+await (await poorSigner.sendTransaction(transferFromTx)).wait()
+
+// Check the approve / transferFrom combo was done correctly
+expect(await token.balanceOf(destAddr2)).to.equal(255)
+```
+
+
+Prueba las dos nuevas funciones. Toma en cuenta que `transferFromTx` requiere dos direcciones como parámetros: el dador de la asignación y el receptor.
+
+
+
+### Ejemplo {#example-2}
+
+Si quieres ver esos archivos en acción sin ejecutarlas por ti mismo, sigue estos enlaces:
+
+1. [Despliegue de `OrisUselessToken-2`](https://kovan-optimistic.etherscan.io/tx/1475397) en la dirección [`0xb47c1f550d8af70b339970c673bbdb2594011696`](https://kovan-optimistic.etherscan.io/address/0xb47c1f550d8af70b339970c673bbdb2594011696).
+2. [Despliegue de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1475400) en la dirección[`0x0dccfd03e3aaba2f8c4ea4008487fd0380815892`](https://kovan-optimistic.etherscan.io/address/0x0dccfd03e3aaba2f8c4ea4008487fd0380815892).
+3. [Llamar a `setProxy()`](https://kovan-optimistic.etherscan.io/tx/1475402).
+4. [Llamar a `faucet()`](https://kovan-optimistic.etherscan.io/tx/1475409).
+5. [Llamar a `transferProxy()`](https://kovan-optimistic.etherscan.io/tx/1475416).
+6. [Llamar a `approveProxy()`](https://kovan-optimistic.etherscan.io/tx/1475419).
+7. [Llamar a `transferFromProxy()`](https://kovan-optimistic.etherscan.io/tx/1475421). Tome en cuenta que este llamado proviene de una dirección diferente a las anteriores, `poorSigner` en el lugar de `signer`.
+
+
+
+## Conclusión {#conclusion}
+
+[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) y [Arbitrum](https://developer.offchainlabs.com/docs/special_features) están buscando algunas maneras de reducir el tamaño del calldata escrito a L1 y por lo tanto el costo de las transacciones. Sin embargo, como proveedores buscando por soluciones genéricas, nuestras habilidades están limitadas. Como el desarrollador dapp, tienes conocimiento específico de la aplicación, lo que te permite optimizar tu calldata mejor a como lo harías en una solución genérica. Con un poco de suerte, este artículo puede ayudarte a encontrar la solución ideal a tus necesidades.
diff --git a/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
new file mode 100644
index 00000000000..b3d0a2d9b6a
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -0,0 +1,94 @@
+---
+title: Directrices de seguridad de contratos inteligentes
+description: Lista de directrices de seguridad para tener en cuenta al crear una Dapp
+author: "Trailofbits"
+tags:
+ - "solidity"
+ - "contratos inteligentes"
+ - "seguridad"
+skill: intermediate
+lang: es
+published: 2020-09-06
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md
+---
+
+Siga estas recomendaciones generales para crear contratos inteligentes más seguros.
+
+## Directrices de diseño {#design-guidelines}
+
+El diseño del contrato debe ser verse con antelación, antes de escribir cualquier línea de código.
+
+### Documentación y especificaciones {#documentation-and-specifications}
+
+La documentación se puede escribir en diferentes niveles y debe actualizarse al implementar los contratos:
+
+- **Una descripción sencilla del sistema** que indique lo que hacen los contratos y cualquier suposición en la base de código.
+- **Esquema y diagramas arquitectónicos**, incluyendo las interacciones con el contrato y la máquina de estado del sistema. Las [impresoras de Slither](https://github.com/crytic/slither/wiki/Printer-documentation) pueden ayudar a generar estos esquemas.
+- **Documentación de código minuciosa**; el [formato Natspec](https://solidity.readthedocs.io/en/develop/natspec-format.html) puede usarse para Solidity.
+
+### Cálculo en cadena vs. fuera de cadena {#on-chain-vs-off-chain-computation}
+
+- **Mantenga todo el código que se pueda fuera de cadena.** Mantenga una capa en cadena pequeña. Preprocese datos con código fuera de la cadena de tal manera que la verificación en cadena sea simple. ¿Necesito una lista ordenada? Ordene la lista fuera de la cadena y luego solo compruebe su orden dentro de la cadena.
+
+### Capacidad de mejora {#upgradeability}
+
+Analizamos diferentes soluciones de mejora en [nuestra entrada de blog](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/). Tome una decisión deliberada de si admitir la capacidad de mejora o no antes de escribir cualquier código. La decisión influirá en cómo estructurar el código. En general, se recomienda:
+
+- **Favorecer la [migración de contratos](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) sobre la mejora o actualización.** El sistema de migración tiene muchas de las mismas ventajas que el sistema actualizable, sin sus desventajas o inconvenientes.
+- **Utilizar el patrón de separación de datos por sobre delegatecallproxy.** Si el proyecto tiene una clara separación de abstracción, la mejora mediante la separación de datos requerirá solo de unos pocos ajustes. delegatecallproxy requiere conocimientos sobre la EVM y es altamente propenso a errores.
+- **Documentar el procedimiento de migración/actualización antes de la implementación.** Si tiene que reaccionar bajo presión sin ninguna directriz, cometerá errores. Escriba el procedimiento a seguir con antelación. Debe incluir:
+ - Las llamadas que inician los nuevos contratos
+ - Dónde se almacenan las claves y cómo acceder a ellas
+ - Cómo revisar la implementación. Desarrolle y pruebe un script posterior a la implementación.
+
+## Guías de implementación {#implementation-guidelines}
+
+**Busque simplicidad ante todo.** Use simpre la solución más simple que se adapte a su propósito. Cualquier miembro del equipo debería ser capaz de entender la solución.
+
+### Composición de funciones {#function-composition}
+
+La arquitectura del código base debería hacer que el código sea fácil de revisar. Evite opciones arquitectónicas que disminuyan la capacidad de razonar acerca de la corrección.
+
+- **Divida la lógica de su sistema**, ya sea a través de múltiples contratos o agrupando funciones similares (por ejemplo, autenticación, aritmética, ...).
+- **Escriba pequeñas funciones con un propósito claro.** Esto facilitará la revisión y permitirá la prueba de componentes individuales.
+
+### Herencia {#inheritance}
+
+- **Mantenga la herencia manejable.** La herencia debe utilizarse para dividir la lógica; sin embargo, el proyecto debe apuntar a minimizar la profundidad y el ancho del árbol de herencia.
+- **Use la [impresora de herencia](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) de Slither para comprobar la jerarquía de los contratos.** La impresora de herencia ayudará a revisar el tamaño de la jerarquía.
+
+### Eventos {#events}
+
+- **Registre todas las operaciones cruciales.** Los eventos ayudarán a depurar el contrato durante el desarrollo y monitorearlo después de la implementación.
+
+### Evite inconvenientes conocidos {#avoid-known-pitfalls}
+
+- **Tenga presente los problemas de seguridad más comunes.** Hay muchos recursos en línea para aprender sobre problemas comunes, tales como [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture the Ether](https://capturetheether.com/) o [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/).
+- **Tenga en cuenta las secciones de advertencias de la [documentación de Solidity](https://solidity.readthedocs.io/en/latest/).** Las secciones de advertencias lo informarán sobre el comportamiento no obvio del lenguaje.
+
+### Dependencias {#dependencies}
+
+- **Use bibliotecas bien probadas.** Importar código de bibliotecas bien probadas reducirá la probabilidad de escribir código con errores. Si desea escribir un contrato ERC20, use [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
+- **Use un administrador de dependencias; evite copiar y pegar código.** Si confía en una fuente externa, entonces debe mantenerla actualizada con la fuente original.
+
+### Pruebas y verificación {#testing-and-verification}
+
+- **Escriba pruebas unitarias minuciosas.** Un amplio conjunto de pruebas es crucial para crear software de alta calidad.
+- **Escriba verificaciones y propiedades de [Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) y [Manticore](https://github.com/trailofbits/manticore) personalizadas.** Las herramientas automatizadas ayudarán a garantizar la seguridad del contrato. Revise el resto de esta guía para aprender a escribir verificaciones y propiedades eficientes.
+- **Use [crytic.io](https://crytic.io/).** Crytic se integra con Github y proporciona acceso a detectores privados de Slither, además de ejecutar comprobaciones de propiedades personalizadas desde Echidna.
+
+### Solidez {#solidity}
+
+- **Inclínese por Solidity 0.5 por sobre las versiones 0.4 y 0.6.** Solidity 0.5 es más seguro y tiene mejores prácticas incorporadas que la versión 0.4. Solidity 0.6 ha demostrado ser demasiado inestable para la producción y necesita tiempo para madurar.
+- **Use una versión estable para compilar; use la última versión para comprobar si hay advertencias.** Compruebe que el código no tenga problemas reportados con la última versión del compilador. Sin embargo, Solidity tiene un ciclo de liberación rápido y un historial de errores del compilador, así que no se recomienda la última versión para la implementación (ver [recomendación de versión de solc](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33) de Slither).
+- **No use ensamblado en línea.** El ensamblado requiere conocimientos sobre la EVM. No escriba código de EVM si no _domina_ el Yellow Paper.
+
+## Directrices para la implementación {#deployment-guidelines}
+
+Una vez que el contrato haya sido desarrollado e implementado:
+
+- **Monitoree sus contratos.** Mire los registros y esté listo para reaccionar en caso de que un contrato o una billetera se vean comprometidos.
+- **Agregue la información de su contacto a [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts).** Esta lista ayuda a terceros a contactarlo si se descubre una falla de seguridad.
+- **Proteja las billeteras de usuarios privilegiados.** Siga las [mejores prácticas](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) si almacena llaves en billeteras de hardware.
+- **Tenga un plan de respuesta a incidentes.** Considere que los contratos inteligentes pueden verse vulnerados. Incluso si los contratos están libres de fallas, un atacante puede tomar el control de las claves del propietario del contrato.
diff --git a/public/content/translations/es/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/public/content/translations/es/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
new file mode 100644
index 00000000000..b86c07ad283
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
@@ -0,0 +1,194 @@
+---
+title: "Configuración de Solidity y Truffle de integración continua"
+description: Cómo configurar Travis o Circle CI para pruebas de Truffle junto con conplementos útiles
+author: Markus Waas
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "pruebas"
+ - "truffle"
+ - "ganache"
+skill: intermediate
+published: 2020-06-05
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/continuous-integration
+---
+
+La integración continua (CI) con Truffle es genial para el desarrollo una vez que se implementa un conjunto básico de pruebas. Le permite realizar pruebas muy largas, asegurarse de que todas las pruebas pasen antes de combinar una [solicitud de pull](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) y llevar un seguimiento de varias estadísticas utilizando herramientas adicionales.
+
+Utilizaremos el [Truffle Metacoin Box](https://www.trufflesuite.com/boxes/metacoin) para configurar nuestra integración continua. Puede elegir Travis CI o Circle CI.
+
+## Configurar Travis CI {#setting-up-travis-ci}
+
+Añadir [Travis CI](https://travis-ci.org/) es sencillo. Solo necesitará añadir un archivo de configuración `.travis.yml` a la carpeta raíz del proyecto:
+
+```yml
+language: node_js
+node_js:
+ - 10
+
+cache: npm
+
+before_script:
+ - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
+
+script:
+ - npm test
+```
+
+Lo estamos manteniendo simple por ahora y sólo estamos ejecutando el script de prueba que ejecuta las pruebas individuales de Truffle. Pero tenemos un problema, no habrá una blockchain disponible en la máquina Travis CI. Una solución simple para esto es `npm install ganache-cli` y simplemente ejecutarlo antes de la prueba. Puedes hacer esto al agregar un guión basj con la línea npx `ganache-cli > 7dev/null` y antes de `llamada de prueba truffle npx`. El [ejemplo completo de bash script](https://github.com/gorgos/Truffle-CI-Example/blob/master/scripts/run_tests.sh).
+
+## Configurando Circle CI {#setting-up-circle-ci}
+
+[CircleCI](https://circleci.com/) requiere un archivo config más grande. El comando adicional [`npm ci`](https://docs.npmjs.com/cli/ci.html) es automáticante hecho en Travis. Instala las dependencias más rápido y más seguras que `npm install` lo hace. Otra vez usamos el mismo guión de la versión Travis para ejecutar ganache-cli antes de las pruebas.
+
+```yml
+version: 2
+
+aliases:
+ - &defaults
+ docker:
+ - image: circleci/node:10
+
+ - &cache_key_node_modules
+ key: v1-node_modules-{{ checksum "package-lock.json" }}
+
+jobs:
+ dependencies:
+ <<: *defaults
+ steps:
+ - checkout
+ - restore_cache:
+ <<: *cache_key_node_modules
+ - run:
+ name: Install npm dependencies
+ command: |
+ if [ ! -d node_modules ]; then
+ npm ci
+ fi
+ - persist_to_workspace:
+ root: .
+ paths:
+ - node_modules
+ - build
+ - save_cache:
+ paths:
+ - node_modules
+ <<: *cache_key_node_modules
+
+ test:
+ <<: *defaults
+ steps:
+ - checkout
+ - attach_workspace:
+ at: .
+ - run:
+ name: Unit tests
+ command: npm test
+
+workflows:
+ version: 2
+ everything:
+ jobs:
+ - dependencies
+ - test:
+ requires:
+ - dependencies
+```
+
+## Añadiendo el plugin de eth-gas-reporter {#adding-the-eth-gas-reporter-plugin}
+
+El puglin de eth-gas-reporter es muy útil para llevar el rastro de los costos de las funciones de gas de tu contrato inteligente. Tenerlo en tu CI seguirá siendo útil para mostrar diferencias cuando se agreguen la solicitud de pull.
+
+### Paso 1: Instalar el plugin de eth-gas-reporter y comprobantes de código {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks}
+
+```bash
+npm install --save-dev eth-gas-reporter
+npm install --save-dev @codechecks/client
+```
+
+### Paso 2: Agrega el plugin a la configuración de moca adentro de tu truffle-config.js {#step-2-add-the-plugin-to-the-mocha-settings-inside-your-truffle-configjs}
+
+[Ver opciones](https://github.com/cgewecke/eth-gas-reporter#options)
+
+```js
+module.exports = {
+ networks: { ... },
+ mocha: {
+ reporter: 'eth-gas-reporter',
+ reporterOptions: {
+ excludeContracts: ['Migrations']
+ }
+ }
+};
+```
+
+### Paso 3: Agrega comprobantes de código.yml para el directorio de raíz de tu proyecto {#step-3-add-a-codechecksyml-to-your-projects-root-directory}
+
+```yml
+checks:
+ - name: eth-gas-reporter/codechecks
+```
+
+### Paso 4: Ejecuta el comprobante de código después del comando de prueba {#step-4-run-codechecks-after-the-test-command}
+
+```bash
+- npm test
+- npx codechecks
+```
+
+### Paso 5: Crear una cuenta de comprobación de código {#step-5-create-a-codechecks-account}
+
+- Crea una cuenta con [Codechecks](http://codechecks.io/).
+- Agrega el repositorio de GitHub.
+- Copia el secreto y agrega el `CC_SECRET=COPIED SECRET` a tu CI (vea aquí para [Travis](https://docs.travis-ci.com/user/environment-variables/), aquí para [CircleCi](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project)).
+- Ahora adelante y crea una solicitud de pull.
+
+Eso es todo. Ahora tú encontrarás un buen reporte acerca de los cambios en los costos del gas de tú solicitud de pull.
+
+![Ejemplo de los reportes de gas](./gas-reports.png)
+
+## Agregando el plugin solidity-coverage {#adding-the-solidity-coverage-plugin}
+
+Con el plugin solidity-coverage puedes chequear cuanto de tu rutas de código están cubiertas por tús pruebas. Agregar esto a tu CI lo hace muy conveniente para usar una vez que se coloca.
+
+### Paso 1: Crea un proyecto de metacoin e instala herramientas de cobertura {#step-1-create-a-metacoin-project-and-install-coverage-tools}
+
+```bash
+npm install --save-dev truffle coveralls solidity-coverage
+```
+
+### Paso 2: Agregar solidity-coverage a la matriz de plugins en truffle-config.js {#step-2-add-solidity-coverage-to-the-plugins-array-in-truffle-configjs}
+
+```js
+module.exports = {
+ networks: {...},
+ plugins: ["solidity-coverage"]
+}
+```
+
+### Paso 3: Agrega los comandos de cobertura al .travis.yml o Circle CI config.yml {#step-3-add-the-coverage-commands-to-the-travisyml-or-circle-ci-configyml}
+
+```bash
+- npx truffle run coverage
+- cat coverage/lcov.info | npx coveralls
+```
+
+Cobertura de solidity comienza su propio ganache-cli, así que no tenemos que preocuparnos de esto. Sin embargo, no remplaces el comando de prueba normal, la cobertura de ganache-cli funciona diferente y es por lo tanto no reemplazable para ejecutar pruebas unitarias regulares.
+
+### Step 4: Agrega el repositorio a los coveralls {#step-4-add-repository-to-coveralls}
+
+- Crea una cuenta con [Coveralls](https://coveralls.io/).
+- Agrega el repositorio de GitHub.
+- Ahora adelante y crea una solicitud de pull.
+
+![Ejemplo de coverall](./coverall.png)
+
+## Otras ideas {#further-ideas}
+
+- [MythX](https://mythx.io/): Con MythX puedes automáticamente analizar la seguridad de tu contrato inteligente. Entonces tiene mucho sentido [agregar esto a tu CI](https://blog.mythx.io/howto/mythx-and-continuous-integration-part-1-circleci/).
+- [Linting](https://wikipedia.org/wiki/Lint_%28software%29): Un buen código puede ser aplicado hasta cierto grado con herramientas de linting. [Eslint](https://eslint.org/) trabaja genial para JavaScript, es [fácil de configurar](https://eslint.org/docs/user-guide/getting-started), mientras que [Solhint](https://protofire.github.io/solhint/) puede ser usadao por solidity.
+- Pruebas largas: Algunas veces es posible que desees agregar pruebas extremas, ej., pruebas a contratos con cientos de usuarios. Esto toma mucho tiempo. En lugar de ejecutar esos en cada ejecución de prueba, agregalos al CI.
+
+Ahí lo tienes. Integración continua es una estrategía muy útil para su desarrollo. Puedes chequear un ejemplo completo en [Truffle-CI-Example](https://github.com/gorgos/Truffle-CI-Example). Solo asegurate de remover Circle-CI o Travis, ¡uno es suficiente!
diff --git a/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
new file mode 100644
index 00000000000..46a88da1df9
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
@@ -0,0 +1,1138 @@
+---
+title: Prueba de tokens ERC-20 con Waffle
+description: Aprende cómo probar smart contracts en Solidity y utiliza comparadores de smart contracts con Waffle.
+author: Vladislav Starostenko
+tags:
+ - "waffle"
+ - "contratos inteligentes"
+ - "solidity"
+ - "pruebas"
+ - "erc-20"
+skill: intermediate
+lang: es
+published: 2020-10-16
+---
+
+En este tutorial aprenderás como:
+
+- Escribir pruebas para smart contracts con Waffle
+- Usar algunos de los matchers populares para probar smart contracts con Waffle
+
+Supuestos:
+
+- sabes cómo usar una terminal,
+- puedes crear un proyecto nuevo en `JavaScript`,
+- has escrito líneas de código en `Solidity`,
+- has escrito pruebas en `JavaScript`,
+- has usado `yarn` o `npm`, o el instalador de paquetes de JavaScript.
+
+Si una de las suposiciones previas no encajan, o no planeas reproducir el código en este artículo, puede ser que no tengas ningún inconveniente leyendo este articulo.
+
+## Un vistazo a Waffle {#a-few-words-about-waffle}
+
+[Waffle](https://getwaffle.io) es la biblioteca más avanzada para escribir y probar smart contracts.
+
+Funciona con ethers-js, un [API de JavaScript](/developers/docs/apis/javascript/).
+
+¡Puedes leer más detalles en la [documentación de Waffle](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)!
+
+## Tutorial rápido {#the-quick-tutorial}
+
+Lo primero es lo primero, crea un nuevo proyecto `JavaScript` o `TypeScript` ( Utiliza `TS`, pero si utilizas `JS` no hay problema) :
+
+Algo como esto:
+
+
+package.json
+
+ {
+ "name": "tutorial",
+ "version": "1.0.0",
+ "main": "index.js",
+ "license": "MIT",
+ "scripts": {
+ "test": "export NODE_ENV=test && mocha",
+ "lint": "eslint '{src,test}/**/*.ts'",
+ "lint:fix": "eslint --fix '{src,test}/**/*.ts'",
+ "build": "waffle"
+ },
+ "devDependencies": {
+ "@types/mocha": "^5.2.7",
+ "@typescript-eslint/eslint-plugin": "^2.30.0",
+ "@typescript-eslint/parser": "^2.30.0",
+ "eslint": "^6.8.0",
+ "eslint-plugin-import": "^2.20.2",
+ "ethers": "^5.0.17",
+ "mocha": "^7.1.2",
+ "ts-node": "^8.9.1",
+ "typescript": "^3.8.3"
+ }
+ }
+
+
+
+
+tsconfig.json
+
+ {
+ "compilerOptions": {
+ "declaration": true,
+ "esModuleInterop": true,
+ "lib": [
+ "ES2018"
+ ],
+ "module": "CommonJS",
+ "moduleResolution": "node",
+ "outDir": "dist",
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "target": "ES2018"
+ }
+ }
+
+
+
+
+.gitignore
+
+ node_modules
+ build
+
+
+
+
+.eslintrc.js
+
+ module.exports = {
+ "env": {
+ "es6": true
+ },
+ "extends": [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:import/typescript"
+ ],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "project": "./tsconfig.json",
+ "sourceType": "module"
+ },
+ "rules": {
+ "@typescript-eslint/camelcase": "off",
+ "@typescript-eslint/explicit-function-return-type": "off",
+ "@typescript-eslint/explicit-member-accessibility": [
+ "error",
+ {
+ "accessibility": "no-public",
+ "overrides": {
+ "parameterProperties": "off"
+ }
+ }
+ ],
+ "@typescript-eslint/indent": [
+ "error",
+ 2,
+ {
+ "ArrayExpression": 1,
+ "CallExpression": {
+ "arguments": 1
+ },
+ "FunctionDeclaration": {
+ "body": 1,
+ "parameters": 1
+ },
+ "FunctionExpression": {
+ "body": 1,
+ "parameters": 1
+ },
+ "ImportDeclaration": 1,
+ "MemberExpression": 1,
+ "ObjectExpression": 1,
+ "SwitchCase": 1,
+ "VariableDeclarator": 1,
+ "flatTernaryExpressions": false,
+ "ignoreComments": false,
+ "outerIIFEBody": 1
+ }
+ ],
+ "@typescript-eslint/interface-name-prefix": "off",
+ "@typescript-eslint/member-delimiter-style": [
+ "error",
+ {
+ "multiline": {
+ "delimiter": "semi",
+ "requireLast": true
+ },
+ "singleline": {
+ "delimiter": "semi",
+ "requireLast": false
+ }
+ }
+ ],
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-parameter-properties": "off",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ "args": "none",
+ "ignoreRestSiblings": true,
+ "vars": "all"
+ }
+ ],
+ "@typescript-eslint/no-use-before-define": "off",
+ "@typescript-eslint/no-useless-constructor": "error",
+ "@typescript-eslint/no-var-requires": "warn",
+ "accessor-pairs": "error",
+ "array-bracket-spacing": [
+ "error",
+ "never"
+ ],
+ "arrow-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "block-spacing": [
+ "error",
+ "always"
+ ],
+ "brace-style": [
+ "error",
+ "1tbs",
+ {
+ "allowSingleLine": true
+ }
+ ],
+ "camelcase": "off",
+ "comma-dangle": [
+ "error",
+ {
+ "arrays": "never",
+ "exports": "never",
+ "functions": "never",
+ "imports": "never",
+ "objects": "never"
+ }
+ ],
+ "comma-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "comma-style": [
+ "error",
+ "last"
+ ],
+ "computed-property-spacing": [
+ "error",
+ "never"
+ ],
+ "constructor-super": "error",
+ "curly": [
+ "error",
+ "multi-line"
+ ],
+ "dot-location": [
+ "error",
+ "property"
+ ],
+ "eol-last": "error",
+ "eqeqeq": [
+ "error",
+ "always",
+ {
+ "null": "ignore"
+ }
+ ],
+ "func-call-spacing": [
+ "error",
+ "never"
+ ],
+ "generator-star-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "handle-callback-err": [
+ "error",
+ "^(err|error)$"
+ ],
+ "import/default": "off",
+ "import/named": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": false
+ }
+ ],
+ "import/no-unresolved": "off",
+ "indent": "off",
+ "key-spacing": [
+ "error",
+ {
+ "afterColon": true,
+ "beforeColon": false
+ }
+ ],
+ "keyword-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "lines-between-class-members": [
+ "error",
+ "always",
+ {
+ "exceptAfterSingleLine": true
+ }
+ ],
+ "max-len": [
+ "error",
+ {
+ "code": 120
+ }
+ ],
+ "new-cap": [
+ "error",
+ {
+ "capIsNew": false,
+ "newIsCap": true
+ }
+ ],
+ "new-parens": "error",
+ "no-array-constructor": "error",
+ "no-async-promise-executor": "error",
+ "no-caller": "error",
+ "no-class-assign": "error",
+ "no-compare-neg-zero": "error",
+ "no-cond-assign": "error",
+ "no-const-assign": "error",
+ "no-constant-condition": [
+ "error",
+ {
+ "checkLoops": false
+ }
+ ],
+ "no-control-regex": "error",
+ "no-debugger": "error",
+ "no-delete-var": "error",
+ "no-dupe-args": "error",
+ "no-dupe-keys": "error",
+ "no-duplicate-case": "error",
+ "no-empty-character-class": "error",
+ "no-empty-pattern": "error",
+ "no-eval": "error",
+ "no-ex-assign": "error",
+ "no-extend-native": "error",
+ "no-extra-bind": "error",
+ "no-extra-boolean-cast": "error",
+ "no-extra-parens": [
+ "error",
+ "functions"
+ ],
+ "no-fallthrough": "error",
+ "no-floating-decimal": "error",
+ "no-func-assign": "error",
+ "no-global-assign": "error",
+ "no-implied-eval": "error",
+ "no-inner-declarations": [
+ "error",
+ "functions"
+ ],
+ "no-invalid-regexp": "error",
+ "no-irregular-whitespace": "error",
+ "no-iterator": "error",
+ "no-label-var": "error",
+ "no-labels": [
+ "error",
+ {
+ "allowLoop": false,
+ "allowSwitch": false
+ }
+ ],
+ "no-lone-blocks": "error",
+ "no-misleading-character-class": "error",
+ "no-mixed-operators": [
+ "error",
+ {
+ "allowSamePrecedence": true,
+ "groups": [
+ [
+ "==",
+ "!=",
+ "===",
+ "!==",
+ ">",
+ ">=",
+ "<",
+ "<="
+ ],
+ [
+ "&&",
+ "||"
+ ],
+ [
+ "in",
+ "instanceof"
+ ]
+ ]
+ }
+ ],
+ "no-mixed-spaces-and-tabs": "error",
+ "no-multi-spaces": "error",
+ "no-multi-str": "error",
+ "no-multiple-empty-lines": [
+ "error",
+ {
+ "max": 1,
+ "maxEOF": 0
+ }
+ ],
+ "no-negated-in-lhs": "error",
+ "no-new": "error",
+ "no-new-func": "error",
+ "no-new-object": "error",
+ "no-new-require": "error",
+ "no-new-symbol": "error",
+ "no-new-wrappers": "error",
+ "no-obj-calls": "error",
+ "no-octal": "error",
+ "no-octal-escape": "error",
+ "no-path-concat": "error",
+ "no-proto": "error",
+ "no-prototype-builtins": "error",
+ "no-redeclare": [
+ "error",
+ {
+ "builtinGlobals": false
+ }
+ ],
+ "no-regex-spaces": "error",
+ "no-return-assign": [
+ "error",
+ "except-parens"
+ ],
+ "no-return-await": "error",
+ "no-self-assign": "error",
+ "no-self-compare": "error",
+ "no-sequences": "error",
+ "no-shadow-restricted-names": "error",
+ "no-sparse-arrays": "error",
+ "no-tabs": "error",
+ "no-template-curly-in-string": "error",
+ "no-this-before-super": "error",
+ "no-throw-literal": "error",
+ "no-trailing-spaces": "error",
+ "no-unexpected-multiline": "error",
+ "no-unmodified-loop-condition": "error",
+ "no-unneeded-ternary": [
+ "error",
+ {
+ "defaultAssignment": false
+ }
+ ],
+ "no-unreachable": "error",
+ "no-unsafe-finally": "error",
+ "no-unsafe-negation": "error",
+ "no-use-before-define": [
+ "error",
+ {
+ "classes": false,
+ "functions": false,
+ "variables": false
+ }
+ ],
+ "no-useless-call": "error",
+ "no-useless-catch": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-escape": "error",
+ "no-useless-rename": "error",
+ "no-useless-return": "error",
+ "no-whitespace-before-property": "error",
+ "no-with": "error",
+ "object-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "object-property-newline": [
+ "error",
+ {
+ "allowMultiplePropertiesPerLine": true
+ }
+ ],
+ "one-var": [
+ "error",
+ {
+ "initialized": "never"
+ }
+ ],
+ "operator-linebreak": [
+ "error",
+ "after",
+ {
+ "overrides": {
+ ":": "before",
+ "?": "before"
+ }
+ }
+ ],
+ "padded-blocks": [
+ "error",
+ {
+ "blocks": "never",
+ "classes": "never",
+ "switches": "never"
+ }
+ ],
+ "prefer-const": [
+ "error",
+ {
+ "destructuring": "all"
+ }
+ ],
+ "prefer-promise-reject-errors": "error",
+ "quote-props": [
+ "error",
+ "as-needed"
+ ],
+ "quotes": [
+ "error",
+ "single"
+ ],
+ "rest-spread-spacing": [
+ "error",
+ "never"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "semi-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "space-before-blocks": [
+ "error",
+ "always"
+ ],
+ "space-before-function-paren": [
+ "error",
+ {
+ "anonymous": "always",
+ "named": "never",
+ "asyncArrow": "always"
+ }
+ ],
+ "space-in-parens": [
+ "error",
+ "never"
+ ],
+ "space-infix-ops": "error",
+ "space-unary-ops": [
+ "error",
+ {
+ "nonwords": false,
+ "words": true
+ }
+ ],
+ "spaced-comment": [
+ "error",
+ "always",
+ {
+ "block": {
+ "balanced": true,
+ "exceptions": [
+ "*"
+ ],
+ "markers": [
+ "*package",
+ "!",
+ ",",
+ ":",
+ "::",
+ "flow-include"
+ ]
+ },
+ "line": {
+ "markers": [
+ "*package",
+ "!",
+ "/",
+ ",",
+ "="
+ ]
+ }
+ }
+ ],
+ "symbol-description": "error",
+ "template-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "template-tag-spacing": [
+ "error",
+ "never"
+ ],
+ "unicode-bom": [
+ "error",
+ "never"
+ ],
+ "use-isnan": "error",
+ "valid-typeof": [
+ "error",
+ {
+ "requireStringLiterals": true
+ }
+ ],
+ "wrap-iife": [
+ "error",
+ "any",
+ {
+ "functionPrototypeMethods": true
+ }
+ ],
+ "yield-star-spacing": [
+ "error",
+ "both"
+ ],
+ "yoda": [
+ "error",
+ "never"
+ ]
+ },
+ "overrides": [
+ {
+ "files": [
+ "test/**/*.ts"
+ ],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-non-null-assertion": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "no-unused-expressions": "off",
+ "prefer-promise-reject-errors": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": true
+ }
+ ]
+ }
+ }
+ ]
+ }
+
+
+
+## Paso #1: Instala Waffle en tu proyecto [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) {#step-1-install-waffle-in-your-project}
+
+Para comenzar, instala `ethereum-waffle`. En este tutorial usaré `yarn`, para instalar `ethereum-waffle`:
+
+```bash
+ yarn add --dev ethereum-waffle
+```
+
+## Paso #2: Escribe un contrato inteligente [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract) {#step-2-write-a-smart-contract}
+
+En este tutorial, usaré [ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/ded2b0a55c9c13731963ab7b85a70c8e73504bab/contracts/token/ERC20/ERC20.sol) de [OpenZeppelin](https://openzeppelin.com).
+
+Por lo tanto, añade `OpenZeppelin` instalándolo con `yarn`:
+
+```bash
+ yarn add @openzeppelin/contracts -D
+```
+
+Luego crea el contrato `BasicToken.sol` en el directorio `src`:
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+// Example class - a mock class using delivering from ERC20
+contract BasicToken is ERC20 {
+ constructor(uint256 initialBalance) ERC20("Basic", "BSC") public {
+ _mint(msg.sender, initialBalance);
+ }
+}
+
+```
+
+## Paso #3: Compila tu contrato inteligente [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) {#step-3-compile-your-smart-contract}
+
+Para compilar tu contrato inteligente, agrega la siguiente entrada en el `package.json` de tu proyecto:
+
+```json
+{
+ "scripts": {
+ "build": "waffle"
+ }
+}
+```
+
+También, agrega el archivo `waffle.json` en el directorio principal de tu proyecto.
+
+Un ejemplo de la configuración de `waffle.json`:
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./src",
+ "outputDirectory": "./build"
+}
+```
+
+Puedes leer más acerca de la configuración de Waffle [here](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration).
+
+Luego ejecuta `yarn build` para compilar tu contrato inteligente.
+
+Deberías ver que Waffle ha compilado tu contrato y ha ubicado la salida JSON resultante dentro del directorio `build`.
+
+
+BasicToken.json
+
+ {
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "initialBalance",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "addedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "increaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "evm": {
+ "bytecode": {
+ "linkReferences": {},
+ "object": "60806040523480156200001157600080fd5b506040516200153938038062001539833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600581526020017f42617369630000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42534300000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000389565b508060049080519060200190620000e592919062000389565b506012600560006101000a81548160ff021916908360ff16021790555050506200011633826200011d60201b60201c565b5062000438565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001d560008383620002fb60201b60201c565b620001f1816002546200030060201b62000f2d1790919060201c565b6002819055506200024f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200030060201b62000f2d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200037f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003cc57805160ff1916838001178555620003fd565b82800160010185558215620003fd579182015b82811115620003fc578251825591602001919060010190620003df565b5b5090506200040c919062000410565b5090565b6200043591905b808211156200043157600081600090555060010162000417565b5090565b90565b6110f180620004486000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1539 CODESIZE SUB DUP1 PUSH3 0x1539 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4261736963000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4253430000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xCC SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xE5 SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH3 0x116 CALLER DUP3 PUSH3 0x11D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x438 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x1C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1D5 PUSH1 0x0 DUP4 DUP4 PUSH3 0x2FB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1F1 DUP2 PUSH1 0x2 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH3 0x24F DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x37F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x3CC JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3FD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3FD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3FC JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3DF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x40C SWAP2 SWAP1 PUSH3 0x410 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x435 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x431 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x417 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10F1 DUP1 PUSH3 0x448 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xFAB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122081C8 BLOCKHASH CREATE DUP8 0xCE 0xF9 0x2F 0xEC 0xCB SUB STATICCALL 0xDC PUSH8 0x8B2708C331896EC5 NUMBER 0x2B 0x5D 0x4C PUSH8 0x5F27B6D3E664736F PUSH13 0x63430006020033000000000000 ",
+ "sourceMap": "142:152:5:-:0;;;177:115;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:115:5;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;177:115:5;;;;;;;;;;;;;;;;2013:141:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:4;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;252:33:5::1;258:10;270:14;252:5;;;:33;;:::i;:::-;177:115:::0;142:152;;7835:370:2;7937:1;7918:21;;:7;:21;;;;7910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:49;8015:1;8019:7;8028:6;7986:20;;;:49;;:::i;:::-;8061:24;8078:6;8061:12;;:16;;;;;;:24;;;;:::i;:::-;8046:12;:39;;;;8116:30;8139:6;8116:9;:18;8126:7;8116:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8095:9;:18;8105:7;8095:18;;;;;;;;;;;;;;;:51;;;;8182:7;8161:37;;8178:1;8161:37;;;8191:6;8161:37;;;;;;;;;;;;;;;;;;7835:370;;:::o;10695:92::-;;;;:::o;874:176:1:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;142:152:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
+ },
+ "deployedBytecode": {
+ "linkReferences": {},
+ "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 P
+
+
+
+## Paso #4: Compila tu contrato inteligente [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
+
+### Paso #4.1: Instala Waffle en tu proyecto [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
+
+Después de haber creado con éxito un Contrato Inteligente, podemos probarlo. Utilizaremos `Waffle` para hacerlo.
+
+Las pruebas en `Waffle` se escriben usando `Mocha` junto con `Chai`. Podemos usar un entorno de prueba diferente, pero los emparejadores `Waffle` solo funcionan con `Chai`.
+
+Por lo tanto, necesitamos añadir `Chai` a nuestras dependencias :
+
+```bash
+ yarn add --dev mocha chai
+```
+
+### Paso #4.2: Escribe un contrato inteligente de prueba [Link](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-2}
+
+Para escribir nuestra prueba necesitamos crear el archivo `BasicToken.test.ts` en nuestro directorio de pruebas.
+
+```ts
+import { expect, use } from "chai"
+import { Contract } from "ethers"
+import { deployContract, MockProvider, solidity } from "ethereum-waffle"
+import BasicToken from "../build/BasicToken.json"
+
+use(solidity)
+
+describe("BasicToken", () => {
+ const [wallet, walletTo] = new MockProvider().getWallets()
+ let token: Contract
+
+ beforeEach(async () => {
+ token = await deployContract(wallet, BasicToken, [1000])
+ })
+})
+```
+
+Por lo tanto, utilizamos el método `deployContract` de `Waffle`para desplegar nuestro token. Como argumentos, debemos pasar `wallet`, el archivo json compilado de nuestro contrato y el balance por defecto.
+
+`Waffle` también nos permite crear una `wallet`, lo que hace muy sencillo desplegar un contrato.
+
+Puede leer más sobre `monedero` [aquí](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets) y puede leer más sobre la función de despliegue [aquí](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts).
+
+Vamos a escribir una prueba simple para comprobar el balance de nuestra cartera. Desde que enviamos el valor 1000 durante el despliegue de nuestro contrato, el saldo de nuestra cartera debe ser de 1000 tokens, que podemos comprobar en la primera prueba.
+
+```ts
+it("Assigns initial balance", async () => {
+ expect(await token.balanceOf(wallet.address)).to.equal(1000)
+})
+```
+
+Para ejecutar la prueba usa `yarn test`
+
+### Paso #4.3 Emisión de eventos [Enlace al documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
+
+En este tutorial, quiero mostrarte los emparejadores más útiles de `Waffle`, así que comencemos con el primero.
+
+`Waffle` nos permite probar qué eventos se emiten.
+
+En este tutorial, probaré el método `transfer` de nuestro contrato.
+
+En esta prueba, haré una transferencia de una cartera a otra y comprobaré si el evento de `transfer` fue llamado.
+
+```ts
+it("Transfer emits event", async () => {
+ await expect(token.transfer(walletTo.address, 7))
+ .to.emit(token, "Transfer")
+ .withArgs(wallet.address, walletTo.address, 7)
+})
+```
+
+Además, una gran ventaja de este emparejador es que podemos comprobar con qué argumentos se llamó este evento añadiendo `withArgs` a nuestra prueba.
+
+¡Esto nos permitirá estar seguros de que nuestra función se llama correctamente!
+
+### Paso #4.4 Revertir con mensaje [Enlace al documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
+
+`Waffle` nos permite probar qué eventos se emiten.
+
+Utilizaremos `revertedWith` matcher en nuestra prueba para comprobarlo.
+
+Podemos escribir una prueba en la que realizaremos una transferencia por una cantidad mayor que la que tenemos en nuestra cartera. Y luego comprobaremos si la transacción se ha revertido con el mensaje exacto!
+
+```ts
+it("Can not transfer above the amount", async () => {
+ await expect(token.transfer(walletTo.address, 1007)).to.be.revertedWith(
+ "VM Exception while processing transaction: revert ERC20: transfer amount exceeds balance"
+ )
+})
+```
+
+### Paso #4.5 Cambiar token-balance [Enlace al documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance) {#step-4-5}
+
+`¡Waffle` nos permite comprobar si hay cambios en los balances de las carteras!
+
+Podemos usar el comparador `changeTokenBalance` para verificar el cambio de balance o el `changeTokenBalances` para una cuenta múltiple.
+
+El emparejador puede aceptar `números`, `cadenas` y `números` como un cambio de balance. mientras que la dirección debe especificarse como una cartera o un contrato.
+
+Vamos a escribir la siguiente prueba:
+
+```ts
+it("Send transaction changes receiver balance", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalance(walletTo, 200)
+})
+```
+
+Lo anterior es una prueba para una única cartera.
+
+Y el siguiente para múltiples carteras:
+
+```ts
+it("Send transaction changes sender and receiver balances", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalances([wallet, walletTo], [-200, 200])
+})
+```
+
+Se espera que la transacción se pase como callback (necesitamos comprobar el saldo antes de la llamada) o como una respuesta de la transacción.
+
+## Felicidades {#congratulations}
+
+**¡Felicidades! Lo has conseguido a través de mi tutorial. Has dado tu primer gran paso para probar contratos inteligentes con Waffle.**
+
+**Código de este tutorial que puedes encontrar [aquí](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website).**
+
+**Más documentación sobre `Waffle` disponible [aquí](https://getwaffle.io).**
diff --git a/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
new file mode 100644
index 00000000000..b5f98195750
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
@@ -0,0 +1,313 @@
+---
+title: "The Graph: Corrección de consultas de datos web3"
+description: La cadena de bloques es como una base de datos pero sin SQL. Todos los datos están ahí, pero no hay forma de acceder a ellos. Déjeme mostrarle cómo solucionar este problema con The Graph y GraphQL.
+author: Markus Waas
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "consultar"
+ - "The Graph"
+ - "crear-eth-app"
+ - "reaccionar"
+skill: intermediate
+published: 2020-09-06
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/thegraph
+---
+
+Esta vez ahondaremos un poco más en The Graph, que esencialmente se convirtió en la pila estándar para el desarrollo de dApps el pasado año. Veamos primero cómo haríamos las cosas de la manera tradicional...
+
+## Sin The Graph... {#without-the-graph}
+
+Vamos con un ejemplo simple para fines ilustrativos. A todos nos gustan los juegos, así que imagine un juego simple en el que los usuarios hacen apuestas:
+
+```solidity
+pragma solidity 0.7.1;
+
+contract Game {
+ uint256 totalGamesPlayerWon = 0;
+ uint256 totalGamesPlayerLost = 0;
+ event BetPlaced(address player, uint256 value, bool hasWon);
+
+ function placeBet() external payable {
+ bool hasWon = evaluateBetForPlayer(msg.sender);
+
+ if (hasWon) {
+ (bool success, ) = msg.sender.call{ value: msg.value * 2 }('');
+ require(success, "Transfer failed");
+ totalGamesPlayerWon++;
+ } else {
+ totalGamesPlayerLost++;
+ }
+
+ emit BetPlaced(msg.sender, msg.value, hasWon);
+ }
+}
+```
+
+Digamos en en nuestra dApp queremos mostrar las apuestas totales, las victorias/derrotas totales y también actualizarlo si alguien juega de nuevo. El enfoque sería este:
+
+1. Obtener `totalGamesPlayerWon`.
+2. Obtener `totalGamesPlayerLost`.
+3. Suscribirse a eventos `BetPlaced`.
+
+Podemos escuchar el evento [en Web3](https://docs.web3js.org/api/web3/class/Contract#events) como se muestra a la derecha, pero esto requiere manejar algunos casos.
+
+```solidity
+GameContract.events.BetPlaced({
+ fromBlock: 0
+}, function(error, event) { console.log(event); })
+.on('data', function(event) {
+ // event fired
+})
+.on('changed', function(event) {
+ // event was removed again
+})
+.on('error', function(error, receipt) {
+ // tx rejected
+});
+```
+
+Ahora bien, esto sigue estando bien para nuestro sencillo ejemplo. Pero digamos que ahora queremos mostrar las cantidades de partidas ganadas o perdidas solo para el jugador actual. Bueno, no tenemos suerte; sería mejor implementar un nuevo contrato que almacene esos valores y permita recuperarlos. Ahora imagine un contrato inteligente y una dapp mucho más complicados; las cosas se pueden descontrolar rápidamente.
+
+![Uno no consulta simplemente](./one-does-not-simply-query.jpg)
+
+Se puede ver que esto no es lo más adecuado:
+
+- No funciona para contratos ya implementados.
+- Genera costos de gas extra para almacenar dichos valores.
+- Se requiere otra invocación para recuperar los datos para un nodo de Ethereum.
+
+![Eso no es lo suficientemente bueno](./not-good-enough.jpg)
+
+Veamos ahora una mejor solución.
+
+## Déjeme presentarle GraphQL {#let-me-introduce-to-you-graphql}
+
+Primero hablemos de GraphQL, que fue originalmente desarrollado e implementado por Facobook. Puede que esté familiarizado con el tradicional modelo de API tipo Rest. Ahora, imagine que pudiera escribir la consulta para los datos que le interesen exactamente:
+
+![API de GraphQL vs. API tipo REST](./graphql.jpg)
+
+
+
+Las dos imágenes representan en términos generales la esencia de GraphQL. Con la consulta de la derecha podemos definir exactamente qué datos queremos, así que ahí recibimos todo en una única solicitud y nada más que exactamente lo que necesitamos. Un servidor de GraphQL maneja la obtención de todos los datos requeridos, por lo que es increíblemente fácil de usar desde el lado del consumidor del frontend. [Esta es una buena explicación](https://www.apollographql.com/blog/graphql-explained-5844742f195e/) de cómo exactamente el servidor gestiona una consulta si usted está interesado.
+
+Ahora, con ese conocimiento, vayamos finalmente al campo de la cadena de bloques y The Graph.
+
+## ¿Qué es The Graph? {#what-is-the-graph}
+
+Una cadena de bloques es una base de datos descentralizada, pero, a diferencia de lo habitual, no tenemos un lenguaje de consulta para esta base de datos. Las soluciones para recuperar datos son complejas o completamente imposibles. The Graph es un protocolo descentralizado destinado a indexar y consultar datos de la cadena de bloques. Y puede que haya adivinado: es usar GraphQL como lenguaje de consulta.
+
+![The Graph](./thegraph.png)
+
+Los ejemplos son siempre la mejor manera de entender algo, así que utilicemos The Graph para nuestro ejemplo de GameContract.
+
+## Cómo crear un subgraph {#how-to-create-a-subgraph}
+
+La definición de cómo indexar datos se denomina subgraph. Requiere tres componentes:
+
+1. Manifiesto (`subgraph.yaml`)
+2. Esquema (`schema.graphql`)
+3. Mapeo (`mapping.ts`)
+
+### Manifiesto (`subgraph.yaml`) {#manifest}
+
+El manifiesto es nuestro archivo de configuración y define:
+
+- qué contratos inteligentes se deben indexar (dirección, red, ABI...)
+- a qué eventos se debe escuchar
+- otros aspectos a escuchar, como llamadas a funciones o bloques
+- las funciones de mapeo invocadas (ver `mapping.ts` abajo)
+
+Puede definir múltiples contratos y manejadores (handlers) aquí. Una configuración típica tendría una carpeta de subgraphs dentro del proyecto Truffle/Hardhat con su propio repositorio. Luego puede referenciar fácilmente el ABI.
+
+Por razones de conveniencia también puede querer usar una herramienta de plantillas como mustache. Luego creará un `subgraph.template.yaml` e insertará las direcciones con base en las últimas implementaciones. Para una configuración de ejemplo más avanzada, vea por ejemplo el [repositorio de subgraphs de Aave](https://github.com/aave/aave-protocol/tree/master/thegraph).
+
+La documentación completa se puede obtener [aquí](https://thegraph.com/docs/en/developing/creating-a-subgraph/#the-subgraph-manifest).
+
+```yaml
+specVersion: 0.0.1
+description: Placing Bets on Ethereum
+repository: - GitHub link -
+schema:
+ file: ./schema.graphql
+dataSources:
+ - kind: ethereum/contract
+ name: GameContract
+ network: mainnet
+ source:
+ address: '0x2E6454...cf77eC'
+ abi: GameContract
+ startBlock: 6175244
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.1
+ language: wasm/assemblyscript
+ entities:
+ - GameContract
+ abis:
+ - name: GameContract
+ file: ../build/contracts/GameContract.json
+ eventHandlers:
+ - event: PlacedBet(address,uint256,bool)
+ handler: handleNewBet
+ file: ./src/mapping.ts
+```
+
+### Esquema (`schema.graphql`) {#schema}
+
+El esquema es la definición de datos de GraphQL. Le permitirá definir qué entidades existen y sus tipos. Los tipos admitidos de The Graph son:
+
+- Bytes
+- ID
+- String
+- Boolean
+- Int
+- BigInt
+- BigDecimal
+
+También puede utilizar entidades como tipo para definir relaciones. En nuestro ejemplo definimos una relación de uno a muchos del jugador a las apuestas. El ! significa que el valor no puede estar vacío. La documentación completa se puede consultar [aquí](https://thegraph.com/docs/en/developing/creating-a-subgraph/#the-subgraph-manifest).
+
+```graphql
+type Bet @entity {
+ id: ID!
+ player: Player!
+ playerHasWon: Boolean!
+ time: Int!
+}
+
+type Player @entity {
+ id: ID!
+ totalPlayedCount: Int
+ hasWonCount: Int
+ hasLostCount: Int
+ bets: [Bet]!
+}
+```
+
+### Mapeo (`mapping.ts`) {#mapping}
+
+El archivo de mapeo de The Graph define nuestras funciones que transforman los eventos entrantes en entidades. Está escrito en AssemblblyScript, un subconjunto de Typescript. Esto significa que puede ser compilado en WASM (WebAssembly) para una ejecución más eficiente y portátil del mapeo.
+
+Tendrá que definir cada función mencionada en el archivo `subgraph.yaml`, así que en nuestro caso necesitamos solo una: `handleNewBet`. Primero tratamos de cargar la entidad Player desde la dirección del remitente como id. Si no existe, crearemos una nueva entidad y la llenaremos con valores iniciales.
+
+Luego creamos una nueva entidad Bet. El id para esto será `event.transaction.hash.toHex() + "-" + event.logIndex.toString()`, garantizando siempre un valor único. Usar solo el hash no es suficiente, ya que alguien podría estar llamando a la función placeBet varias veces en una transacción a través de un contrato inteligente.
+
+Por último, podemos actualizar la entidad Player con todos los datos. Los arrays no pueden empujarse directamente, sino que necesitan ser actualizados como se muestra aquí. Utilizamos el id para referenciar la apuesta. `.save()` es necesario al final para almacenar una entidad.
+
+La documentación completa puede obtenerse aquí: https://thegraph.com/docs/en/developing/creating-a-subgraph/#writing-mappings. También puede añadir salida de registro al archivo de mapeo; consulte [aquí](https://thegraph.com/docs/assemblyscript-api#api-reference).
+
+```typescript
+import { Bet, Player } from "../generated/schema"
+import { PlacedBet } from "../generated/GameContract/GameContract"
+
+export function handleNewBet(event: PlacedBet): void {
+ let player = Player.load(event.transaction.from.toHex())
+
+ if (player == null) {
+ // create if doesn't exist yet
+ player = new Player(event.transaction.from.toHex())
+ player.bets = new Array(0)
+ player.totalPlayedCount = 0
+ player.hasWonCount = 0
+ player.hasLostCount = 0
+ }
+
+ let bet = new Bet(
+ event.transaction.hash.toHex() + "-" + event.logIndex.toString()
+ )
+ bet.player = player.id
+ bet.playerHasWon = event.params.hasWon
+ bet.time = event.block.timestamp
+ bet.save()
+
+ player.totalPlayedCount++
+ if (event.params.hasWon) {
+ player.hasWonCount++
+ } else {
+ player.hasLostCount++
+ }
+
+ // update array like this
+ let bets = player.bets
+ bets.push(bet.id)
+ player.bets = bets
+
+ player.save()
+}
+```
+
+## Uso en el frontend {#using-it-in-the-frontend}
+
+Usando algo como Apollo Boost, puede integrar de forma sencilla The Graph en su dapp de React (o Apollo-Vue). Especialmente al usar hooks de React y Apollo, la obtención de datos es muy simple: solo requiere escribir una única consulta de GraphQl en su componente. Una configuración típica podría ser la siguiente:
+
+```javascript
+// See all subgraphs: https://thegraph.com/explorer/
+const client = new ApolloClient({
+ uri: "{{ subgraphUrl }}",
+})
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById("root")
+)
+```
+
+Y ahora podemos escribir por ejemplo una consulta como esta. Esto nos va a traer como resultado
+
+- cuántas veces ganó el usuario actual
+- cuántas veces perdió el usuario actual
+- una lista de marcas de tiempo con todas sus apuestas anteriores
+
+Todo en una sola solicitud al servidor de GraphQL.
+
+```javascript
+const myGraphQlQuery = gql`
+ players(where: { id: $currentUser }) {
+ totalPlayedCount
+ hasWonCount
+ hasLostCount
+ bets {
+ time
+ }
+ }
+`
+
+const { loading, error, data } = useQuery(myGraphQlQuery)
+
+React.useEffect(() => {
+ if (!loading && !error && data) {
+ console.log({ data })
+ }
+}, [loading, error, data])
+```
+
+![Magia](./magic.jpg)
+
+Pero nos estaría faltando una última pieza del rompecabezas y es el servidor. Puede ejecutarlo usted mismo o usar el servicio alojado.
+
+## El servidor de The Graph {#the-graph-server}
+
+### Graph Explorer, el servicio alojado {#graph-explorer-the-hosted-service}
+
+La forma más fácil es utilizar el servicio alojado. Siga las instrucciones que figuran [aquí](https://thegraph.com/docs/en/deploying/deploying-a-subgraph-to-hosted/) para implementar un subgraph. Para muchos proyectos puede encontrar subgraphs existentes en el [explorador](https://thegraph.com/explorer/).
+
+![The Graph Explorer](./thegraph-explorer.png)
+
+### Correr tu propio nodo {#running-your-own-node}
+
+Alternativemente, puede ejecutar su propio nodo. Consulte la documentación [aquí](https://github.com/graphprotocol/graph-node#quick-start). Una razón para hacer esto podría ser usar una red no admitida por el servicio alojado. Las redes actualmente admitidas se [pueden encontrar aquí](https://thegraph.com/docs/en/developing/supported-networks/).
+
+## El futuro descentralizado {#the-decentralized-future}
+
+GraphQL también soporta streams para eventos entrantes nuevos. Estos son admitidos en The Graph a través de [substreams](https://thegraph.com/docs/en/substreams/) que actualmente están en versión beta abierta.
+
+En [2021](https://thegraph.com/blog/mainnet-migration/), The Graph inició su transición a una red descentralizada de indexación. Puede leer más sobre la arquitectura de esta red descentralizada de indexación [aquí](https://thegraph.com/docs/en/network/explorer/).
+
+Dos aspectos clave son:
+
+1. Los usuarios pagan a los indexadores por las consultas.
+2. Los indexadores apuestan Graph Tokens (GRT).
diff --git a/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
new file mode 100644
index 00000000000..09255d44e09
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
@@ -0,0 +1,84 @@
+---
+title: Lista de verificación de integración de tokens
+description: Una lista de verificación de cosas a considerar cuando interactuamos con tokens
+author: "Trailofbits"
+lang: es
+tags:
+ - "solidity"
+ - "contratos Inteligentes"
+ - "seguridades"
+ - "tókenes"
+skill: intermediate
+published: 2020-08-13
+source: Desarrollando smart contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
+---
+
+Siga esta lista de verificación al interactuar con tokens arbitrarios. Asegúrese de comprender los riesgos asociados con cada elemento y de justificar cualquier excepción a estas reglas.
+
+Por conveniencia, todas las Slither [utilities](https://github.com/crytic/slither#tools) pueden correr directamente en una dirección de Token, como:
+
+[Usa el tutorial de Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+
+```bash
+slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken
+```
+
+Para continuar siguiendo esta lista, tienes que tener esta producción desde Slither para token:
+
+```bash
+- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
+- slither [target] --print human-summary
+- slither [target] --print contract-summary
+- slither-prop . --contract ContractName # requires configuration, and use of Echidna and Manticore
+```
+
+## Consideraciones generales {#general-considerations}
+
+- **El contrato tiene una revisión de seguridad.** Evite interactuar con contratos que carezcan de revisión de seguridad. Chequee el largo del asesoramiento (alias "nivel de esfuerzo"), la reputación de la firma de seguridad, y el número y la gravedad de los hallazgos.
+- **Usted ha contactado a los desarrolladores.**Usted tiene que alertar al equipo de un incidente. Busque los contactos apropiados en [ blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts).
+- **Tienen una lista de correo de seguridad para anuncios importantes.** El equipo debe avisar a los usuarios (¡como tú!) cuando cuestiones críticas son encontradas o cuando suceda una actualización.
+
+## Conformidad de ERC {#erc-conformity}
+
+Slither incluye una utilidad, [slither-check-erc](https://github.com/crytic/slither/wiki/ERC-Conformance), esa revisión busca la conformancia de una token en base a los estándares ERC. Utilice slither-check-erc para revisar eso:
+
+- ** Transfer y transferFrom devuelven un booleano.** Varios tokens no devuelven un booleano en estas funciones. Como resultado, sus llamadas en el contrato pueden fallar.
+- **Las funciones de nombre, decimales y signos aparecen si se utilizan.** Estas funciones son opcionales en el standard ERC20 y podrían no estar presentes.
+- **Los decimales dan como resultado un uint8.** Varios tokens incorrectos devuelven un uint256. Si este es el caso, asegúrese de que el valor devuelto es inferior a 255.
+- **El token mitiga lo conocido [condición de carrera ERC20](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729).** El estándar tiene una condición conocida como carrera ERC20 que debe ser mitigada para prevenir que atacantes se roben tokens.
+- **El token no es un token ERC777 y no tiene ninguna llamada de función externa en transferencia y transferFrom.** Las llamadas externas en las funciones de transferencia pueden llevar a reentradas.
+
+Slither incluye una utilidad, [slither-prop](https://github.com/crytic/slither/wiki/Property-generation), que genera pruebas individuales y propiedades de seguridad que pueden descubrir muchas fallas comunes de ERC. Usa slither-prop para revisar que:
+
+- **El contrato ha superado todas las pruebas individuales y las características de seguridad de slither-prop.** Ejecuta las pruebas individuales generadas, después revisa las características con [Echidna](https://github.com/crytic/echidna) y [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html).
+
+Por último, hay ciertas características que son difíciles de identificar automáticamente. Revisión de estas condiciones a mano:
+
+- **Transfer y transferFrom no deben cobrar.** Los token deflacionarios pueden llevar a un comportamiento inesperado.
+- **Se tiene en cuenta el interés potencial obtenido con el token.** Algunos tokens distribuyen interés a los portadores de token. Este interés podría quedar atrapado en el contrato si no se tiene en cuenta.
+
+## Composición de contrato {#contract-composition}
+
+- **El contrato evita complejidad innecesaria.** El token debe ser un contrato simple; un token con código complejo requiere un estándar mas alto de revisión. Usa [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary) de Slither para identificar código complejo.
+- **El contrato utiliza SafeMath.** Los contratos que no utilicen SafeMath requieren un estándar mas alto de revisión. Inspecciona el contrato a mano para el uso de SafeMath.
+- **El contrato solo tiene pocas funciones no relacionada con tokens.** Las funciones no relacionadas a tokens aumentan la posibilidad de algún problema en el contrato. Usa [contract-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) de Slither para examinar mas ampliamente el código usado en un contrato.
+- **Un token posee solo una dirección.** Los tokens con puntos de entrada múltiples para actualizaciones del balance pueden romper la contaduría interna basada en la dirección (ej: `balances[token_address][msg.sender]` podría no reflejar el balance actual).
+
+## Privilegios de propietario {#owner-privileges}
+
+- **El token no se puede actualizar.** Los contratos actualizables pueden cambiar sus reglas con el tiempo. Usa [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) de Slither para determinar si el contrato es actualizable.
+- **El dueño tiene capacidades limitadas de mintear información.** Dueños con intenciones maliciosas o comprometidas pueden abusar de su capacidad de mintear. Usa [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) de Slither para revisar la capacidad de minteo y considera revisar manualmente el código.
+- **El Token no puede ser pausado.** Los dueños con intenciones maliciosas o comprometidas pueden atrapar contratos que dependen de tokens pausables. Identifique el código pausable a mano.
+- **El dueño no puede poner en la lista negra al contrato.** Los dueños maliciosos o comprometidos pueden atrapar contratos que dependen de tokens en la lista negra. Identifique características de lista negra a mano.
+- **El equipo detrás del token es reconocido y puede ser responsabilizado por abuso.** Los contratos con equipos de desarrollo anónimo, o que residan en refugios legales requieren un estándar mas alto de revisión.
+
+## Escasez de tokens {#token-scarcity}
+
+Las revisiones de problemas de escasez de tokens requieren una revisión manual. Comprueba si hay estas condiciones:
+
+- **Ningún usuario posee la mayor parte del suministro.** Si unos pocos usuarios poseen la mayoría de los tokens, pueden influir en las operaciones en función de la repartición del token.
+- **El suministro total es suficiente.** Los tokens con un suministro total bajo pueden ser manipuladas fácilmente.
+- **Los tokens se encuentran en más que algunos pocos exchanges.** Si todos los tokens están en un solo exchange, la vulneración del exchange puede comprometer el contrato asociado al token.
+- **Los usuarios comprenden los riesgos asociados a fondos grandes o préstamos flash.** Los contratos que dependen del saldo de token deben tomar en consideración a atacantes con grandes fondos o ataques a través de préstamos flash.
+- **El token no permite minteos flash**. Los minteos flash pueden provocar oscilaciones sustanciales en el saldo y el suministro total, que requieren un control estricto y exhaustivo del desbordamiento en el funcionamiento del token.
diff --git a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 1e106070236..c4b971b77ea 100644
--- a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -1,12 +1,11 @@
---
title: Transferencias y aprobación de tókenes ERC-20 desde un contrato inteligente en Solidity
-description: Cómo usar un contrato inteligente para interactuar con un token a través del lenguaje Solidity.
+description: Cómo utilizar un contrato inteligente para interactuar con un token usando el lenguaje Solidity
author: "jdourlens"
tags:
- - "smart contracts"
- - "tókenes"
+ - "contratos inteligentes"
+ - "tokens"
- "solidity"
- - "Empezar"
- "erc-20"
skill: intermediate
lang: es
@@ -18,7 +17,7 @@ address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
En el tutorial anterior, se estudió [la anatomía de un token ERC-20 en Solidity](/developers/tutorials/understand-the-erc-20-token-smart-contract/) sobre la cadena de bloques de Ethereum. En este artículo veremos cómo usar un contrato inteligente para la interacción con un token, usando el lenguaje de programación Solidity.
-Para el contrato inteligente, se crea un intercambio descentralizado de prueba en donde un usuario puede operar con Ethereum en el recién implementado [token ERC](/developers/docs/standards/tokens/erc-20/).
+Para este contrato inteligente, crearemos un exchange descentralizado realmente falso donde un usuario pueda intercambiar ether por nuestro recientemente implementado [token ERC-20](/developers/docs/standards/tokens/erc-20/).
Para este tutorial usaremos el código que escribimos en el tutorial anterior como punto de partida. El DEX representará una instancia del contrato en su constructor y perfeccionará las operaciones de:
@@ -95,7 +94,7 @@ contract ERC20Basic is IERC20 {
require(numTokens <= allowed[owner][msg.sender]);
balances[owner] = balances[owner]-numTokens;
- allowed[owner][msg.sender] = allowed[owner][msg.sender]+numTokens;
+ allowed[owner][msg.sender] = allowed[owner][msg.sender]-numTokens;
balances[buyer] = balances[buyer]+numTokens;
emit Transfer(owner, buyer, numTokens);
return true;
@@ -197,7 +196,7 @@ function sell(uint256 amount) public {
}
```
-Si todo funciona correctamente, se deberían ver 2 eventos ( `Transfer` [transferencia] y `Sold` [vendido]) en la transacción y el saldo de tókenes y balance de Ethereum actualizados.
+Si todo funciona, debería ver 2 eventos (un `Transfer` y `Sold`) en la transacción, además de su saldo de tokens y saldo de ether actualizados.
![Dos eventos en la transacción: transferencia y vender](./transfer-and-sold-events.png)
@@ -277,7 +276,7 @@ contract ERC20Basic is IERC20 {
require(numTokens <= allowed[owner][msg.sender]);
balances[owner] = balances[owner]-numTokens;
- allowed[owner][msg.sender] = allowed[owner][msg.sender]+numTokens;
+ allowed[owner][msg.sender] = allowed[owner][msg.sender]-numTokens;
balances[buyer] = balances[buyer]+numTokens;
emit Transfer(owner, buyer, numTokens);
return true;
diff --git a/public/content/translations/es/developers/tutorials/using-websockets/index.md b/public/content/translations/es/developers/tutorials/using-websockets/index.md
new file mode 100644
index 00000000000..dd19b2701ec
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/using-websockets/index.md
@@ -0,0 +1,249 @@
+---
+title: Uso de WebSockets
+description: Guía de uso de WebSocets y Alchemy para hacer solicitudes JSON-RPC y suscribirse a eventos.
+author: "Elan Halpern"
+lang: es
+tags:
+ - "Alchemy"
+ - "websockets"
+ - "consulta"
+ - "JavaScript"
+skill: beginner
+source: Documentos de Alquimia
+sourceUrl: https://docs.alchemyapi.io/guides/using-websockets
+published: 2020-12-01
+---
+
+Esta es una guía de nivel básico sobre el uso de WebSockets y Alchemy para hacer solicitudes a la cadena de bloques de Ethereum.
+
+## WebSockets Vs. HTTP {#websockets-vs-http}
+
+A diferencia de HTTP, con WebSockets no necesita hacer solicitudes continuamente cuando quiere información específica. Los WebSockets mantienen una red de conexión para usted (si se hace correctamente) y escuchan para hacer cambios.
+
+Como con cualquier conexión de red, no debe asumir que un WebSocket permanecerá abierto para siempre sin interrupción, pero el manejo correcto de las conexiones caídas y la reconexión a mano puede ser complicado. Otra desventaja de los WebSockets es que no se obtienen códigos de estado HTTP en la respuesta, sino solo el mensaje de error.
+
+[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) automáticamente agrega manejo para fallas y reintentos de WebSocket sin necesidad de configuración.
+
+## Pruébelo {#try-it-out}
+
+La forma más fácil de probar WebSockets es instalar una herramienta de línea de comando para hacer soliciudes WebSocket como [wscat](https://github.com/websockets/wscat). Usando Wsact, puede enviar solicitudes así:
+
+_Nota: Si tiene una cuenta de Alchemy, puede reemplazar `demo` con su propia clave de API. [Regístrese para obtener una cuenta gratuita de Alchemy aquí](https://auth.alchemyapi.io/signup)._
+
+```
+wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
+
+> {"jsonrpc": "2.0", "id": 0, "method": "eth_gasPrice"}
+
+< {"jsonrpc": "2.0", "result": "0xb2d05e00", "id": 0}
+
+```
+
+## Cómo usar WebSockets {#how-to-use-websockets}
+
+Para comenzar, abra un WebSocket usando la URL de WebSocket para su aplicación. Puede encontrar la URL de WebSocket de su aplicación abriendo la página de la aplicación en [su panel de control](https://dashboard.alchemyapi.io/) y haciendo clic en "View Key". Tenga en cuenta que la URL de su aplicación para WebSockets es diferente de su URL para solicitudes HTTP, pero ambas se pueden ver haciendo clic en "View Key".
+
+![Dónde puede encontrar la URL de WebSocket en su panel de control de Alchemy](./use-websockets.gif)
+
+Puede usar cualquiera de las API listadas en la [Referencia de API de Alchemy](https://docs.alchemyapi.io/documentation/alchemy-api-reference/) a través de WebSocket. Para ello, utilice la misma carga útil que se enviaría como el cuerpo de una solicitud HTTP POST, pero en su lugar envíe esa carga a través del WebSocket.
+
+## Con Web3 {#with-web3}
+
+Traspasar a WebSockts mientras se usa una biblioteca cliente como Web3 es simple. Simplemente pase la URL de WebSocket en lugar de la URL HTTP cuando instancie a su cliente Web3. Por ejemplo:
+
+```js
+const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key")
+
+web3.eth.getBlockNumber().then(console.log) // -> 7946893
+```
+
+## Subscripción API {#subscription-api}
+
+Cuando se conecta a través de un WebSocket, puede utilizar dos métodos adicionales: `eth_subscribe` y `eth_unsubscribe`. Estos métodos le permitirán escuchar eventos particulares y será notificado inmediatamente.
+
+### `eth_subscribe` {#eth-subscribe}
+
+Crea una nueva subscripción para eventos específicos. [ Más información acerca de `eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe).
+
+#### Parámetros {#parameters}
+
+1. Tipos de subscripción
+2. Parámetros opcionales
+
+El primer argumento específica el tipo de evento el cuál se escucha. El segundo argumento contiene opciones adicionales las cuales dependen del primer argumento. Las diferentes de tipos de descripciones, sus opciones y sus cargas útiles se describen a continuación.
+
+#### Regresa {#returns}
+
+El ID de subscripción: Este ID se adjuntará a cualquier evento, y también será usado para cancelar la subscripción usando `eth_unsubscribe`.
+
+#### Eventos de suscripción {#subscription-events}
+
+Mientras la subscripción este activa, recibirá eventos los cuales son objetos en los siguientes campos:
+
+- `jsonrpc`: Always "2.0"
+- `method`: Always "eth_subscription"
+- `parámetro`: Un objeto con los siguientes campos:
+ - `subscription`: El ID de suscripción devuelto por la llamada `eth_subscription` que creó esta suscripción.
+ - `result`: Un objeto el cuál varia dependiendo del tipo de subscripción.
+
+#### Tipos de subceipciones {#subscription-types}
+
+1. `alchemy_newFullPendingTransactions`
+
+Devuelve la información de transacción para todas las transacciones que se agregan al estado pendiente. Este tipo de suscripción se suscribe a transacciones pendientes, similares a la llamada web 3 estándar `web3.eth. ubscribe("pendingTransactions")`, pero difiere en que emite _información completa de la transacción_ en lugar de solo el hash de la transacción.
+
+Ejemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["alchemy_newFullPendingTransactions"]}
+
+< {"id":1,"result":"0x9a52eeddc2b289f985c0e23a7d8427c8","jsonrpc":"2.0"}
+< {
+ "jsonrpc":"2.0",
+ "method":"eth_subscription",
+ "params":{
+ "result":{
+ "blockHash":null,
+ "blockNumber":null,
+ "from":"0xa36452fc31f6f482ad823cd1cf5515177d57667f",
+ "gas":"0x1adb0",
+ "gasPrice":"0x7735c4d40",
+ "hash":"0x50bff0736c713458c92dd1848d12f3354149be1363123dae35e94e0f2a9d56bf",
+"input":"0xa9059cbb0000000000000000000000000d0707963952f2fba59dd06f2b425ace40b492fe0000000000000000000000000000000000000000000015b1111266cfca100000",
+ "nonce":"0x0",
+ "to":"0xea38eaa3c86c8f9b751533ba2e562deb9acded40",
+ "transactionIndex":null,
+ "value":"0x0",
+ "v":"0x26",
+ "r":"0x195c2c1ed126088e12d290aa93541677d3e3b1d10f137e11f86b1b9227f01e3b",
+ "s":"0x60fc4edbf1527832a2a36dbc1e63ed6193a6eee654472fbebbf88ef1750b5344"},
+ "subscription":"0x9a52eeddc2b289f985c0e23a7d8427c8"
+ }
+ }
+
+```
+
+2. `nuevas Cabezas`
+
+Emite un evento en cualquier momento en que se añade un nuevo encabezado a la cadena, incluyendo durante una reorganización en cadena.
+
+Cuando se produce una reorganización en cadena, esta suscripción emitirá un evento que contiene todas las nuevas cabeceras de la nueva cadena. En particular, esto significa que puede ver múltiples cabeceras emitidas con la misma altura, y cuando esto suceda, la cabecera posterior debe ser tomada como la correcta después de una reorganización.
+
+Ejemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]}
+
+< {"jsonrpc":"2.0","id":2,"result":"0x9ce59a13059e417087c02d3236a0b1cc"}
+< {
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "result": {
+ "extraData": "0xd983010305844765746887676f312e342e328777696e646f7773",
+ "gasLimit": "0x47e7c4",
+ "gasUsed": "0x38658",
+ "logsBloom":
+"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x084149998194cc5f",
+ "number": "0x1348c9",
+ "parentHash": "0x7736fab79e05dc611604d22470dadad26f56fe494421b5b333de816ce1f25701",
+ "receiptRoot": "0x2fab35823ad00c7bb388595cb46652fe7886e00660a01e867824d3dceb1c8d36",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "stateRoot": "0xb3346685172db67de536d8765c43c31009d0eb3bd9c501c9be3229203f15f378",
+ "timestamp": "0x56ffeff8",
+ "transactionsRoot": "0x0167ffa60e3ebc0b080cdb95f7c0087dd6c0e61413140e39d94d3468d7c9689f"
+ },
+ "subscription": "0x9ce59a13059e417087c02d3236a0b1cc"
+ }
+}
+
+```
+
+3. `registros`
+
+Emite registros los cuales son parte de bloques recién agregados que coinciden con los filtros de criterio.
+
+Cuando se produce una reorganización en cadena, los registros que son parte de los bloques de la cadena antigua se emitirán de nuevo con la propiedad `eliminada` establecida en `verdadero`. Además, se emiten registros que son parte de los bloques de la nueva cadena, lo que significa que es posible ver registros para la misma transacción varias veces en el caso de una reorganización.
+
+Parámetros
+
+1. Un objeto con los siguientes campos:
+ - `dirección` (opcional): una cadena que representa una dirección o una formación de dichas cadenas.
+ - Sólo se emitirán registros creados a partir de una de estas direcciones.
+ - `topics`: una formación de especificadores de temas.
+ - Cada especificador de tema es `null`, una cadena que representa un tema, o una formación de cadenas.
+ - Cada posición en la formación que no es `null` restringe los registros emitidos a solo aquellos que tienen uno de los temas dados en esa posición.
+
+Algunos ejemplos de especificaciones de temas:
+
+- `[]`: Cualquier tema permitido.
+- `[A]`: A en una primera posición (y cualquier cosa después).
+- `[null, B]`: Cualquier cosa en la primera posición y B en la segunda posición (y cualquier cosa después).
+- `[A, B]`: A en la primera posición y B en segunda posición (y cualquier cosa después).
+- `[[A, B], [A, B]]`: (A o B) en primer posición y (A o B) en segunda posición ( y cualquier cosa después).
+
+Ejemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
+
+< {"jsonrpc":"2.0","id":2,"result":"0x4a8a4c0517381924f9838102c5a4dcb7"}
+< {
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x4a8a4c0517381924f9838102c5a4dcb7",
+ "result": {
+ "address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd",
+ "blockHash": "0x61cdb2a09ab99abf791d474f20c2ea89bf8de2923a2d42bb49944c8c993cbf04",
+ "blockNumber": "0x29e87",
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003",
+ "logIndex":"0x0",
+ "topics":["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"],
+ "transactionHash": "0xe044554a0a55067caafd07f8020ab9f2af60bdfe337e395ecd84b4877a3d1ab4",
+ "transactionIndex": "0x0"
+ }
+ }
+}
+
+```
+
+### `eth_unsubscribe` {#eth-unsubscribe}
+
+Cancela una suscripción existente para que no se envíen más eventos.
+
+Parámetros
+
+1. ID de suscripción, como se devuelve previamente desde una llamada a `eth_subscribe`.
+
+Regresa
+
+`verdadero` si una suscripción fue cancelada con éxito, o `falso` si no existe ninguna suscripción con el ID dado.
+
+Ejemplo:
+
+**Solicitud**
+
+```
+curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
+-X POST
+-H "Content-Type: application/json"
+-d '{"id": 1, "method": "eth_unsubscribe", "params": ["0x9cef478923ff08bf67fde6c64013158d"]}'
+
+
+```
+
+**Resultado**
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+---
+
+[Regístrese con Alchemy](https://auth.alchemyapi.io/signup) gratis, vea [nuestra documentación](https://docs.alchemyapi.io/), y para las últimas noticias, síganos en [Twitter](https://twitter.com/AlchemyPlatform).
diff --git a/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
new file mode 100644
index 00000000000..e02dbacd6dd
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -0,0 +1,298 @@
+---
+title: "Waffle: Llamadas dinámicas de simulación y prueba de contratos"
+description: Tutorial avanzado de Waffle para el uso de simulaciones dinámicas y pruebas de llamadas a contratos
+author: "Daniel Izdebski"
+tags:
+ - "waffle"
+ - "contratos inteligentes"
+ - "solidity"
+ - "pruebas"
+ - "simular"
+skill: intermediate
+lang: es
+published: 2020-11-14
+---
+
+## ¿De qué trata este tutorial? {#what-is-this-tutorial-about}
+
+En este tutorial aprenderás como:
+
+- utilizar simulación dinámica
+- comprobar las interacciones entre contratos inteligentes
+
+Supuestos:
+
+- ya sabes como escribir un contrato inteligente simple en `Solidity`
+- ya sabes utilizar `JavaScript` y `TypeScript`
+- ya has hecho otrod tutoriales de `Waffle` o sabes algunas cosas sobre él
+
+## Simulación dinámica {#dynamic-mocking}
+
+¿Por qué es útil la simulación dinámica? Bueno, porque nos permite escribir pruebas unitarias en lugar de pruebas de integración. ¿Y eso, qué significa? Significa que no tenemos que preocuparnos por las dependencias de los contratos inteligentes, por lo que podremos probarlos de forma aislada. Déjame mostrarte cómo puedes hacerlo.
+
+### **1. Proyecto** {#1-project}
+
+Antes de comenzar debemos preparar un proyecto simple node.js:
+
+```bash
+mkdir dynamic-mocking
+cd dynamic-mocking
+mkdir contracts src
+
+yarn init
+# or if you're using npm
+npm init
+```
+
+Comencemos agregando dependencias de typescript y prueba - mocha & chai:
+
+```bash
+yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript
+# or if you're using npm
+npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev
+```
+
+Ahora agreguemos `Waffle` y `ethers`:
+
+```bash
+yarn add --dev ethereum-waffle ethers
+# or if you're using npm
+npm install ethereum-waffle ethers --save-dev
+```
+
+La estructura de tu proyecto debería verse así:
+
+```
+.
+├── contracts
+├── package.json
+└── test
+```
+
+### **2. Contrato inteligente** {#2-smart-contract}
+
+Para comenzar una simulación dinámica, necesitamos un contrato inteligente con dependencias. No te preocupes, ¡yo me encargo!
+
+Aquí hay un contrato inteligente simple escrito en `Solidity` cuyo único proposito es comporbar si somos ricos. Utiliza el token ERC20 para comprobar si tenemos suficientes tokens. Ponlo en `./contracts/AmIRichAlready.sol`.
+
+```solidity
+pragma solidity ^0.6.2;
+
+interface IERC20 {
+ function balanceOf(address account) external view returns (uint256);
+}
+
+contract AmIRichAlready {
+ IERC20 private tokenContract;
+ uint public richness = 1000000 * 10 ** 18;
+
+ constructor (IERC20 _tokenContract) public {
+ tokenContract = _tokenContract;
+ }
+
+ function check() public view returns (bool) {
+ uint balance = tokenContract.balanceOf(msg.sender);
+ return balance > richness;
+ }
+}
+```
+
+Como queremos utilizar la simulación dinámica no necesitamos el ERC20 completo, por eso estamos utilizando la interfaz de IERC20 con sólo una función.
+
+¡Es hora de construir este contrato! Para ello utilizaremos `Waffle`. Primero, debemos crear un archivo de configuración simple `waffle.json` que especifique las opciones de compilación.
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./contracts",
+ "outputDirectory": "./build"
+}
+```
+
+Ahora estamos listos para crear el contrato con Waffle:
+
+```bash
+npx waffle
+```
+
+Fácil, ¿verdad? En la carpeta `build/` aparecieron dos archivos correspondientes al contrato y la interfaz. Los utilizaremos luego para las pruebas.
+
+### **3. Pruebas** {#3-testing}
+
+Creemos un archivo llamado `AmIRichAlready.test.ts` para estas pruebas. Antes que nada, tenemos que gestionar las importaciones. Las necesitaremos luego:
+
+```typescript
+import { expect, use } from "chai"
+import { Contract, utils, Wallet } from "ethers"
+import {
+ deployContract,
+ deployMockContract,
+ MockProvider,
+ solidity,
+} from "ethereum-waffle"
+```
+
+Excepto para las dependencias JS, necesitaremos importar o crear el contrato y la interfaz:
+
+```typescript
+import IERC20 from "../build/IERC20.json"
+import AmIRichAlready from "../build/AmIRichAlready.json"
+```
+
+Waffle utiliza `chai` para las pruebas. Sin embargo, antes de utilizarlo, debemos insertar los emparejadores de Waffle en el propio chai:
+
+```typescript
+use(solidity)
+```
+
+Necesitamos implementar una función `beforeEach()` que restablezca el estado del contrato antes de cada prueba. Pensemos primero en lo que necesitamos allí. Para implementar un contrato necesitaremos dos cosas: un monedero y un contrato ERC20 ya implementado para utilizarlo como argumento del contrato `AmIRichAlready`.
+
+Primero creamos el monedero:
+
+```typescript
+const [wallet] = new MockProvider().getWallets()
+```
+
+Luego debemos desplegar un contrato ERC20. Aquí está la parte difícil - sólo tenemos una interfaz. Esta es la parte en que Waffle viene a salvarnos. Waffle tiene una función mágica `deployMockContract()` que crea un contrato usando únicamente el _abi_ de la interfaz:
+
+```typescript
+const mockERC20 = await deployMockContract(wallet, IERC20.abi)
+```
+
+Ahora con el monedero y el ERC20 desplegado, podemos continuar con la implementación del contrato `AmIRichAlready`:
+
+```typescript
+const contract = await deployContract(wallet, AmIRichAlready, [
+ mockERC20.address,
+])
+```
+
+Con todo eso, nuestra función `beforeEach()` está terminada. Hasta aquí, tu archivo `AmIRichAlready.test.ts` debería verse así:
+
+```typescript
+import { expect, use } from "chai"
+import { Contract, utils, Wallet } from "ethers"
+import {
+ deployContract,
+ deployMockContract,
+ MockProvider,
+ solidity,
+} from "ethereum-waffle"
+
+import IERC20 from "../build/IERC20.json"
+import AmIRichAlready from "../build/AmIRichAlready.json"
+
+use(solidity)
+
+describe("Am I Rich Already", () => {
+ let mockERC20: Contract
+ let contract: Contract
+ let wallet: Wallet
+
+ beforeEach(async () => {
+ ;[wallet] = new MockProvider().getWallets()
+ mockERC20 = await deployMockContract(wallet, IERC20.abi)
+ contract = await deployContract(wallet, AmIRichAlready, [mockERC20.address])
+ })
+})
+```
+
+Escribamos las primera prueba del contrato `AmIRichAlready`. ¿De qué crees que debería ser nuestra prueba? ¡Sí, tienes razón! Deberíamos comprobar si ya somos ricos :)
+
+Pero espera un segundo. ¿Cómo sabrá nuestro contrato simulado que valores devolver? No hemos implementado ninguna lógica para la función `balanceOf()`. Nuevamente, Waffle nos puede ayudar. Nuestro contrato simulado tiene algunas cosas nuevas:
+
+```typescript
+await mockERC20.mock..returns()
+await mockERC20.mock..withArgs().returns()
+```
+
+Con este conocimiento podemos, finalmente, escribir nuestra primera prueba:
+
+```typescript
+it("returns false if the wallet has less than 1000000 tokens", async () => {
+ await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
+ expect(await contract.check()).to.be.equal(false)
+})
+```
+
+Separemos esta prueba en partes:
+
+1. Establecimos nuestro contrato ERC20 para devolver siempre un balance de 999999 tokens.
+2. Comprobar si el método`contract.check()` devuelve `false`.
+
+Estamos listos para liberar a la bestia:
+
+![Pasando una prueba](test-one.png)
+
+Así que la prueba funciona, pero... todavía hay margen de mejora. La función `balanceOf()` siempre devolverá 999999. Podemos mejorarla especificando un monedero para el cual la función devolverá algo, como un contrato real:
+
+```typescript
+it("returns false if the wallet has less than 1000001 tokens", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("999999"))
+ expect(await contract.check()).to.be.equal(false)
+})
+```
+
+Hasta el momento, sólo probamos el caso donde aún no somos suficientemente ricos. Probemos el opuesto esta vez:
+
+```typescript
+it("returns true if the wallet has at least 1000001 tokens", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("1000001"))
+ expect(await contract.check()).to.be.equal(true)
+})
+```
+
+Ejecutas las pruebas...
+
+![Pasando dos pruebas](test-two.png)
+
+... ¡y aquí está! Nuestro contrato parece funcionar según lo previsto :)
+
+## Probando llamadas de contrato {#testing-contract-calls}
+
+Veamos lo que hicimos hasta ahora. Probamos la funcionalidad de nuestro contrato `AmIRichAlready` y parece estar funcionando correctamente. Esto significa que terminamos, ¿verdad? ¡No exactamente! Waffle nos permite probar nuestro contrato aún más. ¿Pero cómo? Bueno, en el arsenal de Waffle tenemos `calledOnContract()` y los matchers `calledOnContractWith()`. Siempre nos permitirán corroborar si nuestro contrato llamó al contrato simulado ERC20. Aquí hay una prueba básica con uno de estos matchers:
+
+```typescript
+it("checks if contract called balanceOf on the ERC20 token", async () => {
+ await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
+ await contract.check()
+ expect("balanceOf").to.be.calledOnContract(mockERC20)
+})
+```
+
+Incluso podemos ir más allá y mejorar esta prueba con los otros matchers de los que te hablé:
+
+```typescript
+it("checks if contract called balanceOf with certain wallet on the ERC20 token", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("999999"))
+ await contract.check()
+ expect("balanceOf").to.be.calledOnContractWith(mockERC20, [wallet.address])
+})
+```
+
+Vamos a comprobar si las pruebas fueron correctas:
+
+![Pasando tres pruebas](test-three.png)
+
+Genial, todas las pruebas están verdes.
+
+Probar las llamadas de contrato con Waffle es muy fácil. Y aquí está la mejor parte. ¡Estos emparejadores trabajan tanto con contratos normales como simulados! Esto se debe a que Waffle registra y filtra las llamadas EVM en lugar de introducir código, como en el caso de las librerías de prueba populares para otras tecnologías.
+
+## La Línea de Llegada {#the-finish-line}
+
+¡Felicidades! Ahora sabes como usar Waffle para probar las llamadas de contrato y contratos simulados de forma dinámica. Hay características mucho más interesantes que descubrir. Recomiendo revisar la documentación de Waffle.
+
+La documentación de Waffle está disponible [aquí](https://ethereum-waffle.readthedocs.io/).
+
+El código fuente de este tutorial puedes econtrarlo [aquí](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls).
+
+Otros tutoriales que podrían interesarte:
+
+- [Probar contratos inteligentes con Waffle](/developers/tutorials/waffle-test-simple-smart-contract//)
diff --git a/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
new file mode 100644
index 00000000000..cc1f32a7538
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
@@ -0,0 +1,202 @@
+---
+title: "Tutorial de Waffle \"Hola, Mundo\" con hardhat y ethers"
+description: Haga su primer proyecto de Waffle con hardhat y ethers.js
+author: "MiZiet"
+tags:
+ - "waffle"
+ - "contratos inteligentes"
+ - "solidity"
+ - "pruebas"
+ - "hardhat"
+ - "ethers.js"
+skill: beginner
+lang: es
+published: 2020-10-16
+---
+
+En este tutorial de [Waffle](https://ethereum-waffle.readthedocs.io), aprenderemos cómo configurar un proyecto de contrato inteligente simple "Hola, Mundo" usando [hardhat](https://hardhat.org/) y [ethers](https://docs.ethers.io/v5/). Luego aprenderemos cómo añadir una nueva funcionalidad a nuestro contrato inteligente y cómo hacer pruebas con Waffle.
+
+Empecemos con la creación de un nuevo proyecto:
+
+```bash
+yarn init
+```
+
+o
+
+```bash
+npm init
+```
+
+y la instalación de los paquetes necesarios:
+
+```bash
+yarn add -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+o
+
+```bash
+npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+El siguiente paso es crear un proyecto de hardhat de muestra ejecutando `npx hardhat`.
+
+```bash
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Bienvenido a Hardhat v2.0.3 👷
+
+? ¿Qué es lo que quieres hacer? …
+❯ Cree un proyecto de muestra
+Cree un hardhat.config.js vacío
+Renunciar
+```
+
+Seleccione `Create a sample project`.
+
+La estructura del proyecto debería verse así:
+
+```
+MyWaffleProject
+├── contracts
+│ └── Greeter.sol
+├── node_modules
+├── scripts
+│ └── sample-script.js
+├── test
+│ └── sample-test.js
+├── .gitattributs
+├── .gitignore
+├── hardhat.config.js
+└── package.json
+```
+
+### Ahora hablemos de algunos de estos archivos: {#now-lets-talk}
+
+- Greeter.sol: nuestro contrato inteligente escrito en solidity;
+
+```solidity
+contract Greeter {
+string greeting;
+
+constructor(string memory _greeting) public {
+console.log("Deploying a Greeter with greeting:", _greeting);
+greeting = _greeting;
+}
+
+function greet() public view returns (string memory) {
+return greeting;
+}
+
+function setGreeting(string memory _greeting) public {
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+}
+```
+
+Nuestro contrato inteligente se puede dividir en tres partes:
+
+1. constructor: donde declaramos una variable de tipo cadena llamada `greeting`;
+2. función greet: una función que devolverá el `greeting` al ser invocada;
+3. función setGreeting: una función que nos permite cambiar el valor de `greeting`.
+
+- sample-test.js: nuestro archivo de pruebas
+
+```js
+describe("Greeter", function () {
+ it("Should return the new greeting once it's changed", async function () {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ expect(await greeter.greet()).to.equal("Hello, world!")
+
+ await greeter.setGreeting("Hola, mundo!")
+ expect(await greeter.greet()).to.equal("Hola, mundo!")
+ })
+})
+```
+
+### El siguiente paso consiste en compilar nuestro contrato y ejecutar pruebas: {#compiling-and-testing}
+
+Las pruebas de Waffle usan Mocha (un framework de pruebas) con Chai (una biblioteca de afirmaciones). Todo lo que tiene que hacer es ejecutar `npx hardhat test` y esperar a que aparezca el siguiente mensaje.
+
+```bash
+✓ Should return the new greeting once it's changed
+```
+
+### Todo se ve bien hasta ahora, vamos a añadir un poco más de complejidad a nuestro proyecto {#adding-complexity}
+
+Imagine una situación en la que alguien añade una cadena vacía como saludo. No sería un saludo cálido, ¿cierto?
+Asegurémonos de que eso no suceda:
+
+Queremos usar `revert` de solidity cuando alguien pase una cadena vacía. Algo bueno es que podemos probar esta funcionalidad fácilmente con el emparejador de chai de Waffle `to.be.revertedWith()`.
+
+```js
+it("Should revert when passing an empty string", async () => {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ await expect(greeter.setGreeting("")).to.be.revertedWith(
+ "Greeting should not be empty"
+ )
+})
+```
+
+Parece que nuestra nueva prueba no pasó:
+
+```bash
+Deploying a Greeter with greeting: Hello, world!
+Changing greeting from 'Hello, world!' to 'Hola, mundo!'
+ ✓ Should return the new greeting once it's changed (1514ms)
+Deploying a Greeter with greeting: Hello, world!
+Changing greeting from 'Hello, world!' to ''
+ 1) Should revert when passing an empty string
+
+
+ 1 passing (2s)
+ 1 failing
+```
+
+Vamos a implementar esta funcionalidad en nuestro contrato inteligente:
+
+```solidity
+require(bytes(_greeting).length > 0, "Greeting should not be empty");
+```
+
+Ahora, nuestra función setGreeting se ve así:
+
+```solidity
+function setGreeting(string memory _greeting) public {
+require(bytes(_greeting).length > 0, "Greeting should not be empty");
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+```
+
+Vamos a ejecutar pruebas de nuevo:
+
+```bash
+✓ Should return the new greeting once it's changed (1467ms)
+✓ Should revert when passing an empty string (276ms)
+
+2 passing (2s)
+```
+
+¡Enhorabuena! Lo logró :)
+
+### Conclusión {#conclusion}
+
+Hicimos un proyecto sencillo con Waffle, Hardhat y ethers.js. Aprendimos a crear un proyecto, añadir una prueba e implementar nuevas funcionalidades.
+
+Para ver más excelentes emparejadores de chai para probar su contrato inteligente, consulte los [documentos oficiales de Waffle](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).
diff --git a/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
new file mode 100644
index 00000000000..b503f867578
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -0,0 +1,203 @@
+---
+title: Probar el contrato inteligente de forma sencilla con la biblioteca Waffle
+description: Tutorial para principiantes
+author: Ewa Kowalska
+tags:
+ - "contratos inteligentes"
+ - "Solidity"
+ - "Waffle"
+ - "pruebas"
+skill: beginner
+lang: es
+published: 2021-02-26
+---
+
+## En este tutorial aprenderá a: {#in-this-tutorial-youll-learn-how-to}
+
+- Evalúa los cambios en el saldo de la billetera
+- Probar la emisión de eventos con argumentos especificos.
+- Verificar que una transacción se ha revertido.
+
+## Supuestos {#assumptions}
+
+- Puede crear un nuevo proyecto JavaScript o TypeScript.
+- Tiene experiencia básica con las pruebas en JavaScript.
+- Ha utilizado algunos gestores de paquetes como yarn o npm.
+- Posee conocimientos muy básicos de contratos inteligentes y Solidity.
+
+# Introducción {#getting-started}
+
+Este tutorial explica una configuración de prueba y se ejecuta utilizando yarn, pero no pasa nada si prefiere hacerlo con npm, ya proporcionaré las indicaciones apropiadas a la documentación oficial de Waffle[](https://ethereum-waffle.readthedocs.io/en/latest/index.html).
+
+## Instalar las dependencias {#install-dependencies}
+
+[Añada](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) las dependencias ethereum-waffle y de typescript a las dependencias de desarrollo de su proyecto.
+
+```bash
+yarn add --dev ethereum-waffle ts-node typescript @types/jest
+```
+
+## Ejemplo de contrato inteligente {#example-smart-contract}
+
+Durante el tutorial trabajaremos con un sencillo ejemplo de contrato inteligente: EtherSplitter. Permite casi se manera similar que cualquiera envíe algunos wei y, eventualmente, los divida entre dos receptores por defecto. La función dividida requiere que la cantidad de wei sea un número entero, de lo contario se revertirá. Para ambos receptores realiza una transferencia de wei, seguida a la emisión de un evento de transferencia.
+
+Añada el fragmento de código de EtherSplitter en `src/EtherSplitter.sol`.
+
+```solidity
+pragma solidity ^0.6.0;
+
+contract EtherSplitter {
+ address payable receiver1;
+ address payable receiver2;
+
+ event Transfer(address from, address to, uint256 amount);
+
+ constructor(address payable _address1, address payable _address2) public {
+ receiver1 = _address1;
+ receiver2 = _address2;
+ }
+
+ function split() public payable {
+ require(msg.value % 2 == 0, 'Uneven wei amount not allowed');
+ receiver1.transfer(msg.value / 2);
+ emit Transfer(msg.sender, receiver1, msg.value / 2);
+ receiver2.transfer(msg.value / 2);
+ emit Transfer(msg.sender, receiver2, msg.value / 2);
+ }
+}
+```
+
+## Compilar el contrato {#compile-the-contract}
+
+Para [compilar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) el contrato, añada las siguientes líneas al archivo de package.json:
+
+```json
+"scripts": {
+ "build": "waffle"
+ }
+```
+
+A continuación, cree el archivo de configuración de Waffle en el directorio de raíz del proyecto `waffle.json` y después pegue ahí la siguiente configuración:
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./src",
+ "outputDirectory": "./build"
+}
+```
+
+Ejecute `yarn build`. Como resultado, el directorio `build` aparecerá con el contrato compilado de EtherSplitter en formato JSON.
+
+## Configuración de la prueba {#test-setup}
+
+Para hacer pruebas con Waffle se tienen que utilizar los emparejadores de Chai y Mocha, por lo que necesita [añadirlos](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) a su proyecto. Actualice su archivo package.json y añada la línea de `test` en la parte de scripts:
+
+```json
+"scripts": {
+ "build": "waffle",
+ "test": "export NODE_ENV=test && mocha -r ts-node/register 'test/**/*.test.ts'"
+ }
+```
+
+Si quiere [ejecutar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#running-tests) sus pruebas, simplemente ejecute `yarn test` .
+
+# Pruebas {#testing}
+
+Seguidamente cree el directorio `test` y un nuevo archivo `test\EtherSplitter.test.ts`. Copie el fragmento de abajo y péguelo en nuestro archivo de prueba.
+
+```ts
+import { expect, use } from "chai"
+import { Contract } from "ethers"
+import { deployContract, MockProvider, solidity } from "ethereum-waffle"
+import EtherSplitter from "../build/EtherSplitter.json"
+
+use(solidity)
+
+describe("Ether Splitter", () => {
+ const [sender, receiver1, receiver2] = new MockProvider().getWallets()
+ let splitter: Contract
+
+ beforeEach(async () => {
+ splitter = await deployContract(sender, EtherSplitter, [
+ receiver1.address,
+ receiver2.address,
+ ])
+ })
+
+ // add the tests here
+})
+```
+
+Unas breves aclaraciones antes de que empecemos. El `MockProvider` incluye una simulación de la cadena de bloques. También permite que las carteras simuladas funcionen para hacer la prueba del contrato EtherSplitter. Podemos obtener hasta diez carteras aplicando el método de `getWallet()` en el proveedor. En el ejemplo, obtendremos tres carteras para el emisor y dos receptores.
+
+A continuación, declaramos una variable llamada «splitter»: este es nuestro contrato simulado EtherSplitter. Se crea antes de la ejecución de una única prueba a través del método `deployContract`. Este método simula la implementación de un contrato desde la cartera pasado como el primer parámetro (en nuestro caso, la cartera del emisor). El segundo parámetro es el ABI y el código de bytes del contrato de prueba: aquí pasamos el archivo json o el contrato EtherSplitter compilado desde el directorio `build`. El tercer parámetro es una matriz con los argumentos del constructor del contrato, que en nuestro caso, son las dos direcciones de los receptores.
+
+## ChangeBalances {#changebalances}
+
+Primero, revisamos si el método dividido realmente cambia el saldo de las carteras de los receptores. Si dividimos 50 wei desde las cuentas de los emisores, esperaríamos que los saldos de ambos receptores aumentaran 25 wei. Usaremos el comparador `changeBalances` de Waffle:
+
+```ts
+it("Changes accounts balances", async () => {
+ await expect(() => splitter.split({ value: 50 })).to.changeBalances(
+ [receiver1, receiver2],
+ [25, 25]
+ )
+})
+```
+
+Como primer parámetro del emparejador, enviamos una matriz de carteras receptoras; y como segundo parámetro, una matriz de aumentos esperados en las cuentas correspondientes. Si queremos revisar el balance de una billetera en específico, también podemos usar el comparador `changeBalance`, que no requiere el envío de matrices como en el ejemplo anterior:
+
+```ts
+it("Changes account balance", async () => {
+ await expect(() => splitter.split({ value: 50 })).to.changeBalance(
+ receiver1,
+ 25
+ )
+})
+```
+
+Tenga en cuenta que en ambos casos `changeBalance` y `changeBalances`, enviamos la función dividida como devolución de llamada, porque el emparejador necesita acceder al estado de saldos antes y después de la llamada.
+
+A continuación, probaremos si el evento de transferencia se emitió después de cada transferencia de wei. Cambiaremos a otra máquina desde Waffle:
+
+## Emit {#emit}
+
+```ts
+it("Emits event on the transfer to the first receiver", async () => {
+ await expect(splitter.split({ value: 50 }))
+ .to.emit(splitter, "Transfer")
+ .withArgs(sender.address, receiver1.address, 25)
+})
+
+it("Emits event on the transfer to the second receiver", async () => {
+ await expect(splitter.split({ value: 50 }))
+ .to.emit(splitter, "Transfer")
+ .withArgs(sender.address, receiver2.address, 25)
+})
+```
+
+El emparejador `emit` nos permite revisar si un contrato ha emitido un evento al recurrir a un método. Como parámetros del emparejador `emit`, proporcionamos el simulacro de contrato que predecimos para emitir el evento, junto al nombre de ese evento. En nuestro caso, el simulacro de contrato es `splitter` y el nombre del evento: `Transfer`. También podemos verificar los valores precisos de los argumentos con los que se emitió el evento: enviamos tantos argumentos al emparejador `withArgs` como lo espera nuestra declaración de evento. En el caso del contrato EtherSplitter, enviamos las direcciones del emisor y del receptor, junto a la cantidad de wei transferida.
+
+## revertedWith {#revertedwith}
+
+Como último ejemplo, comprobaremos si se revirtió la transacción en caso de número impar de wei. Usaremos el emparejador `revertedWith`:
+
+```ts
+it("Reverts when Vei amount uneven", async () => {
+ await expect(splitter.split({ value: 51 })).to.be.revertedWith(
+ "Uneven wei amount not allowed"
+ )
+})
+```
+
+Si la prueba sale bien, nos garantizará que se ha revertido la transacción. Sin embargo, también debe haber una coincidencia exacta entre los mensajes que hemos enviado en la declaración `require` y el mensaje que esperamos en `revertedWith`. Si regresamos al código del contrato EtherSplitter, en la declaración `require` para la cantidad de wei, proporcionamos el mensaje: «no se permite una cantidad impar de wei». Esto coincide con el mensaje que esperamos en nuestra prueba. Si no coinciden, será que la prueba ha salido mal.
+
+# Enhorabuena! {#congratulations}
+
+¡Acabas de dar tu primer gran paso para probar los contratos inteligentes con Waffle! Puede que también te interesen otros tutoriales de Waffle:
+
+- [Probar ERC20 con Waffle](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
+- [Waffle: Llamadas dinámicas de simulación y prueba de contratos](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
+- [Tutorial de Waffle "Hola, Mundo" con hardhat y ethers](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers//)
diff --git a/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
new file mode 100644
index 00000000000..bc791dd91c5
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
@@ -0,0 +1,264 @@
+---
+title: Explicación de las especificaciones de la EVM del Yellow Paper
+description: Explicación de la parte del Yellow Paper, las especificaciones formales de Ethereum, que explican la máquina virtual de Ethereum (EVM).
+author: "qbzzt"
+tags:
+ - "evm"
+skill: intermediate
+lang: es
+published: 2022-05-15
+---
+
+El [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) es la especificación formal de Ethereum. Excepto donde esté modificado por el [proceso de EIP](/eips/), contiene la descripción exacta de cómo funciona todo. Está escrito como un papel matemático que incluye términos que podrían no ser tan familiares para los programadores. En este papel aprenderá cómo leerlo y, por extensión, otros papeles matemáticos relacionados.
+
+## ¿Qué Yellow Paper? {#which-yellow-paper}
+
+Como sucede con casi todo en Ethereum, el Yellow Paper evoluciona conforme avanza el tiempo. Para hacer referencia a una versión específica, he publicado [la versión actual al momento de escribir este artículo](yellow-paper-berlin.pdf). Los números de sección, página y ecuación que utilizo se referirán a esa versión. Es una buena idea tenerlo abierto en una ventana diferente mientras le este documento.
+
+### ¿Por qué la EVM? {#why-the-evm}
+
+La versión original del Yellow Paper se escribió al inicio del desarrollo de Ethereum. Describe el mecanismo de consenso original basado en prueba de trabajo que se usaba originalmente para asegurar la red. Sin embargo, Ethereum acabó con la prueba de trabajo y comenzó a utilizar el consenso basado en prueba de participación en septiembre de 2022. Este tutorial se enfocará en las partes del Yellow Paper que definen la Máquina Virtual de Ethereum (EVM). La EVM no resultó modificada por el cambio a la prueba de participación (a excepción del valor de retorno del código de operación DIFFICULTY).
+
+## 9. Modelo de ejecución {#9-execution-model}
+
+Esta sección (p. 12-14) incluye la mayor parte de la definición de la EVM.
+
+El término _estado de sistema_ incluye todo lo que necesita saber sobre el sistema para ejecutarlo. En una computadora típica, esto significa la memoria, los registros de contenido, etc.
+
+Una [máquina de Turing](https://en.wikipedia.org/wiki/Turing_machine) es un modelo computacional. Esencialmente, es una versión simplificada de una computadora que, según se ha probado, cuenta con la misma capacidad de realizar cálculos que una computadora normal (todo lo que una computadora puede calcular una máquina de Turing puede calcular y viceversa). Este modelo facilita probar varios teoremas sobre qué es y qué no es computable.
+
+El término [Turing-complete](https://en.wikipedia.org/wiki/Turing_completeness) hace referencia a una computadora que puede realizar los mismos cálculos que una máquina de Turing. Las máquinas de Turing pueden entrar en bucles infinitos, y la EVM no, porque el gas se agotaría, por lo que sería solo quasi-Turing-complete.
+
+## 9.1. Fundamentos básicos {#91-basics}
+
+Esta sección proporciona los fundamentos básicos de la Máquina Virtual de Ethereum (EVM) y cómo se compara con otros modelos computacionales.
+
+Una [máquina apiladora](https://en.wikipedia.org/wiki/Stack_machine), o stack machine, es una computadora que almacena datos intermedios no en registros, sino en una [**pila**](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). Esta es la arquitectura preferida para máquinas virtuales porque es sencilla de implementar, lo que significa que los errores y las vulnerabilidades de seguridad son menos probables. La memoria en la pila se divide en palabras de 256 bits. Esto se eligió porque es conveniente para las operaciones criptográficas centrales de Ethereum como el hash Keccak-256 y los cómputos de curva elíptica. El tamaño máximo de una pila es de 1024 bytes. Cuando se ejecutan códigos de operación (opcodes), estos usualmente reciben sus parámetros de la pila. Hay códigos de operación específicos para reorganizar elementos en la pila, tales como `POP` (elimina un objeto de la parte superior de la pila), `DUP_N` (elemento enésimo duplicado en la pila), etc.
+
+La EVM también cuenta con un espacio volátil llamado **memoria** que es utilizado para almacenar datos durante la ejecución. Esta memoria está organizada en palabras de 32 bytes. Todas las ubicaciones de memoria están inicializadas en cero. Si ejecuta este código [Yul](https://docs.soliditylang.org/en/latest/yul.html) para agregar una palabra en la memoria, este completará 32 bytes de memoria rellenando el espacio vacío en la palabra con ceros, es decir, crea una palabra con ceros en las ubicaciones 0-29, 0x60 a 30 y 0xA7 a 31.
+
+```yul
+mstore(0, 0x60A7)
+```
+
+`mstore` es uno de los tres códigos de operación proporcionados por la EVM para interactuar con la memoria: carga una palabra en la memoria. Los otros dos son `mstore8`, que carga un único byte en la memoria, y `mload`, que mueve una palabra de la memoria a la pila.
+
+La EVM también tiene un modelo de **almacenamiento** no volátil que es mantenido como parte del estado del sistema; esta memoria se organiza en conjuntos de palabras (a diferencia de las matrices de bytes direccionables por palabras en la pila). Este almacenamiento es donde los contratos guardan datos persistentes; un contrato solo puede interactuar con su propio almacenamiento. El almacenamiento se organiza en asignaciones o mapeos clave-valor.
+
+Aunque no se menciona en esta sección del Yellow Paper, también es útil conocer que hay un cuarto tipo de memoria. **Calldata** es una memoria de solo lectura direccionable por bytes utilizada para almacenar el valor transmitido con el parámetro `data` de una transacción. La EVM tiene códigos de operación específicos para gestionar `calldata`. `calldatasize` devuelve el tamaño de los datos. `calldataload` carga los datos en la pila. `calldatacopy` copia los datos en la memoria.
+
+La [arquitectura Von Neumann](https://en.wikipedia.org/wiki/Von_Neumann_architecture) estándar almacena código y datos en la misma memoria. La EVM no sigue este estándar por razones de seguridad: compartir memoria volátil hace posible el cambio del código del programa. En vez de eso, el código se guarda en el almacenamiento.
+
+Solo hay dos casos donde el código es ejecutado desde la memoria:
+
+- Cuando un contrato crea otro contrato (utilizando [`CREATE`](https://www.evm.codes/#f0) o [`CREATE2`](https://www.evm.codes/#f5)), el código para el constructor del contrato viene de la memoria.
+- Durante la cración de _cualquier_ contrato, el código del constructor se ejecuta y luego devuelve el código del contrato real, también desde la memoria.
+
+El término ejecución excepcional significa una excepción que hace que la ejecución del contrato actual se detenga.
+
+## 9.2. Resumen de las tarifas {#92-fees-overview}
+
+Esta sección explica cómo se calculan las tarifas de gas. Hay tres costos:
+
+### Costo de códigos de operación {#opcode-cost}
+
+El costo inherente del código de operación específico. Para obtener este valor, busque el grupo de costo del código de operación en el Apéndice H (p. 28, debajo de la ecuación (327)) y busque el grupo de costo en la ecuación (324). Esto le proporcionará una función de costo, que en la mayoría de los casos utiliza parámetros del Apéndice G (p. 27).
+
+Por ejemplo, el código de operación [`CALLDATACOPY`](https://www.evm.codes/#37) es miembro del grupo _Wcopy_. El costo del código de operación para ese grupo es _Gverylow+Gcopy×⌈μs[2]÷32]_. Revisando el Apéndice G, podemos ver que ambas constantes son 3, lo que nos da _3+3×⌈μs[2]÷32⌉_.
+
+Todavía necesitamos descifrar la expresión _⌈μs[2]÷32⌉_. La parte más externa, _⌈ \ ⌉_, es la función de techo, una función que, al darle un valor, devuelve el entero más pequeño que no sea más pequeño que el valor. Por ejemplo, _⌈2.5⌉ = ⌈3⌉ = 3_. La parte interior es _μs[2]÷32_. Viendo la sección 3 (Convenciones) en la p. 3, _μ_ es el estado de la máquina. El estado de la máquina es definido en la sección 9.4.1 de la p. 13. De acuerdo con esa sección, uno de los parámetros de estado de la máquina es _s_ para la pila. Al colocar todos juntos, parece que _μs[2]_ es la posición n.º 2 en la pila. Viendo el [código de operación](https://www.evm.codes/#37), la posición 2 en la pila es el tamaño de los datos en bytes. Viendo los otros códigos de operación en el grupo Wcopy, [`CODECOPY`](https://www.evm.codes/#39) y [`RETURNDATACOPY`](https://www.evm.codes/#3e), también tienen un tamaño de datos en la misma ubicación. Entonces, _⌈μs[2]÷32⌉_ es la cantidad de palabras de 32 bytes requerida para almacenar la información copiada. Colocando todo junto, el costo inherente de [`CALLDATACOPY`](https://www.evm.codes/#37) es de 3 gas más 3 por palabra de datos copiados.
+
+### Costo de ejecución {#running-cost}
+
+El costo de ejecutar el código que estamos llamando.
+
+- En el caso de [`CREATE`](https://www.evm.codes/#f0) y [`CREATE2`](https://www.evm.codes/#f5), el constructor para el nuevo contrato.
+- En el caso de [`CALL`](https://www.evm.codes/#f1), [`CALLCODE`](https://www.evm.codes/#f2), [`STATICCALL`](https://www.evm.codes/#fa) o [`DELEGATECALL`](https://www.evm.codes/#f4), el contrato que llamamos.
+
+### Costo de expandir la memoria {#expanding-memory-cost}
+
+El costo de expandir la memoria (si es necesario).
+
+En la ecuación 324, este valor se escribe como _Cmem(μi')-Cmem(μi)_. Mirando la sección 9.4.1 nuevamente, vemos que _μi_ es la cantidad de palabras en la memoria. Así que _μi_ es la cantidad de palabras en la memoria antes del código de operación, y _μi'_ es la cantidad de palabras en la memoria luego del código de operación.
+
+La función _Cmem_ es definida en la ecuación 326: _Cmem(a) = Gmemory × a + ⌊a2 ÷ 512⌋_. _⌊x⌋_ es la función de piso, una función que, al darle un valor, devuelve el entero más grande que no sea más grande que el valor. Por ejemplo, _⌊2.5⌋ = ⌊2⌋ = 2._ Cuando _a < √512_, _a2 < 512_ y el resultado de la función de piso es cero. Así, para las primeras 22 palabras (704 bytes), el costo aumenta de manera lineal con la candidad requerida de palabras en la memoria. Más allá de ese punto, _⌊a2 ÷ 512⌋_ es positivo. Cuando la memoria requerida es suficientemente alta, el costo del gas es proporcional a la cantidad de memoria elevada al cuadrado.
+
+**Note** que estos factores solo influyen en el costo _inherente_ del gas; no se toman en cuenta el mercado de tarifas o las propinas a los validadores que determinan cuánto debe pagar el usuario final; esto es solo el costo bruto de ejecutar una operación en particular en la EVM.
+
+[Más información sobre el gas](/developers/docs/gas/).
+
+## 9.3. Entorno de ejecución {#93-execution-env}
+
+El entorno de ejecución es una tupla, _I_, que incluye información que no es parte del estado de la cadena de bloques o la EVM.
+
+| Parámetro | Código de operación para acceder a los datos | Código de Solidity para acceder a los datos |
+| --------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
+| _Ia_ | [`ADDRESS`](https://www.evm.codes/#30) | `address(this)` |
+| _Io_ | [`ORIGIN`](https://www.evm.codes/#32) | `tx.origin` |
+| _Ip_ | [`GASPRICE`](https://www.evm.codes/#3a) | `tx.gasprice` |
+| _Id_ | [`CALLDATALOAD`](https://www.evm.codes/#35), etc. | `msg.data` |
+| _Is_ | [`CALLER`](https://www.evm.codes/#33) | `msg.sender` |
+| _Iv_ | [`CALLVALUE`](https://www.evm.codes/#34) | `msg.value` |
+| _Ib_ | [`CODECOPY`](https://www.evm.codes/#39) | `address(this).code` |
+| _IH_ | Campos de encabezado de bloque, como [`NUMBER`](https://www.evm.codes/#43) y [`DIFFICULTY`](https://www.evm.codes/#44) | `block.number`, `block.difficulty`, etc. |
+| _Ie_ | Profundidad de la pila de llamadas para llamadas entre contratos (incluida la creación de contratos) | |
+| _Iw_ | ¿La EVM tiene permitido cambiar de estado o se está ejecutando estáticamente? | |
+
+Algunos otros parámetros son necesarios para comprender el resto de la sección 9:
+
+| Parámetro | Definido en la sección | Significado |
+| --------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| _σ_ | 2 (p. 2, ecuación 1) | El estado de la cadena de bloques |
+| _g_ | 9.3 (p. 13) | Gas restante |
+| _A_ | 6.1 (p. 8) | Subestado acumulado (cambios programados para cuando la transacción finalice) |
+| _o_ | 9.3 (p. 13) | Salida: el resultado devuelto en caso de transacción interna (cuando un contrato llama a otro) y llamadas a funciones de visualización (cuando simplemente pregunta por información, por lo que no hay necesidad de esperar por una transacción) |
+
+## 9.4. Descripción general de ejecución {#94-execution-overview}
+
+Ahora que tenemos todas las cuestiones preliminares, finalmente podemos empezar a trabajar en cómo funciona la EVM.
+
+Las ecuaciones 137-142 nos brindan las condiciones iniciales para ejecutar la EVM:
+
+| Símbolo | Valor inicial | Significado |
+| ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| _μg_ | _g_ | Gas restante |
+| _μpc_ | _0_ | Contador del programa, la dirección de la siguiente instrucción a ejecutar |
+| _μm_ | _(0, 0, ...)_ | Memoria, inicializada en todos ceros |
+| _μi_ | _0_ | Ubicación más alta de memoria usada |
+| _μs_ | _()_ | La pila, inicialmente vacía |
+| _μo_ | _∅_ | La salida, vacía hasta y a menos que nos detengamos con datos de devolución ([`RETURN`](https://www.evm.codes/#f3) o [`REVERT`](https://www.evm.codes/#fd)) o sin ellos ([`STOP`](https://www.evm.codes/#00) o [`SELFDESTRUCT`](https://www.evm.codes/#ff)). |
+
+La ecuación 143 nos dice que hay cuatro posibles condiciones en cada momento específico durante la ejecución y qué se debe hacer con ellas:
+
+1. `Z(σ,μ,A,I)`. Z representa una función que prueba si una operación crea una transición de estado no válida (ver [detención excepcional](#942-exceptional-halting)). Si se evalúa como True, el nuevo estado es idéntico al anterior (excepto que se quema/usa gas) porque los cambios no se han implementado.
+2. Si el código de operación ejecutado es [`REVERT`](https://www.evm.codes/#fd), el nuevo estado es el mismo que el anterior, se pierde algo de gas.
+3. Si la secuencia de operaciones es finalizada, como lo indica un [`RETURN`](https://www.evm.codes/#f3)), el estado es actualizado al nuevo.
+4. Si no estamos en una de las condiciones finales 1-3, continuar con la ejecución.
+
+## 9.4.1. Estado de la máquina {#941-machine-state}
+
+Esta sección explica el estado de la máquina con mayor detalle. Especifica que _w_ es el actual código de operación. Si _μpc_ es menor que _||Ib||_, la longitud del código, entonces ese byte (_Ib[μpc]_) es el código de operación. De lo contrario, el código de operación es definido como [`STOP`](https://www.evm.codes/#00).
+
+Como esta es una [máquina de pila](https://en.wikipedia.org/wiki/Stack_machine), necesitamos mantener un registro de la cantidad de objetos que salieron (_δ_) y entraron (_α_) a causa de cada código de operación.
+
+## 9.4.2. Detención excepcional {#942-exceptional-halt}
+
+Esta sección define la función _Z_, que especifica cuando tenemos una finalización anormal. Se trata de una función [booleana](https://en.wikipedia.org/wiki/Boolean_data_type), así que usa [_∨_ para un o lógico](https://en.wikipedia.org/wiki/Logical_disjunction) y [_∧_ para un y lógico](https://en.wikipedia.org/wiki/Logical_conjunction).
+
+Tenemos una detención excepcional si cualquiera de estas condiciones es verdadera:
+
+- **_μg < C(σ,μ,A,I)_** Como vimos en la sección 9.2, _C_ es la función que especifica el costo del gas. No hay suficiente gas para cubrir el siguiente código de operación.
+
+- **_δw=∅_** Si el número de elementos que aparecen para un código de operación no está definido, entonces el código de operación en sí no está definido.
+
+- **_|| μs || < δw_** Desbordamiento de la pila, no hay suficientes elementos en la pila para el actual código de operación.
+
+- **_w = JUMP ∧ μs[0]∉D(Ib)_** El código de operación es [`JUMP`](https://www.evm.codes/#56) y la dirección no es un [`JUMPDEST`](https://www.evm.codes/#5b). Los saltos _solo_ son válidos cuando el destino es un [`JUMPDEST`](https://www.evm.codes/#5b).
+
+- **_w = JUMPI ∧ μs[1]≠0 ∧ μs[0] ∉ D(Ib)_** El código de operación es [`JUMPI`](https://www.evm.codes/#57), la condición es verdadera (no es cero), por lo que el salto debería ocurrir, y la dirección no es un [`JUMPDEST`](https://www.evm.codes/#5b). Los saltos _solo_ son válidos cuando el destino es un [`JUMPDEST`](https://www.evm.codes/#5b).
+
+- **_w = RETURNDATACOPY ∧ μs[1]+μs[2]>|| μo ||_** El código de operación es [`RETURNDATACOPY`](https://www.evm.codes/#3e). En este código de operación, el elemento de pila _μs[1]_ es el desplazamiento desde donde leer en el búfer de datos de retorno, y el elemento de pila _μs[2]_ es la longitud de datos. Esta condición ocurre cuando intenta leer más allá del fin del búfer de datos de retorno. Note que no hay una condición similar para la llamada de datos o para el código en sí. Cuando trata de leer más allá del final de esos búferes obtiene ceros.
+
+- **_|| μs || - δw + αw > 1024_**
+
+ Desbordameinto de pila. Si la ejecución del código de operación resultará en una pila con más de 1024 elementos, abortar.
+
+- **_¬Iw ∧ W(w,μ)_** ¿Estamos corriendo estáticamente ([¬ es negación](https://en.wikipedia.org/wiki/Negation) y _Iw_ es verdadero cuando tenemos permitido cambiar el estado de la cadena de bloques)? Si es así y estamos intentando una operación de cambio de estado, esto no puede suceder.
+
+ La función _W(w,μ)_ es definida más tarde en la ecuación 150. _W(w,μ)_ es verdadero si una de estas condiciones es verdadera:
+
+ - **_w ∈ {CREATE, CREATE2, SSTORE, SELFDESTRUCT}_** Estos códigos de operación cambian el estado, ya sea creando un nuevo contrato, almacenando un valor o destruyendo el contrato actual.
+
+ - **_LOG0≤w ∧ w≤LOG4_** Si somos llamados estáticamente, no podemos emitir entradas de registro. Los código de operación del registro están todos en un rango entre [`LOG0` (A0)](https://www.evm.codes/#a0) y [`LOG4` (A4)](https://www.evm.codes/#a4). El número que figura luego del código de operación del registro especifica cuántos temas contiene la entrada de registro.
+ - **_w=CALL ∧ μs[2]≠0_** Puede invocar otro contrato cuando está estático, pero, si lo hace, no puede transferir ETH a este.
+
+- **_w = SSTORE ∧ μg ≤ Gcallstipend_** No puede correr [`SSTORE`](https://www.evm.codes/#55), a menos que tenga más que Gcallstipend (definido como 2300 en el Apéndice G) gas.
+
+## 9.4.3. Validez de destino de salto {#943-jump-dest-valid}
+
+Aquí definimos formalmente qué son los códigos de operación [`JUMPDEST`](https://www.evm.codes/#5b). No podemos simplemente buscar el valor de byte 0x5B, porque podría estar dentro de un PUSH (y, por lo tanto, datos y no un código de operación).
+
+En la ecuación (153) definimos una función, _N(i,w)_. El primer parámetro, _i_, es la ubicación del código de operación. El segundo, _w_, es el código de operación en sí. Si _w∈[PUSH1, PUSH32]_, eso significa que el código de operación es un PUSH (los corchetes definen un rango que incluye los extremos). En ese caso el siguiente código de operación está en _i+2+(w−PUSH1)_. Para [`PUSH1`](https://www.evm.codes/#60) necesitamos avancar de a dos bytes (el propio PUSH y el valor de un byte), para [`PUSH2`](https://www.evm.codes/#61) necesitamos avanzar de a tres bytes, porque es un valor de dos bytes, etc. Todos los demás códigos de operación de la EVM son solo de un byte de longitud, así que en todos los otros casos _N(i,w)=i+1_.
+
+Esta función se usa en la ecuación (152) para definir _DJ(c,i)_, que corresponde al [conjunto](https://en.wikipedia.org/wiki/Set_(mathematics)) de todos los destinos de salto válidos en el código _c_, comenzando con la ubicación del código de operación _i_. Esta función es definida de manera recursiva. En caso de ser _i≥||c||_, significa que nos encontramos en o después del final del código. No encontraremos más destinos de salto, por lo que solo devolvemos el conjunto vacío.
+
+En todos los otros casos, nos fijamos en el resto del código dirigiéndonos al siguiente código de operación y obteniendo el conjunto que se inicia desde este. _c[i]_ es el actual código de operación, así que _N(i,c[i])_ es la ubicación del siguiente código de operación. _DJ(c,N(i,c[i]))_ es, por lo tanto, el conjunto de destinos de salto válidos que inicia en el siguiente código de operación. Si el actual código de operación no es un `JUMPDEST`, solo devolvemos ese conjunto. Si es `JUMPDEST`, debemos incluirlo en el conjunto de resultados y devolverlo.
+
+## 9.4.4. Detención normal {#944-normal-halt}
+
+La función de detención _H_ puede devolver tres tipos de valores.
+
+- Si no estamos en un código de operación de detención, devolver _∅_, el conjunto vacío. Por costumbre, este valor es interpretado como un Booleano falso.
+- Si tenemos un código de operación de detención que no produce una salida (ya sea [`STOP`](https://www.evm.codes/#00) o [`SELFDESTRUCT`](https://www.evm.codes/#ff)), devolver una secuencia con tamaño de cero bytes como el valor de devolución. Note que esto es muy diferente al conjunto vacío. Este valor significa que la EVM realmente se ha detenido, solo que no hay datos de devolución para leer.
+- Si tenemos un código de operación de detención que produce una salida (ya sea [`RETURN`](https://www.evm.codes/#f3) o [`REVERT`](https://www.evm.codes/#fd)), devolver la secuencia de bytes especificada por ese código de operación. Esta secuencia es tomada de la memoria, el valor en la parte superior de la pila (_μs[0]_) es el primer byte, y el valor luego de este (_μs[1]_) es la longitud.
+
+## H.2. Conjunto de instrucciones {#h2-instruction-set}
+
+Antes de ir a la subsección final de la EVM, 9.5, veamos las instrucciones en sí. Están definidas en el Apéndice H.2 que comienza en la p. 29. Todo lo que no esté especificado que debe cambiar con ese código de operación debe continuar igual. Las variables que sí cambian están especificadas como \'.
+
+Por ejemplo, veamos el código de operación [`ADD`](https://www.evm.codes/#01).
+
+| Valor | Nemotecnia | δ | α | Descripción |
+| -----:| ---------- | - | - | --------------------------------------------------------- |
+| 0x01 | ADD | 2 | 1 | Operación de suma. |
+| | | | | _μ′s[0] ≡ μs[0] + μs[1]_ |
+
+_δ_ es la cantidad de valores que resaltamos de la pila. En este caso dos, porque estamos agregando los dos valores de la parte superior.
+
+_α_ es la cantidad de valores que enviamos de regreso. En este caso uno, la suma.
+
+Entonces la nueva parte superior de la pila (_μ′s[0]_) es la suma de la anterior parte superior de la pila (_μs[0]_) y el valor anterior debajo de esta (_μs[1]_).
+
+En lugar de repasar todos los códigos de operación con una "lista de ojos vidriosos", este artículo explica solo aquellos códigos de operación que introducen algo nuevo.
+
+| Valor | Nemotecnia | δ | α | Descripción |
+| -----:| ---------- | - | - | ---------------------------------------------------------------------------------------------------------- |
+| 0x20 | KECCAK256 | 2 | 1 | Computación del hash Keccak-256. |
+| | | | | _μ′s[0] ≡ KEC(μm[μs[0] . . . (μs[0] + μs[1] − 1)])_ |
+| | | | | _μ′i ≡ M(μi,μs[0],μs[1])_ |
+
+Este es el primer código de operación que accede a la memoria (en este caso, solo lectura). Sin embargo, podría expandirse más allá de los límites actuales de la memoria, por lo que necesitamos actualizar _μi._ Esto lo hacemos usando la función _M_, definida en la ecuación 328 de la p. 29.
+
+| Valor | Nemotecnia | δ | α | Descripción |
+| -----:| ---------- | - | - | -------------------------------------------- |
+| 0x31 | BALANCE | 1 | 1 | Obtener el saldo de la cuenta proporcionada. |
+| | | | | ... |
+
+La dirección cuyo saldo necesitamos encontrar es _μs[0] mod 2160_. La parte superior de la pila es la dirección, pero, debido a que las direcciones solo son de 160 bits, calculamos el valor [modulo](https://en.wikipedia.org/wiki/Modulo_operation)2160.
+
+Si _σ[μs[0] mod 2160] ≠ ∅_, significa que hay información sobre esta dirección. En ese caso, _σ[μs[0] mod 2160]b_ es el saldo de esa dirección. Si _σ[μs[0] mod 2160] = ∅_, significa que esta dirección no está inicializada y el saldo es cero. Puede ver el listado de campos de información de la cuenta en la sección 4.1 de la p. 4.
+
+La segunda ecuación, _A'a ≡ Aa ∪ {μs[0] mod 2160}_, está relacionada con la diferencia en costo entre el acceso al almacenamiento en caliente (almacenamiento al que se ha accedido recientemente y es probable que esté almacenado en caché) y el almacenamiento en frío (almacenamiento al que no se ha accedido y es probable que esté en almacenamiento más lento que es más caro de recuperar). _Aa_ es el listado de direcciones accesadas previamente por la transacción, que deberían por lo tanto ser más baratas de acceder, como se define en la sección 6.1 de la p. 8. Puede leer más sobre este tema en [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929).
+
+| Valor | Nemotecnia | δ | α | Descripción |
+| -----:| ---------- | -- | -- | -------------------------------------------- |
+| 0x8F | DUP16 | 16 | 17 | Duplicar el decimosexto elemento de la pila. |
+| | | | | _μ′s[0] ≡ μs[15]_ |
+
+Note que para usar cualquier elemento de la pila, necesitamos resaltarlo (pop), lo que significa que también necesitamos resaltar todos los elementos de la pila arriba de este. En el caso de [`DUP`](https://www.evm.codes/#8f) y [`SWAP`](https://www.evm.codes/#9f), esto significa tener que resaltar y después empujar hasta dieciséis valores.
+
+## 9.5. El ciclo de ejecución {#95-exec-cycle}
+
+Ahora que tenemos todas las partes, finalmente podemos comprender cómo el ciclo de ejecución de la EVM es documentado.
+
+La ecuación (155) dice que dado el estado:
+
+- _σ_ (estado de la cadena de bloques global)
+- _μ_ (estado de la EVM)
+- _A_ (subestado, cambios que sucederán cuando la transacción finaliza)
+- _I_ (entorno de ejecución)
+
+El nuevo estado es _(σ', μ', A', I')_.
+
+Las ecuaciones (156)-(158) definen la pila y el cambio en esta debido a un código de operación (_μs_). La ecuación (159) es el cambio en el gas (_μg_). La ecuación (160) es el cambio en el contador del programa (_μpc_). Finalmente, las ecuaciones (161)-(164) especifican que los otros parámetros permanecen iguales, a menos que sean explícitamente cambiados por el código de operación.
+
+Con esto, la EVM está completamente definida.
+
+## Conclusión {#conclusion}
+
+La notación matemática es precisa y permite que el Yellow Paper especifique cada detalle de Ethereum. Sin embargo, tiene algunas desventajas:
+
+- Solo puede ser comprendida por humanos, lo que implica que las [pruebas de cumplimiento](https://github.com/ethereum/tests) se deben escribir manualmente.
+- Los programadores comprenden el código computacional. Pueden comprender o no la notación matemática.
+
+Quizá por estas razones, las nuevas [especificaciones de capas de consenso](https://github.com/ethereum/consensus-specs/blob/dev/tests/core/pyspec/README.md) están escritas en Python. Hay [especificaciones de capas de ejecución en Python](https://ethereum.github.io/execution-specs), pero no están completas. Hasta y a menos que todo el Yellow Paper también se traduzca a Python o un lenguaje similar, el Yellow Paper continuará en servicio y es útil saber leerlo.
diff --git a/public/content/translations/es/foundation/index.md b/public/content/translations/es/foundation/index.md
index 4af3d7b22e9..6c26e088a0c 100644
--- a/public/content/translations/es/foundation/index.md
+++ b/public/content/translations/es/foundation/index.md
@@ -27,7 +27,7 @@ Desde 2014, Ethereum Foundation ha organizado Devcon, la conferencia anual para
Puede acceder al contenido en vídeo de las presentaciones de la conferencia para cada año desde su inicio en el [sitio](https://archive.devcon.org/).
-Obtenga más información en [devcon.org](https://devcon.org/), consulte el blog [Devcon](https://blog.ethereum.org/category/devcon/), o siga [@efdevcon](https://twitter.com/EFDevcon) para ver los últimos anuncios.
+Obtenga más información en [devcon.org](https://devcon.org/), consulte el blog [Devcon](https://blog.ethereum.org/category/events/), o siga [@efdevcon](https://twitter.com/EFDevcon) para ver los últimos anuncios.
### Programa de becas {#fellowship-program}
diff --git a/public/content/translations/es/roadmap/beacon-chain/index.md b/public/content/translations/es/roadmap/beacon-chain/index.md
index b6d69f37bed..5ddcfc4318a 100644
--- a/public/content/translations/es/roadmap/beacon-chain/index.md
+++ b/public/content/translations/es/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ Cadena de baliza es el nombre que se le ha dado a un libro mayor de cuentas que
La cadena de baliza introdujo la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en Ethereum. Esta mantiene la seguridad de Ethereum y permite a los validadores obtener más ETH en el proceso. En la práctica, la participación supone comprometer ETH para poder activar el software de validación. Como participante, se encargará de ejecutar el software que crea y valida los nuevos bloques de la cadena.
-La participación cumple un propósito similar al que solía realizar la [minería](/developers/docs/mining/), pero con muchas diferencias entre ambos. La minería requería de una inversión inicial significativa destinada a la adquisición de un productivo hardware y a cubrir los gastos de consumo energético, lo que derivó en economías de escala y en la promoción de la centralización. La minería tampoco requería la retención de activos colaterales, lo que limitaba los alcances del protocolo a castigar las acciones incorrectas solo tras un ataque.
+La participación cumple un propósito similar al que solía realizar la [minería](/developers/docs/consensus-mechanisms/pow/mining/), pero con muchas diferencias entre ambos. La minería requería de una inversión inicial significativa destinada a la adquisición de un productivo hardware y a cubrir los gastos de consumo energético, lo que derivó en economías de escala y en la promoción de la centralización. La minería tampoco requería la retención de activos colaterales, lo que limitaba los alcances del protocolo a castigar las acciones incorrectas solo tras un ataque.
La transición de Ethereum a la prueba de participación hace que la red sea significativamente más segura y descentralizada en comparación con la prueba de trabajo. Cuantas más personas participan en la red, más descentralizada y menos segura frente a ataques se vuelve.
diff --git a/public/content/translations/es/roadmap/index.md b/public/content/translations/es/roadmap/index.md
index db36ca332d1..10484a27d80 100644
--- a/public/content/translations/es/roadmap/index.md
+++ b/public/content/translations/es/roadmap/index.md
@@ -61,7 +61,7 @@ Ethereum se actualiza periódciamente para mejorar su escalabilidad, seguridad o
La hoja de ruta es principalmente el resultado de años de trabajo de investigadores y desarrolladores, dado que el protocolo es muy técnico. No obstante cualquier persona motivada puede participar. Las ideas usualmente empiezan como discusiones en un foro del estilo [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://ethereum-magicians.org/) o el servidor de Discord de Eth. Pueden haber respuestas a nuevos puntos flacos que se descubren, sugerencias de organizaciones que trabajan en la capa de aplicaciones (como DApps e intercambios) o disuasiones conocidas para los usuarios finales (como costes o velocidades de transacción). Cuando estas ideas maduren, se pueden proponer como [propuestas de mejora de Ethereum o EIP] (https://eips.ethereum.org/). Todo esto se hace en público para que cualquier persona de la comunidad pueda intervenir en cualquier momento.
-[Más información sobre la gobernanza de Ethereum](/gobernanza/)
+[Más información sobre la gobernanza de Ethereum](/governance/)
diff --git a/public/content/translations/es/roadmap/single-slot-finality/index.md b/public/content/translations/es/roadmap/single-slot-finality/index.md
index 14aa0f70c0a..46691d6951e 100644
--- a/public/content/translations/es/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/es/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ La agregación de escalabilidad aumentando el número de validadores por subred
## Progreso actual {#current-progress}
-SSF está en su fase de investigación. No se espera que se lance en varios años, probablemente después de mejoras sustanciales como [árboles de Verkle](/roadmap/verkle-trees/)y[Danksharding](/roadmap/danksharding]).
+SSF está en su fase de investigación. No se espera que se lance en varios años, probablemente después de mejoras sustanciales como [árboles de Verkle](/roadmap/verkle-trees/)y[Danksharding](/roadmap/danksharding/).
## Más información {#further-reading}
diff --git a/public/content/translations/es/zero-knowledge-proofs/index.md b/public/content/translations/es/zero-knowledge-proofs/index.md
index 7c3355f6aa7..5dd6b4331ba 100644
--- a/public/content/translations/es/zero-knowledge-proofs/index.md
+++ b/public/content/translations/es/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Introducción no técnica a pruebas de conocimiento cero para princ
lang: es
---
-## ¿Qué son las pruebas de conocimiento cero? {#what-are-zk-proofs}
+# ¿Qué son las pruebas de conocimiento cero? {#what-are-zk-proofs}
Una prueba de conocimiento cero es una forma de probar la validez de una sentencia sin revelar la sentencia en sí. El "probador" (también conocido como tirador de pruebas) es la parte que intenta probar o demostrar una afirmación, mientras que el "verificador" es el responsable de validarla.
diff --git a/public/content/translations/fa/community/code-of-conduct/index.md b/public/content/translations/fa/community/code-of-conduct/index.md
index cfea8ebd12e..50c1b45311f 100644
--- a/public/content/translations/fa/community/code-of-conduct/index.md
+++ b/public/content/translations/fa/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: استانداردهای اصلی که ما در کل فضای ethe
lang: fa
---
+# آییننامه رفتاری {#conduct-intro}
+
## مأموریت {#mission}
توسعه و حفظ جامعترین و دسترسپذیرترین مرکز دانش برای شبکۀ اتریوم.
diff --git a/public/content/translations/fa/community/events/index.md b/public/content/translations/fa/community/events/index.md
index 42452e9287c..373618a54a3 100644
--- a/public/content/translations/fa/community/events/index.md
+++ b/public/content/translations/fa/community/events/index.md
@@ -5,7 +5,7 @@ lang: fa
hideEditButton: true
---
-## رویدادهای پیشرو {#events}
+# رویدادهای پیشرو {#events}
**هر ماه، رویدادهای مهم اتریوم در سرتاسر جهان برگزار میشود.** شرکت در یکی از رویدادهای نزدیک به خود را در نظر داشته باشید تا با افراد بیشتری در جامعه آشنا شوید، درباره فرصتهای شغلی اطلاع کسب کنید و مهارتهای جدید را توسعه دهید.
diff --git a/public/content/translations/fa/developers/docs/nodes-and-clients/index.md b/public/content/translations/fa/developers/docs/nodes-and-clients/index.md
index cef246b9782..04ecebd6da6 100644
--- a/public/content/translations/fa/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/fa/developers/docs/nodes-and-clients/index.md
@@ -233,8 +233,6 @@ Erigon که قبلاً به عنوان Erigon شناخته میشد، یک ف
`geth --syncmode "light"`
-برای جزئیات بیشتر آموزش [اجرای گرهی سبک geth](/developers/tutorials/run-light-node-geth/) را مشاهده کنید.
-
**تنظیم همگامسازی کامل با آرشیو در [Besu](https://besu.hyperledger.org/)**
`besu --sync-mode=FULL`
@@ -312,5 +310,4 @@ Erigon که قبلاً به عنوان Erigon شناخته میشد، یک ف
## آموزشهای مرتبط {#related-tutorials}
-- [اجرای یک گره با geth](/developers/tutorials/run-light-node-geth/) _- چگونه geth را بارگیری، نصب و اجرا کنیم. Covering syncmodes, the JavaScript console, and more._
- [Raspberry Pi 4 خود را فقط با اتصال کارت MicroSD به یک گرهی اعتبارسنج تبدیل کنید - راهنمای نصب](/developers/tutorials/run-node-raspberry-pi/) _- Raspberry Pi 4 خود را متصل کنید، یک کابل اترنت وصل کنید، دیسک SSD را وصل کنید و دستگاه را روشن کنید تا Raspberry Pi 4 را به یک گرهی کامل اتریوم که لایهی اجرا (شبکهی اصلی) و / یا لایهی اجماع (زنجیرهی بیکن / اعتبارسنج) را اجرا میکند تبدیل کنید._
diff --git a/public/content/translations/fa/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/fa/developers/docs/nodes-and-clients/run-a-node/index.md
index c983032e2c3..a39b8e4a4c5 100644
--- a/public/content/translations/fa/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/fa/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -88,7 +88,7 @@ If you're new to the topic of running a node, or looking for a less technical pa
- زمان و تاریخ سیستم درست است.
- روتر و فایروال شما اتصالات را در پورتهای شنونده (listening ports) میپذیرند. به طور پیشفرض کلاینتهای اتریوم از یک پورت شنونده (TCP) و یک پورت یابنده (UDP) که هر دو بهطور پیشفرض روی 30303 هستند استفاده میکنند.
-کلاینت خود را ابتدا روی شبکهی تست اجرا کنید تا مطمئن شوید که همهچیز بهدرستی کار میکند. [اجرای یک گره سبک geth](/developers/tutorials/run-light-node-geth/) باید کارگشا باشد. شما باید هرگونه تنظیمات کلاینت که به صورت پیشفرض وجود ندارند را در ابتدا مشخص کنید. میتوانید از پرچمها و فایلهای پیکربندی برای مشخص کردن پیکربندی موردنظر استفاده کنید. برای اطلاع از جزئیات، مستندات کلاینت خود را بررسی کنید. اجرای کلاینت، توابع اصلی، نقاط پایانی انتخاب شده و جستجوی همتایان را آغاز میکند. پس از یافتن موفق همتایان، کلاینت شروع به همگامسازی میکند. دادهی کنونی زنجیرهی بلوکی زمانی آماده خواهد بود که کلاینت بهطور موفقیتآمیز با وضعیت فعلی همگامسازی کرده باشد.
+کلاینت خود را ابتدا روی شبکهی تست اجرا کنید تا مطمئن شوید که همهچیز بهدرستی کار میکند. اجرای یک گره سبک geth باید کارگشا باشد. شما باید هرگونه تنظیمات کلاینت که به صورت پیشفرض وجود ندارند را در ابتدا مشخص کنید. میتوانید از پرچمها و فایلهای پیکربندی برای مشخص کردن پیکربندی موردنظر استفاده کنید. برای اطلاع از جزئیات، مستندات کلاینت خود را بررسی کنید. اجرای کلاینت، توابع اصلی، نقاط پایانی انتخاب شده و جستجوی همتایان را آغاز میکند. پس از یافتن موفق همتایان، کلاینت شروع به همگامسازی میکند. دادهی کنونی زنجیرهی بلوکی زمانی آماده خواهد بود که کلاینت بهطور موفقیتآمیز با وضعیت فعلی همگامسازی کرده باشد.
### استفاده از کلاینت {#using-the-client}
diff --git a/public/content/translations/fa/roadmap/beacon-chain/index.md b/public/content/translations/fa/roadmap/beacon-chain/index.md
index 522f695b3ed..ae979013f93 100644
--- a/public/content/translations/fa/roadmap/beacon-chain/index.md
+++ b/public/content/translations/fa/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ summaryPoint3: زنجیره بیکن منطق اجماع و پروتکل شای
زنجیره بیکن [اثبات سهام](/developers/docs/consensus-mechanisms/pos/) را برای اولین بار به اتریوم وارد کرد. این زنجیره شبکۀ اتریوم را امن نگه میدارد و در این فرایند، اعتبار اتریوم بیشتری را به اعتبارسنجها میرساند. در عمل، سهامگذاری شامل سهامگذاری روی اتریوم به منظور فعال کردن نرمافزار اعتبارسنج است. شما به عنوان یک سهامگذار، نرمافزاری را اجرا میکنید که بلوکهای جدیدی را در زنجیره ایجاد و تأیید میکند.
-سهامگذاری هدفی مشابه با [استخراج (ماینینگ)](/developers/docs/mining/) دارد، اما از بسیاری جهات متفاوت است. استخراج نیاز به سرمایۀ اولیۀ زیادی در قالب سختافزار قدرتمند و مصرف انرژی داشت که منجر به صرفه به مقیاس (مزیت مقیاس) و افزایش متمرکزسازی میشد. ضمناً، استخراج هیچ الزامی برای قفل کردن داراییها به عنوان وثیقه نداشت و همین، توانایی پروتکل را برای مجازات نقشآفرینان بدکار پس از حمله محدود میکرد.
+سهامگذاری هدفی مشابه با [استخراج (ماینینگ)](/developers/docs/consensus-mechanisms/pow/mining/) دارد، اما از بسیاری جهات متفاوت است. استخراج نیاز به سرمایۀ اولیۀ زیادی در قالب سختافزار قدرتمند و مصرف انرژی داشت که منجر به صرفه به مقیاس (مزیت مقیاس) و افزایش متمرکزسازی میشد. ضمناً، استخراج هیچ الزامی برای قفل کردن داراییها به عنوان وثیقه نداشت و همین، توانایی پروتکل را برای مجازات نقشآفرینان بدکار پس از حمله محدود میکرد.
جایگزینی اثبات سهام به جای اثبات کار، اتریوم را به طور قابل توجهی امنتر و غیرمتمرکزتر کرد. هرچه افراد بیشتری در شبکه شرکت کنند، غیرمتمرکزتر و در برابر حملات امنتر میشود.
diff --git a/public/content/translations/fa/roadmap/single-slot-finality/index.md b/public/content/translations/fa/roadmap/single-slot-finality/index.md
index 29e512c006e..9c4601bb66a 100644
--- a/public/content/translations/fa/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/fa/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ lang: fa
## پیشرفت فعلی {#current-progress}
-SSF در مرحله تحقیقاتی است. انتظار نمیرود تا چندین سال آتی تحقق یابد، و احتمالاً باید ابتدا ارتقاهای اساسی دیگر مانند [درختان ورکل](/roadmap/verkle-trees/) و [Danksharding](/roadmap/danksharding]) را پشت سر گذاشت.
+SSF در مرحله تحقیقاتی است. انتظار نمیرود تا چندین سال آتی تحقق یابد، و احتمالاً باید ابتدا ارتقاهای اساسی دیگر مانند [درختان ورکل](/roadmap/verkle-trees/) و [Danksharding](/roadmap/danksharding/) را پشت سر گذاشت.
## بیشتر بخوانید {#further-reading}
diff --git a/public/content/translations/fa/zero-knowledge-proofs/index.md b/public/content/translations/fa/zero-knowledge-proofs/index.md
index 0859706939d..1df97ca54b6 100644
--- a/public/content/translations/fa/zero-knowledge-proofs/index.md
+++ b/public/content/translations/fa/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: یک مقدمه غیرتخصصی درباره اثبات دانش
lang: fa
---
-## اثبات دانش صفر چیست؟ {#what-are-zk-proofs}
+# اثبات دانش صفر چیست؟ {#what-are-zk-proofs}
اثبات دانش صفر، روشی برای اثبات اعتبار یک گزاره بدون افشای خود گزاره است. «ثابت کننده» طرفی است که تلاش می کند ادعایی را ثابت کند، در حالی که «تایید کننده» مسئولیت تایید آن ادعا را دارد.
diff --git a/public/content/translations/fil/zero-knowledge-proofs/index.md b/public/content/translations/fil/zero-knowledge-proofs/index.md
index d0f39b461e5..64f9df3aa6c 100644
--- a/public/content/translations/fil/zero-knowledge-proofs/index.md
+++ b/public/content/translations/fil/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Isang hindi teknikal na panimula sa mga zero-knowledge proof para s
lang: fil
---
-## Ano ang mga zero-knowledge proof? {#what-are-zk-proofs}
+# Ano ang mga zero-knowledge proof? {#what-are-zk-proofs}
Ang zero-knowledge proof ay isang paraan para patunayan ang validity ng isang pahayag nang hindi ipinapakita ang mismong pahayag. Ang ‘prover’ ang partidong sumusubok na patunayan ang isang pahayag, samantalang ang ‘verifier’ ang responsable sa pag-validate ng claim.
diff --git a/public/content/translations/fr/community/code-of-conduct/index.md b/public/content/translations/fr/community/code-of-conduct/index.md
index 91eb91d9bea..05c07e6c81e 100644
--- a/public/content/translations/fr/community/code-of-conduct/index.md
+++ b/public/content/translations/fr/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Les normes de base que nous nous efforçons de respecter dans les e
lang: fr
---
+# Code de conduite {#conduct-intro}
+
## Mission {#mission}
Développer et maintenir le centre de connaissances le plus complet et le plus accessible pour Ethereum.
diff --git a/public/content/translations/fr/community/events/index.md b/public/content/translations/fr/community/events/index.md
index 4de2ddda52f..e149ee771b1 100644
--- a/public/content/translations/fr/community/events/index.md
+++ b/public/content/translations/fr/community/events/index.md
@@ -5,7 +5,7 @@ lang: fr
hideEditButton: true
---
-## Évènements à venir {#events}
+# Évènements à venir {#events}
**Chaque mois, il y a des événements Ethereum majeurs dans le monde entier.** Envisagez d'assister à un événement près de chez vous pour rencontrer plus de personnes dans la communauté, en savoir plus sur les opportunités d'emploi et développer de nouvelles compétences.
diff --git a/public/content/translations/fr/community/get-involved/index.md b/public/content/translations/fr/community/get-involved/index.md
index e55e1e06f64..66dd715d425 100644
--- a/public/content/translations/fr/community/get-involved/index.md
+++ b/public/content/translations/fr/community/get-involved/index.md
@@ -135,4 +135,4 @@ Les « DAO » sont des organisations autonomes décentralisées. Ces groupes t
- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) - _Communauté axée sur le financement du développement d'Ethereum_
- [Guilde Raid](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) - _Collectif de constructeurs Web3_
-À chaque fois et quelle que soit la façon dont vous contribuez à ethereum.org, pensez à respecter le [code de conduite](/community/code-of-conduct) !
+À chaque fois et quelle que soit la façon dont vous contribuez à ethereum.org, pensez à respecter le [code de conduite](/community/code-of-conduct)!
diff --git a/public/content/translations/fr/community/online/index.md b/public/content/translations/fr/community/online/index.md
index 08dd5672228..9173adbe6f6 100644
--- a/public/content/translations/fr/community/online/index.md
+++ b/public/content/translations/fr/community/online/index.md
@@ -27,10 +27,10 @@ Des centaines de milliers de passionnés d'Ethereum se rassemblent sur ces forum
Le serveur Discord d'EthStaker - orientation par la communauté, éducation, soutien et ressources pour les stakeurs et stakeurs potentiels.Équipe du site web Ethereum.org - consultez et discutez du développement et du design du site web ethereum.org avec l'équipe et les membres de la communautéDiscord Matos - Communauté de créateurs Web3 où les bâtisseurs, les chefs de file industriels et les passionnés d'Ethereum se rencontrent. Nous sommes passionnés par le développement du Web3, sa conception et sa culture. Venez le bâtir avec nous.
-Solidity Gitter - forum de discussion pour le développement Solidity (Gitter)
+Solidity Gitter - forum de discussion pour le développement Solidity (Gitter)Solidity Matrix - forum de discussion pour le développement Solidity (Matrix)
-Ethereum Stack Exchange _- forum de questions-réponses_
-Peeranha _- forum de questions-réponses décentralisé_
+Ethereum Stack Exchange *- forum de questions-réponses*
+Peeranha *- forum de questions-réponses décentralisé*
## YouTube et Twitter {#youtube-and-twitter}
diff --git a/public/content/translations/fr/community/research/index.md b/public/content/translations/fr/community/research/index.md
index 2154590bce4..eb0c091273b 100644
--- a/public/content/translations/fr/community/research/index.md
+++ b/public/content/translations/fr/community/research/index.md
@@ -40,9 +40,9 @@ Outre les recherches prospectives, certaines refontes fondamentales du protocole
#### Lectures de référence {#background-reading}
- [Introduction à la preuve d'enjeu](/developers/docs/consensus-mechanisms/pos/)
-- [Papier sur Casper-FFG](https://arxiv.org/abs/1710.09437)
+- [Article sur Casper-FFG](https://arxiv.org/abs/1710.09437)
- [Casper-FFG expliqué](https://arxiv.org/abs/1710.09437)
-- [Papier sur Gasper](https://arxiv.org/abs/2003.03052)
+- [Article sur Gasper](https://arxiv.org/abs/2003.03052)
#### Recherche récente {#recent-research}
@@ -124,7 +124,7 @@ Un domaine particulier de la couche 2 qui nécessite davantage de recherche et d
- [Introduction aux ponts blockchain](/bridges/)
- [Vitalik à propos des ponts](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
- [Article sur les ponts entre blockchain](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8)
-- [Valeur en caution dans les ponts]()
+- [Valeur en caution dans les ponts](https://dune.com/eliasimos/Bridge-Away-(from-Ethereum))
#### Recherche récente {#recent-research-3}
@@ -346,7 +346,6 @@ Les outils destinés aux développeurs Ethereum s'améliorent rapidement. Il y a
- [Frameworks pour développeurs](/developers/docs/frameworks/)
- [Liste d'outils pour développeurs de consensus](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Normes de jetons](/developers/docs/standards/tokens/)
-- [Biastek : Outils Ethereum](https://biastek.com/ethereum-tools/)
- [CryptoDevHub : Outils EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
#### Recherche récente {#recent-research-17}
diff --git a/public/content/translations/fr/community/support/index.md b/public/content/translations/fr/community/support/index.md
index 34f8e9ab023..d2370c1d0a0 100644
--- a/public/content/translations/fr/community/support/index.md
+++ b/public/content/translations/fr/community/support/index.md
@@ -30,7 +30,7 @@ Vous rencontrez un problème avec votre portefeuille ? La plupart des portefeuil
- [Argent](https://support.argent.xyz/hc/)
- [MyEtherWallet](https://help.myetherwallet.com/)
-_Cette liste est non-exhaustive. Vous avez besoin d'aide pour trouver l'assistance pour un portefeuille spécifique ? Rejoignez le [Discord Ethereum.org](https://discord.gg/ethereum-org) et nous essaierons de vous aider._
+_Cette liste est non-exhaustive. Vous avez besoin d'aide pour trouver l'assistance pour un portefeuille spécifique ? Rejoignez le [Discord ethereum.org](https://discord.gg/ethereum-org) et nous tenterons de vous aider._
Vous êtes à la recherche d'un portefeuille Ethereum ? [Explorez notre liste complète de portefeuilles Ethereum](/wallets/find-wallet/).
@@ -39,7 +39,7 @@ Vous êtes à la recherche d'un portefeuille Ethereum ? [Explorez notre liste co
Le développement d'une application décentralisée peut être difficile. Voici quelques espaces axés sur leur création, avec des développeurs Ethereum chevronnés qui seront heureux de vous faire part de leur expérience.
- [Alchemy University](https://university.alchemy.com/#starter_code)
-- [Discord CryptoDevs](https://discord.gg/Z9TA39m8Yu)
+- [Discord CryptoDevs](https://discord.com/invite/5W5tVb3)
- [StackExchange Ethereum](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Web3 University](https://www.web3.university/)
@@ -53,7 +53,7 @@ Votre question concerne un outil, un projet ou une bibliothèque en particulier
Voici quelques exemples connus :
-- [Solidity](https://gitter.im/ethereum/solidity)
+- [Solidity](https://gitter.im/ethereum/solidity/)
- [ethers.js](https://discord.gg/6jyGVDK6Jx)
- [web3.js](https://discord.gg/GsABYQu4sC)
- [Hardhat](https://discord.gg/xtrMGhmbfZ)
diff --git a/public/content/translations/fr/contributing/adding-products/index.md b/public/content/translations/fr/contributing/adding-products/index.md
index f6fcea1276d..e31a56004ef 100644
--- a/public/content/translations/fr/contributing/adding-products/index.md
+++ b/public/content/translations/fr/contributing/adding-products/index.md
@@ -17,8 +17,8 @@ Les Dapps sont actuellement listés sur:
Bien que nous appréciions les nouveaux ajouts, nous avons choisi les DApps actuelles en fonction d'une expérience que nous essayons de créer pour nos utilisateurs. Ceux-ci sont basés sur certains de nos principes de conception :
-- *Inspirant* : tout ce qui est sur ethereum.org devrait offrir quelque chose de nouveau aux utilisateurs
-- *Une bonne histoire* : ce qui est répertorié devrait entraîner un moment de révélation (ah, ah !)
+- _Inspirant_ : tout ce qui est sur ethereum.org devrait offrir quelque chose de nouveau aux utilisateurs
+- _Une bonne histoire_ : ce qui est répertorié devrait entraîner un moment de révélation (ah, ah !)
- _Crédible_ : toutes les entreprises/projets doivent être légitimes pour minimiser les risques pour les utilisateurs
Dans l’ensemble, **ethereum.org souhaite offrir une « expérience d’intégration transparente » aux nouveaux utilisateurs**. C'est pourquoi nous ajoutons des DApps en fonction de leur :
diff --git a/public/content/translations/fr/contributing/adding-staking-products/index.md b/public/content/translations/fr/contributing/adding-staking-products/index.md
index fe82d04eb29..8bd43e65139 100644
--- a/public/content/translations/fr/contributing/adding-staking-products/index.md
+++ b/public/content/translations/fr/contributing/adding-staking-products/index.md
@@ -87,7 +87,7 @@ Pour tout logiciel personnalisé ou contrat intelligent impliqué :
Pour les produits logiciels liés à la configuration de nœuds ou de clients, la gestion ou la migration :
-**Quels clients de la couche de consensus (c'est-à-dire Lighthouse, Teku, Nimbus, Prysm) sont pris en charge ?**
+**Quels clients de la couche de consensus (c'est-à-dire Lighthouse, Teku, Nimbus, Prysm) sont pris en charge ?**
- Quels sont les clients pris en charge ? L'utilisateur peut-il choisir ?
- Ceci est utilisé pour déterminer le score « multi-client » des produits.
diff --git a/public/content/translations/fr/contributing/design-principles/index.md b/public/content/translations/fr/contributing/design-principles/index.md
index 91a15553b8f..39c9c3ad4e6 100644
--- a/public/content/translations/fr/contributing/design-principles/index.md
+++ b/public/content/translations/fr/contributing/design-principles/index.md
@@ -90,4 +90,4 @@ Vous pouvez voir nos principes de conception en action [dans l'ensemble de notre
Bien que ces principes soient axés sur le site web ethereum.org, nous espérons que beaucoup d'entre eux sont représentatifs des valeurs de l'écosystème Ethereum dans son ensemble (par exemple, vous pouvez voir l'influence des [principes du livre blanc Ethereum](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy)). Peut-être voudrez-vous même incorporer certains d'entre eux dans votre propre projet !
-Faites-nous part de vos réflexions sur le [serveur Discord](https://discord.gg/ethereum-org) ou en [créant un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.md&title=).
+Faites-nous part de vos commentaires sur le [serveur Discord](https://discord.gg/ethereum-org) ou en [créant un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=).
diff --git a/public/content/translations/fr/contributing/design/adding-design-resources/index.md b/public/content/translations/fr/contributing/design/adding-design-resources/index.md
index 9ed41c42376..3643266e869 100644
--- a/public/content/translations/fr/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/fr/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Directives et exigences pour garantir la qualité des matériaux de
lang: fr
---
+# Ajout de ressources de conception {#adding-design-resources}
+
Toute personne peut suggérer de nouveaux matériaux de conception à la page [Design et UX dans le web3](/developers/docs/design-and-ux/).
Il est important de noter que l'objectif de cette page est de fournir une aide aux utilisateurs aspirant à devenir des concepteurs web3. Cette section n'est pas destinée à faire la publicité de vos services, produits ou plateformes.
diff --git a/public/content/translations/fr/contributing/design/index.md b/public/content/translations/fr/contributing/design/index.md
index bd19a4231e6..222e53fbbf3 100644
--- a/public/content/translations/fr/contributing/design/index.md
+++ b/public/content/translations/fr/contributing/design/index.md
@@ -12,7 +12,7 @@ Finalement, c'est une excellente façon de construire un portfolio diversifié e
## Comment contribuer ?
-### Fournir des commentaires sur les prototypes de conception {#design-critique}
+### Fournir des commentaires sur les prototypes de conception {#design-critique}
Nous avons parfois besoin d'aide pour tester nos nouveautés. C'est une excellente manière de contribuer sans avoir de connaissances techniques.
@@ -20,7 +20,7 @@ Nous avons parfois besoin d'aide pour tester nos nouveautés. C'est une excellen
2. Vous serez guidé à travers les conceptions pour fournir des commentaires via la fonction de commentaires.
3. Le résultat sera partagé dans une demande GitHub puis fermé par l'équipe.
-### Participer à des enquêtes de recherche {#answer-surveys}
+### Participer à des enquêtes de recherche {#answer-surveys}
Fournir des commentaires sur notre site web en :
@@ -28,7 +28,7 @@ Fournir des commentaires sur notre site web en :
2. Cliquant sur le bouton de commentaire dans le coin inférieur droit et en répondant aux questions liées à la conception et au contenu.
3. Se concentrer sur les questions de format libre.
-### Trouver des problèmes liés à la conception du site web et les signaler {#report-design-issues}
+### Trouver des problèmes liés à la conception du site web et les signaler {#report-design-issues}
Ethereum.org est un site web en rapide croissance avec de nombreuses fonctionnalités et contenus. Certaines des interfaces utilisateur peuvent facilement devenir obsolètes ou pourraient être améliorées. Si vous rencontrez un tel cas, veuillez le signaler afin que nous y portions notre attention.
@@ -36,7 +36,7 @@ Ethereum.org est un site web en rapide croissance avec de nombreuses fonctionnal
2. Prenez des captures d'écran et des notes si vous voyez des problèmes visuels ou d'expérience utilisateur.
3. Signalez les problèmes trouvés en utilisant un [rapport de bug](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Proposez des modifications de conception {#propose-design-changes}
+### Proposez des modifications de conception {#propose-design-changes}
Si vous en avez l'envie, vous pouvez relever des défis de conception. Visitez notre tableau des problèmes sur GitHub et opérez un filtrage pour les [problèmes liés à la conception](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
@@ -45,7 +45,7 @@ Si vous en avez l'envie, vous pouvez relever des défis de conception. Visitez n
3. Proposez la solution dans le problème correspondant sur GitHub ou [créez-en une nouvelle.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
4. Attendez que l'équipe de conception l'examine.
-### Construisons le système de conception ensemble {#Contribute-to-design-system}
+### Construisons le système de conception ensemble {#Contribute-to-design-system}
Notre système de concep rend la conception d'ethereum.org amusante et facile. Si vous êtes un concepteur expérimenté, vous pouvez nous aider à préparer de nombreux composants pour le site web.
@@ -56,7 +56,7 @@ Notre système de concep rend la conception d'ethereum.org amusante et facile. S
5. L'équipe de conception examinera votre travail.
6. L'équipe de conception intégrera les modifications dans le fichier principal et publiera le fichier pour la communauté.
-### Rédigez du contenu lié à la conception sur le site web {#write-design-articles}
+### Rédigez du contenu lié à la conception sur le site web {#write-design-articles}
La communauté des développeurs Ethereum est solide, mais la communauté des designers est un peu à la traîne. Si vous êtes un concepteur avec des connaissances en web3, envisagez de partager vos découvertes avec toute la communauté afin que nous puissions tous grandir et nous améliorer ensemble ; nous avons [une page sur la conception pour Ethereum](/developers/docs/design-and-ux/) à laquelle vous pouvez contribuer. Vous pouvez également consulter nos [politiques de référencement](/contributing/design/adding-design-resources).
@@ -66,7 +66,7 @@ La communauté des développeurs Ethereum est solide, mais la communauté des de
4. Une fois approuvé, rédigez le contenu.
5. Soumettez-le dans le problème GH correspondant.
-### Dessinez de nouvelles illustrations {#prepare-illustrations}
+### Dessinez de nouvelles illustrations {#prepare-illustrations}
Les images sont l'un des outils les plus puissants pour expliquer des sujets abstraits. Il y a un énorme potentiel en ajoutant des diagrammes et des infographies. Après tout, une image vaut mille mots.
diff --git a/public/content/translations/fr/contributing/index.md b/public/content/translations/fr/contributing/index.md
index ca7e5aed895..9db59b88e54 100644
--- a/public/content/translations/fr/contributing/index.md
+++ b/public/content/translations/fr/contributing/index.md
@@ -32,7 +32,7 @@ Le site ethereum.org, comme Ethereum plus largement, est un projet open source.
- [Quizz](/contributing/quizzes/) _- Ajoutez, mettez à jour et supprimez des banques de questions de quiz pour une page pertinente_
- [Suggérer une ressource de design](/contributing/design/adding-design-resources/) _- Ajoutez, mettez à jour et supprimez des ressources de design utiles_
-_Une question ?_ 🤔 Rejoignez-nous sur notre [serveur Discord](https://discord.gg/ethereum-org)
+_Des questions ? _ 🤔 Contactez nous sur notre [serveur Discord](https://discord.gg/ethereum-org).
## Comment travailler sur ethereum.org {#how-to-update-content}
@@ -43,7 +43,7 @@ Toutes les mises à jour sont faites sur GitHub via le processus de demande d'ex
Vous n'avez pas besoin d'autorisation pour travailler sur quoi que ce soit, mais il est toujours préférable de nous faire savoir ce que vous prévoyez de faire. Pour ce faire, vous pouvez :
- commenter un ticket ou une PR sur [GitHub](https://github.com/ethereum/ethereum-org-website) ; ou
-- nous envoyer un message sur notre [serveur Discord](https://discord.gg/ethereum-org).
+- Laissez un message sur notre [serveur Discord](https://discord.gg/ethereum-org)
Avant de contribuer, assurez-vous que vous connaissez bien :
diff --git a/public/content/translations/fr/contributing/translation-program/how-to-translate/index.md b/public/content/translations/fr/contributing/translation-program/how-to-translate/index.md
index 19c3eb5b442..a971d324d24 100644
--- a/public/content/translations/fr/contributing/translation-program/how-to-translate/index.md
+++ b/public/content/translations/fr/contributing/translation-program/how-to-translate/index.md
@@ -18,7 +18,7 @@ Pour les apprenants plus visuels, regardez la vidéo de Luka qui présente le pa
Vous devrez vous connecter à votre compte Crowdin ou vous inscrire si vous n'avez pas encore de compte. Tout ce qui est nécessaire pour vous inscrire est un compte de messagerie et un mot de passe.
-
+
Rejoindre le projet
diff --git a/public/content/translations/fr/contributing/translation-program/index.md b/public/content/translations/fr/contributing/translation-program/index.md
index e9a74f01123..e8eb4012849 100644
--- a/public/content/translations/fr/contributing/translation-program/index.md
+++ b/public/content/translations/fr/contributing/translation-program/index.md
@@ -22,7 +22,7 @@ Le programme de traduction d'ethereum.org est ouvert et n'importe qui peut y con
_Rejoignez [ethereum.org Discord](/discord/) pour collaborer aux traductions, poser des questions, partager des commentaires et des idées, ou rejoindre un groupe de traduction._
-
+
Commencez à traduire
@@ -36,8 +36,8 @@ En savoir plus sur [la mission et la vision](/contributing/translation-program/m
### Les progrès réalisés jusqu'à présent {#our-progress}
-- [**5,100 +** traducteurs](/contributing/translation-program/contributors/)
-- [**54** langues présentes sur le site](/languages/)
+- [**5 600+** traducteurs](/contributing/translation-program/contributors/)
+- [**62** langues en direct sur le site](/languages/)
- [**3 millions** de mots traduits en 2022](/contributing/translation-program/acknowledgements/)
diff --git a/public/content/translations/fr/contributing/translation-program/translators-guide/index.md b/public/content/translations/fr/contributing/translation-program/translators-guide/index.md
index cf24ac277a5..28ef43c259a 100644
--- a/public/content/translations/fr/contributing/translation-program/translators-guide/index.md
+++ b/public/content/translations/fr/contributing/translation-program/translators-guide/index.md
@@ -10,7 +10,7 @@ Le guide de style pour la traduction d'ethereum.org contient les principales rec
Ce document sert de guide général et n'est spécifique à aucune langue.
-Si vous avez des questions, des suggestions ou des commentaires, n'hésitez pas à nous contacter à l'adresse translations@ethereum.org, à envoyer un message à @ethdotorg sur Crowdin ou à [rejoindre notre serveur Discord](https://discord.gg/ethereum-org), où vous pourrez nous envoyer un message dans le salon #translations ou contacter l'un des membres de l'équipe.
+Si vous avez des questions, des suggestions ou des commentaires, n'hésitez pas à nous contacter à l'adresse translations@ethereum.org, à envoyer un message à @ethdotorg sur Crowdin ou à [rejoindre notre serveur Discord](https://discord.gg/ethereum-org), où vous pourrez nous envoyer un message dans le canal #translations ou contacter l'un des membres de l'équipe.
## Utiliser Crowdin {#using-crowdin}
diff --git a/public/content/translations/fr/deprecated-software/index.md b/public/content/translations/fr/deprecated-software/index.md
deleted file mode 100644
index 89a987b180a..00000000000
--- a/public/content/translations/fr/deprecated-software/index.md
+++ /dev/null
@@ -1,482 +0,0 @@
----
-title: Logiciels obsolètes
-description: Logiciel qui a été rendu obsolète par ses mainteneurs
-lang: fr
-sidebarDepth: 2
----
-
-# Logiciels obsolètes {#summary-deprecated-software}
-
-Il s'agit d'une liste des principaux projets et ressources liés à Ethereum qui ont été abandonnés ou qui ne sont plus actualisés. Il est important de mettre en évidence les outils obsolètes afin que les utilisateurs puissent trouver des alternatives viables et pour éviter que des versions malveillantes ne soient distribuées.
-
-Elle est supervisée par notre communauté. S'il y a quelque chose manquant ou incorrect, veuillez modifier cette page!
-
-## Preuve de travail {#pow}
-
-[Proof of work](/developers/docs/consensus-mechanisms/pow) est un moteur de consensus qui était implémenté sur Ethereum jusqu'en septembre 2022. Il a été abandonné lorsque Ethereum est passé à un mécanisme de consensus basé sur la [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos) (proof-of-stake). Cela a été réalisé en dépréciant les parties du logiciel client liées au minage en preuve de travail, y compris [Ethhash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethhash) (l'algorithme de minage) et toute la logique de consensus et la fonctionnalité de diffusion de blocs qui étaient initialement intégrées dans les clients d'exécution. Les clients eux-mêmes n'ont pas été supprimés, mais plusieurs de leurs composants essentiels l'ont été. Le concept de preuve de travail a été abandonné en raison de l'effet total de la suppression des composants associés du logiciel client.
-
-## Logiciel {#software}
-
-Cette section concerne les logiciels de bureau, en ligne de commande ou de serveur qui ont été dépréciés. Les principaux types sont les portefeuilles, les environnements de développement intégrés, les langages et les clients Ethereum. Veillez à ne pas installer de logiciels obsolètes à moins d'être certain qu'ils proviennent de la source d'origine, par exemple d'un dépôt hébergé sur https://github.com/ethereum.
-
-### OpenEthereum {#open-ethereum}
-
-
-
-
-
-Rendu obsolète en juillet 2021
-
-**Résumé**
-
-OpenEthereum était la deuxième implémentation d'Ethereum en termes de nombre de nœuds. OpenEthereum a joué un rôle important en étant un élément clé de l'infrastructure pour certains des plus importants utilisateurs d'Ethereum comme Etherscan et Gnosis Safe. Ses capacités de traçage le distinguent des autres clients, garantissant une synchronisation fiable et rapide pour les fournisseurs de données.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/openethereum/openethereum)
-
-**Historique**
-
-OpenEthereum a été conçu pour les mineurs, les fournisseurs de services et les échanges qui ont besoin d'une synchronisation rapide et d'une disponibilité maximale. OpenEthereum a fourni l'infrastructure de base indispensable à la rapidité et à la fiabilité des services.
-
-**Alternatives**
-
-[Comparer toutes les options de clients d'exécution Ethereum](/developers/docs/nodes-and-clients/#execution-clients).
-
-### Grid {#grid}
-
-
-
-
-
-Rendu obsolète le 10 décembre 2020
-
-**Résumé**
-
-Grid était une application de bureau basée sur JavaScript qui vous permettait d'accéder en toute sécurité à Ethereum, IPFS et à d'autres réseaux décentralisés. Il proposait une interface conviviale pour aider un public moins technique à interagir en toute sécurité avec les dapps, améliorant ainsi l'accessibilité pour tous.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/grid)
-
-**Historique**
-
-Grid pourrait être considéré comme le successeur de Mist, également une application de bureau autonome, basée sur JavaScript, qui comprenait un nœud Geth. Grid a supprimé l'aspect portefeuille et a ajouté une approche de type plugin pour exécuter différents types de nœuds.
-
-**Alternatives**
-
-[DAppNode](https://dappnode.io/) est une plateforme de déploiement et d'hébergement de dApps, de clients P2P et de nœuds blockchain.
-
-### Ethereum Studio {#ethereum-studio}
-
-
-
-
-
-Rendu obsolète le 7 décembre 2020
-
-**Résumé**
-
-Ethereum Studio était un IDE en ligne qui permettait aux utilisateurs de créer et de tester des contrats intelligents, ainsi que de construire des interfaces pour eux.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/SuperblocksHQ/ethereum-studio)
-
-**Historique**
-
-Ethereum Studio a été développé pour fournir aux utilisateurs un IDE doté d'une blockchain Ethereum intégrée et d'un compilateur Solidity. De plus, il offrait la possibilité de modifier en direct le code et d'exporter des dApps complets sans avoir besoin d'un terminal.
-
-**Alternatives**
-
-[Remix](https://remix.ethereum.org/) est un IDE web alternatif pour le développement Solidity. Le [portail développeur](/developers/) propose des outils pour le développement web et local, la documentation et bien plus encore.
-
-### Portefeuille Dapp Meteor {#meteor-dapp-wallet}
-
-
-
-
-
-Rendu obsolète le 27 mars 2019
-
-**Résumé**
-
-Le portefeuille Meteor Dapp était un composant de Mist, un portefeuille Ethereum pour gérer les comptes Ethereum et interagir avec des contrats intelligents. Pendant de nombreuses années, l'interface web du Meteor Dapp Wallet était hébergée en tant que sous-domaine « wallet.ethereum.org ».
-
-Le contrat multisignataire Mist (code solidity) était également inclus, et Meteor Dapp Wallet présentait une interface utilisateur pour le configurer et le déployer.
-
-**Non obsolète : Mist Multisigs déployés**
-
-Le multi-signataire Mist -- déployé sous forme de bytecode sur le réseau principal d'Ethereum par des milliers d'utilisateurs -- continue d'être utilisé pour stocker et gérer de la valeur sans incident. [Comment interagir avec un contrat multisignataire Mist](https://support.mycrypto.com/how-to/sending/how-to-interact-with-a-multisig-contract) offre une bonne vue d'ensemble de la manière d'utiliser ces contrats intelligents.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/meteor-dapp-wallet)
-
-**Historique**
-
-Voir Mist ci-dessous.
-
-**Alternatives**
-
-Voir la page [Portefeuilles Ethereum](/wallets/) sur ethereum.org.
-
-### Mist {#mist}
-
-
-
-
-
-Rendu obsolète le 27 mars 2019
-
-**Résumé**
-
-Mist était un navigateur spécialisé construit grâce à Electron qui permettait aux utilisateurs de gérer des comptes Ethereum et d'interagir avec des dApps hébergées sur le web conventionnel.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/mist)
-
-**Historique**
-
-Mist a été une première expérience importante qui a permis d'explorer la manière de gérer les clés Ethereum, d'initier les utilisateurs aux outils financiers, tels que les multisigs, et de démontrer le fonctionnement du Web3. Des innovations ont également été révélées aux utilisateurs, comme les blockies, des graphiques mignons et mémorables de style 8 bits représentant les clés Ethereum.
-
-**Alternatives**
-
-[MetaMask](https://metamask.io/) est un portefeuille intégré au navigateur qui vous permet de gérer des clés Ethereum et d'interagir avec des DApps. Il est disponible en tant qu'extension pour Google Chrome et Firefox, et est inclus dans [Brave Browser](https://brave.com/).
-
-### Mix {#mix}
-
-Rendu obsolète le 11 août 2016
-
-**Résumé**
-
-Mix était un IDE développé en C++ qui permettait aux développeurs de construire et de déployer des contrats intelligents sur Ethereum.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/mix)
-
-**Historique**
-
-Mix était une des premières applications en lien avec Ethereum. Voir la [présentation de Gavin Wood à Devcon0](https://www.youtube.com/watch?v=hcP_z_wBlaM).
-
-**Alternatives**
-
-[Remix](https://remix.ethereum.org/) est un IDE hébergé dans un navigateur pour le développement, le test et le déploiement de contrats Solidity / intelligents. Il dispose également d'une option de bureau.
-
-### Minimal {#minimal}
-
-Rendu obsolète en 2020.
-
-**Résumé**
-
-Minimal était une implémentation modulaire de la blockchain Ethereum écrite en Go.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/umbracle/minimal)
-
-**Historique**
-
-Minimal a été remplacé par [polgon-sdk](https://github.com/0xPolygon/polygon-edge)
-
-### Hyperledger Burrow {#hyperledger-burrow}
-
-Rendu obsolète en 2022.
-
-**Résumé**
-
-Hyperledger Burrow était un nœud de blockchain de contrat intelligent Ethereum avec autorisation. Il exécutait le code de contrat intelligent Ethereum EVM et WASM sur des machines virtuelles autorisées.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/hyperledger/burrow)
-
-### Mana-Ethereum {#mana-ethereum}
-
-**Résumé**
-
-Mana-Ethereum était un client Ethereum construit avec Elixir.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/mana-ethereum/mana)
-
-**Historique**
-
-Le dépôt GitHub de Mana-Ethereum n'a pas été explicitement archivé, mais le dernier engagement date de 2019.
-
-### Aleth (cpp-ethereum) {#aleth}
-
-Rendu obsolète le 6 octobre 2021
-
-**Résumé**
-
-Aleth (anciennement connu sous le nom de cpp-ethereum) était un client Ethereum écrit en C++.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/aleth)
-
-**Historique**
-
-Aleth était le troisième client le plus populaire pour Ethereum avant d'être rendu obsolète le 6 octobre 2021.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/) est un client Ethereum alternatif bien connu.
-
-### Ethereum-H {#ethereum-h}
-
-**Archives**
-
-Les archives d'Ethereum-H ont été retirées de GitHub.
-
-**Historique**
-
-Ethereum-H était un client Ethereum écrit en Haskell. Il a été rendu obsolète aux alentours de 2015.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) et [Erigon](https://github.com/ledgerwatch/erigon) sont des clients Ethereum alternatifs viables - il n'y a actuellement aucun client Haskell.
-
-### ruby-ethereum {#ruby-ethereum}
-
-**Archives**
-
-[repo GitHub de ruby-ethereum](https://github.com/cryptape/ruby-ethereum)
-
-**Historique**
-
-ruby-ethereum était un client Ethereum écrit en Ruby. Il a été rendu obsolète aux alentours de 2018.
-
-**Alternatives**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) et [Erigon](https://github.com/ledgerwatch/erigon) sont des clients Ethereum alternatifs viables. Il n'y a actuellement aucun client Ruby.
-
-### Parity {#parity}
-
-
-
-
-
-Rendu obsolète le 2 juin 2020
-
-**Résumé**
-
-Parity était un client Ethereum écrit en Rust.
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/openethereum/parity-ethereum)
-
-**Historique**
-
-En tant que l'un des deux principaux clients viables dans les premières années d'Ethereum (l'autre étant Geth), Parity était une partie cruciale de l'écosystème. Lors des attaques de Shanghai en 2016, Parity a permis au réseau Ethereum de continuer à fonctionner lorsque des clients comme Geth ont été détruits par l'attaque, prouvant ainsi l'importance de la diversité des clients.
-
-**Alternatives**
-
-[Erigon](https://github.com/ledgerwatch/erigon) (auparavant appelé Turbo-Geth) est un client Ethereum de nouvelle génération à la pointe de l'efficacité, écrit en Go.
-
-**Note :** _Le projet successeur du client Ethereum Parity était [OpenEthereum](https://github.com/openethereum/openethereum) **qui a depuis été rendu obsolète.**_
-
-La ressource ["Lancez votre propre nœud Ethereum"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) sur ethereum.org comprend une section pour télécharger, installer et exécuter un client Ethereum.
-
-### Trinity {#trinity}
-
-
-
-
-
-Rendu obsolète le premier juillet 2021
-
-**Résumé**
-
-Trinity était un client Ethereum Python qui a servi d'outil de recherche éducatif pour la communauté. Un grand nombre de modules basés en Python en rapport avec Trinity continuent à être maintenus par la même équipe, comme [Py-EVM](https://github.com/ethereum/py-evm).
-
-**Archives**
-
-[Repo GitHub archivé](https://github.com/ethereum/trinity)
-
-**Historique**
-
-Trinity était le projet successeur de [pyethereum](https://github.com/ethereum/pyethereum/tree/b704a5c6577863edc539a1ec3d2620a443b950fb), un client Ethereum basé sur python des débuts.
-
-**Alternatives**
-
-La ressource ["Lancez votre propre nœud Ethereum"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) sur ethereum.org comprend une section pour télécharger, installer et exécuter un client Ethereum.
-
-Le projet [EthereumJS](https://github.com/ethereumjs) a un cas d'utilisation de recherche et éducatif similaire à celui de Trinity.
-
-## DApps et Services {#dapps-and-services}
-
-Cette section est destinée aux services déployés sur le réseau principal Ethereum et d'autres réseaux basés sur EVM. Soyez conscient que les DApps et les services ici peuvent inclure des applications DeFi qui ont été piratées ou qui peuvent présenter des vulnérabilités de sécurité en raison du manque de maintenance, des changements dans le protocole, etc.
-
-### Cover Protocol {#cover-protocol}
-
-
-
-
-
-Fermé à l'automne 2021
-
-**Résumé**
-
-Cover était un protocole d'assurance DeFi fonctionnant sur Ethereum et d'autres réseaux basés sur EVM.
-
-**Archives**
-
-[Site Web](https://wayback.archive-it.org/17679/20211004074635/https://www.coverprotocol.com/)
-
-[Articles Medium](https://wayback.archive-it.org/17679/20211004074633/https://coverprotocol.medium.com/)
-
-[Répertoire GitHub](https://github.com/CoverProtocol/cover-core-v1)
-
-[Documentation](https://wayback.archive-it.org/17679/20211004074634/https://docs.coverprotocol.com/)
-
-### La DAO {#the-dao}
-
-Piraté et fermé à l'été 2016
-
-**Résumé**
-
-The DAO était un contrat intelligent, une DApp, et un forum pour organiser le financement de projets. Une vulnérabilité a été exploitée et une grande partie de l'ETH a été vidée, conduisant à un hard fork organisé par la communauté afin de restituer l'ETH à ceux qui avaient déposé dans The DAO. L'interface utilisateur et le forum sont arrêtés.
-
-**Archives**
-
-[Archive Internet de « daohub.org » le 14 mai 2016](https://web.archive.org/web/20160514105232/https://daohub.org/)
-
-**Historique**
-
-Bien que The DAO ait échoué, le concept a perduré. Le modèle technique, social et de gouvernance innovant pour The DAO est largement utilisé dans les communautés DeFi, NFT et de financement de projets.
-
-[« DAO Fork » sur ethereum.org](/history/#dao-fork)
-
-[Entrée Wikipedia pour « The DAO »]()
-
-**Alternatives**
-
-[« DAOs » sur ethereum.org](/dao/)
-
-[MolochDAO](https://www.molochdao.com/)
-
-[Gitcoin Grants](https://gitcoin.co/grants/)
-
-### SparkPool {#sparkpool}
-
-
-
-
-
-Fermé à l'automne 2021
-
-**Résumé**
-
-Basé à Hangzhou, le service et la communauté SparkPool constituaient l'un des plus grands pools de minage centrés sur Ethereum au monde.
-
-**Archives**
-
-**Historique**
-
-Associé à la communauté EthFans, le service a été lancé en 2015. SparkPool a été dissous à l'automne 2021 à la suite de régulations légales plus strictes.
-
-**Alternatives**
-
-[Ethermine](https://ethermine.org/)
-
-## Documentation et Sources d'Informations {#documentation-and-information-sources}
-
-Il y a de nombreuses sources de documentations, des articles, des tutoriels et des forums qui sont maintenant supprimés ou vivants mais plus maintenus. Nous en avons sélectionné quelques-uns qui sont significatifs ou dont le statut actuel en tant que déprécié peut conduire à la confusion ou aux tentatives d'escroquerie.
-
-### Ancien Wiki et eth.wiki {#eth-wiki}
-
-**Résumé**
-
-Legacy Wiki et eth.wiki étaient des wikis entretenus par la Fondation Ethereum pour la communauté élargie. Ils étaient principalement orientés vers l'hébergement de descriptions détaillées des aspects clés de la plateforme Ethereum et des résumés des feuilles de route techniques.
-
-**Archives**
-
-[Repo GitHub archivé pour eth.wiki](https://github.com/ethereum/eth-wiki)
-
-[Repo GitHub archivé pour Legacy Wiki](https://github.com/ethereum/wiki/wiki)
-
-**Historique**
-
-Legacy Wiki était un wiki GitHub et un tout premier lieu de contenu technique (incluant le livre blanc original d'Ethereum). Avec le temps, les développeurs d'Ethereum ont transféré leur documentation, leurs spécifications et leur travail de description technique vers d'autres plateformes comme [Read the Docs](https://readthedocs.org/) et le contenu hébergé sur GitHub.
-
-En 2019 et 2020, eth.wiki est devenu le successeur de Legacy Wiki, mais une communauté durable de contributeurs n'a pas vu le jour.
-
-**Alternatives**
-
-Contenu dirigé par la communauté : [Site web Ethereum.org](/)
-
-Les projets logiciels Ethereum hébergent souvent leur documentation sur [Read the Docs](https://readthedocs.org/)
-
-Spécifications techniques hébergées sur GitHub : [EIPs](https://github.com/ethereum/EIPs), [Spécifications d'Exécution](https://github.com/ethereum/execution-specs), [Spécifications de Consensus](https://github.com/ethereum/consensus-specs)
-
-### forum.ethereum.org {#forum-ethereum-org}
-
-**Résumé**
-
-Le Forum Communautaire Ethereum était un forum de discussion entretenu par la Fondation Ethereum et hébergé sur Vanilla Forums. Il utilisait le sous-domaine « forum.ethereum.org ».
-
-**Archives**
-
-URL d'archive : [https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/](https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/)
-
-**Historique**
-
-Ce forum était un forum de discussion « officiel » et précoce pour la communauté Ethereum. Avec [/r/ethereum](https://reddit.com/r/ethereum) et quelques chaînes Skype, c'était un point de coordination important pour les développeurs, designers et organisateurs. Au fil des ans, les participants du Forum se sont dispersés et il est devenu davantage un lieu pour la communauté de minage.
-
-**Alternatives**
-
-[/r/ethereum](https://reddit.com/r/ethereum), et un grand nombre de forums DAO et de serveurs Discord.
-
-## Canaux Gitter {#gitter-channels}
-
-### AllCoreDevs {#allcorewdevs-gitter}
-
-**Résumé**
-
-AllCoreDevs Gitter était le principal canal de communication public pour la coordination des [développeurs principaux des clients Ethereum](https://github.com/ethereum/pm/).
-
-**Archives**
-
-[le canal Gitter ethereum/AllCoreDevs](https://gitter.im/ethereum/AllCoreDevs)
-
-**Alternatives**
-
-Veuillez utiliser le canal « allcoredevs » sur le [EthR&D Serveur Discord EthR&D](https://discord.gg/qHv7AjTDuK)
-
-### EthereumJS {#ethereumjs-gitter}
-
-**Résumé**
-
-EthereumJS Gitter était le principal canal de communication publique pour la coordination du [projet EthereumJS](https://ethereumjs.github.io/).
-
-**Archives**
-
-[le canal Gitter ethereum/EthereumJS](https://gitter.im/ethereum/ethereumjs)
-
-**Alternatives**
-
-Veuillez utiliser le [Serveur Discord EthereumJS](https://discord.gg/TNwARpR)
diff --git a/public/content/translations/fr/developers/docs/apis/json-rpc/index.md b/public/content/translations/fr/developers/docs/apis/json-rpc/index.md
index 81282e17f19..b2a31d8867c 100644
--- a/public/content/translations/fr/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/fr/developers/docs/apis/json-rpc/index.md
@@ -620,7 +620,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
La récupération d'un élément de la carte est plus difficile. La position d'un élément dans la carte est calculée avec :
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Cela signifie que pour récupérer le stockage sur pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] nous devons calculer la position avec :
diff --git a/public/content/translations/fr/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/fr/developers/docs/consensus-mechanisms/pos/index.md
index 5780e415170..0b8dcfb4b7d 100644
--- a/public/content/translations/fr/developers/docs/consensus-mechanisms/pos/index.md
+++ b/public/content/translations/fr/developers/docs/consensus-mechanisms/pos/index.md
@@ -24,7 +24,7 @@ Alors qu'avec le consensus de preuve de travail, la fréquence des blocs est dé
Ce qui suit fournit une explication de bout en bout de la façon dont une transaction est exécutée avec la preuve d'enjeu Ethereum (PoS).
-1. Un utilisateur crée et [signe une](/developers/docs/transaction/) avec sa clé privée. Ceci est généralement géré par un portefeuille ou une bibliothèque telle que l'éther [. s](https://docs.ethers.io/v5/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) etc mais sous le capuchon l'utilisateur fait une requête à un noeud en utilisant l'API [JSON-RPC](/developers/docs/apis/json-rpc/). L'utilisateur définit la quantité de gaz qu'il est prêt à payer comme un pourboire au validateur pour l'encourager à inclure la transaction dans un bloc. Les [pourboires](/developers/docs/gas/#priority-fee) sont payés au validateur alors que les [frais de base](/developers/docs/gas/#base-fee) sont brûlés.
+1. Un utilisateur crée et [signe une](/developers/docs/transactions/) avec sa clé privée. Ceci est généralement géré par un portefeuille ou une bibliothèque telle que l'éther [. s](https://docs.ethers.io/v5/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) etc mais sous le capuchon l'utilisateur fait une requête à un noeud en utilisant l'API [JSON-RPC](/developers/docs/apis/json-rpc/). L'utilisateur définit la quantité de gaz qu'il est prêt à payer comme un pourboire au validateur pour l'encourager à inclure la transaction dans un bloc. Les [pourboires](/developers/docs/gas/#priority-fee) sont payés au validateur alors que les [frais de base](/developers/docs/gas/#base-fee) sont brûlés.
2. La transaction est soumise à un client d'exécution [Ethereum](/developers/docs/nodes-and-clients/#execution-client) qui vérifie sa validité. Cela signifie s'assurer que l'expéditeur a suffisamment d'ETH pour remplir la transaction et qu'il l'a signée avec la bonne clé.
3. Si la transaction est valide, le client d'exécution l'ajoute à son mempool local (liste des transactions en attente) et le transmet également à d'autres nœuds sur le réseau d'informations de la couche d'exécution. Quand d'autres nœuds reçoivent la transaction, ils l'ajoutent également à leur mempool local. Les utilisateurs avancés peuvent s'abstenir de diffuser leur transaction et la transmettre à des créateurs de blocs spécialisés tels que [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview). Cela leur permet d'organiser les transactions dans les blocs à venir pour un profit maximal ([MEV](/developers/docs/mev/#mev-extraction)).
4. Un des nœuds sur le réseau est le bloc proposant pour le créneau actuel, ayant précédemment été sélectionné pseudo-aléatoirement à l'aide de RANDAO. Ce noeud est responsable de la construction et de la diffusion du prochain bloc à ajouter à la blockchain Ethereum et de la mise à jour de l'état global. Le noeud est composé de trois parties : un client d'exécution, un client de consensus et un client validateur. Le client d'exécution relie les transactions depuis le mempool local à une « charge utile d'exécution » et les exécute localement pour générer un changement d'état. Ces informations sont transmises au client de consensus où la charge utile d'exécution est enveloppée dans un « bloc balise » qui contient également des informations sur les récompenses, les pénalités, les réductions, les attestations, etc. qui permettent au réseau de se mettre d'accord sur la séquence de blocs en tête de la chaîne. La communication entre l'exécution et les clients de consensus est décrite plus en détail dans [Connecting the Consensus and Execution Clients](/developers/docs/networking-layer/#connecting-clients).
diff --git a/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 73b6e39b976..49a08c7a3b3 100644
--- a/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: Un regard détaillé sur l'algorithme Dagger-Hashimoto.
lang: fr
---
-Dagger-Hashimoto représentait l'implémentation et la spécification originales de recherche pour l'algorithme de minage d'Ethereum. Dagger-Hashimoto a été remplacé par [Ethash](#ethash). Le minage a été complètement arrêté avec [La Fusion](/updates/merge) du 15 septembre 2022. Depuis lors, Ethereum a été sécurisé en utilisant à la place un mécanisme de [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos). Cette page a un intérêt historique - l'information fournie n'est plus pertinente depuis La Fusion Ethereum.
+Dagger-Hashimoto représentait l'implémentation et la spécification originales de recherche pour l'algorithme de minage d'Ethereum. Dagger-Hashimoto a été remplacé par [Ethash](#ethash). Le minage a été complètement arrêté avec [La Fusion](/roadmap/merge/) du 15 septembre 2022. Depuis lors, Ethereum a été sécurisé en utilisant à la place un mécanisme de [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos). Cette page a un intérêt historique - l'information fournie n'est plus pertinente depuis La Fusion Ethereum.
## Prérequis {#prerequisites}
diff --git a/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index e31290eef6a..c91d7602500 100644
--- a/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### L'utilisation de 'SHA3' {#sha3}
-Le développement d'Ethereum a coïncidé avec le développement de la norme SHA3, et le processus de normes a réalisé un changement tardif dans le remplissage de l'algorithme de hachage finalisé de sorte que les hachages Ethereum "sha3_256" et "sha3_512" ne soient pas des hashs sha3 standard, mais une variante appelée souvent « Keccak-256 » et « Keccak-512 » dans d'autres contextes. Voir la discussion en exemple [ici](https://eips.ethereum.org/EIPS-1803), [ici](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), ou [ici](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+Le développement d'Ethereum a coïncidé avec le développement de la norme SHA3, et le processus de normes a réalisé un changement tardif dans le remplissage de l'algorithme de hachage finalisé de sorte que les hachages Ethereum "sha3_256" et "sha3_512" ne soient pas des hashs sha3 standard, mais une variante appelée souvent « Keccak-256 » et « Keccak-512 » dans d'autres contextes. Voir la discussion, par exemple [ici](https://eips.ethereum.org/EIPS/eip-1803), [ici](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), ou [ici](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Veuillez garder cela à l'esprit, car les hachages « sha3 » sont mentionnés dans la description de l'algorithme ci-dessous.
diff --git a/public/content/translations/fr/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/fr/developers/docs/smart-contracts/anatomy/index.md
index dfaee8ba4b4..f155a3d96ce 100644
--- a/public/content/translations/fr/developers/docs/smart-contracts/anatomy/index.md
+++ b/public/content/translations/fr/developers/docs/smart-contracts/anatomy/index.md
@@ -1,6 +1,6 @@
---
title: Anatomie des contrats intelligents
-description: "Examen approfondi des composantes d'un contrat intelligent : les fonctions, les données et les variables."
+description: 'Examen approfondi des composantes d''un contrat intelligent : les fonctions, les données et les variables.'
lang: fr
---
diff --git a/public/content/translations/fr/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/fr/developers/docs/smart-contracts/deploying/index.md
index 4e88d73a96c..0f5365971cc 100644
--- a/public/content/translations/fr/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/fr/developers/docs/smart-contracts/deploying/index.md
@@ -4,7 +4,7 @@ description:
lang: fr
---
-Vous devez déployer vos contrats intelligents afin qu'ils soient disponibles pour les utilisateurs sur un réseau Ethereum.
+Vous devez déployer votre contrat intelligent afin qu'il soit disponible pour les utilisateurs sur un réseau Ethereum.
Déployer un contrat intelligent consiste à envoyer sur la blockchain une transaction contenant le code du contrat intelligent compilé sans spécifier de destinataire.
@@ -20,16 +20,14 @@ Enfin, comme vous devrez compiler votre contrat avant de le déployer, assurez-v
### Ce dont vous aurez besoin {#what-youll-need}
-- Le bytecode du contrat, généré par la [compilation](/developers/docs/smart-contracts/compiling/).
+- Le bytecode de votre contrat - il est généré par la [compilation](/developers/docs/smart-contracts/compiling/).
- Des ethers pour le gaz. Vous fixerez votre limite de gaz comme pour les autres transactions, mais sachez que les déploiements de contrats nécessitent beaucoup plus de gaz qu'un simple transfert d'ethers.
- Un script de déploiement ou un plugin.
- l'accès à un [nœud Ethereum](/developers/docs/nodes-and-clients/), soit en créant le vôtre, soit en vous connectant à un nœud public, soit via un [service de nœuds](/developers/docs/nodes-and-clients/nodes-as-a-service/) avec une clé d'API
### Étapes pour déployer un contrat intelligent {#steps-to-deploy}
-Les étapes spécifiques dépendront des outils que vous utilisez. Par exemple, consultez la [documentation Hardhat pour deployer des contrats](https://hardhat.org/guides/deploying.html) ou la [documentation Truffle sur les réseaux et le déploiement d'applications](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment). Ce sont deux des outils les plus populaires pour le déploiement de contrats intelligents, qui impliquent la rédaction d'un script pour gérer les étapes de déploiement.
-
-Une fois déployé, votre contrat aura une adresse Ethereum comme les autres [comptes](/developers/docs/accounts/).
+Les étapes spécifiques dépendent du cadre de développement en question. Par exemple, vous pouvez consulter la [documentation de Hardhat sur le déploiement de vos contrats](https://hardhat.org/guides/deploying.html) ou [la documentation de Foundry sur le déploiement et la vérification d'un contrat intelligent](https://book.getfoundry.sh/forge/deploying). Une fois déployé, votre contrat aura une adresse Ethereum comme les autres [comptes](/developers/docs/accounts/) et pourra être vérifié à l'aide [d'outils de vérification du code source](/developers/docs/smart-contracts/verifying/#source-code-verification-tools).
## Outils connexes {#related-tools}
@@ -51,12 +49,6 @@ Une fois déployé, votre contrat aura une adresse Ethereum comme les autres [co
- [GitHub](https://github.com/nomiclabs/hardhat)
- [Discord](https://discord.com/invite/TETZs2KK4k)
-**Truffle -** **_ Environnement de développement, infrastructure de test, pipeline de construction et autres outils_**
-
-- [trufflesuite.com](https://www.trufflesuite.com/)
-- [Documentation sur les réseaux et le déploiement d'applications](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment)
-- [GitHub](https://github.com/trufflesuite/truffle)
-
**thirdweb - _Déployez facilement n'importe quel contrat sur n'importe quelle chaîne compatible EVM en une seule commande_**
- [Documentation](https://portal.thirdweb.com/deploy/)
diff --git a/public/content/translations/fr/developers/docs/smart-contracts/languages/index.md b/public/content/translations/fr/developers/docs/smart-contracts/languages/index.md
index 4865a44e51c..bd06f874e0c 100644
--- a/public/content/translations/fr/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/fr/developers/docs/smart-contracts/languages/index.md
@@ -1,6 +1,6 @@
---
title: Les langages des contrats intelligents
-description: "Présentation et comparaison des deux principaux langages de contrat intelligent : Solidity et Vyper"
+description: 'Présentation et comparaison des deux principaux langages de contrat intelligent : Solidity et Vyper'
lang: fr
---
@@ -35,7 +35,7 @@ La connaissance de langages de programmation comme JavaScript ou Python peut vou
- [Portail Solidity](https://soliditylang.org/)
- [Solidity by Example](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
- [GitHub](https://github.com/ethereum/solidity/)
-- [Solidity Gitter Chatroom](https://gitter.im/ethereum/solidity) en jonction avec [Solidity Matrix Chatroom](https://matrix.to/#/#ethereum_solidity:gitter.im)
+- [Solidity Gitter Chatroom](https://gitter.im/ethereum/solidity/) en jonction avec [Solidity Matrix Chatroom](https://matrix.to/#/#ethereum_solidity:gitter.im)
- [Cheat Sheet](https://reference.auditless.com/cheatsheet)
- [Blog Solidity](https://blog.soliditylang.org/)
- [Twitter Solidity](https://twitter.com/solidity_lang)
diff --git a/public/content/translations/fr/developers/docs/smart-contracts/security/index.md b/public/content/translations/fr/developers/docs/smart-contracts/security/index.md
index 77be68f22bb..29913b853ec 100644
--- a/public/content/translations/fr/developers/docs/smart-contracts/security/index.md
+++ b/public/content/translations/fr/developers/docs/smart-contracts/security/index.md
@@ -259,7 +259,7 @@ Ce contrat expose une fonction `withdraw()` pour permettre aux utilisateurs de r
2. Envoie des fonds à l'adresse d'appel
3. Réinitialise son solde à 0, empêchant les retraits supplémentaires de l'utilisateur
-La fonction `withdraw()` dans le contrat `Victim` suit un modèle « checks-interactions-effects ». Il _vérifie_ si les conditions nécessaires à l'exécution sont satisfaites (c.-à-d. l'utilisateur a un solde ETH positif) et effectue l'interaction \__ en envoyant l'ETH à l'adresse de l'appelant, avant d'appliquer les \_effets_ de la transaction (c.-à-d., réduisant le solde de l’utilisateur).
+La fonction `withdraw()` dans le contrat `Victim` suit un modèle « checks-interactions-effects ». Il _vérifie_ si les conditions nécessaires à l'exécution sont satisfaites (c.-à-d. l'utilisateur a un solde ETH positif) et effectue l'interaction __ en envoyant l'ETH à l'adresse de l'appelant, avant d'appliquer les _effets_ de la transaction (c.-à-d., réduisant le solde de l’utilisateur).
Si la fonction `withdraw()` est appelée depuis un compte externe (Externally Orné Account, dit EOA), la fonction s'exécute comme attendu : `msg.sender.call.value()` envoie l'ETH à l'appelant. Cependant, si `msg.sender` est un compte de contrat intelligent qui appelle `withdraw()`, l'envoie de fonds en utilisant `msg.sender.call.value()` déclenchera également le code stocké à cette adresse pour l'exécuter.
@@ -470,13 +470,13 @@ Si vous comptez interroger un oracle sur le prix des actifs, envisagez d'utilise
### Outils de surveillance des contrats intelligents {#smart-contract-monitoring-tools}
-- **[Sentinelles de défenseur OpenZeppelin](https://docs.openzeppelin.com/defender/sentinel)** - _Un outil pour surveiller et répondre automatiquement aux événements, fonctions et paramètres de transaction sur vos contrats intelligents._
+- **[Sentinelles de défenseur OpenZeppelin](https://docs.openzeppelin.com/defender/v1/sentinel)** - _Un outil pour surveiller et répondre automatiquement aux événements, fonctions et paramètres de transaction sur vos contrats intelligents._
- **[Alerte en temps réel Tenderly](https://tenderly.co/alerting/)** - _Un outil pour recevoir des notifications en temps réel lorsque des événements inhabituels ou inattendus se produisent sur vos contrats intelligents ou portefeuilles._
### Outils pour une administration sécurisée des contrats intelligents {#smart-contract-administration-tools}
-- **[OpenZeppelin Defender Admin](https://docs.openzeppelin.com/defender/admin)** - _Interface pour gérer l'administration des contrats intelligents, y compris les contrôles d'accès, les mises à jour et la pause._
+- **[OpenZeppelin Defender Admin](https://docs.openzeppelin.com/defender/v1/admin)** - _Interface pour gérer l'administration des contrats intelligents, y compris les contrôles d'accès, les mises à jour et la pause._
- **[Safe](https://safe.global/)** - _Portefeuille à contrat intelligent fonctionnant sur Ethereum qui exige qu'un nombre minimum de personnes approuvent une transaction avant qu'elle ne puisse avoir lieu (M-of-N)._
diff --git a/public/content/translations/fr/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/fr/developers/docs/standards/tokens/erc-4626/index.md
index 07129f04a2d..20d6b4feb96 100644
--- a/public/content/translations/fr/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/fr/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ Où `sender` est l'utilisateur qui a déclenché le retrait et échangé `shares
## Complément d'information {#further-reading}
- [EIP-4626 : Standard de coffre-fort tokenisé](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626 : Répertoire GitHub](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626 : Répertoire GitHub](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/fr/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/fr/developers/tutorials/erc20-with-safety-rails/index.md
index e16a55fd4bb..fee27446296 100644
--- a/public/content/translations/fr/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/translations/fr/developers/tutorials/erc20-with-safety-rails/index.md
@@ -24,7 +24,7 @@ Si vous souhaitez consulter le code source complet :
## Création d'un contrat ERC-20 {#creating-an-erc-20-contract}
-Avant de pouvoir ajouter la fonctionnalité de sécurité, nous avons besoin d'un contrat ERC-20. Dans cet article, nous utiliserons [l'assistant de contrats OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/wizard). Ouvrez-le dans un autre navigateur et suivez ces instructions :
+Avant de pouvoir ajouter la fonctionnalité de sécurité, nous avons besoin d'un contrat ERC-20. Dans cet article, nous utiliserons [l'assistant de contrats OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Ouvrez-le dans un autre navigateur et suivez ces instructions :
1. Sélectionnez **ERC20**.
2. Entrez ces paramètres :
diff --git a/public/content/translations/fr/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/public/content/translations/fr/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
deleted file mode 100644
index b756c45d627..00000000000
--- a/public/content/translations/fr/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Démarrer le développement de votre interface dApp avec create-eth-app
-description: Aperçu de l'utilisation de create-eth-app et de ses fonctionnalités
-author: "Markus Waas"
-tags:
- - "create-eth-app"
- - "frontend"
- - "javascript"
- - "ethers.js"
- - "the graph"
- - "DeFi"
-skill: beginner
-lang: fr
-published: 2020-04-27
-source: soliditydeveloper.com
-sourceUrl: https://soliditydeveloper.com/create-eth-app
----
-
-La dernière fois nous nous sommes intéressés à [Solidity](https://soliditydeveloper.com/solidity-overview-2020) et avons mentionné [create-eth-app](https://github.com/PaulRBerg/create-eth-app). Vous allez maintenant découvrir comment l'utiliser, quelles fonctionnalités y sont intégrées et comment l'étendre encore. Initiée par Paul Razvan Berg, fondateur de [Sablier](http://sablier.com/), cette application livrée avec plusieurs intégrations facultatives au choix va vous permettre de débuter le développement de votre interface.
-
-## Installation {#installation}
-
-L'installation nécessite au minimum Yarn 0.25 (`npm install yarn --global`). L'installation est aussi simple que l'exécution :
-
-```bash
-yarn create eth-app my-eth-app
-cd my-eth-app
-yarn react-app:start
-```
-
-Elle s'appuie sur [create-react-app](https://github.com/facebook/create-react-app). Pour voir votre application, ouvrez `http://localhost:3000/`. Lorsque vous êtes prêt à déployer en production, créez un paquet minifié avec le constructeur yarn. Un moyen simple de l'héberger est [Netlify](https://www.netlify.com/). Vous pouvez créer un dépôt GitHub, l'ajouter à Netlify, configurer la commande de construction et le tour est joué ! Votre application sera hébergée et utilisable par tout le monde. Et tout ceci gratuitement.
-
-## Fonctionnalités {#features}
-
-### React & create-react-app {#react--create-react-app}
-
-Premièrement, le coeur de l'application : React et toutes les fonctionnalités additionnelles livrées avec _create-react-app_. Utiliser cette seule application est une excellente option si vous ne souhaitez pas intégrer Ethereum. [React](https://reactjs.org/) rend la construction d'interfaces utilisateur interactives très facile. La prise en main n'est peut-être pas aussi facile qu'avec [Vue](https://vuejs.org/), mais l'application est encore largement utilisée, possède plus de fonctionnalités et surtout offre un choix de plusieurs milliers de bibliothèques supplémentaires. Avec _create-react-app_, le démarrage est très simple. L'application inclut :
-
-- React, JSX, ES6, TypeScript et le support pour Flow syntax.
-- Langages complémentaires à ES6 comme l'opérateur de propagation d'objet.
-- CSS auto-préfixé, pour se passer de -webkit- ou d'autres préfixes.
-- Un exécuteur de test unitaire interactif rapide avec une prise en charge intégrée pour les rapports de couverture.
-- Un serveur de développement en direct qui signale les erreurs courantes.
-- Un script de construction pour associer du JS, du CSS et des images en vue de la mise en production, avec des hachages et une cartographie du code source.
-
-_create-react-app_, en particulier, fait usage des nouveaux [effets hooks](https://reactjs.org/docs/hooks-effect.html). Une méthode pour écrire de puissants mais très petits composants, dits fonctionnels. Voir ci-dessous la section sur Apollo pour savoir comment ils sont utilisés dans _create-react-app_.
-
-### Espaces de travail Yarn {#yarn-workspaces}
-
-[Les espaces de travail Yarn](https://classic.yarnpkg.com/en/docs/workspaces/) vous permettent de disposer de plusieurs paquets, mais également d'être en mesure de tous les gérer à partir du dossier racine et d'installer toutes leurs dépendances en une fois en utilisant `yarn install`. Ceci est particulièrement adapté pour les petits packs additionnels, tels que les adresses de contrats intelligents/la gestion ABI (les informations sur l'endroit où vous avez déployé tels contrats intelligents et comment communiquer avec eux) ou l'intégration de graphes, les deux parties de `create-eth-app`.
-
-### ethers.js {#ethersjs}
-
-Si [Web3](https://docs.web3js.org/) est encore largement utilisé, [ethers.js](https://docs.ethers.io/) a davantage été employé comme alternative l'année dernière et est intégré à _create-eth-app_. Vous pouvez travailler avec celui-ci, le faire évoluer vers Web3 ou envisager une mise à niveau pour passer à [ethers.js v5](https://docs-beta.ethers.io/) qui n'est pratiquement plus en version bêta.
-
-### Le réseau Graph {#the-graph}
-
-[GraphQL](https://graphql.org/) est un moyen alternatif de gérer les données par rapport à une [API Restful](https://restfulapi.net/). Il offre plusieurs avantages par rapport aux APIs REST, en particulier pour les données décentralisées de la blockchain. Si vous êtes intéressé par le raisonnement qui le sous-tend, jetez un œil à [GraphQL va propulser le Web décentralisé](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a).
-
-Vous récupérez normalement directement les données de votre contrat intelligent. Vous souhaitez connaître l'instant précis de la dernière transaction ? Appelez simplement `MyContract.methods.latestTradeTime().call()` qui récupère les données d'un nœud Ethereum comme Infura dans votre dApp. Mais que faire si vous avez besoin de centaines de points de données différents ? Il en résulterait des centaines d'extractions de données vers le nœud, nécessitant à chaque fois un [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) qui ralentirait votre dApp et lui ferait perdre son efficacité. Pour éviter cela, une solution pourrait être d'utiliser une fonction d'appel de récupération dans votre contrat qui restitue plusieurs données à la fois. Ce n'est cependant pas toujours idéal.
-
-Vous pourriez également être intéressé par les données historiques. Vous souhaitez peut-être connaître non seulement le moment de la dernière transaction mais également le moment de chacune des transactions que vous avez réalisées vous-même. Utilisez le paquet subgraph de _create-eth-app_, lisez la [documentation](https://thegraph.com/docs/define-a-subgraph) et adaptez-la à vos propres contrats. Si vous êtes à la recherche de contrats intelligents populaires, il se peut même qu'il en existe déjà un avec subgraph. Jetez un œil à [l'explorateur de sous-graphes](https://thegraph.com/explorer/).
-
-Une fois que vous disposez d'un subgraph, vous pouvez écrire une simple requête dans votre dApp afin de récupérer toutes les données importantes de la blockchain, y compris les données historiques dont vous avez besoin. Une seule demande de récupération suffit.
-
-### Apollo {#apollo}
-
-Grâce à l'intégration d'[Apollo Boost](https://www.apollographql.com/docs/react/get-started/), vous pouvez facilement intégrer Graph dans votre dApp React. Surtout lorsque vous utilisez [des hooks React et Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2), récupérer des données est aussi simple que d'écrire une requête GraphQl dans votre composant:
-
-```js
-const { loading, error, data } = useQuery(myGraphQlQuery)
-
-React.useEffect(() => {
- if (!loading && !error && data) {
- console.log({ data })
- }
-}, [loading, error, data])
-```
-
-## Modèles (Templates) {#templates}
-
-En haut, il est possible de choisir parmi différents modèles. À ce jour, vous pouvez utiliser une intégration Aave, Compound, UniSwap ou Sablier. Ces modèles ajoutent tous des adresses importantes de contrats intelligents de service ainsi que des intégrations pré-construites de subgraph. Il suffit d'ajouter le modèle à la commande de création comme `yarn create eth-app my-eth-app --with-template aav`.
-
-### Aave {#aave}
-
-[Aave](https://aave.com/) est un marché décentralisé de prêt d'argent. Les déposants fournissent des liquidités au marché pour gagner un revenu passif, tandis que les emprunteurs peuvent emprunter avec des garanties. Une fonctionnalité exclusive d'Aave réside dans ces [prêts flash](https://docs.aave.com/developers/guides/flash-loans) qui vous permettent d'emprunter de l'argent sans aucune garantie, pour autant que vous remboursiez le prêt en une seule transaction. Cela peut être utile par exemple pour vous donner de l'argent supplémentaire sur l'arbitrage d'échange.
-
-Les jetons échangés qui vous rapportent des intérêts sont appelés _aTokens_.
-
-Si vous choisissez d'intégrer Aave avec _create-eth-app_, vous obtiendrez une [intégration subgraph](https://docs.aave.com/developers/getting-started/using-graphql). Aave utilise The Graph et vous fournit déjà plusieurs Subgraphs prêts à l'emploi sur [Ropsten](https://thegraph.com/explorer/subgraph/aave/protocol-ropsten) et [le réseau principal](https://thegraph.com/explorer/subgraph/aave/protocol) en formulaire [brut](https://thegraph.com/explorer/subgraph/aave/protocol-raw) ou [formaté](https://thegraph.com/explorer/subgraph/aave/protocol).
-
-![Aave Flash Loan meme - "Ouah, si je pouvais garder mon prêt flash plus longtemps qu'une transaction, ce serait génial" ;](./flashloan-meme.png)
-
-### Compound {#compound}
-
-[Compound](https://compound.finance/) est similaire à Aave. L'intégration inclut déjà le nouveau [Compound v2 Subgraph](https://medium.com/graphprotocol/https-medium-com-graphprotocol-compound-v2-subgraph-highlight-a5f38f094195). Les intérêts gagnés des jetons sont ici étonnamment appelés _cTokens_.
-
-### Uniswap {#uniswap}
-
-[Uniswap](https://uniswap.exchange/) est un système d'échange décentralisé (DEX). Les fournisseurs de liquidités peuvent percevoir des commissions en fournissant les jetons ou l'éther requis pour les deux parties d'une transaction. Le protocole est largement utilisé et dispose donc de liquidités très nombreuses pour une très large gamme de jetons. Vous pouvez facilement l'intégrer dans votre dApp pour permettre, par exemple, aux utilisateurs d'échanger leur ETH contre du DAI.
-
-Malheureusement, à l'heure où ces lignes sont écrites, l'intégration est uniquement proposée pour Uniswap v1 et non pour la toute nouvelle version [v2](https://uniswap.org/blog/uniswap-v2/).
-
-### Sablier {#sablier}
-
-[Sablier](https://sablier.com/) permet aux utilisateurs d'effectuer des paiements en continu. Au lieu d'un seul versement, vous recevez en fait votre argent en continu sans avoir rien d'autre à faire après la mise en place initiale. L'intégration inclut son [propre sous-graphe](https://thegraph.com/explorer/subgraph/sablierhq/sablier).
-
-## Et après ? {#whats-next}
-
-Si vous avez des questions sur _create-eth-app_, allez sur le [serveur de la Communauté Sablier](https://discord.gg/bsS8T47), où vous pouvez entrer en contact avec les auteurs de _create-eth-app_. Dans un premier temps, vous pourriez vouloir intégrer un framework d'interface utilisateur comme [Material UI](https://material-ui.com/), écrire des requêtes GraphQL pour les données dont vous avez réellement besoin et configurer le déploiement.
diff --git a/public/content/translations/fr/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/fr/developers/tutorials/uniswap-v2-annotated-code/index.md
index 76ef87e5f32..310de316a09 100644
--- a/public/content/translations/fr/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/fr/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -202,13 +202,13 @@ Dans le cadre de l'échange de paires, le taux de change entre le jeton0 et jeto
Voici un exemple simple. Notez que pour des raisons de simplicité, le tableau n'affiche que trois chiffres après la virgule et que nous ignorons le taux de change de 0,3 % et qu'ainsi, les chiffres présentés sont inexacts.
| Evénement | reserve0 | reserve1 | reserve0 \* reserve1 | Taux de change moyen (jeton1 / jeton0) |
-| ----------------------------------------------------- | --------: | --------: | -------------------: | -------------------------------------- |
-| Configuration initiale | 1.000,000 | 1.000,000 | 1.000.000 | |
-| Le trader A échange 50 jetons0 contre 47,619 jetons1 | 1.050,000 | 952,381 | 1.000.000 | 0,952 |
-| Le trader B échange 10 jetons0 contre 8,984 jetons1 | 1.060,000 | 943,396 | 1.000.000 | 0,898 |
-| Le trader C échange 40 jetons0 pcontre 34,305 jetons1 | 1.100,000 | 909,090 | 1.000.000 | 0,858 |
-| Le trader D échange 100 jetons1 contre 109,01 jetons0 | 990,990 | 1.009,090 | 1.000.000 | 0,917 |
-| Le trader E échange 10 jetons0 contre 10,079 jetons1 | 1.000.990 | 999.010 | 1.000,000 | 1,008 |
+| ----------------------------------------------------- | ---------:| ---------:| ----------------------:| -------------------------------------- |
+| Configuration initiale | 1.000,000 | 1.000,000 | 1.000.000 | |
+| Le trader A échange 50 jetons0 contre 47,619 jetons1 | 1.050,000 | 952,381 | 1.000.000 | 0,952 |
+| Le trader B échange 10 jetons0 contre 8,984 jetons1 | 1.060,000 | 943,396 | 1.000.000 | 0,898 |
+| Le trader C échange 40 jetons0 pcontre 34,305 jetons1 | 1.100,000 | 909,090 | 1.000.000 | 0,858 |
+| Le trader D échange 100 jetons1 contre 109,01 jetons0 | 990,990 | 1.009,090 | 1.000.000 | 0,917 |
+| Le trader E échange 10 jetons0 contre 10,079 jetons1 | 1.000.990 | 999.010 | 1.000,000 | 1,008 |
Comme les traders fournissent plus de jetons0, la valeur relative du jeton1 augmente et vice versa, en fonction de l'offre et de la demande.
@@ -364,10 +364,10 @@ Si le temps écoulé n'est pas nul, cela signifie que nous sommes la première t
Chaque accumulateur de coûts est mis à jour en tenant compte du coût le plus récent (réserve de l'autre jeton/réserve de ce jeton) multiplié par le temps écoulé en secondes. Pour obtenir un prix moyen, vous prenez le prix cumulé de deux points dans le temps et le divisez par la différence de temps entre ces deux points. Par exemple, supposons cette séquence d'événements :
-| Evénement | réserve0 | réserve1 | horodatage | Taux de change marginal (réserve1 / réserve0) | DernierprixCumulé0 |
-| --------------------------------------------------------- | --------: | --------: | ---------- | --------------------------------------------: | -------------------------: |
-| Configuration initiale | 1.000,000 | 1.000,000 | 5.000 | 1,000 | 0 |
-| Le Trader A dépose 50 jetons0 et récupère 47,619 jetons1 | 1.050,000 | 952,381 | 5.020 | 0,907 | 20 |
+| Evénement | réserve0 | réserve1 | horodatage | Taux de change marginal (réserve1 / réserve0) | DernierprixCumulé0 |
+| --------------------------------------------------------- | ---------:| ---------:| ---------- | ---------------------------------------------:| ----------------------------:|
+| Configuration initiale | 1.000,000 | 1.000,000 | 5.000 | 1,000 | 0 |
+| Le Trader A dépose 50 jetons0 et récupère 47,619 jetons1 | 1.050,000 | 952,381 | 5.020 | 0,907 | 20 |
| Le Trader B dépose 10 jetons0 et récupère 8,984 jetons1 | 1.060,000 | 943,396 | 5.030 | 0,890 | 20+10\*0,907 = 29,07 |
| Le Trader C dépose 40 jetons0 et récupère 34,305 jetons1 | 1.100,000 | 909,090 | 5.100 | 0,826 | 29,07+70\*0,890 = 91,37 |
| Le Trader D dépose 100 jetons1 et récupère 109,01 jetons0 | 990,990 | 1.009,090 | 5.110 | 1,018 | 91,37+10\*0,826 = 99,63 |
@@ -499,9 +499,9 @@ Lors du premier dépôt, nous ne connaissons pas la valeur relative des deux jet
Nous pouvons nous y fier parce qu'il est dans l'intérêt du déposant de fournir une valeur égale pour éviter de perdre de la valeur à l'arbitrage. Imaginons que la valeur des deux jetons est identique mais que notre déposant a déposé quatre fois plus de **Jetons1** que de **Jetons0**. Un trader peut s'appuyer sur le fait que l'échange de paire laisse supposer qu'il est plus utile de retirer de la valeur du **Jeton0**.
| Evénement | réserve0 | réserve1 | réserve0 \* réserve1 | Valeur du pool (réserve0 + réserve1) |
-| ---------------------------------------------------------------------- | -------: | -------: | -------------------: | -----------------------------------: |
-| Configuration initiale | 8 | 32 | 256 | 40 |
-| Le Trader dépose dépose 8 jetons **Jeton0** et récupère 16 **Jetons1** | 16 | 16 | 256 | 32 |
+| ---------------------------------------------------------------------- | --------:| --------:| ----------------------:| ------------------------------------:|
+| Configuration initiale | 8 | 32 | 256 | 40 |
+| Le Trader dépose dépose 8 jetons **Jeton0** et récupère 16 **Jetons1** | 16 | 16 | 256 | 32 |
Comme vous pouvez le constater, le trader a gagné 8 jetons supplémentaires qui viennent d'une réduction de la valeur du pool, affectant le déposant qui le possède.
@@ -515,12 +515,12 @@ Comme vous pouvez le constater, le trader a gagné 8 jetons supplémentaires qui
Qu'il s'agisse du dépôt initial ou d'un dépôt ultérieur, le nombre de jetons de liquidité que nous fournissons est égal à la racine carrée du changement dans `reserve0*reserve1` et la valeur du jeton de liquidité ne change pas (sauf si nous obtenons un dépôt qui n'a pas de valeurs égales pour les deux types, auquel cas l'« amende » est distribuée). Voici un autre exemple avec deux jetons qui ont la même valeur, avec trois bons dépôts et un mauvais (dépôt d'un seul type de jeton, donc il ne produit aucun jeton de liquidité).
| Événement | réserve0 | réserve1 | réserve0 \* réserve1 | Valeur du pool (réserve0 + réserve1) | Jetons de liquidité frappés pour ce dépôt | Jetons de liquidité totaux | Valeur de chaque jeton de liquidité |
-| ------------------------------ | -------: | -------: | -------------------: | -----------------------------------: | ----------------------------------------: | -------------------------: | ----------------------------------: |
-| Configuration initiale | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
-| Dépôt de quatre de chaque type | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
-| Dépôt de deux de chaque type | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
-| Dépôt de valeurs inégales | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
-| Après arbitrage | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
+| ------------------------------ | --------:| --------:| ----------------------:| ------------------------------------:| -----------------------------------------:| --------------------------:| -----------------------------------:|
+| Configuration initiale | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
+| Dépôt de quatre de chaque type | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
+| Dépôt de deux de chaque type | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
+| Dépôt de valeurs inégales | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
+| Après arbitrage | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
```solidity
}
@@ -743,7 +743,7 @@ C'est la fonction principale de l'usine : créer un échange de paires entre deu
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Nous souhaitons que l'adresse du nouvel échange soit déterminable de sorte qu'elle puisse être calculée à l'avance hors chaîne (cela peut être utile pour [les transactions de couche 2](/developers/docs/layer-2-scaling/)). Pour cela, nous devons avoir les adresses de jetons dans un ordre cohérent indépendant de l'ordre dans lequel nous les avons reçus. Aussi les trions-nous ici.
+Nous souhaitons que l'adresse du nouvel échange soit déterminable de sorte qu'elle puisse être calculée à l'avance hors chaîne (cela peut être utile pour [les transactions de couche 2](/developers/docs/scaling/)). Pour cela, nous devons avoir les adresses de jetons dans un ordre cohérent indépendant de l'ordre dans lequel nous les avons reçus. Aussi les trions-nous ici.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
@@ -985,7 +985,7 @@ Les fournisseurs de liquidités spécifient un minimum, généralement parce qu'
Par exemple, imaginez un cas où le taux de change est d'un pour un et où le fournisseur de liquidités spécifie ces valeurs :
| Paramètre | Valeur |
-| -------------- | -----: |
+| -------------- | ------:|
| amountADesired | 1000 |
| amountBDesired | 1000 |
| amountAMin | 900 |
diff --git a/public/content/translations/fr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/fr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 295af215f85..223212c98ed 100644
--- a/public/content/translations/fr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/fr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -295,4 +295,4 @@ Le code source de ce tutoriel est disponible [ici](https://github.com/EthWorks/W
Voici d'autres tutoriels qui pourraient vous intéresser :
-- [Tester des contrats intelligents avec Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Tester des contrats intelligents avec Waffle](/developers/tutorials/waffle-test-simple-smart-contract//)
diff --git a/public/content/translations/fr/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/fr/developers/tutorials/waffle-test-simple-smart-contract/index.md
index dfec15096da..3a3beba4140 100644
--- a/public/content/translations/fr/developers/tutorials/waffle-test-simple-smart-contract/index.md
+++ b/public/content/translations/fr/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -200,4 +200,4 @@ Vous avez fait votre premier (grand) pas vers les tests des contrats intelligent
- [Tester ERC20 avec Waffle](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
- [Waffle : Bouchonnage dynamique et tests de contrats](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
-- [Tutoriel pour "dire bonjour au monde" avec hardhat et ethers](/developers/tutorials/waffle-hello-world-with-buidler-tutorial/)
+- [Tutoriel pour "dire bonjour au monde" avec hardhat et ethers](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers//)
diff --git a/public/content/translations/fr/glossary/index.md b/public/content/translations/fr/glossary/index.md
index ede11c3f3ef..5b5b26b4ca5 100644
--- a/public/content/translations/fr/glossary/index.md
+++ b/public/content/translations/fr/glossary/index.md
@@ -2,1119 +2,435 @@
title: Glossaire Ethereum
description: Glossaire non-exhaustif des termes (techniques ou non) liés à Ethereum
lang: fr
-sidebarDepth: 2
---
# Glossaire {#ethereum-glossary}
-
-
## \# {#section-numbers}
-### Attaque des 51 % {#51-attack}
+
-Type d'attaque mené sur un [réseau](#network) décentralisé où un groupe prend le contrôle de la majorité des [nœuds](#node). Cela permettrait de frauder la blockchain en inversant des [transactions](#transaction) et en doublant les dépenses d'[Ether](#ether) et d'autres jetons.
+
## A {#section-a}
-### Compte {#account}
-
-Objet contenant une [adresse](#address), un solde, un [nonce](#nonce), ainsi qu'un stockage et un code facultatifs. Il peut s'agir d'un [compte de contrat](#contract-account) ou d'un [compte externe (EOA)](#eoa).
-
-
- Comptes Ethereum
-
-
-### Adresse {#address}
-
-De manière générale, il s'agit d'un [compte externe (EOA)](#eoa) ou d'un [compte de contrat](#contract-account) qui peut recevoir (adresse de destination) ou envoyer (adresse source) des [transactions](#transaction) sur la blockchain. Plus spécifiquement, il s'agit des 160 bits de droite de l'[empreinte numérique Keccak](#keccak-256) d'une [clé publique](#public-key) [ECDSA](#ecdsa).
-
-### Interface binaire d'application (ABI) {#abi}
-
-Façon standardisée d'interagir avec les [contrats](#contract-account) dans l'écosystème Ethereum, que ce soit depuis l'extérieur de la blockchain ou pour les interactions de contrat à contrat.
+
-
- ABI
-
+
-### Interface de programmation d'application {#api}
+
-Une interface de programmation d'application (API) est un ensemble de définitions permettant d'utiliser un logiciel. Une API se situe entre une application et un serveur web et facilite le transfert de données entre eux.
+
-### ASIC {#asic}
+
-Circuit intégré spécifique à l’application. Ceci fait généralement référence à un circuit intégré, personnalisé pour le minage de cryptomonnaie.
+
-### Assert {#assert}
-
-Dans [Solidity](#solidity), `assert(false)` compile en `0xfe`, un code d'opération (opcode) non valide, qui utilise tout le [carburant](#gas) restant et annule toutes les modifications. Lorsqu'une déclaration `assert()` échoue, quelque chose ne fonctionne pas du tout comme prévu, et vous devez corriger votre code. Il est conseillé d'utiliser `assert()` pour éviter les conditions qui ne doivent jamais se produire.
-
-
- Sécurité des contrats intelligents
-
-
-### Attestation {#attestation}
-
-Une affirmation faite par une entité selon laquelle quelque chose est vrai. Dans le contexte d'Ethereum, les validateurs de consensus doivent déclarer ce qu'ils pensent être l'état de la chaîne. À des moments déterminés, chaque validateur est chargé de publier différentes attestations qui rendent officielle la vue de ce validateur sur la chaîne, y compris le dernier point de contrôle finalisé et la tête actuelle de la chaîne.
-
-
- Attestations
-
+
## B {#section-b}
-### Frais de base {#base-fee}
-
-Chaque [bloc](#block) a un prix de réserve connu sous le nom de « frais de base ». Il s'agit des frais minimum de [gaz](#gas) qu'un utilisateur doit payer pour inclure une transaction dans le bloc suivant.
-
-
- Gaz et frais
-
-
-### Chaîne phare {#beacon-chain}
-
-La chaîne phare a été la blockchain qui a introduit la [preuve d'enjeu](#pos) et [les validateurs](#validator) sur Ethereum. Elle a fonctionné parallèlement au réseau principal par preuve de travail Ethereum depuis décembre 2020 jusqu'à ce que les deux chaînes soient fusionnées en septembre 2022 pour former l'Ethereum d'aujourd'hui.
-
-
- Chaîne phare
-
-
-### Gros-boutiste {#big-endian}
-
-Représentation de nombre positionnel où le chiffre le plus important est le premier en mémoire. Contraire du petit-boutisme (little-endian), où le chiffre le moins significatif arrive en premier.
-
-### Bloc {#block}
-
-Un bloc est une unité d'information groupée qui comprend une liste ordonnée de transactions et des informations liées au consensus. Les blocs sont proposés par les validateurs de preuves d'enjeu, après quoi ils sont partagés sur l'ensemble du réseau pair-à-pair, où ils peuvent facilement être vérifiés indépendamment par tous les autres nœuds. Les règles de consensus régissent le contenu d'un bloc considéré comme valide, et tout bloc invalide est ignoré par le réseau. L'ordre de ces blocs et les transactions qui s'y trouvent créent une chaîne d'événements déterministe dont la fin représente l'état actuel du réseau.
-
-
- Les blocs
-
-
-### Explorateur de bloc {#block-explorer}
-
-Une interface qui permet à un utilisateur de rechercher des informations depuis et à propos d'une blockchain. Cela inclut la récupération des transactions individuelles, l'activité associée à des adresses spécifiques et des informations sur le réseau.
-
-### En-têtes de bloc {#block-header}
-
-L'en-tête de bloc est une collection de métadonnées à propos d'un bloc et un résumé des transactions incluses dans le bloc d'exécution.
-
-### Propagation de bloc {#block-propagation}
-
-Le procédé de transmission de la confirmation d'un bloc à tous les autres nœuds au sein du réseau.
-
-### Proposant de bloc {#block-proposer}
-
-Validateur spécifique choisi pour créer un bloc dans un [créneau](#slot) particulier.
-
-### Récompense du bloc {#block-reward}
-
-C'est le total d'ether reversé au proposant ayant validé le bloc.
-
-### Statut du bloc {#block-status}
+
-Les états dans lesquels un bloc peut exister. Quelques états possibles sont :
+
-- proposé : le bloc a été proposé par un validateur
-- programmé : les validateurs soumettent actuellement des données
-- manqué/ignoré : le proposant n'a pas proposé de bloc dans le laps de temps éligible.
-- orphelin : le bloc a été réorganisé par l'[algorithme de choix de fourche](#fork-choice-algorithm)
+
-### Durée de bloc {#block-time}
+
-L'intervalle de temps entre les blocs ajoutés à la blockchain.
+
-### Validation de bloc {#block-validation}
+
-Processus consistant à vérifier qu'un nouveau bloc contient des transactions et signatures valides. Il s'appuie sur la chaîne historique la plus lourde et suit toutes les autres règles de consensus. Les blocs valides sont ajoutés à la fin de la chaîne et se propagent aux autres sur le réseau. Les blocs invalides sont ignorés.
+
-### Blockchain {#blockchain}
+
-Séquence de [blocs](#block), où chacun est relié à son prédécesseur jusqu'au [bloc d'origine](#genesis-block) en référençant le hachage du bloc précédent. L'intégrité de la blockchain est crypto-économiquement sécurisée à l'aide d'un mécanisme de consensus basé sur la preuve d'enjeu.
+
-
- Qu'est-ce qu'une blockchain ?
-
+
-### Nœud d'amorçage {#bootnode}
+
-Nœuds qui peuvent être utilisés pour initier le processus Discovery lors de l'exécution d'un nœud. Les adresses de ces nœuds sont enregistrés dans le code source d'Ethereum.
+
-### Bytecode {#bytecode}
+
-Ensemble d'instructions abstraites conçues pour être exécutées efficacement par un interpréteur logiciel ou une machine virtuelle. Contrairement au code source lisible par l'homme, le bytecode est exprimé sous forme numérique.
+
-### Fourche Byzantium {#byzantium-fork}
+
-La première des deux [fourches majeures](#hard-fork) de la phase de développement [Metropolis](#metropolis). Elle comprend le report de la [bombe de difficulté](#difficulty-bomb) de Metropolis et la réduction des récompenses de bloc de l'EIP 649, l'[Ice Age](#ice-age) ayant été retardé de 1 an et la récompense de bloc réduite de 5 à 3 ethers.
+
## C {#section-c}
-### Casper-FFG {#casper-ffg}
+
-Casper-FFG est un protocole de consensus par preuve d'enjeu utilisé avec l'algorithme de choix de fourche [LMD-GHOST](#lmd-ghost) pour permettre à [des clients de consensus](#consensus-client) de s'entendre sur la tête de la chaîne phare.
+
-### Point de contrôle {#checkpoint}
+
-La [chaîne phare](#beacon-chain) est cadencée en créneaux (12 secondes) et en périodes (32 créneaux). Le premier créneau d'une période est un point de contrôle. Quand une [supermajorité](#supermajority) de validateurs atteste du lien entre deux points de contrôle, ils peuvent être [justifiés](#justification), puis, quand un autre point de contrôle est justifié en sus, ils peuvent être [finalisés](#finality).
+
-### Compiler {#compiling}
+
-Traduire du code écrit dans un langage de programmation de haut niveau (par exemple, [Solidity](#solidity)) en un langage de plus bas niveau (par exemple, le [bytecode](#bytecode) de l'EVM).
+
-
- Compiler des contrats intelligents
-
+
-### Comité {#committee}
+
-Groupe d’au moins 128 [validateurs](#validator) ayant la charge de valider des blocs dans chaque créneau. L'un des validateurs au sein du comité est l'agrégateur, responsable de l'agrégation des signatures de tous les autres validateurs au sein du comité qui s'accordent sur une attestation. A ne pas confondre avec le [comité de synchronisation](#sync-committee).
+
-### Infaisabilité informatique {#computational-infeasibility}
+
-Un processus est infaisable du point de vue informatique s'il exige de quiconque pourrait avoir un intérêt à le réaliser un temps trop long en pratique (par ex. des milliards d'années).
+
-### Consensus {#consensus}
+
-Lorsqu'une supermajorité de nœuds du réseau ont tous les mêmes blocs dans leur meilleure blockchain validée localement. À ne pas confondre avec les [règles de consensus](#consensus-rules).
+
-### Client de consensus {#consensus-client}
-
-Les clients de consensus (tels que Prysm, Teku, Nimbus, Lighthouse et Lodestar) exécutent l'algorithme de consensus de [preuve d'enjeu](#pos) d'Ethereum permettant au réseau de parvenir à un accord sur la tête de la chaîne phare. Les clients de consensus ne participent pas à la validation/diffusion des transactions ou à l'exécution des transitions d'état. Ce sont les [clients d'exécution](#execution-client) qui s'en chargent.
-
-### Couche de consensus {#consensus-layer}
-
-La couche de consensus d'Ethereum est le réseau des [clients de consensus](#consensus-client).
-
-### Règles de consensus {#consensus-rules}
-
-Règles de validation de bloc que les nœuds complets appliquent pour maintenir un consensus avec les autres nœuds. À ne pas confondre avec le [consensus](#consensus).
-
-### Envisagé pour inclusion (CFI) {#cfi}
-
-[EIP](#eip) de base qui n'est pas encore actif sur le réseau principal, les développeurs de clients étant généralement favorables à l'idée. En supposant qu'il réponde à toutes les exigences pour inclusion dans le réseau principal, il pourrait potentiellement être inclus dans une mise à jour du réseau (pas nécessairement la prochaine).
-
-### Fourche Constantinople {#constantinople-fork}
-
-Seconde partie de la phase [Metropolis](#metropolis), initialement prévue pour la mi-2018. Devait notamment inclure le passage à un algorithme de consensus hybride [preuve de travail](#pow)/[preuve d'enjeu](#pos).
-
-### Compte de contrat {#contract-account}
-
-Compte contenant du code qui s'exécute chaque fois qu'il reçoit une [transaction](#transaction) d'un autre [compte](#account) (qu'il s'agisse d'un [compte externe](#eoa) ou d'un [contrat](#contract-account)).
-
-### Transaction de création de contrat {#contract-creation-transaction}
-
-Une [transaction spéciale](#transaction) qui inclut le code d'initiation d'un contrat. Le destinataire est défini comme `null` et le contrat est déployé sur une adresse générée à partir de l'adresse de l'utilisateur et du `nonce`. qui est utilisé pour enregistrer un [contrat](#contract-account) et l'intégrer à la blockchain Ethereum.
-
-### cryptoéconomies {#cryptoeconomics}
-
-L'économie des cryptomonnaies.
+
## D {#section-d}
-### Đ {#d-with-stroke}
-
-Đ (D barré) est utilisé en ancien anglais, moyen anglais, en islandais et féroïen pour représenter la lettre majuscule « Eth ». On l'utilise dans des mots comme ĐEV ou Đapp (application décentralisée), où le Đ désigne la lettre nordique « eth ». L'eth majuscule (Ð) est aussi utilisé pour symboliser la cryptomonnaie Dogecoin. On la trouve souvent dans la littérature plus ancienne sur Ethereum mais elle est moins utilisée aujourd'hui.
+
-### DAG {#dag}
+
-DAG signifie Graphe Acyclique Orienté (Directed Acyclic Graph). Il s'agit d'une structure de données composées de nœuds et de liens entre eux. Avant la fusion, Ethereum utilisait un DAG dans son algorithme [de preuve de travail](#pow) , [Ethash](#ethash), mais celui-ci n'est plus utilisé avec la [preuve d'enjeu](#pos).
+
-### DApp {#dapp}
+
-Application décentralisée. Au minimum, il s'agit d'un [contrat intelligent](#smart-contract) et d'une interface utilisateur web. Plus généralement, une dApp est une application web qui est construite sur des services d'infrastructure de pair à pair, décentralisés et ouverts. Par ailleurs, de nombreuses applications décentralisées incluent un stockage décentralisé et/ou un protocole et une plateforme de messages.
+
-
- Introduction aux dApps
-
+
-### Disponibilité des données {#data-availability}
+
-Propriété permettant à tout noeud connecté au réseau de télécharger n'importe quelle portion de l'état qu'il souhaite.
+
-### Décentralisation {#decentralization}
+
-Action de transférer le contrôle et l'exécution des processus en dehors d'une entité centrale.
+
-### Organisation autonome décentralisée (DAO) {#dao}
+
-Entreprise ou autre organisation fonctionnant sans gestion hiérarchique. DAO peut également faire référence à un contrat intitulé « The DAO » lancé le 30 avril 2016, qui a ensuite été piraté en juin 2016. Ceci a finalement motivé une [fourche majeure](#hard-fork) (nom de code DAO) au bloc 1 192 000, qui a inversé le contrat DAO piraté et a causé la division d'Ethereum et d'Ethereum Classic en deux systèmes concurrents.
+
-
- Organisations autonomes décentralisées (DAO)
-
+
-### Plateforme d'échanges décentralisés (DEX) {#dex}
+
-Type de [DApp](#dapp) qui vous permet d'échanger des jetons avec des pairs sur le réseau. Vous avez besoin d'[ethers](#ether) pour les utiliser (pour payer les [frais de transaction](#transaction-fee)). Elles ne sont soumises à aucune restriction géographique contrairement aux plateformes d'échanges centralisés et n'importe qui peut participer.
-
-
- Échanges décentralisés
-
-
-### Deed {#deed}
-
-Voir [jeton non fongible (NFT)](#nft).
-
-### Contrat de dépôt {#deposit-contract}
-
-Passerelle de mise en jeu sur Ethereum. Le contrat de dépôt est un contrat intelligent sur Ethereum qui accepte les dépôts d'ETH et gère les soldes de validateur. Un validateur ne peut pas être activé sans le dépôt d'ETH dans ce contrat. Le contrat requiert des ETH et des données requises. Au nombre des données requises figurent la clé publique du validateur et la clé publique de retrait, signée par la clé privée du validateur. Ces données sont nécessaires pour qu'un validateur soit identifié et approuvé par le réseau de [preuve d'enjeu](#pos).
-
-### DeFi {#defi}
-
-Abréviation de « Decentralized Finance » (finance décentralisée), vaste catégorie d'[dApps](#dapp) visant à fournir des services financiers sur toute la blockchain, sans aucun intermédiaire et de sorte que toute personne ayant une connexion Internet puisse participer.
-
-
- Finance décentralisée (DeFi)
-
-
-### Difficulté {#difficulty}
-
-Paramétrage qui, dans les réseaux de [preuve de travail](#pow), contrôle, à l'échelle du réseau, le nombre de calculs moyens nécessaire pour trouver un nonce valide. La difficulté est représentée par le nombre de zéros de tête requis dans le hachage du bloc qui en résultat pour qu'il soit considéré comme valide. Ce concept est obsolète dans Ethereum depuis la transition vers la preuve d'enjeu.
-
-### Bombe de difficulté {#difficulty-bomb}
-
-Augmentation exponentielle planifiée du paramètre de [difficulté](#difficulty) de la [preuve de travail](#pow) qui a été conçue pour inciter à la transition vers la [preuve d'enjeu](#pos), réduisant les possibilités d'une [fourche](#hard-fork). La bombe de difficulté est devenue obsolète avec la [transition vers la preuve d'enjeu](/roadmap/merge).
-
-### Signature numérique {#digital-signatures}
-
-Courte chaîne de données qu'un utilisateur produit pour un document en utilisant une [clé privée](#private-key) afin que quiconque ayant la [clé publique](#public-key) correspondante, la signature et le document puisse vérifier (1) que le document a bien été « signé » par le propriétaire de cette clé privée particulière et (2) que le document n'a pas été modifié après sa signature.
+
-### Découverte {#discovery}
-
-Procédé au cours duquel un noeud du réseau Ethereum trouve d'autres nœuds auxquels se connecter.
-
-### Table d'empreintes numériques distribuée (DHT) {#distributed-hash-table}
-
-Structure de données contenant des pairs `(key, value)`, utilisée par les nœuds du réseau Ethereum afin d'identifier les pairs auxquels se connecter et déterminer les protocoles qui seront utilisés sur cette communication.
-
-### Double dépense {#double-spend}
-
-Fourche délibérée de la blockchain, où un utilisateur doté d'une quantité suffisamment importante de puissance de minage/mise envoie une transaction entraînant le déplacement d'une monnaie hors chaîne (par exemple, une sortie en monnaie fiduciaire ou un achat hors chaîne) puis réorganise la blockchain pour supprimer cette transaction. Une double dépense réussie laisse à l'attaquant ses actifs sur et hors chaîne.
-
## E {#section-e}
-### Algorithme de signature numérique à courbe elliptique (ECDSA) {#ecdsa}
-
-Algorithme cryptographique utilisé par Ethereum pour garantir que les fonds ne peuvent être dépensés que par leurs propriétaires. C'est la méthode privilégiée pour créer des clés publiques et privées. Pertinent pour la génération [d'adresse](#address) de compte et la vérification de la [transaction](#transaction).
-
-### Cryptage {#encryption}
-
-Le cryptage de données est la conversion électronique en une forme illisible exceptée par le détenteur de la clé correspondante de décryptage.
-
-### Entropie {#entropy}
-
-En cryptographie, l'entropie désigne le manque de prévisibilité ou le niveau d'aléa. Lorsqu'ils génèrent des informations secrètes, comme les [clés privées](#private-key), les algorithmes s'appuient généralement sur une source d'entropie élevée pour garantir un résultat imprévisible.
-
-### Période {#epoch}
-
-Période de 32 [créneaux](#slot), chaque créneau étant de 12 secondes, totalisant 6,4 minutes. Les [comités](#committee) de validateurs sont remaniés lors de chaque période pour des raisons de sécurité. Chaque période représente une opportunité de [finaliser](#finality) la chaîne. Chaque validateur se voit attribuer de nouvelles responsabilités au début de chaque période.
-
-
- Preuve d'enjeu
-
-
-### Equivocation (Ambiguïté) {#equivocation}
-
-Envoi par un validateur de deux messages contradictoires. Un exemple simple pourrait résider dans l'envoi de deux transactions différentes avec les mêmes références. Un autre exemple pourrait consister en la proposition de deux blocs pour le même emplacement (ou pour le même créneau).
-
-### Eth1 {#eth1}
-
-« Eth1 » est un terme qui faisait référence au réseau principal Ethereum, c'est-à-dire la blockchain actuelle basée sur la preuve de travail. Ce terme a depuis été abandonné au profit de « couche d'exécution ». [En savoir plus sur ce changement de nom](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/).
-
-
- En savoir plus sur les mises à niveau d'Ethereum
-
-
-### Eth2 {#eth2}
+
-« Eth2 » est un terme qui faisait référence à un ensemble de mises à niveau du protocole Ethereum, notamment la transition d'Ethereum vers la preuve d'enjeu. Ce terme a depuis été abandonné au profit de « couche de consensus ». [En savoir plus sur ce changement de nom](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/).
+
-
- En savoir plus sur les mises à niveau d'Ethereum
-
+
-### Proposition d'amélioration d'Ethereum (EIP) {#eip}
+
-Document de conception visant à informer la communauté Ethereum qui décrit une nouvelle fonctionnalité proposée, ses processus ou son environnement (voir [ERC](#erc)).
+
-
- Introduction aux EIP
-
+
-### Service de Nom d'Ethereum (ENS) {#ens}
+
-Le registre ENS est un [contrat](#smart-contract) central unique qui fournit une correspondance entre des noms de domaine et des propriétaires et des résolveurs, comme décrit dans l'[EIP](#eip) 137.
+
-[Plus d'infos sur ens.domains](https://ens.domains)
+
-### Client d'exécution {#execution-client}
+
-Les clients d'exécution (auparavant appelés « clients Eth1 »), tels que Besu, Erigon, Go-Ethereum (Geth) ou Nethermind, sont chargés du traitement et de la diffusion des transactions, ainsi que de la gestion de l'état d'Ethereum. Ils exécutent les calculs pour chaque transaction en utilisant la [machine virtuelle Ethereum](#evm) pour s'assurer que les règles du protocole sont respectées.
+
-### Couche d'exécution {#execution-layer}
+
-La couche d'exécution d'Ethereum est le réseau des [clients d'exécution](#execution-client).
+
-### Compte externe (EOA) {#eoa}
+
-Les comptes externes (EOA) sont des [comptes](#account) contrôlés par les [clés privées](#private-key), généralement générées en utilisant une [phrase de récupération](#hd-wallet-seed). Contrairement aux contrats intelligents, les comptes externes sont des comptes ne disposant d'aucun code associé. Généralement, ces comptes sont gérés avec un [portefeuille](#wallet).
+
-### Demande de commentaires Ethereum (ERC) {#erc}
+
-Libellé donné à certaines [EIP](#eip) qui visent à définir une norme spécifique d'utilisation d'Ethereum.
+
-
- Introduction aux EIP
-
-
-### Ethash {#ethash}
-
-Algorithme de [preuve de travail](#pow) qui a été utilisé sur Ethereum avant de passer à [preuve d'enjeu](#pos).
-
-[En savoir plus](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash)
-
-### Ether {#ether}
-
-Cryptomonnaie native utilisée par l'écosystème Ethereum, qui couvre les coûts de [gaz](#gas) lors de l'exécution des transactions. S'écrit également sous la forme ETH ou avec son symbole Ξ qui est le caractère grec Xi en majuscule.
-
-
- La monnaie de notre avenir numérique
-
-
-### Événements {#events}
-
-Permet d'utiliser les dispositifs de journalisation de l'[EVM](#evm). Les [DApp](#dapp) peuvent repérer les événements et les utiliser pour déclencher des rappels JavaScript dans l'interface utilisateur.
-
-
- Événements et journaux
-
-
-### Machine Virtuelle Ethereum (EVM) {#evm}
-
-Machine virtuelle basée sur une pile, qui exécute du [bytecode](#bytecode). Dans Ethereum, le modèle d'exécution spécifie comment l'état du système est modifié, en fonction d'une série d'instructions en bytecode et d'un petit tuple de données environnementales. Ceci est spécifié via un modèle formel de machine d'état virtuelle.
-
-
- Machine virtuelle Ethereum (EVM)
-
-
-### Langage d'assemblage de l'EVM {#evm-assembly-language}
-
-Forme lisible par l'homme du [bytecode de l'EVM](#bytecode).
+
## F {#section-f}
-### Fonction de secours {#fallback-function}
-
-Fonction par défaut appelée en l'absence de données ou d'un nom de fonction déclaré.
-
-### Robinet {#faucet}
-
-Service exécuté via un [contrat intelligent](#smart-contract), qui distribue des fonds sous la forme d'ethers de test gratuits pouvant être utilisés sur un réseau de test.
+
-
- Robinets de réseau de test
-
+
-### Finalité {#finality}
+
-La finalité est la garantie qu'avant une heure donnée, un ensemble de transactions ne changera pas et ne pourra pas être annulé.
+
-
- Finalité de la preuve d'enjeu
-
+
-### Finney {#finney}
+
-Unité de l'[ether](#ether). 1 finney = 1015 [wei](#wei). 103 finney = 1 ether.
+
-### Fourche {#fork}
-
-Changement de protocole causant la création d'une chaîne alternative ou divergence temporelle en deux chemins de blocs potentiels.
-
-### Algorithme de sélection de fourche {#fork-choice-algorithm}
-
-Algorithme utilisé pour identifier la tête de la blockchain. Sur la couche d'exécution, la tête de la chaîne est identifiée comme celle qui présente la plus grande difficulté totale. Cela signifie que la véritable tête de la chaîne est celle qui a nécessité le plus de travail pour être minée. Sur la couche de consensus, l'algorithme observe l'accumulation des attestations en provenance des validateurs ([LMD_GHOST](#lmd-ghost)).
-
-### Preuve de fraude {#fraud-proof}
-
-Modèle de sécurité pour certaines solutions de [couche 2](#layer-2) où, pour gagner en rapidité, les transactions sont regroupées en lots ([rollups](#rollups)) et soumises sur Ethereum en une seule transaction. Les transactions sont supposées être valides, mais peuvent être contestées si une fraude est suspectée. Une preuve de fraude exécutera alors la transaction pour vérifier l'existence d'une fraude. Cette méthode augmente le nombre de transactions possibles tout en maintenant le niveau de sécurité. Certains [rollups](#rollups) utilisent des [preuves de validité](#validity-proof).
-
-
- Rollups optimistes
-
-
-### Frontier {#frontier}
-
-Phase initiale de développement à des fins de test d'Ethereum, qui a duré de juillet 2015 à mars 2016.
+
## G {#section-g}
-### Gaz {#gas}
-
-Carburant virtuel utilisé dans Ethereum pour exécuter les contrats intelligents. L'[EVM](#evm) utilise un mécanisme de comptabilité pour mesurer la consommation de gaz et limiter la consommation de ressources informatiques (voir [Turing complet](#turing-complete)).
+
-
- Gaz et frais
-
+
-### Limite de gaz {#gas-limit}
+
-Montant maximum de [gaz](#gas) qu'une [transaction](#transaction) ou qu'un [bloc](#block) peut consommer.
+
-### Prix du gaz {#gas-price}
+
-Prix en éther d'une unité de gaz spécifiée dans une transaction.
-
-### Bloc d'origine {#genesis-block}
-
-Premier bloc d'une [blockchain](#blockchain), utilisé pour initialiser un certain réseau et sa cryptomonnaie.
-
-### Geth {#geth}
-
-Version abrégée de « Go Ethereum ». L'une des implémentations les plus importantes du protocole Ethereum, programmée en Go.
-
-[Plus d'infos sur geth.ethereum.org](https://geth.ethereum.org/)
-
-### Gwei {#gwei}
-
-Abréviation de Gigawei, unité de l'[ether](#ether) couramment utilisée pour attribuer un prix au [gaz](#gas). 1 Gwei = 109 [wei](#wei). 109 Gwei = 1 ether.
+
## H {#section-h}
-### Fourche majeure {#hard-fork}
-
-Divergence permanente dans la [blockchain](#blockchain), aussi appelée modification de fourche majeure. Elle se produit habituellement lorsque les nœuds non mis à niveau ne peuvent pas valider les blocs créés par les nœuds mis à niveau qui appliquent des [règles de consensus](#consensus-rules) plus récentes. À ne pas confondre avec une fourche, une fourche mineure, une fourche logicielle ou une fourche Git.
+
-### Empreinte numérique {#hash}
+
-Empreinte de longueur fixe d'intrants de taille variable, produite par une fonction de hachage. (Voir [Keccak-256](#keccak-256)).
+
-### Puissance de hachage {#hash-rate}
-
-Nombre de calculs par seconde réalisé par les ordinateurs minant sur le réseau.
-
-### Portefeuille HD {#hd-wallet}
-
-[Portefeuille](#wallet) utilisant le protocole de création et de transfert de clés déterministe hiérarchique (HD).
-
-[Plus d'infos sur github.com](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
-
-### Graine de portefeuille HD {#hd-wallet-seed}
-
-Valeur utilisée pour générer la [clé privée](#private-key) maîtresse et le code de chaîne maître pour un [portefeuille](#wallet) HD. Il est possible de représenter la graine de portefeuille par des mots mnémoniques, ce qui facilite la copie, la sauvegarde et la restauration des clés privées pour les utilisateurs.
-
-### Homestead {#homestead}
-
-Deuxième phase de développement d'Ethereum, lancée en mars 2016 au bloc 1 150 000.
+
## I {#section-i}
-### Index {#index}
-
-Structure réseau destinée à optimiser la sollicitation d'informations à travers la [blockchain](#blockchain) en fournissant un chemin efficace vers sa source de stockage.
-
-### Protocole d'échange d'adresses de clients (ICAP) {#icap}
-
-Encodage d'adresse Ethereum partiellement compatible avec l'encodage du numéro de compte bancaire international (IBAN), offrant un encodage polyvalent, contrôlé et interopérable pour les adresses Ethereum. Les adresses ICAP utilisent un nouveau code de pseudo-pays IBAN - XE signifiant « eXtended Ethereum », comme utilisé dans les monnaies non juridictionnelles (par exemple, XBT, XRP, XCP).
-
-### Ice Age {#ice-age}
-
-[Fourche majeure](#hard-fork) d'Ethereum au bloc 200 000 visant à introduire une augmentation exponentielle de la [difficulté](#difficulty) (aussi appelée [bombe de difficulté](#difficulty-bomb)), motivant une transition vers la [preuve d'enjeu](#pos).
-
-### Environnement de développement intégré (IDE) {#ide}
-
-Interface utilisateur qui combine généralement un éditeur de code, un compilateur, un environnement d'exécution et un débogueur.
-
-
- Environnement de développement intégré (IDE)
-
-
-### Problème de code déployé immuable {#immutable-deployed-code-problem}
+
-Une fois que le code d'un [contrat](#smart-contract) (ou celui d'une [bibliothèque](#library)) est déployé, il devient immuable. Les pratiques de développement de logiciels standard reposent sur la possibilité de corriger d'éventuels bogues et d'ajouter de nouvelles fonctionnalités. Cela représente donc un problème pour le développement de contrats intelligents.
+
-
- Déployer des contrats intelligents
-
+
-### Transaction interne {#internal-transaction}
+
-[Transaction](#transaction) envoyée depuis un [compte de contrat](#contract-account) vers un autre compte de contrat ou vers un [compte externe (EOA)](#eoa) (voir [message](#message)).
+
-### Émission
-
-Frappe de nouveaux ethers pour récompenser la proposition de bloc, l'attestation et la dénonciation.
-
## K {#section-k}
-### Fonction de dérivation de clé (KDF) {#kdf}
-
-Aussi appelée « algorithme d'étirement de mot de passe », elle est utilisée par les formats [keystore](#keystore-file) pour protéger des attaques par force brute, par dictionnaire et de table arc-en-ciel sur le chiffrement des phrases de sécurité, en hachant celles-ci de façon répétée.
-
-
- Sécurité de contrat intelligent
-
-
-### Keystore {#keyfile}
+
-La paire clé/adresse privée de chaque compte existe en tant que fichier clé unique dans un client Ethereum. Ce sont des fichiers texte JSON qui contiennent la clé privée chiffrée du compte, qui ne peut être déchiffrée qu'avec le mot de passe entré lors de la création du compte.
+
-### Keccak-256 {#keccak-256}
-
-Fonction de hachage cryptographique ([empreinte numérique](#hash)) utilisée dans Ethereum. Keccak-256 a été standardisée comme [SHA](#sha)-3.
+
## L {#section-l}
-### Couche 2 {#layer-2}
-
-Domaine de développement axé sur des améliorations de couches se situant au-dessus du protocole Ethereum. Ces améliorations sont liées aux vitesses de [transaction](#transaction), à la réduction des [frais de transaction](#transaction-fee) et à la confidentialité des transactions.
-
-
- Couche 2
-
-
-### LevelDB {#level-db}
+
-Système open source de stockage de clé-valeur sur disque, implémenté en tant que [bibliothèque](#library) légère dédiée, disponible sur de nombreuses plateformes.
+
-### Bibliothèque {#library}
+
-Type spécial de [contrat](#smart-contract) qui n'a ni fonction de paiement, ni fonction de secours, ni stockage de données. Une bibliothèque ne peut donc ni recevoir ni détenir d'ethers, ni stocker des données. Elle sert de code déployé au préalable que d'autres contrats peuvent appeler pour obtenir un calcul en lecture seule.
-
-
- Bibliothèques de contrats intelligents
-
-
-### Client léger {#light-client}
-
-Client Ethereum qui ne stocke aucune copie locale de la [blockchain](#blockchain) ou qui ne valide aucun bloc ni aucune [transaction](#transaction). Il offre les fonctions d'un [portefeuille](#wallet), et peut créer et diffuser des transactions.
+
-### LMD_GHOST {#lmd-ghost}
-
-[L'algorithme de sélection de fourche](#fork-choice-algorithm) utilisé par les clients de consensus Ethereum pour identifier la tête de la chaîne. LMD-GHOST est l'acronyme de « dernier message produit - sous-arbre le plus lourd et gourmand observé » (Latest Message Driven Greediest Heaviest Observed SubTree), ce qui signifie que la tête de la chaîne est le bloc avec la plus grande accumulation d'[attestations](#attestation) de son histoire.
-
## M {#section-m}
-### Réseau principal {#mainnet}
-
-Appelé « mainnet » en anglais (pour « main network »), il s'agit de la [blockchain](#blockchain) principale du réseau public Ethereum. De vrais ETH, une véritable valeur et des conséquences réelles. Aussi connu sous le nom de « couche 1 » lors des discussions sur les solutions d'évolutivité de la [couche 2](#layer-2). (Voir aussi [réseau de test](#testnet)).
-
-
- Réseaux Ethereum
-
-
-### Mémorivore {#memory-hard}
+
-Les fonctions mémorivores sont des processus qui connaissent une diminution drastique de la vitesse ou de la faisabilité lorsque la quantité de mémoire disponible diminue même légèrement. L'algorithme de minage Ethereum [Ethash](#ethash) en est un exemple.
+
-### Arbre de Merkle Patricia {#merkle-patricia-tree}
+
-Structure des données utilisée dans Ethereum pour stocker efficacement les paires clés-valeurs.
+
-### Message {#message}
+
-[Transaction interne](#internal-transaction) qui n'est jamais sérialisée et qui est uniquement envoyée dans l'[EVM](#evm).
+
-### Appel de message {#message-call}
-
-Acte de transférer un [message](#message) d'un compte à un autre. Si le compte de destination est associé au code de l'[EVM](#evm), alors celle-ci sera démarrée avec l'état de cet objet et le message sera traité.
-
-### Metropolis {#metropolis}
-
-Troisième phase de développement d'Ethereum, lancée en octobre 2017.
-
-### Minage {#mining}
-
-Processus de hachage répétitif d'un en-tête de bloc lors de l'incrémentation d'un [nonce](#nonce) jusqu'à ce que le résultat contienne un nombre arbitraire de zéros binaires de tête. C'est le processus par lequel de nouveaux [blocs](#block) sont ajoutés à une [blockchain](#blockchain) de preuve de travail. Voilà comment Ethereum était sécurisé avant de passer à [la preuve d'enjeu](#pos).
-
-### Mineur {#miner}
-
-[Nœud](#node) du réseau qui trouve une [preuve de travail](#pow) valide pour de nouveaux blocs, par passes de hachage successives (voir [Ethash](#ethash)). Les mineurs ne font plus partie d'Ethereum - ils ont été remplacés par des validateurs lorsque Ethereum est passé à la [la preuve d'enjeu](#pos).
-
-
- Minage
-
-
-### Frapper {#mint}
-
-Le frappage est le processus de création de nouveaux jetons et de leur mise en circulation afin qu'ils puissent être utilisés. C'est un mécanisme décentralisé pour créer un nouveau jeton sans participation de l'autorité centrale.
+
## N {#section-n}
-### Réseau {#network}
-
-Lorsque le terme fait référence au réseau Ethereum, réseau P2P qui propage les transactions et les blocs à chaque nœud Ethereum (participant au réseau).
-
-
- Réseaux
-
-
-### Puissance de hachage du réseau {#network-hashrate}
-
-[Puissance de hachage](#hashrate) collective produite par un réseau entier de minage. Le minage sur Ethereum s'est terminé lorsque Ethereum est passé à la [preuve d'enjeu](#pos).
-
-### Jeton non fongible (NFT) {#nft}
-
-Également Norme de jetonconnu sous le nom d'« acte de propriété » ou « deed » , il s'agit d'une norme de jeton introduite par la proposition ERC-721. Les NFT peuvent être suivis et échangés, mais chaque jeton est unique et distinct. Ils ne sont pas interchangeables comme les [jetons ERC-20](#token-standard). Les NFT peuvent être des preuves de propriété d'actifs numériques ou physiques.
-
-
- Jetons non fongibles (NFT)
-
-
- Norme de jeton non fongible ERC-721
-
+
-### Nœud {#node}
+
-Client logiciel qui participe au réseau.
+
-
- Nœuds et clients
-
+
-### Nonce {#nonce}
-
-En cryptographie, valeur qui ne peut être utilisée qu'une seule fois. Le nonce d'un compte est un compteur de transactions propre à chaque compte, qui est utilisé pour prévenir les attaques par répétition.
+
## O {#section-o}
-### bloc ommer (oncle) {#ommer}
-
-Quand un [mineur](#miner) de preuve de travail trouve un [bloc](#block) valide, un autre mineur peut avoir publié un bloc concurrent, qui est ajouté en premier au sommet de la blockchain. Ce bloc valide, mais obsolète, peut être inclus par des blocs plus récents en tant que _bloc oncle_ et faire l'objet d'une récompense partielle. On utilise de préférence le terme « ommer », plus neutre, pour désigner le frère ou la sœur d'un bloc parent, mais on parle aussi parfois d'« oncle ». Ceci était pertinent pour Ethereum lorsqu'il était un réseau à [preuve de travail](#pow), mais les blocs oncle ne sont pas une fonctionnalité de la [preuve d'enjeu](#pos) sur Ethereum, car un seul proposant de bloc est sélectionné à chaque créneau.
-
-### Rollup optimiste {#optimistic-rollup}
-
-[Rollup](#rollups) (ou regroupement) de transactions qui utilise les [preuves de fraude](#fraud-proof) pour permettre un débit de transactions plus élevé sur la [couche 2](#layer-2) tout en bénéficiant de la sécurité apportée par le [réseau principal](#mainnet) (couche 1). Contrairement à [Plasma](#plasma), solution similaire sur la couche 2, les rollups optimistes peuvent gérer des transactions plus complexes, à savoir tout ce qui est possible au sein de l'[EVM](#evm). Ils rencontrent des problèmes de latence par rapport aux [rollups ZK](#zk-rollups), car une transaction peut être contestée par l'intermédiaire de la preuve de fraude.
-
-
- Rollups optimistes
-
+
-### Oracle {#oracle}
+
-Les oracles sont des ponts entre la [blockchain](#blockchain) et le monde réel. Ils agissent comme des [API](#api) sur la blockchain qui peuvent être interrogés pour obtenir des informations et utilisés dans des [contrats intelligents](#smart-contract).
-
-
- Oracle
-
+
## P {#section-p}
-### parity {#parity}
-
-Une des implémentations interopérables les plus importantes du logiciel client Ethereum.
-
-### pair {#peer}
-
-Ordinateurs connectés exécutant le logiciel client Ethereum qui ont des copies identiques de la [blockchain](#blockchain).
-
-### Réseau de pair-à-pair {#peer-to-peer-network}
-
-Réseau d'ordinateurs ([pairs](#peer)) collectivement capables d'exécuter des fonctionnalités sans avoir besoin de services centralisés, basés sur un serveur.
-
-### Plasma {#plasma}
-
-Solution de mise à l'échelle hors chaîne qui utilise des [preuves de fraude](#fraud-proof), comme les [rollups optimistes](#optimistic-rollups). Plasma se limite aux transactions simples comme les échanges et transferts de jetons simples.
-
-
- Plasma
-
-
-### Clé privée (clé secrète) {#private-key}
-
-Nombre secret qui permet aux utilisateurs Ethereum de prouver la propriété d'un compte ou de contrats en produisant une signature numérique (voir [clé publique](#public-key), [adresse](#address), [ECDSA](#ecdsa)).
-
-### Chaîne privée {#private-chain}
+
-Une blockchain est dite privée si on y accède en y étant autorisé, par opposition à une blockchain publique.
+
-### Preuve d'enjeu (PoS) {#pos}
+
-Méthode par laquelle un protocole de blockchain de cryptomonnaie vise à atteindre un [consensus](#consensus) distribué. La PoS demande aux utilisateurs de prouver qu'ils sont propriétaires d'une certaine quantité de cryptomonnaie (leur « mise » sur le réseau) afin de pouvoir participer à la validation des transactions.
+
-
- Preuve d'enjeu
-
+
-### Preuve de travail (PoW) {#pow}
+
-Donnée (la preuve) qui nécessite des calculs significatifs pour être trouvée.
+
-
- Preuve de travail
-
-
-### clé publique {#public-key}
-
-Nombre dérivé d'une [clé privée](#private-key) via une fonction à sens unique, qui peut être partagé publiquement et utilisé par n'importe qui pour vérifier une signature numérique créée avec la clé privée correspondante.
+
## R {#section-r}
-### Reçu {#receipt}
-
-Données renvoyées par un client Ethereum pour représenter le résultat d'une [transaction](#transaction) particulière, y compris une [empreinte numérique](#hash) de la transaction, son numéro de [bloc](#block), la quantité de [gaz](#gas) utilisée et, en cas de déploiement d'un [contrat intelligent](#smart-contract), l'[adresse](#address) du contrat.
-
-### Attaque par réentrance {#re-entrancy-attack}
-
-Attaque qui consiste en un contrat d'attaquant qui appelle une fonction du contrat de la victime de telle façon que, pendant l'exécution, la victime rappelle le contrat de l'attaquant de façon récursive. Ce type d'attaque peut se traduire par un vol de fonds, en faisant par exemple en sorte de contourner des parties du contrat de la victime qui mettent à jour les soldes ou qui comptabilisent les montants retirés.
+
-
- Réentrance
-
+
-### Récompense {#reward}
+
-Quantité d'ethers inclus dans chaque nouveau bloc en tant que récompense du réseau au [mineur](#miner) qui a trouvé la solution de la [preuve de travail](#pow).
+
-### Préfixe de longueur récursive (RLP) {#rlp}
+
-Norme d'encodage conçue par les développeurs Ethereum pour encoder et sérialiser des objets (structure de données) de complexité et de longueur arbitraires.
-
-### Rollups {#rollups}
-
-Type de solution de mise à l'échelle de [couche 2](#layer-2) qui regroupe plusieurs transactions et les soumet à la [chaîne principale Ethereum](#mainnet) en une seule transaction. Cela permet de réduire les frais de [gaz](#gas) et d'augmenter le débit des [transactions](#transaction). Il existe des rollups optimistes et des rollups ZK qui utilisent différentes méthodes de sécurité pour offrir ces avantages en termes d'évolutivité.
-
-
- rollups
-
+
-### RPC {#rpc}
-
-L'**appel de procédure à distance (RPC)** est un protocole qu'un programme peut utiliser pour solliciter un service auprès d'un programme situé sur un autre ordinateur d'un réseau dont il n'a pas besoin de connaître les détails
-
## S {#section-s}
-### Algorithme de hachage sécurisé (SHA) {#sha}
-
-Famille de fonctions de hachage cryptographique publiées par le National Institute of Standards and Technology (NIST) aux États-Unis.
-
-### Serenity {#serenity}
-
-Étape du développement d'Ethereum qui a initié un ensemble de mises à jour et de mises à l'échelle en termes de durabilité, précédemment appelées 'Ethereum 2.0', ou 'Eth2'.
-
-
- Mises à niveau d'Ethereum
-
-
-### Sérialisation {#serialization}
-
-Procédé de conversion d'une structure de données en une séquence d'octets.
-
-### Fragment / chaîne de fragments {#shard}
+
-Les chaînes de fragments sont des portions de la blockchain complète susceptibles de se trouver sous la responsabilité de sous-ensembles de validateurs. Les chaînes de fragments offriront un débit de transaction accru pour Ethereum et amélioreront la disponibilité des données pour les solutions de [couche 2](#layer-2) comme les [rollups optimistes](#optimistic-rollups) et les [rollups ZK](#zk-rollups).
+
-
- Danksharding
-
+
-### Chaînes latérales {#sidechain}
+
-Solution de mise à l'échelle qui utilise une chaîne séparée avec des [règles de consensus](#consensus-rules) différentes, souvent plus rapides. Un pont est nécessaire pour connecter ces chaînes latérales au [réseau principal](#mainnet). Les [rollups](#rollups) utilisent également les chaînes latérales, mais ils fonctionnent plutôt en collaboration avec le [réseau principal](#mainnet).
+
-
- Chaines latérales
-
+
-### Signature {#signing}
+
-Prouve cryptographiquement qu'une transaction a été approuvée par le détenteur d'une clé privée spécifique.
+
-### Singleton {#singleton}
+
-Terme de programmation informatique qui décrit un objet dont il ne peut exister qu'une seule instance.
+
-### Délesteur {#slasher}
+
-Un délesteur est une entité qui scanne les attestations à la recherche d'infractions passibles de sanctions. Les sanctions sont diffusées sur le réseau, et le proposant en consigne la preuve dans le prochain bloc. Le proposant reçoit alors une récompense pour avoir sanctionné le validateur malveillant.
+
-### Créneau {#slot}
+
-Une période de temps (12 secondes) durant laquelle de nouveaux blocs peuvent être proposés par un [validateur](#validator) dans le système de [preuve d'enjeu](#pos). Un créneau peut être vide. 32 créneaux forment une [période](#epoch).
+
-
- Preuve d'enjeu
-
+
-### Contrat intelligent {#smart-contract}
+
-Programme qui s'exécute sur l'infrastructure de calcul Ethereum.
+
-
- Introduction aux contrats intelligents
-
+
-### SNARK {#snark}
+
-Acronyme signifiant « argument de connaissance succinct et non interactif » (Succint Non-interactive Argument of Knowledge). Un SNARK est un type de [preuve de connaissance zéro](#zk-proof).
+
-
- Rollups ZK
-
+
-### Fourche mineure {#soft-fork}
+
-Divergence dans une [blockchain](#blockchain) qui se produit lorsque les [règles de consensus](#consensus-rules) changent. Contrairement à une [fourche majeure](#hard-fork), une fourche mineure est rétro-compatible ; les nœuds mis à jour peuvent valider les blocs créés par des nœuds non mis à jour tant qu'ils suivent les nouvelles règles de consensus.
-
-### Solidity {#solidity}
-
-Langage de programmation procédural (impératif) dont la syntaxe est similaire à JavaScript, C++ ou Java. Il s'agit du langage le plus populaire et le plus fréquemment utilisé pour les [contrats intelligents](#smart-contract) sur Ethereum. Il a été créé par Dr Gavin Wood.
-
-
- Solidity
-
-
-### Assemblage en ligne Solidity {#solidity-inline-assembly}
-
-Langage d'assemblage de l'[EVM](#evm) que l'on peut utiliser au sein d'un programme [Solidity](#solidity). Cette prise en charge par Solidity de l'assembleur facilite l'écriture de certaines opérations.
-
-### Spurious Dragon {#spurious-dragon}
-
-[Fourche majeure](#hard-fork) de la blockchain Ethereum, qui s'est produite au bloc 2 675 000 pour traiter plus de vecteurs d'attaque par déni de service et pour effacer l'état (voir [Tangerine Whistle](#tangerine-whistle)). C'est également un mécanisme de protection contre les attaques par rejeu (voir [nonce](#nonce)).
-
-### Stablecoin {#stablecoin}
-
-[Jeton ERC-20](#token-standard) dont la valeur est liée à celle d'un autre actif. Il existe des stablecoins liés à des monnaies fiduciaires comme le dollar, des métaux précieux comme l'or et d'autres cryptomonnaies comme le Bitcoin.
-
-
- L'ETH n'est pas la seule crypto sur Ethereum
-
-
-### Mettre en jeu {#staking}
-
-Déposer une quantité d'[ethers](#ether) (votre mise) pour devenir validateur et sécuriser le [réseau](#network). Un validateur vérifie les [transactions](#transaction) et propose des [blocs](#block) sous un modèle de consensus par [preuve d'enjeu](#pos). La mise en jeu vous incite économiquement à agir dans le meilleur intérêt du réseau. Vous obtiendrez des récompenses pour avoir mené à bien vos tâches de [validateur](#validator), mais perdrez diverses quantités d'ETH dans le cas contraire.
-
-
- Misez votre ETH pour devenir un validateur Ethereum
-
-
-### groupe d'enjeux {#staking-pool}
-
-Ensemble ETH de plus d'un validateur Ethereum utilisé pour atteindre les 32 ET nécessaires pour activer un ensemble de clés de validation. Un opérateur de nœud utilise ces clés pour participer au consensus et les [récompenses de bloc](#block-reward) sont réparties entre les validateurs participants. Les groupe d'enjeu ou la mise en jeu délégué ne sont pas natifs du protocole Ethereum, mais de nombreuses solutions ont été construites par la communauté.
-
-
- Mise en jeu mutualisée
-
-
-### STARK {#stark}
-
-Acronyme qui signifie « argument de connaissance transparent et évolutif » (Scalable Transparent Argument of Knowledge). Un STARK est un type de [preuve de connaissance zéro](#zk-proof).
-
-
- Rollups ZK
-
-
-### État {#state}
-
-Image instantanée de tous les soldes et métadonnées présents à un moment donné sur la blockchain, qui renvoie normalement à la condition d'un bloc particulier.
-
-### Canaux d'état {#state-channels}
-
-Solution de [couche 2](#layer-2) qui implique la mise en place d'un canal entre les participants pour qu'ils puissent effectuer des transactions librement et à moindre coût. Seule une [transaction](#transaction) est envoyée au [réseau principal](#mainnet) pour configurer et fermer le canal. Cela permet un débit de transactions très élevé, mais repose sur la connaissance du nombre de participants au départ et le blocage de fonds.
-
-
- canaux d'état
-
-
-### Supermajorité {#supermajority}
-
-La supermajorité est un terme qui désigne un nombre supérieur à 2/3 (66 %) de l'ether total mis en jeu pour sécuriser Ethereum. Un vote à la supermajorité est nécessaire pour que les blocs soient [finalisés](#finality) sur la chaîne phare.
-
-### synchronisation {#syncing}
-
-Processus de téléchargement de la dernière version complète d'une blockchain sur un nœud.
-
-### Comité de synchronisation {#sync-committee}
-
-Un comité de synchronisation est un groupe de [validateurs](#validator) sélectionnés aléatoirement qui est actualisé toutes les 27 heures environ. Son rôle est d'ajouter leurs signatures à des en-têtes de blocs valides. Les comités de synchronisation permettent aux [clients légers](#light-client) de garder une trace de la tête de la blockchain sans avoir besoin d'accéder à l'ensemble des validateurs.
-
-### Szabo {#szabo}
-
-Unité de l'[ether](#ether). 1 szabo = 1012 [wei](#wei), 106 szabo = 1 ether.
+
## T {#section-t}
-### Tangerine Whistle {#tangerine-whistle}
-
-[Fourche majeure](#hard-fork) de la blockchain Ethereum, qui s'est produite au bloc 2 463 000 pour modifier le calcul du [gaz](#gas) pour certaines opérations inécessitant beaucoup d'E/S et pour effacer l'état accumulé suite à une attaque par déni de service, qui exploitait le faible coût en gaz de ces opérations.
-
-### Difficulté Totale Terminale (TTD) {#terminal-total-difficulty}
+
-La difficulté totale est la somme de la difficulté de minage Ethash pour tous les blocs jusqu'à un point spécifique de la blockchain. La difficulté totale terminale est une valeur spécifique de la difficulté totale qui était utilisée comme déclencheur pour les clients d'exécution afin d'éteindre leurs fonctions de minage et permettre au réseau de basculer vers la preuve d'enjeu.
+
-### réseau de test {#testnet}
+
-Aussi appelé « testnet » (de l'anglais « test network »), il s'agit d'un réseau utilisé pour simuler le comportement du réseau principal Ethereum (voir [réseau principal](#mainnet)).
+
-
- réseaux de test
-
+
-### jeton {#token}
+
-Bien virtuel négociable défini dans les contrats intelligents sur la blockchain Ethereum.
-
-### Norme de jeton {#token-standard}
-
-Introduit par la proposition ERC-20, il fournit une structure normalisée de [contrat intelligent](#smart-contract) pour les jetons fongibles. D'autres standards ERC s'appliquent aux jetons non-fongibles ou [NFT](#nft).
-
-
- Norme de jeton ERC-20
-
-
-### Transaction {#transaction}
-
-Données enregistrées dans la blockchain Ethereum signées par un [compte](#account) émetteur, ciblant une [adresse](#address) spécifique. La transaction contient des métadonnées comme la [limite de gaz](#gas-limit).
-
-
- Transactions
-
-
-### Frais de transaction {#transaction-fee}
-
-Frais dont il faut s'acquitter à chaque utilisation du réseau Ethereum, Exemple : envoi de fonds depuis votre [portefeuille](#wallet) ou interaction avec une [dApp](#dapp) (échange de jetons ou achat d'un objet de collection, etc.). Considérez-les comme des frais de service. Ils évolueront en fonction de l'occupation du réseau. Ceci est dû au fait que les [validateurs](#validator), les personnes chargées de traiter votre transaction, sont susceptibles de donner la priorité aux transactions dont les commissions sont plus élevées. La congestion du réseau fait grimper les prix.
-
-Au niveau technique, vos frais de transaction se rapportent à la quantité de [gaz](#gas) que votre transaction requiert.
-
-La réduction des frais de transaction est actuellement au coeur de l'actualité. Voir [couche 2](#layer-2).
-
-### Absence de confiance {#trustlessness}
-
-Capacité d'un réseau à effectuer des transactions sans qu'aucune des parties impliquées n'ait besoin de faire confiance à un tiers.
-
-### Turing-complet {#turing-complete}
-
-Concept nommé d'après le mathématicien et informaticien anglais Alan Turing. Un système de règles de traitement de données (instructions d'un ordinateur, langage de programmation ou automate cellulaire) est dit « Turing-complet » ou « universel sur le plan informatique » s'il a au moins le pouvoir des machines de Turing.
+
## V {#section-v}
-### Validateur {#validator}
-
-Dans un système de [preuve d'enjeu](#pos), [nœud](#node) chargé du stockage des données, du traitement des transactions et de l'ajout de nouveaux blocs à la blockchain. Pour activer le logiciel validateur, vous devez pouvoir [mettre en jeu](#staking) 32 ETH.
-
-
- Preuve d'enjeu
-
-
- Mise en jeu sur Ethereum
-
-
-### Cycle de vie du validateur {#validator-lifecycle}
+
-Séquence des états dans lesquels un validateur peut exister. Elle comprend :
+
-- déposé : Au moins 32 ETH ont été déposés sur le [contrat de dépôt](#deposit-contract) par le validateur
-- en attente : le validateur est dans la file d'activation et attend d'être accepté dans le réseau par vote des validateurs existants
-- actif : en train d'attester et de proposer des blocs
-- dénoncé : le validateur s'est mal comporté et a été exclu
-- sortant : le validateur a été marqué pour quitter le réseau, soit volontairement, soit parce qu'il a été éjecté.
+
-### Preuve de validité {#validity-proof}
+
-Modèle de sécurité pour certaines solutions de [couche 2](#layer-2) dans lequel, pour augmenter la vitesse, les transactions sont regroupées en lots ([rollups](/#rollups)) et soumises à Ethereum en une seule transaction. Le calcul des transactions se fait hors chaîne et est ensuite fourni à la chaîne principale avec une preuve de leur validité. Cette méthode augmente le nombre de transactions possibles tout en maintenant le niveau de sécurité. Certains [rollups](#rollups) utilisent des [preuves de fraude](#fraud-proof).
-
-
- Rollups ZK
-
-
-### Validium {#validium}
-
-Solution hors chaîne qui utilise les [preuves de validité](#validity-proof) pour augmenter le débit des transactions. Contrairement à celles des [rollups ZK](#zk-rollup), les données de validium ne sont pas stockées sur la couche 1 du [réseau principal](#mainnet).
-
-
- Validité
-
-
-### Vyper {#vyper}
-
-Langage de programmation pointu dont la syntaxe est similaire à celle de Python. Conçu pour se rapprocher d'un langage purement fonctionnel. Créé par Vitalik Buterin.
-
-
- Vyper
-
+
## W {#section-w}
-### Portefeuille {#wallet}
-
-Logiciel qui conserve des [clés privées](#private-key). Il est utilisé pour accéder aux [comptes](#account) Ethereum et les contrôler, et pour interagir avec les [contrats intelligents](#smart-contract). Les clés ne doivent pas nécessairement être stockées dans un portefeuille. Elles peuvent être récupérées depuis un stockage hors ligne (une carte mémoire ou une feuille papier) pour plus de sécurité. Malgré leur nom, les portefeuilles ne stockent jamais la monnaie ni les jetons en eux-mêmes.
-
-
- Portefeuilles Ethereum
-
+
-### Web3 {#web3}
+
-Troisième version du web. Terme proposé pour la première fois par le Dr Gavin Wood, Web3 représente une nouvelle vision et une nouvelle orientation pour les applications web : passant d'applications gérées et détenues de façon centralisée à des applications construites sur des protocoles décentralisés (voir [dApp](#dapp)).
-
-
- Web2 et Web3
-
-
-### Wei {#wei}
-
-Plus petite unité de l'[ether](#ether). 1018 wei = 1 ether.
+
## Z {#section-z}
-### Adresse zéro {#zero-address}
-
-Une adresse Ethereum, composée entièrement de zéros, qui est fréquemment utilisée comme adresse pour retirer des jetons de la circulation propriétaire. Une distinction est établie entre les jetons formellement supprimés de l'index d'un contrat intelligent via la méthode burn() et ceux envoyés à cette adresse.
-
-### preuve de connaissance zéro {#zk-proof}
-
-Une preuve de connaissance zéro (zero-knowledge proof) est une méthode cryptographique qui permet à un individu de prouver qu'une déclaration est vraie sans transmettre aucune information supplémentaire.
-
-
- Rollups ZK
-
-
-### Rollup ZK {#zk-rollup}
+
-[Rollup](#rollups) (ou regroupement) de transactions utilisant des [preuves de validité](#validity-proof) pour permettre un débit plus élevé de transactions sur la [couche 2](#layer-2), tout en bénéficiant de la sécurité offerte par le [réseau principal](#mainnet) (couche 1). Bien qu'ils ne puissent pas prendre en charge des types de transactions complexes comme le font les [rollups optimistes](#optimistic-rollups), les rollups ZK n'ont pas de problème de latence dans la mesure où les transactions sont prouvées valides à la soumission.
+
-
- Rollups ZK
-
+
diff --git a/public/content/translations/fr/history/index.md b/public/content/translations/fr/history/index.md
index 814c52d8eec..599357519ef 100644
--- a/public/content/translations/fr/history/index.md
+++ b/public/content/translations/fr/history/index.md
@@ -310,9 +310,10 @@ La fourche Istanbul a :
La fourche Constantinople a :
-- protégé la blockchain d'un blocage avant [l'implémentation de la preuve d'enjeu](#beacon-chain-genesis) ;
-- optimisé le coût de [gaz](/glossary/#gas) certaines actions dans l'[EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine) ;
-- ajouté la possibilité d'interagir avec des adresses qui n'ont pas encore été créées.
+- Réduit les récompenses pour le [minage des blocs](/developers/docs/consensus-mechanisms/pow/mining/) de 3 à 2 ETH.
+- S'assurer que la blockchain ne se fige pas avant [la mise en œuvre de la preuve d'enjeu](#beacon-chain-genesis).
+- optimisé le coût de [gaz](/glossary/#gas) de certaines actions dans l'[EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine) ;
+- Ajouté la possibilité d'interagir avec des adresses qui n'ont pas encore été créées.
[Lire l'annonce de l'Ethereum Foundation](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/)
@@ -322,7 +323,7 @@ La fourche Constantinople a :
EIP-145 – Optimise le coût de certaines actions en chaîne.
EIP-1014 – vous permet d'interagir avec des adresses qui n'ont pas encore été créées.
EIP-1052 – optimise le coût de certaines actions en chaîne.
-
EIP-1234 – s'assure que la blockchain ne gèle pas 'avant la preuve d'enjeu.
+
EIP-1234 – s'assure que la blockchain ne gèle pas 'avant la preuve d'enjeu et réduit les récompenses de 3 à 2 ETH par bloc.
diff --git a/public/content/translations/fr/roadmap/beacon-chain/index.md b/public/content/translations/fr/roadmap/beacon-chain/index.md
index 9f1b49cb8c2..146cde12188 100644
--- a/public/content/translations/fr/roadmap/beacon-chain/index.md
+++ b/public/content/translations/fr/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ La chaîne Beacon est le nom donné au registre de comptes utilisé pour la cond
La Chaîne phare introduit la [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos/) dans Ethereum. Cela permet de sécuriser Ethereum et pour les validateurs de gagner plus d'ETH au cours du processus. En pratique, le staking implique de miser des ETH pour activer le logiciel de validation. En tant que validateur, vous exécutez le logiciel qui créé et valide de nouveaux blocs dans la chaîne.
-La mise en jeu a un objectif similaire au [minage](/developers/docs/mining/), mais diffère à plusieurs titres. Le minage nécessitait d’importantes dépenses initiales sous la forme d’une puissante consommation en matériel et énergie, entraînant des économies d’échelle et promouvant la centralisation. Le minage n'impliquait pas non plus l'obligation de bloquer les actifs en tant que garantie, ce qui limite la capacité du protocole à punir les mauvais acteurs après une attaque.
+La mise en jeu a un objectif similaire au [minage](/developers/docs/consensus-mechanisms/pow/mining/), mais diffère à plusieurs titres. Le minage nécessitait d’importantes dépenses initiales sous la forme d’une puissante consommation en matériel et énergie, entraînant des économies d’échelle et promouvant la centralisation. Le minage n'impliquait pas non plus l'obligation de bloquer les actifs en tant que garantie, ce qui limite la capacité du protocole à punir les mauvais acteurs après une attaque.
La transition vers la preuve d'enjeu a rendu Ethereum nettement plus sûr et décentralisé par comparaison avec la preuve de travail. Plus le nombre de participants sera élevé sur le réseau, plus celui-ci sera décentralisé et à l'abri des attaques.
diff --git a/public/content/translations/fr/roadmap/single-slot-finality/index.md b/public/content/translations/fr/roadmap/single-slot-finality/index.md
index c4ee30c87fd..ae46bdd68fe 100644
--- a/public/content/translations/fr/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/fr/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ Le problème avec l'évolutivité de l'agrégation en augmentant le nombre de va
## Progrès actuels {#current-progress}
-La Finalité à créneau unique (SSF) est en phase d'études. Celle-ci ne devrait pas être opérationnelle avant plusieurs années, probablement après que d'autres avancées substantielles aient été réalisées, telles que [l'Arbre de Verkle](/roadmap/verkle-trees/) et la [solution Danksharding](/roadmap/danksharding]).
+La Finalité à créneau unique (SSF) est en phase d'études. Celle-ci ne devrait pas être opérationnelle avant plusieurs années, probablement après que d'autres avancées substantielles aient été réalisées, telles que [l'Arbre de Verkle](/roadmap/verkle-trees/) et la [solution Danksharding](/roadmap/danksharding/).
## Complément d'information {#further-reading}
diff --git a/public/content/translations/fr/web3/index.md b/public/content/translations/fr/web3/index.md
index 07b996fc003..88a8fdce02e 100644
--- a/public/content/translations/fr/web3/index.md
+++ b/public/content/translations/fr/web3/index.md
@@ -64,7 +64,7 @@ Web3 permet la propriété directe via les [jetons non-fongibles (NFT)](/nft/).
En savoir plus sur les NFT
- Plus d'infos sur les NTF
+ Plus d'infos sur les NFT
diff --git a/public/content/translations/fr/zero-knowledge-proofs/index.md b/public/content/translations/fr/zero-knowledge-proofs/index.md
index faf22b6fd6f..0ffe42025cb 100644
--- a/public/content/translations/fr/zero-knowledge-proofs/index.md
+++ b/public/content/translations/fr/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Une introduction non technique aux preuves à divulgation nulle de
lang: fr
---
-## Que sont les preuves à divulgation nulle de connaissance ? {#what-are-zk-proofs}
+# Que sont les preuves à divulgation nulle de connaissance ? {#what-are-zk-proofs}
Une preuve à divulgation nulle est un moyen de prouver la validité d'une information sans révéler l'information elle-même. Le « prouveur » est la partie qui tente de prouver une affirmation, tandis que le « vérificateur » est responsable de la validation de l'affirmation.
diff --git a/public/content/translations/hi/roadmap/beacon-chain/index.md b/public/content/translations/hi/roadmap/beacon-chain/index.md
index 99181a16beb..b086ae0241d 100644
--- a/public/content/translations/hi/roadmap/beacon-chain/index.md
+++ b/public/content/translations/hi/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ summaryPoint3: बीकन चेन ने सहमति तर्क और
बीकन चेन ने एथेरियम के लिए [हिस्सेदारी का सबूत](/developers/docs/consensus-mechanisms/pos/) की शुरुआत की। यह एथेरियम को सुरक्षित रखता है और इस प्रोसेस में सत्यापनकर्ता ज़्यादा ETH अर्जित करते हैं। व्यवहार में, स्टेकिंग, सत्यापनकर्ता सॉफ़्टवेयर को सक्रिय करने के लिए स्टेकिंग ETH शामिल करता है। एक स्टेकर के तौर पर, आप उस सॉफ़्टवेयर को चलाते हैं जो चेन में नए ब्लॉक बनाता और मान्य करता है।
-स्टेकिंग उसी तरह के उद्देश्य को पूरा करता है जिसका इस्तेमाल [माईनिंग](/Developers/docs/mining/) में किया जाता है, लेकिन यह कई मायनों में अलग है। माईनिंग के लिए शक्तिशाली हार्डवेयर और ऊर्जा खपत के रूप में बड़े अग्रिम व्यय की आवश्यकता होती है, जिसके परिणामस्वरूप बड़े व्यय (बड़ी आर्थिक इकाई) और केंद्रीकरण को बढ़ावा मिलता है। माईनिंग भी एसेट को आनुषंगिक के रूप में बंद करने की आवश्यकता के साथ नहीं आया, बल्कि इसका उद्देश्य हमले के बाद बुरे लोगों को दंडित करने की प्रोटोकॉल की क्षमता को सीमित करना है।
+स्टेकिंग उसी तरह के उद्देश्य को पूरा करता है जिसका इस्तेमाल [माईनिंग](/developers/docs/consensus-mechanisms/pow/mining/) में किया जाता है, लेकिन यह कई मायनों में अलग है। माईनिंग के लिए शक्तिशाली हार्डवेयर और ऊर्जा खपत के रूप में बड़े अग्रिम व्यय की आवश्यकता होती है, जिसके परिणामस्वरूप बड़े व्यय (बड़ी आर्थिक इकाई) और केंद्रीकरण को बढ़ावा मिलता है। माईनिंग भी एसेट को आनुषंगिक के रूप में बंद करने की आवश्यकता के साथ नहीं आया, बल्कि इसका उद्देश्य हमले के बाद बुरे लोगों को दंडित करने की प्रोटोकॉल की क्षमता को सीमित करना है।
हिस्सेदारी के सबूत में बदलाव ने एथेरियम को काम के सबूत की तुलना में बहुत ज़्यादा सुरक्षित और विकेंद्रीकृत बना दिया। जितने अधिक लोग नेटवर्क में भाग लेंगे, हमले से यह उतना ही अधिक विकेंद्रीकृत और सुरक्षित होगा।
diff --git a/public/content/translations/hi/roadmap/merge/index.md b/public/content/translations/hi/roadmap/merge/index.md
index 725361016e7..92de9ce0d25 100644
--- a/public/content/translations/hi/roadmap/merge/index.md
+++ b/public/content/translations/hi/roadmap/merge/index.md
@@ -100,7 +100,7 @@ id="developers">
- ऑन-चेन रैंडमनेस के स्रोत
- _सुरक्षित शीर्ष_ और _अंतिम रूप दिए गए ब्लॉक_ की अवधारणा
-अधिक जानकारी के लिए, टिम बीको के इस ब्लॉग पोस्ट को देखें [एथेरियम के एप्लिकेशन को मर्ज कैसे प्रभावित करता है] (https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/)।
+अधिक जानकारी के लिए, टिम बीको के इस ब्लॉग पोस्ट को देखें [एथेरियम के एप्लिकेशन को मर्ज कैसे प्रभावित करता है](https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/)।
## मर्ज और ऊर्जा की खपत {#merge-and-energy}
@@ -135,7 +135,7 @@ title="ग़लत धारणा: "मर्ज गैस शुल्
contentPreview="False. The Merge was a change of consensus mechanism, not an expansion of network capacity, and was never intended to lower gas fees.">
गैस शुल्क नेटवर्क की क्षमता के सापेक्ष नेटवर्क की माँग का एक उत्पाद है। मर्ज ने काम का सबूत के उपयोग को हटा दिया, सहमति के लिए हिस्सेदारी का सबूत में बदल गया, लेकिन नेटवर्क क्षमता या थ्रूपुट को सीधे प्रभावित करने वाले किसी भी पैरामीटर को महत्वपूर्ण रूप से नहीं बदला।
-[रोलअप-केंद्रित रोडमैप](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) के साथ, [परत 2](/परत-2/) पर उपयोगकर्ता गतिविधि को बढ़ाने पर ध्यान केंद्रित किया जा रहा है, परत 1 मेननेट को एक सुरक्षित विकेंद्रीत सेटमलमेंट परत के रूप में सक्षम करते हुए रोलअप डेटा स्टोरेज के लिए अनुकूलित किया गया है, ताकि रोलअप लेनदेन को तेज़ी से किफ़ायती बनाया जा सके। इसे समझने के लिए हिस्सेदारी के सबूत में ट्रांज़िशन की महत्वपूर्ण भूमिका होती है। [गैस और फीस के बारे में और जानकारी।](/डेवलपर/दस्तावेज़/गैस/)
+[रोलअप-केंद्रित रोडमैप](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) के साथ, [परत 2](/layer-2/) पर उपयोगकर्ता गतिविधि को बढ़ाने पर ध्यान केंद्रित किया जा रहा है, परत 1 मेननेट को एक सुरक्षित विकेंद्रीत सेटमलमेंट परत के रूप में सक्षम करते हुए रोलअप डेटा स्टोरेज के लिए अनुकूलित किया गया है, ताकि रोलअप लेनदेन को तेज़ी से किफ़ायती बनाया जा सके। इसे समझने के लिए हिस्सेदारी के सबूत में ट्रांज़िशन की महत्वपूर्ण भूमिका होती है। [गैस और फीस के बारे में और जानकारी।](/developers/docs/gas/)
Ethereum Hackers – az ETHGlobal által üzemeltetett Discord chat: online közösség az Ethereum hackereknek világszinten
CryptoDevs – Ethereum-fejlesztésre fókuszáló Discord-közösségEthStaker Discord – közösségi vezetésű útmutatás, oktatás, támogatás és források a meglévő és lehetséges letéteseknek
-Ethereum.org website team – beszélgessen az ethereum.org web fejlesztésről és dizájnról a közösség tagjaival
+Ethereum.org website team – beszélgessen az ethereum.org web fejlesztésről és dizájnról a közösség tagjaivalMatos Discord – web3 alkotói közösség, ahol a fejlesztők, az iparági vezetők és az Ethereum rajongók találkoznak. Szenvedélyünk a web3 fejlesztés, a dizájn és a kultúra. Jöjjön és építsen velünk.Solidity Gitter – solidity fejlesztésről (Gitter) szóló csevegésSolidity Matrix – solidity fejlesztősről (Matrix) szóló csevegés
diff --git a/public/content/translations/hu/community/support/index.md b/public/content/translations/hu/community/support/index.md
index 2a3add460b3..8fd46804d6b 100644
--- a/public/content/translations/hu/community/support/index.md
+++ b/public/content/translations/hu/community/support/index.md
@@ -30,7 +30,7 @@ Gondjai vannak a tárcájával? A legtöbb tárcának van dedikált támogatói
- [Argent](https://support.argent.xyz/hc/)
- [MyEtherWallet](https://help.myetherwallet.com/)
-_Ez nem egy teljes lista. Segítségre van szüksége, hogy megtalálja az adott tárca támogatói csapatát? Csatlakozzon az [ethereum.org Discord](https://discord.gg/rZz26QWfCg) csatornához, és megpróbálunk segíteni._
+_Ez nem egy teljes lista. Segítségre van szüksége, hogy megtalálja az adott tárca támogatói csapatát? Csatlakozzon az [ethereum.org discord](https://discord.gg/ethereum-org) csatornához, és megpróbálunk segíteni._
Ethereum-tárcát keres? [Fedezze fel az Ethereum-tárcák teljes választékát](/wallets/find-wallet/).
diff --git a/public/content/translations/hu/decentralized-identity/index.md b/public/content/translations/hu/decentralized-identity/index.md
index 9e06dd210fc..8d271476066 100644
--- a/public/content/translations/hu/decentralized-identity/index.md
+++ b/public/content/translations/hu/decentralized-identity/index.md
@@ -8,7 +8,7 @@ sidebarDepth: 2
image: /eth-gif-cat.png
summaryPoint1: A hagyományos identitásrendszerek központosították az azonosítók kiadását, karbantartását és ellenőrzését.
summaryPoint2: A decentralizált identitás megszünteti a centralizált harmadik felektől való függőséget.
-summaryPoint3: A kriptonak köszönhetően, a felhasználóknak újra van eszközük, hogy tárolják és kezeljék a saját azonosítójukat és tanúsítványaikat.
+summaryPoint3: A kriptónak köszönhetően, a felhasználóknak újra van eszközük, hogy tárolják és kezeljék a saját azonosítójukat és tanúsítványaikat.
---
A virtuális identitás az életünk minden részét meghatározza napjainkban. Online szolgáltatások használata, bankszámla nyitás, szavazás a választásokon, ingatlan vásárlása, munkavállalás – mindegyikhez az identitás igazolása szükséges.
diff --git a/public/content/translations/hu/developers/docs/apis/json-rpc/index.md b/public/content/translations/hu/developers/docs/apis/json-rpc/index.md
index 23402c798ab..97a95f017ce 100644
--- a/public/content/translations/hu/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/hu/developers/docs/apis/json-rpc/index.md
@@ -620,7 +620,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
A térkép egyik elemének megszerzése már nehezebb. A térképen egy elem pozícióját így kalkuláljuk:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Ahhoz, hogy megszerezzük a tárhelyet a pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] tekintetében, a pozíciót így kell kalkulálni:
diff --git a/public/content/translations/hu/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/hu/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
index 2eb0c36a410..4d5df77fc35 100644
--- a/public/content/translations/hu/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
+++ b/public/content/translations/hu/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -8,7 +8,7 @@ A tolvajok és szabotőrök folyamatosan keresik a lehetőséget, hogy megtámad
## Előfeltételek {#prerequisites}
-A [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) alapszintű ismerete szükséges. Hasznos lesz továbbá, ha alapszintű ismeretekkel rendelkezel az Ethereum [ösztönzési réteg](/developers/docs/docs/consensus-mechanisms/pos/rewards-and-penalties) és az elágazásválasztási algoritmus, [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper) működéséről.
+A [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) alapszintű ismerete szükséges. Hasznos lesz továbbá, ha alapszintű ismeretekkel rendelkezel az Ethereum [ösztönzési réteg](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) és az elágazásválasztási algoritmus, [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper) működéséről.
## Mit akarnak a támadók? {#what-do-attackers-want}
diff --git a/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 90bd1a8137d..fb45ba79cee 100644
--- a/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: A Dagger-Hashimoto algoritmus részletes áttekintése.
lang: hu
---
-A Dagger-Hashimoto volt az Ethereum bányászati algoritmusának eredeti fejlesztési implementációja és specifikációja. A Dagger-Hashimoto algoritmust az [Ethash](#ethash) váltotta le. A bányászatot teljesen kikapcsolták az [egyesítés (Merge)](/updates/merge) frissítés életbe lépésekor, 2022. szeptember 15-én. Azóta az Ethereumot a [proof-of-stake (letéti igazolás)](/developers/docs/consensus-mechanisms/pos) mechanizmusa biztosítja. Ez az oldal elavult témákat tartalmaz, amelyek többé már nem relevánsak az egyesítés (Merge) utáni Ethereummal kapcsolatban.
+A Dagger-Hashimoto volt az Ethereum bányászati algoritmusának eredeti fejlesztési implementációja és specifikációja. A Dagger-Hashimoto algoritmust az [Ethash](#ethash) váltotta le. A bányászatot teljesen kikapcsolták az [egyesítés (Merge)](/roadmap/merge/) frissítés életbe lépésekor, 2022. szeptember 15-én. Azóta az Ethereumot a [proof-of-stake (letéti igazolás)](/developers/docs/consensus-mechanisms/pos) mechanizmusa biztosítja. Ez az oldal elavult témákat tartalmaz, amelyek többé már nem relevánsak az egyesítés (Merge) utáni Ethereummal kapcsolatban.
## Előfeltételek {#prerequisites}
diff --git a/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index b14af01c475..3aad06ea2ba 100644
--- a/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/hu/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### Az SHA3 használata {#sha3}
-Az Ethereum fejlesztése egybe esett az SHA3 szabvány kifejlesztésével, és a standard folyamat egy változtatást vitt véghez a végső hashalgoritmussal kapcsolatban, így az Ethereum „sha3_256” és „sha3_512” hashek nem szabványos sha3 hashek, hanem variánsok, melyre gyakran „Keccak-256” és „Keccak-512” néven hivatkoznak más kontextusban. A kapcsolódó beszélgetéseket [itt](https://eips.ethereum.org/EIPS-1803), [itt](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) vagy [itt](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057) találja.
+Az Ethereum fejlesztése egybe esett az SHA3 szabvány kifejlesztésével, és a standard folyamat egy változtatást vitt véghez a végső hashalgoritmussal kapcsolatban, így az Ethereum „sha3_256” és „sha3_512” hashek nem szabványos sha3 hashek, hanem variánsok, melyre gyakran „Keccak-256” és „Keccak-512” néven hivatkoznak más kontextusban. Tekintse meg a kapcsolódó beszélgetéseket, például [itt](https://eips.ethereum.org/EIPS/eip-1803), [itt](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) vagy [itt](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Vegye figyelembe, hogy az alábbi leírás SHA3-hashekre hivatkozik az algoritmus tekintetében.
diff --git a/public/content/translations/hu/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/hu/developers/docs/data-structures-and-encoding/index.md
new file mode 100644
index 00000000000..df15a386ac3
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/data-structures-and-encoding/index.md
@@ -0,0 +1,32 @@
+---
+title: Adatszerkezetek és kódolás
+description: Az alapvető Ethereum adatstruktúrák áttekintése.
+lang: hu
+sidebarDepth: 2
+---
+
+Az Ethereum nagy adatkötegeket hoz létre, tárol és mozgat. Az adatot sztenderd és memóriahatékony módon kell formázni, hogy bárki tudjon [csomópontot futtatni](/run-a-node/) viszonylag szerény, fogyasztói szintű hardveren. Ehhez az Ethereum stackben számos speciális adatstruktúra található.
+
+## Előfeltételek {#prerequisites}
+
+Ehhez érdemes áttekinteni az Ethereum és a [kliensszoftver](/developers/docs/nodes-and-clients/) alapjait. Emellett javasoljuk, hogy a hálózati réteggel és az [Ethereum Fehérkönyvvel](/whitepaper/) is ismerkedjen meg.
+
+## Adatstruktúrák {#data-structures}
+
+### Patricia Merkle-fa {#patricia-merkle-tries}
+
+A Patricia Merkle-fák olyan struktúrák, melyek kulcs-érték párokat kódolnak egy determinisztikus és kriptográfiailag hitelesített fastruktúrává. Ezeket kiterjedten használják az Ethereum végrehajtási rétegén.
+
+[Bővebben a Patricia Merkle-fákról](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+
+### Rekurzív hosszúságú prefixum (RLP) {#recursive-length-prefix}
+
+A rekurzív hosszúságú prefixum (RLP) egy sorozatosítási módszer, melyet kiterjedten használnak az Ethereum végrehajtási rétegén.
+
+[Bővebben az RLP-ről](/developers/docs/data-structures-and-encoding/rlp)
+
+### Egyszerű sorosítás (SSZ) {#simple-serialize}
+
+Az egyszerű sorosítás (SSZ) a domináns sorosítási formátum az Ethereum konszenzus rétegén, mivel kompatibilis a merklelizációval.
+
+[Bővebben az SSZ-ről](/developers/docs/data-structures-and-encoding/ssz)
diff --git a/public/content/translations/hu/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/hu/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
new file mode 100644
index 00000000000..00ff3fb2e8c
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
@@ -0,0 +1,261 @@
+---
+title: Merkle Patricia-fa
+description: Bevezetés a Merkle Patricia-fa témájába.
+lang: hu
+sidebarDepth: 2
+---
+
+A Merkle Patricia-fa egy kriptográfiailag hitelesített adatstruktúrát biztosít, amely az összes `(key, value)` (kulcs, érték) kötés tárolására használható.
+
+A Merkle Patricia-fák teljesen determinisztikusak, tehát az azonos `(key, value)` kötéssel rendelkező fák garantáltan azonosak az utolsó bájtig. Tehát ugyanazzal a gyökér-hash-sel rendelkeznek, ami a `O(log(n))` hatékonyság szent grálját biztosítja a bejegyzések, keresések és törlések esetében. Ráadásul egyszerűbb megérteni és kódolni őket, mint a bonyolultabb összehasonlításon alapuló alternatívákat, például a vörös-fekete (red-black) fákat.
+
+## Előfeltételek {#prerequisites}
+
+A jelen téma könnyebb megértése érdekben tekintse meg a [hash-ek](https://en.wikipedia.org/wiki/Hash_function), [Merkle-fák](https://en.wikipedia.org/wiki/Merkle_tree), [fák](https://en.wikipedia.org/wiki/Trie) és [sorosítás](https://en.wikipedia.org/wiki/Serialization) témákat.
+
+## Alapvető radix-fák {#basic-radix-tries}
+
+Egy alapvető radix-fában minden csomópont a következőképpen néz ki:
+
+```
+ [i_0, i_1 ... i_n, value]
+```
+
+Ahol `i_0 ... i_n` az ábécé (gyakran bináris vagy hexadecimális) szimbólumait jelöli, `value` a csomópontban lévő végérték, és az `i_0, i_1 ... i_n` a slotokban lévő értékek, melyek értéke `NULL` vagy más csomópontokra (itt hash-ekre) mutató mutatók. Ez egy alapvető `(key, value)` (kulcs, érték) tárolót alkot.
+
+Tegyük fel, hogy egy radixfa adatstuktúráját szeretnénk használni a kulcs-érték párosok halmaza feletti sorrend tárolására. Ahhoz, hogy megtaláljuk a `dog` kulcshoz jelenleg hozzárendelt értéket a fában, először a `dog` szót alakítjuk át az ábécé betűivé (amely `64 6f 67`), majd haladunk lefelé a fában, amíg meg nem találjuk az értéket. Ez azt jelenti, hogy a gyökér-hash keresésével kezdjük egy kulcs/érték adatbázisban (DB), hogy megtaláljuk a fa gyökérpontját. Ez más (csomó)pontokra mutató kulcsok tömbjeként jelenik meg. Ehhez a `6`-os indexnél lévő értéket kulcsként használjuk, és ezt a kulcs-érték adatbázisban megkeressük, hogy megkapjuk az egy szinttel lejjebbi csomópontot. Ezután a `4`-es indexet választjuk a következő érték megkereséséhez, majd a `6`-os indexet, és így tovább, amíg egyszer végig nem követtük az utat: `gyökér -> 6 -> 4 -> 6 -> 15 -> 6 -> 7`, ekkor megnézzük a csomópont értékét, és visszaadjuk az eredményt.
+
+Különbség van aközött, hogy valamit a fában vagy az alapjául szolgáló kulcs-érték adatbázisban keresünk. Mindkettő kulcs-érték elrendezést definiál, de a mögöttes adatbázis képes a kulcsok hagyományos, egylépéses keresésére. Egy kulcs keresése a fában többszöri adatbáziskeresést igényel a végső érték eléréséhez. Az adatbáziskeresést nevezzük `path` (útvonal) néven, hogy kiküszöböljük a félreérthetőséget.
+
+A radix-fák frissítési és törlési műveletei a következőképpen definiálhatók:
+
+```
+ def update(node,path,value):
+ if path == '':
+ curnode = db.get(node) if node else [ NULL ] * 17
+ newnode = curnode.copy()
+ newnode[-1] = value
+ else:
+ curnode = db.get(node) if node else [ NULL ] * 17
+ newnode = curnode.copy()
+ newindex = update(curnode[path[0]],path[1:],value)
+ newnode[path[0]] = newindex
+ db.put(hash(newnode),newnode)
+ return hash(newnode)
+
+ def delete(node,path):
+ if node is NULL:
+ return NULL
+ else:
+ curnode = db.get(node)
+ newnode = curnode.copy()
+ if path == '':
+ newnode[-1] = NULL
+ else:
+ newindex = delete(curnode[path[0]],path[1:])
+ newnode[path[0]] = newindex
+
+ if all(x is NULL for x in newnode):
+ return NULL
+ else:
+ db.put(hash(newnode),newnode)
+ return hash(newnode)
+```
+
+A „Merkle” radix-fa a csomópontok összekapcsolásával épül fel, determinisztikusan generált kriptográfiai hash digest-ek segítségével. Ez a tartalomcímzés (a kulcs-érték adatbázisban `key == keccak256(rlp(value))`) biztosítja a tárolt adatok kriptográfiai integritását. Ha egy adott fa gyökérhash-e nyilvánosan ismert, akkor aki hozzáférhet a mögöttes levél szintű adatokhoz, bizonyítékot állíthat össze arra, hogy a fa egy adott értéket tartalmaz egy adott útvonalon, azáltal hogy megadja az egyes csomópontok hash-ét, amelyek egy adott értéket a fa gyökeréhez kapcsolnak.
+
+Egy támadó számára lehetetlen egy nem létező `(path, value)` pár bizonyítása, mivel a gyökér-hash az összes alatta lévő hash-re épül. A mögöttes adatok módosítása megváltoztatná a gyökér-hash-t. A hash-re úgy is gondolhat, mint az adatok szerkezeti információinak tömörített reprezentációjára, amelyet a hash-függvény előképvédelme (pre-image) biztosít.
+
+A radix-fa egy atomnyi egységére (például egyetlen hexadecimális karakter vagy 4 bites bináris szám) „nibble”-ként hivatkozunk. Miközben az útvonalat bejárjuk egy-egy nibble mentén, a csomópontnak legfeljebb 16 gyermeke lehet addig, amíg egy `érték`-et tartalmaz. Ezért ezeket 17 hosszúságú tömbként ábrázoljuk. Ezeket a 17 elemű tömböket „elágazási csomópontoknak” nevezzük.
+
+## Merkle Patricia-fa {#merkle-patricia-trees}
+
+A radix-fáknak egy fő korláta van: nem hatékonyak. Ha egy `(path, value)` (út, érték) kötést szeretnénk tárolni, ahol az útvonal, mint az Ethereumban, 64 karakter hosszú (a `bytes32` nibble száma), akkor több mint egy kilobájtnyi extra helyre lesz szükségünk, hogy karakterenként egy szintet tároljunk, és minden keresés vagy törlés mind a 64 lépést megteszi. A bevezetett Patricia-fa megoldotta ezt a gondot.
+
+### Optimalizálás {#optimization}
+
+A Merkle Patricia-fa egy csomópontja az egyik a következőkből:
+
+1. `NULL` (egy üres string)
+2. `branch` Egy 17 elemű csomópont `[ v0 ... v15, vt ]`
+3. `leaf` Egy 2 elemű csomópont `[ encodedPath, value ]`
+4. `extension` Egy 2 elemű csomópont `[ encodedPath, key ]`
+
+A 64 karakteres útvonalak esetén elkerülhetetlen, hogy a fa első néhány rétegének bejárása után olyan csomóponthoz érjünk, ahol legalább az út egy részén nem létezik elágazás. Annak elkerülése érdekében, hogy az útvonal mentén akár 15 ritka `NULL` csomópontot kelljen létrehozni, a lefelé haladást egy `extension` csomópont létrehozásával levágjuk, amely a `[ encodedPath, key ]` formájú, ahol `encodedPath` tartalmazza a „részleges útvonalat”, amelyet át kell ugrani (az alább ismertetett kompakt kódolással), és a `key` a következő DB-keresésre szolgál.
+
+Egy `level` (levél) csomópont esetében, amelyet a `encodedPath` első nibble-jében lévő flaggel jelölhetünk, az útvonal kódolja az összes korábbi csomópont útvonalrészletét, és közvetlenül megnézhetjük a `value` mezőt.
+
+Ez az optimalizálás azonban kétértelműséget eredményez.
+
+A nibble-ekben történő útvonalak bejárásakor előfordulhat, hogy páratlan számú nibble-t kell bejárnunk, de minden adat `bytes` formátumban van tárolva. Nem lehet különbséget tenni például az `1` és a `01` nibble között (mindkettőt `<01>`-ként kell tárolni). A páratlan hosszúság megadásához a részleges útvonal elé egy jelölőt (flag) kell illeszteni.
+
+### Specifikáció: Hexadecimális szekvencia kompakt kódolása opcionális befejezővel {#specification}
+
+Mind a _páratlan vs. páros fennmaradó részleges útvonalhossz_, mind a _levél vs. bővítmény csomópont_ jelölése a fent leírtak szerint bármely 2 elemű csomópont részleges útvonalának első nibble-jében található. Az eredmény így néz ki:
+
+ hex char bits | node type partial path length
+ ----------------------------------------------------------
+ 0 0000 | extension even
+ 1 0001 | extension odd
+ 2 0010 | terminating (leaf) even
+ 3 0011 | terminating (leaf) odd
+
+A páros fennmaradó útvonalhossz (`0` vagy `2`) esetén mindig egy `0` „kitöltő” nibble következik.
+
+```
+ def compact_encode(hexarray):
+ term = 1 if hexarray[-1] == 16 else 0
+ if term: hexarray = hexarray[:-1]
+ oddlen = len(hexarray) % 2
+ flags = 2 * term + oddlen
+ if oddlen:
+ hexarray = [flags] + hexarray
+ else:
+ hexarray = [flags] + [0] + hexarray
+ // hexarray now has an even length whose first nibble is the flags.
+ o = ''
+ for i in range(0,len(hexarray),2):
+ o += chr(16 * hexarray[i] + hexarray[i+1])
+ return o
+```
+
+Példák:
+
+```
+ > [ 1, 2, 3, 4, 5, ...]
+ '11 23 45'
+ > [ 0, 1, 2, 3, 4, 5, ...]
+ '00 01 23 45'
+ > [ 0, f, 1, c, b, 8, 10]
+ '20 0f 1c b8'
+ > [ f, 1, c, b, 8, 10]
+ '3f 1c b8'
+```
+
+Ez a Merkle Patricia-fa egy csomópontjának megadásához szükséges bővített kód:
+
+```
+ def get_helper(node,path):
+ if path == []: return node
+ if node = '': return ''
+ curnode = rlp.decode(node if len(node) < 32 else db.get(node))
+ if len(curnode) == 2:
+ (k2, v2) = curnode
+ k2 = compact_decode(k2)
+ if k2 == path[:len(k2)]:
+ return get(v2, path[len(k2):])
+ else:
+ return ''
+ elif len(curnode) == 17:
+ return get_helper(curnode[path[0]],path[1:])
+
+ def get(node,path):
+ path2 = []
+ for i in range(len(path)):
+ path2.push(int(ord(path[i]) / 16))
+ path2.push(ord(path[i]) % 16)
+ path2.push(16)
+ return get_helper(node,path2)
+```
+
+### Példa fa {#example-trie}
+
+Tegyük fel, hogy egy olyan fát szeretnénk, amely négy út-érték párt tartalmaz `('do', 'verb')`, `('dog', 'puppy')`, `('doge', 'coin')`, `('horse', 'stallion')`.
+
+Először az elérési utakat és az értékeket `bytes` formába alakítjuk át. Az alábbiakban a _útvonalak_ tényleges bájt ábrázolását `<>` jelöli, bár a _values_ a könnyebb érthetőség érdekében továbbra is stringként jelennek meg, `''` jelöléssel (ezek is `bytes` formában lennének):
+
+```
+ <64 6f> : 'verb'
+ <64 6f 67> : 'puppy'
+ <64 6f 67 65> : 'coin'
+ <68 6f 72 73 65> : 'stallion'
+```
+
+Most létrehozunk egy ilyen fát a következő kulcs-érték párokkal a mögöttes adatbázisban:
+
+```
+ rootHash: [ <16>, hashA ]
+ hashA: [ <>, <>, <>, <>, hashB, <>, <>, <>, [ <20 6f 72 73 65>, 'stallion' ], <>, <>, <>, <>, <>, <>, <>, <> ]
+ hashB: [ <00 6f>, hashD ]
+ hashD: [ <>, <>, <>, <>, <>, <>, hashE, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ]
+ hashE: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coin' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ]
+```
+
+Amikor egy csomópontra egy másik csomóponton belül hivatkozunk, akkor a `H(rlp.encode(x))` szerepel, ahol `H(x) = keccak256(x) if len(x) >= 32 else x` és `rlp.encode` az [RLP](/developers/docs/data-structures-and-encoding/rlp) kódolási függvény.
+
+Vegyük észre, hogy egy fa frissítésekor a kulcs-érték párt `(keccak256(x), x)` egy állandó keresőtáblában kell tárolni _ha_ az újonnan létrehozott csomópont hossza >= 32. Ha a csomópont ennél rövidebb, nem kell tárolni, mivel az f(x) = x függvény megfordítható.
+
+## Fák az Ethereumban {#tries-in-ethereum}
+
+Az Ethereum végrehajtási rétegén minden Merkle-fa Merkle Patricia-fát használ.
+
+Egy blokk fejlécében 3 gyökér 3 fából származik.
+
+1. stateRoot (státuszgyökér)
+2. transactionsRoot (tranzakciógyökér)
+3. receiptsRoot (visszaigazolásgyökér)
+
+### Státuszfa {#state-trie}
+
+Egy globális státuszfa van, amely minden alkalommal frissül, amikor egy kliens feldolgoz egy blokkot. Ebben a `path` (útvonal) mindig: `keccak256(ethereumAddress)` és a `value` (érték) mindig: `rlp(ethereumAccount)`. Tehát egy Ethereum `account` (számla) az egy 4 elemű tömb a következőkkel: `[nonce,balance,storageRoot,codeHash]`. Ezen a ponton érdemes megjegyezni, hogy ez a `storageRoot` (tárolási fa) egy másik Patricia-fa gyökere:
+
+### Tárolási fa {#storage-trie}
+
+A tárolási fa az, ahol _minden_ szerződésadat tárolódik. Minden számlához külön tárolási fa van. Egy adott címen adott tárolási pozíción lévő értékek lekérdezéséhez szükség van a tárolási címre, a tárolt adat egész számú pozíciójára a tárolóban és a blokk azonosítójára. Ezek azután átadhatók a JSON-RPC API-ban definiált `eth_getStorageAt` paraméterként, például a 0 tárolóhelyén lévő adatok lekérdezéséhez erre a címre `0x295a70b2de5e3953354a6a8344e616ed314d7251`:
+
+```
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
+
+{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}
+
+```
+
+A tároló egyéb elemeinek visszakeresése bonyolultabb, mivel először ki kell számítani a tárolási fában elfoglalt pozíciót. A pozíciót a cím és a tárolási pozíció `keccak256` hash-eként kell kiszámítani, mindkettőt balra nullákkal kitöltve 32 bájt hosszúságúra. Például az adatok pozíciója az 1-es tárolóhelyen erre a címre `0x391694e7e0b0cce554cb130d723a9d27458f9298`:
+
+```
+keccak256(decodeHex("000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"))
+```
+
+A Geth konzolban ez a következőképpen kalkulálható:
+
+```
+> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
+undefined
+> web3.sha3(key, {"encoding": "hex"})
+"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
+```
+
+A `path` (útvonal) ezért `keccak256(<6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9>)`. Ez már használható az adatok lekérdezésére a tároló fából:
+
+```
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
+
+{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
+```
+
+Megjegyzés: A `storageRoot` az Ethereum számlára alapvetően üres, ha az nem egy szerződésszámla.
+
+### Tranzakciófa {#transaction-trie}
+
+Minden blokkhoz külön tranzakciós fa van, amely ismét `(key, value)` (kulcs, érték) párokat tárol. Az út: `rlp(transactionIndex)`, amely azt a kulcsot jelöli, amely megfelel egy értéknek, amelyet a következők határoznak meg:
+
+```
+if legacyTx:
+ value = rlp(tx)
+else:
+ value = TxType | encode(tx)
+```
+
+Bővebb információt az [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) dokumentációban talál.
+
+### Visszaigazolásfa {#receipts-trie}
+
+Minden blokknak saját visszaigazolásfája van. A `path` (útvonal): `rlp(transactionIndex)`. A `transactionIndex` az indexe a kialakított blokkban. A visszaigazolásfát sosem frissítik. A tranzakciófához hasonlóan vannak jelenlegi és régi visszaigazolások. Egy adott visszaigazolás lekérdezéséhez visszaigazolásfából szükség van a blokkban lévő tranzakció indexére, a visszaigazoláscsomagra (payload) és a tranzakciótípusra. A visszaigazolás lehet `Receipt` típusú, amely a `TransactionType` és a `ReceiptPayload` összeadása, vagy lehet `LegacyReceipt` típusú, amely `rlp([status, cumulativeGasUsed, logsBloom, logs])` kódként van meghatározva.
+
+Bővebb információt az [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) dokumentációban talál.
+
+## További olvasnivaló {#further-reading}
+
+- [Módosított Merkle Patricia-fa — Hogyan menti az Ethereum a státuszt](https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd)
+- [Merkle-használat az Ethereumban](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/)
+- [Az Ethereum-fa megértése](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/)
diff --git a/public/content/translations/hu/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/hu/developers/docs/data-structures-and-encoding/rlp/index.md
new file mode 100644
index 00000000000..61e97c72306
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -0,0 +1,159 @@
+---
+title: Rekurzív hosszúságú prefix (RLP) sorosítás
+description: Az RLP kódolás bemutatása az Ethereum végrahajtási rétegen.
+lang: hu
+sidebarDepth: 2
+---
+
+A rekurzív hosszúságú prefixum (RLP) egy sorosítási módszer, melyet kiterjedten használnak az Ethereum végrehajtási rétegén. Az RLP a csomópontok közötti adatátvitelt szabványosítja helytakarékos formátumban. Az RLP célja a bináris adatok tetszőlegesen egymásba ágyazott tömbjeinek kódolása, és ez az elsődleges kódolási módszer, amelyet az Ethereum végrehajtási rétegén az objektumok sorosítására használnak. Az RLP célja a struktúra kódolása; bizonyos adattípusok (például sztring, float) kódolása a magasabb rendű protokollokra van bízva; de a pozitív RLP egész számokat nagy-endian bináris formában kell ábrázolni, vezető nullák nélkül (így a nulla integer ekvivalens az üres bájttömbbel). A vezető nullával rendelkező pozitív egész számok deszerializálása érvénytelen. A sztring hosszának egészértékű ábrázolását is így kell kódolni, csakúgy, mint a payloadban lévő egész számokat.
+
+További információkat talál [az Ethereum Sárgakönyvben (B függelék)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19).
+
+Ahhoz, hogy az RLP-vel kódoljunk egy szótárt, a két javasolt kanonikus forma a következő:
+
+- a `[[k1,v1],[k2,v2]...]` használjuk olyan kulcsokkal, melyek lexikográfiai sorrendben vannak
+- a magasabb szintű Patricia-fa kódolást használjuk, mint az Ethereum
+
+## Definíció {#definition}
+
+Az RLP kódolási funkció egy elemet vesz fel. Az elem a következő lehet:
+
+- egy szting vagy karaktersorozat (bájttömb) az egy elem
+- az elemek listája is egy elem
+
+Például a következők mindegyike elem:
+
+- egy üres sztring;
+- egy sztring, amely a "cat" (macska) szót tartalmazza;
+- egy lista, melyben bármennyi sztring található;
+- és az ennél bonyolultabb adatstruktúrák, mint `["cat", ["puppy", "cow"], "horse", [[]], "pig", [""], "sheep"]`.
+
+Érdemes megjegyezni, hogy az oldal további részében a sztring kifejezés a „bináris adat bizonyos számú bájtját” jelenti; nem használunk speciális kódolást, és a sztringek tartalmát nem ismerjük.
+
+Az RPL kódolást a következő módon definiáljuk:
+
+- Egy bájt, amelynek értéke a `[0x00, 0x7f]` (decimális `[0, 127]`) tartományban van, annak RLP kódolása önmaga.
+- Máskülöben, ha a sztring 0-55 bájt hosszú, az RLP-kódolás egyetlen **0x80** (decimál 128) értékű bájtból és a sztring hosszából áll, amelyet a sztring követ. Az első bájt tartománya tehát `[0x80, 0xb7]` (dec. `[128, 183]`).
+- Ha a sztring több mint 55 bájt hosszú, az RLP-kódolás egyetlen bájtból áll, amelynek értéke **0xb7** (dec. 183), valamint a sztring hossza bájtokban kifejezve bináris formában, ezt követi a sztring hossza, majd a sztring. Például egy 1024 bájt hosszú sztring kódolása `\xb9\x04\x00` (dec. `185, 4, 0`), amelyet a sztring követ. Itt `0xb9` (183 + 2 = 185) az első bájt, majd az a 2 bájt `0x0400` (dec. 1024) jön, amely az aktuális sztring hosszát jelöli. Az első bájt tartománya tehát `[0xb8, 0xbf]` (dec. `[184, 191]`).
+- Ha egy lista teljes payload-ja (azaz az összes RLP-kódolt elemének együttes hossza) 0-55 bájt hosszú, az RLP-kódolás egyetlen **0xc0** értékű bájtból és a payload hosszából áll, amelyet az elemek RLP-kódolásainak összekapcsolása követ. Az első bájt tartománya tehát `[0xc0, 0xf7]` (dec. `[192, 247]`).
+- Ha egy lista teljes payload-ja több mint 55 bájt hosszú, az RLP-kódolás egyetlen **0xf7** értékű bájtból, valamint a payload hosszának bájtban kifejezett hosszából áll bináris formában, amelyet a payload hossza követ, majd az elemek RLP-kódolásainak összekapcsolása. Az első bájt tartománya tehát `[0xf8, 0xff]` (dec. `[248, 255]`).
+
+Ez kódban a következőképpen néz ki:
+
+```python
+def rlp_encode(input):
+ if isinstance(input,str):
+ if len(input) == 1 and ord(input) < 0x80:
+ return input
+ return encode_length(len(input), 0x80) + input
+ elif isinstance(input, list):
+ output = ''
+ for item in input:
+ output += rlp_encode(item)
+ return encode_length(len(output), 0xc0) + output
+
+def encode_length(L, offset):
+ if L < 56:
+ return chr(L + offset)
+ elif L < 256**8:
+ BL = to_binary(L)
+ return chr(len(BL) + offset + 55) + BL
+ raise Exception("input too long")
+
+def to_binary(x):
+ if x == 0:
+ return ''
+ return to_binary(int(x / 256)) + chr(x % 256)
+```
+
+## Példák {#examples}
+
+- a sztring "dog" = [ 0x83, 'd', 'o', 'g' ]
+- a lista [ "cat", "dog" ] = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]`
+- az üres sztring ('null') = `[ 0x80 ]`
+- az üres lista = `[ 0xc0 ]`
+- az integer 0 = `[ 0x80 ]`
+- a kódolt integer 0 ('\\x00') = `[ 0x00 ]`
+- a kódolt integer 15 ('\\x0f') = `[ 0x0f ]`
+- a kódolt integer 1024 ('\\x04\\x00') = `[ 0x82, 0x04, 0x00 ]`
+- a háromnak a [halmazelméleti ábrázolása](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers) `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]`
+- a sztring "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]`
+
+## RLP dekódolás {#rlp-decoding}
+
+Az RLP kódolás szabályai és folyamata szerint az RLP dekódolás bemenete bináris adatok tömbjének tekinthető. Az RLP dekódolási folyamat a következő:
+
+1. a bemeneti adatok első bájtja (azaz előtagja) alapján dekódolja az adattípust, a tényleges adat hosszát és az eltolást;
+
+2. az adatok típusának és eltolásának megfelelően dekódolja az adatokat;
+
+3. folytatja a bemenet többi részének dekódolását;
+
+Ezek közül az adattípusok és az eltolás dekódolásának szabályai a következők:
+
+1. az adat egy sztring, ha az első bájt tartománya (az előtag) [0x00, 0x7f], és a sztring pontosan maga az első bájt;
+
+2. az adat egy sztring, ha az első bájt tartománya [0x80, 0xb7], és az első bájtot az a sztring követi, amelynek hossza egyenlő az első bájt mínusz 0x80;
+
+3. az adat egy sztring, ha az első bájt tartománya [0xb8, 0xbf], és a sztring hossza, amelynek hossza bájtokban egyenlő az első bájt mínusz 0xb7, követi az első bájtot, és a sztring követi a sztring hosszát;
+
+4. az adat egy lista, ha az első bájt tartománya [0xc0, 0xf7], és a lista minden olyan eleme RLP-kódolásának összekapcsolása, amelynek teljes payload-ja megegyezik az első bájttal mínusz 0xc0, az első bájtot követi;
+
+5. az adat egy lista, ha az első bájt tartománya [0xf8, 0xff], és a lista teljes payload-ja, amelynek hossza megegyezik az első bájttal mínusz 0xf7, követi az első bájtot, és a lista összes elemének RLP-kódolásának konkatenációja követi a lista teljes payload-ját;
+
+Ez kódban a következőképpen néz ki:
+
+```python
+def rlp_decode(input):
+ if len(input) == 0:
+ return
+ output = ''
+ (offset, dataLen, type) = decode_length(input)
+ if type is str:
+ output = instantiate_str(substr(input, offset, dataLen))
+ elif type is list:
+ output = instantiate_list(substr(input, offset, dataLen))
+ output += rlp_decode(substr(input, offset + dataLen))
+ return output
+
+def decode_length(input):
+ length = len(input)
+ if length == 0:
+ raise Exception("input is null")
+ prefix = ord(input[0])
+ if prefix <= 0x7f:
+ return (0, 1, str)
+ elif prefix <= 0xb7 and length > prefix - 0x80:
+ strLen = prefix - 0x80
+ return (1, strLen, str)
+ elif prefix <= 0xbf and length > prefix - 0xb7 and length > prefix - 0xb7 + to_integer(substr(input, 1, prefix - 0xb7)):
+ lenOfStrLen = prefix - 0xb7
+ strLen = to_integer(substr(input, 1, lenOfStrLen))
+ return (1 + lenOfStrLen, strLen, str)
+ elif prefix <= 0xf7 and length > prefix - 0xc0:
+ listLen = prefix - 0xc0;
+ return (1, listLen, list)
+ elif prefix <= 0xff and length > prefix - 0xf7 and length > prefix - 0xf7 + to_integer(substr(input, 1, prefix - 0xf7)):
+ lenOfListLen = prefix - 0xf7
+ listLen = to_integer(substr(input, 1, lenOfListLen))
+ return (1 + lenOfListLen, listLen, list)
+ raise Exception("input does not conform to RLP encoding form")
+
+def to_integer(b):
+ length = len(b)
+ if length == 0:
+ raise Exception("input is null")
+ elif length == 1:
+ return ord(b[0])
+ return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256
+```
+
+## További olvasnivaló {#further-reading}
+
+- [RLP az Ethereumon](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919)
+- [Ethereum háttérműködése: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
+- [Coglio, A. (2020). Ethereum Rekurzív hosszúságú prefix (RLP) az ACL2-ben. arXiv preprint arXiv:2009.13769.](https://arxiv.org/abs/2009.13769)
+
+## Kapcsolódó témák {#related-topics}
+
+- [Patricia Merkle-fa](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
diff --git a/public/content/translations/hu/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/hu/developers/docs/data-structures-and-encoding/ssz/index.md
new file mode 100644
index 00000000000..70f0154a5f9
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/data-structures-and-encoding/ssz/index.md
@@ -0,0 +1,149 @@
+---
+title: Egyszerű sorosítás (SSZ)
+description: Az Ethereum egyszerű sorosítási (SSZ) formátumának magyarázata.
+lang: hu
+sidebarDepth: 2
+---
+
+Az **egyszerű sorosítás (SSZ)** a Beacon láncon használt sorosítási módszer. Ezt használják a konszenzusrétegben, a végrehajtási rétegben használt RLP sorosítás helyett, kivéve a társak megkeresésének protokolljánál. Az SSZ determinisztikus és hatékonyan Merkle-szerűsít. Az SSZ két komponensből áll: egy sorosítási sémából és egy Merkle-szerűsítő sémából, amelyet úgy terveztek, hogy hatékonyan dolgozzon a sorosított adatstruktúrával.
+
+## Hogyan működik az SSZ? {#how-does-ssz-work}
+
+### Sorosítás {#serialization}
+
+Az SSZ egy olyan sorosítási séma, amely nem önleíró – inkább egy sémára támaszkodik, amelyet előre ismerni kell. Az SSZ sorosítás célja, hogy tetszőleges összetettségű objektumokat bájtsorozatként ábrázoljon. Ez egy egyszerű folyamat az alaptípusokra. Az elemet egyszerűen hexadecimális bájtokká alakítja. Az alaptípusok a következők:
+
+- unsigned integerek
+- Boolean-ek
+
+Az „összetett” típusok esetében a sorosítás bonyolultabb, mivel az összetett típus több elemet tartalmaz, amelyek különböző típusúak vagy különböző méretűek lehetnek, vagy mindkettő. Ha ezek az objektumok mind fix hosszúságúak (azaz az elemek mérete mindig állandó lesz, függetlenül a tényleges értékeiktől), akkor a sorosítás az összetett típus minden egyes elemének kis-endian bájtsztringekké történő átalakítása. Ezeket a bájtsztringeket összekapcsolják. A sorosított objektum a fix hosszúságú elemek bájtlista reprezentációját tartalmazza ugyanabban a sorrendben, ahogyan azok a deszerializált objektumban szerepelnek.
+
+A változó hosszúságú típusok esetében a tényleges adatok helyébe egy „eltolási” (offset) érték lép az adott elem pozíciójában a sorosított objektumban. A tényleges adatok egy halomba kerülnek a sorosított objektum végén. Az eltolási érték a halomban lévő tényleges adatok kezdetének indexe, amely a megfelelő bájtokra mutató mutatóként szolgál.
+
+Az alábbi példa azt szemlélteti, hogyan működik az eltolás fix és változó hosszúságú elemeket tartalmazó konténer esetében:
+
+```Rust
+
+ struct Dummy {
+
+ number1: u64,
+ number2: u64,
+ vector: Vec,
+ number3: u64
+ }
+
+ dummy = Dummy{
+
+ number1: 37,
+ number2: 55,
+ vector: vec![1,2,3,4],
+ number3: 22,
+ }
+
+ serialized = ssz.serialize(dummy)
+
+```
+
+A `serialized` a következő szerkezetű lenne (itt 4 bitre van kitöltve, a valóságban 32 bitre van, és az áttekinthetőség kedvéért `int` ábrázolást használunk):
+
+```
+[37, 0, 0, 0, 55, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 1, 2, 3, 4]
+------------ ----------- ----------- ----------- ----------
+ | | | | |
+ number1 number2 offset for number 3 value for
+ vector vector
+
+```
+
+az áttekinthetőség érdekében sorokra osztva:
+
+```
+[
+ 37, 0, 0, 0, # little-endian encoding of `number1`.
+ 55, 0, 0, 0, # little-endian encoding of `number2`.
+ 16, 0, 0, 0, # The "offset" that indicates where the value of `vector` starts (little-endian 16).
+ 22, 0, 0, 0, # little-endian encoding of `number3`.
+ 1, 2, 3, 4, # The actual values in `vector`.
+]
+```
+
+Ez még mindig egyszerűsítés – a fenti ábrákon szereplő egész számok és nullák valójában bájtlistákként lennének tárolva, például így:
+
+```
+[
+ 10100101000000000000000000000000 # little-endian encoding of `number1`
+ 10110111000000000000000000000000 # little-endian encoding of `number2`.
+ 10010000000000000000000000000000 # The "offset" that indicates where the value of `vector` starts (little-endian 16).
+ 10010110000000000000000000000000 # little-endian encoding of `number3`.
+ 10000001100000101000001110000100 # The actual value of the `bytes` field.
+]
+```
+
+Így a változó hosszúságú típusok tényleges értékei egy halomban tárolódnak a sorosított objektum végén, a mezők rendezett listájában a megfelelő pozíciókban tárolt eltolási értékeikkel együtt.
+
+A speciális esetek különleges kezelést igényelnek, mint például a `BitList` típus, amelyhez a sorosítás során hosszkorlátot kell hozzáadni, majd a deszerializálás során eltávolítani azt. További részletek az [SSZ specifikációban](https://github.com/ethereum/consensus-specs/blob/dev/ssz/simple-serialize.md) találhatók.
+
+### Deszerializáció {#deserialization}
+
+Az objektum deszerializációjához szükség van a sémára. A séma meghatározza a sorosított adatok pontos elrendezését, hogy minden egyes elemet egy bájtblob-ból valamilyen értelmes objektummá lehessen deszerializálni, amelynek elemei a megfelelő típusúak, értékűek, méretűek és pozíciójúak. A séma az, amely megmondja a deszerializátornak, hogy mely értékek ténylegesek, és melyek az eltolási értékek. Az objektum sorosításakor minden mezőnév eltűnik, de a séma szerinti deszerializáláskor újra létrejön.
+
+Tekintse meg az [ssz.dev](https://www.ssz.dev/overview) oldalt egy interakcít magyarázatért.
+
+## Merkle-szerűsítés {#merkleization}
+
+Ez az SSZ sorosított objektum ezután Merkle-szerűsíthető, azaz átalakítható ugyanazon adatok Merkle-fa reprezentációjává. Először meg kell határozni a 32 bájtos darabok számát a sorosított objektumban. Ezek a fa levelei. A levelek teljes számának 2 hatványának kell lennie, hogy a levelek összevonása végül egyetlen hash-fagyökeret eredményezzen. Ha ez magától nem így van, akkor további 32 bájtnyi nullát tartalmazó levelek kerülnek hozzáadásra. Ezt így ábrázolhatjuk:
+
+```
+ hash tree root
+ / \
+ / \
+ / \
+ / \
+ hash of leaves hash of leaves
+ 1 and 2 3 and 4
+ / \ / \
+ / \ / \
+ / \ / \
+ leaf1 leaf2 leaf3 leaf4
+```
+
+Vannak olyan esetek is, amikor a fa levelei nem egyenletesen oszlanak el, ahogy azt a fenti példa mutatja. A 4. levél például egy több elemet tartalmazó konténer lehet, amely további „mélységet” igényel a Merkle-fához, ami egy egyenetlen fát hoz létre.
+
+Ahelyett, hogy ezeket a faelemeket x. levélnek, x. csomópontnak stb. neveznénk, általános indexeket adhatunk nekik, kezdve a gyökérrel = 1 és balról jobbra számozva minden szinten. Ez a fentebb ismertetett általánosított index. A sorosított lista minden egyes elemének általános indexe `2**depth + idx`, ahol idx a nullával indexelt pozíciója a sorosított objektumban, a mélység (depth) pedig a Merkle-fa szintjeinek száma, amely az elemek (levelek) számának kettes bázisú logaritmusaként határozható meg.
+
+## Általánosított indexek {#generalized-indices}
+
+Az általánosított index egy egész szám, amely egy csomópontot jelöl egy bináris Merkle-fában, ahol minden csomópontnak van egy általánosított indexe `2 ** depth + index in row`.
+
+```
+ 1 --depth = 0 2**0 + 0 = 1
+ 2 3 --depth = 1 2**1 + 0 = 2, 2**1+1 = 3
+ 4 5 6 7 --depth = 2 2**2 + 0 = 4, 2**2 + 1 = 5...
+
+```
+
+Ez az ábrázolás a Merkle-fa minden egyes adatához egy csomópontindexet ad.
+
+## Többszörös bizonyítékok {#multiproofs}
+
+Az általánosított indexek listájának megadása, mely egy adott elemet reprezentál, lehetővé teszi, hogy ellenőrizzük azt a hash-fa gyökerével szemben. Ez a gyökér az általunk elfogadott valóság. Bármelyik adatot ellenőrizhetjük ezzel a valósággal szemben, ha beillesztjük a Merkle-fa megfelelő helyére (amelyet az általánosított indexe határoz meg), és megfigyeljük, hogy a gyökér állandó marad-e. A [specifikációban](https://github.com/ethereum/consensus-specs/blob/dev/ssz/merkle-proofs.md#merkle-multiproofs) vannak olyan függvények, amelyek megmutatják, hogyan lehet kiszámítani a csomópontok minimális halmazát, amely egy adott általános indexkészlet tartalmának ellenőrzéséhez kell.
+
+Például az alábbi fa 9-es indexében lévő adatok ellenőrzéséhez szükségünk van a 8, 9, 5, 3, 1 indexben lévő adatok hash-ére. A (8,9) hash-nek meg kell egyeznie a (4) hash-sel, amely az 5-tel hash-elve a 2-t adja, amely a 3-mal hash-elve az 1-es fa gyökerét adja. Ha a 9-hez helytelen adatokat adnánk meg, a gyökér megváltozna – ezt észlelnénk, és nem tudnánk ellenőrizni az ágat.
+
+```
+* = data required to generate proof
+
+ 1*
+ 2 3*
+ 4 5* 6 7
+8* 9* 10 11 12 13 14 15
+
+```
+
+## További olvasnivaló {#further-reading}
+
+- [Az Ethereum frissítése: SSZ](https://eth2book.info/altair/part2/building_blocks/ssz)
+- [Az Ethereum frissítése: Merkle-szerűsítés](https://eth2book.info/altair/part2/building_blocks/merkleization)
+- [SSZ implementációk](https://github.com/ethereum/consensus-specs/issues/2138)
+- [SSZ kalkulátor](https://simpleserialize.com/)
+- [SSZ.dev](https://www.ssz.dev/)
diff --git a/public/content/translations/hu/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md b/public/content/translations/hu/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
new file mode 100644
index 00000000000..3ee20c16c5f
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
@@ -0,0 +1,189 @@
+---
+title: Web3 titkos tárhely meghatározása
+description: A web3 titkos tárolás hivatalos definíciója
+lang: hu
+sidebarDepth: 2
+---
+
+Ahhoz, hogy az Ön alkalmazása az Ethereumon működjön, használhatja a web3 objektumot, amit a web3.js könyvtár biztosít. A háttérben RPC híváson keresztül egy helyi csomóponttal kommunikál. A [web3](https://github.com/ethereum/web3.js/) bármelyik Ethereum csomóponttal működőképes, mely nyilvánossá tesz egy RPC réteget.
+
+A `web3` az `eth` objektumot tartalmazza: web3.eth.
+
+```js
+var fs = require("fs")
+var recognizer = require("ethereum-keyfile-recognizer")
+
+fs.readFile("keyfile.json", (err, data) => {
+ var json = JSON.parse(data)
+ var result = recognizer(json)
+})
+
+/** result
+ * [ 'web3', 3 ] web3 (v3) keyfile
+ * [ 'ethersale', undefined ] Ethersale keyfile
+ * null invalid keyfile
+ */
+```
+
+Ez a dokumentum a web3 titkos tárolási definíciójának **3. verzióját** dokumentálja.
+
+## Definíció {#definition}
+
+A fájl tényleges kódolása és dekódolása nagyrészt változatlan marad az 1. verzióhoz képest, kivéve, hogy a titkosítási algoritmus már nem AES-128-CBC-hez van kötve (az AES-128-CTR a minimális követelmény). A legtöbb jelentés és algoritmus hasonló az 1. verzióhoz, kivéve a `mac`, amely a származtatott kulcs bal szélső második 16 bájtjának és a teljes `ciphertextnek` a SHA3 (keccak-256) kombinációjaként van megadva.
+
+A titkos kulcsfájlok közvetlenül a `~/.web3/keystore` (Unix-szerű rendszerekre) és a `~/AppData/Web3/keystore` (Windows esetén) mappákban vannak tárolva. A nevük bármi lehet, de egy jó elnevezési logika a `.json`, ahol `` a titkos kulcshoz adott 128 bites UUID (a titkos kulcs címének adatvédelmet biztosító proxy).
+
+Minden ilyen fájlhoz tartozik egy jelszó. Egy adott `.json` fájl titkos kulcsának létrehozásához először a fájl titkosítási kulcsát kell létrehozni; ez úgy történik, hogy a fájl jelszavát fogjuk és átadjuk a `kdf` kulcs által megadott kulcskészítő függvénynek. A KDF-től függő statikus és dinamikus paraméterek a `kdfparams` kulcsban vannak leírva.
+
+A PBKDF2-t minden minimálisan megfelelő implementációnak támogatnia kell az alábbi módon:
+
+- `kdf`: `pbkdf2`
+
+A PBKDF2-höz a kdfparams tartalmazza:
+
+- `prf`: `hmac-sha256` kell legyen (talán a jövőben ki lesz terjesztve);
+- `c`: iterációk száma;
+- `salt`: a PBKDF-nek átadott salt;
+- `dklen`: a létrehozott kulcs hossza. Muszáj, hogy >= 32 legyen.
+
+Miután a fájl kulcsát létrehoztuk, azt a MAC származtatásával kell ellenőrizni. A MAC-et a származtatott kulcs bal szélső második 16 bájtjának és a `ciphertext` kulcs tartalmának összekapcsolásából képzett bájttömb SHA3 (keccak-256) hash-eként kell kiszámítani:
+
+```js
+KECCAK(DK[16..31] ++ )
+```
+
+(ahol a `++` az összeadási művelet)
+
+Ezt az értéket össze kell hasonlítani a `mac` kulcs tartalmával; ha eltérnek, alternatív jelszót kell kérni (vagy a műveletet törölni).
+
+A fájl kulcsának ellenőrzése után a titkosított szöveg (a fájlban szereplő `ciphertext` kulcs) visszafejthető a `cipher` kulcs által meghatározott és a `cipherparams` kulcson keresztül paraméterezett szimmetrikus titkosítási algoritmus segítségével. Ha a származtatott kulcs mérete és az algoritmus kulcsmérete nem egyezik, akkor a származtatott kulcs nullával kitöltött, jobb szélső bájtjait kell használni az algoritmus kulcsaként.
+
+Minden minimálisan megfelelő implementációnak támogatnia kell az AES-128-CTR algoritmust, amelyet a következőkkel jelölnek:
+
+- `cipher: aes-128-ctr`
+
+Ez a titkosító a következő paramétereket veszi fel, amelyeket a cipherparams kulcshoz adott kulcsként kell megadni:
+
+- `iv`: 128 bites inicializálási vektor a titkosításhoz.
+
+A titkosítás kulcsa a származtatott kulcs bal szélső 16 bájtja, azaz `DK[0..15]`
+
+A titkos kulcs létrehozása vagy titkosítása lényegében ezen utasítások fordítottja. Győződjön meg róla, hogy a `uuid`, `salt` és `iv` valóban véletlenszerű.
+
+A `version` mezőn kívül, amelynek a verzió „kemény” azonosítójaként kell működnie, a megvalósítások használhatják a `minorversion` mezőt is a formátum kisebb, nem megszakított változásainak követésére.
+
+## Tesztvektorok {#test-vectors}
+
+Részletek:
+
+- `Address`: `008aeeda4d805471df9b2a5b0f38a0c3bcba786b`
+- `ICAP`: `XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67`
+- `UUID`: `3198bc9c-6672-5ab3-d9954942343ae5b6`
+- `Password`: `testpassword`
+- `Secret`: `7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d`
+
+### PBKDF2-SHA-256 {#PBKDF2-SHA-256}
+
+A tesztvektor `AES-128-CTR` és `PBKDF2-SHA-256` kódot használ:
+
+A `~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json` fájltartalma:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "6087dab2f9fdbbfaddc31a909735c1e6"
+ },
+ "ciphertext": "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
+ "kdf": "pbkdf2",
+ "kdfparams": {
+ "c": 262144,
+ "dklen": 32,
+ "prf": "hmac-sha256",
+ "salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
+ },
+ "mac": "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**Köztes értékek**:
+
+`Derived key`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551` `MAC Body`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46` `MAC`: `517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2` `Cipher key`: `f06d69cdc7da0faffb1008270bca38f5`
+
+### Scrypt {#scrypt}
+
+A tesztvektor AES-128-CTR és Scrypt-et használ:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "740770fce12ce862af21264dab25f1da"
+ },
+ "ciphertext": "dd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2",
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "25710c2ccd7c610b24d068af83b959b7a0e5f40641f0c82daeb1345766191034"
+ },
+ "mac": "337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**Köztes értékek**:
+
+`Derived key`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d` `MAC Body`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2` `MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c` `Cipher key`: `7446f59ecc301d2d79bc3302650d8a5c`
+
+## Módosítások az 1. változathoz képest {#alterations-from-v2}
+
+Ez a verzió számos inkonzisztenciát javított ki az [itt](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst) publikált 1. verzióhoz képest. Ezek röviden:
+
+- A nagybetűs írásmód indokolatlan és következetlen (scrypt kisbetűs, Kdf vegyes, MAC nagybetűs).
+- A cím felesleges és veszélyezteti az adatvédelmet.
+- `Salt` eredendően a kulcslétrehozási függvény paramétere, és ahhoz kell hozzárendelni, nem pedig általában a kriptográfiához.
+- _SaltLen_ fölösleges (a Salt-ból le lehet vezetni).
+- A kulcslétrehozási függvény adott, de a titkosítási algoritmus nehezen meghatározott.
+- `Version` eredendően numerikus, mégis egy sztring (a strukturált verziókezelés lehetséges lenne egy sztringgel, de egy ritkán változó konfigurációs fájlformátum esetében ez nem releváns).
+- `KDF` és `cipher` fogalmilag testvérek, mégis másképp szerveződnek.
+- `MAC` egy szóköz agnosztikus adatdarabon keresztül kerül kiszámításra(!)
+
+A formátumot úgy változtattuk meg, hogy a következő fájlt kapjuk, amely funkcionálisan megegyezik a korábban hivatkozott oldal példájával:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-cbc",
+ "ciphertext": "07533e172414bfa50e99dba4a0ce603f654ebfa1ff46277c3e0c577fdc87f6bb4e4fe16c5a94ce6ce14cfa069821ef9b",
+ "cipherparams": {
+ "iv": "16d67ba0ce5a339ff2f07951253e6ba8"
+ },
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "06870e5e6a24e183a5c807bd1c43afd86d573f7db303ff4853d135cd0fd3fe91"
+ },
+ "mac": "8ccded24da2e99a11d48cda146f9cc8213eb423e2ea0d8427f41c3be414424dd",
+ "version": 1
+ },
+ "id": "0498f19a-59db-4d54-ac95-33901b4f1870",
+ "version": 2
+}
+```
+
+## Módosítások az 2. változathoz képest {#alterations-from-v2}
+
+A 2. verzió egy korai C++ implementáció volt számos hibával. Minden lényeges dolog változatlan maradt.
diff --git a/public/content/translations/hu/developers/docs/networking-layer/index.md b/public/content/translations/hu/developers/docs/networking-layer/index.md
new file mode 100644
index 00000000000..8573bc7ccee
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/networking-layer/index.md
@@ -0,0 +1,155 @@
+---
+title: Hálózati réteg
+description: Bevezetés az Ethereum hálózati rétegébe.
+lang: hu
+sidebarDepth: 2
+---
+
+Az Ethereum egy peer-to-peer hálózat több ezer csomóponttal, amelyeknek szabványosított protokollokkal kommunikálnak egymással. A hálózati réteg azon protokollok halmaza, amelyek lehetővé teszik, hogy ezek a csomópontok megtalálják egymást és információt cseréljenek. Ez magában foglalja az információk pletykálását (egy a sokhoz kommunikáció) a hálózaton keresztül, valamint a kérések és válaszok cseréjét bizonyos csomópontok között (egy az egyhez kommunikáció). Minden csomópontnak be kell tartania bizonyos hálózati szabályokat, hogy biztosítsa a megfelelő információk küldését és fogadását.
+
+A kliensszoftver két részből áll (végrehajtási és konszenzuskliensek), mindegyiknek különálló hálózati stackje van. A többi Ethereum-csomóponttal való kommunikáció mellett a végrehajtási és konszenzusklienseknek egymással is kommunikálniuk kell. Ez az oldal magyarázatot ad a kommunikációs protokollokról.
+
+A végrehajtási kliensek tranzakciókat pletykálnak a végrehajtási réteg peer-to-peer hálózatán. Ehhez titkosított kommunikáció szükséges a hitelesített társak között. Amikor egy validátort kiválasztanak blokkelőterjesztésre, a csomópont helyi tranzakciógyűjtőjéből tranzakciókat ad át a konszenzuskliensnek egy helyi RPC kapcsolaton, melyeket Beacon blokkokba csomagol. A konszenzuskliensek ezután pletykálnak a Beacon blokkokról a saját p2p hálózatukon. Ehhez két elkülönített p2p hálózat kell: az egyik összeköti a végrehajtási klienseket a tranzakciópletykával, a másik a konszenzusklienseket a blokkpletykával.
+
+## Előfeltételek {#prerequisites}
+
+E téma könnyebb megértéséhez tekintse meg az Ethereum [csomópontok és kliensek](/developers/docs/nodes-and-clients/) témáját.
+
+## A végrehajtási réteg {#execution-layer}
+
+A végrehajtási réteg hálózati protokolljai két részre oszlanak:
+
+- a felfedező stack: az UDP portra épül, és lehetővé teszi, hogy egy új csomópont megtalálja a társait, amelyekhez csatlakozhat
+
+- a DevP2P stack: a TCP port tetején helyezkedik el, és lehetővé teszi a csomópontok számára az információcserét
+
+A stackek párhuzamosan működnek. A felfedező stack új résztvevőket hoz a hálózatba, a DevP2P pedig lehetővé teszi ezek interakcióit.
+
+### Felfedezés {#discovery}
+
+A felfedezés a hálózatban lévő más csomópontok megtalálásának folyamata. Ez egy kis számú beöltő csomópont (bootnode) segítségével történik (amelyek címe [be van kódolva](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) a kliensbe, hogy azonnal megtalálhatók legyenek, és összekapcsolják a klienst a társaival). Ezek a betöltő csomópontok azért léteznek, hogy egy új csomópontot bemutassanak a társaiknak – nincs más céljuk, nem vesznek részt a normál kliensfeladatokban, például a lánc szinkronizálásában, és csak a kliens legelső indításakor használják őket.
+
+A betöltőcsomópont-csomópont interakció protokollja a [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f) egy módosított formája, amely egy [elosztott hash táblát](https://en.wikipedia.org/wiki/Distributed_hash_table) használ a csomópontlista megosztására. Minden csomópont rendelkezik ezzel a táblával, hogy a szükséges információk birtokában legyen, amikor a legközelebbi társaihoz csatlakozik. A közelség nem földrajzi, hanem a csomópont azonosítójának hasonlósága határozza meg. A csomópontoknál lévő táblázat biztonsági okokból rendszeresen frissül. Például a [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) felfedezőprotokoll csomópontjai képesek „hirdetéseket” is küldeni, amelyek megjelenítik a kliens által támogatott alprotokollokat, lehetővé téve a társak számára, hogy tárgyaljanak a protokollokról, amelyeken keresztül mindketten kommunikálni tudnak.
+
+A felfedezés egy ping-pong-játékkal kezdődik. Egy sikeres ping-pong „köti” az új csomópontot egy betöltő csomóponthoz. A kezdeti üzenet, amely a betöltő csomópontot figyelmezteti a hálózatba belépő új csomópont létezésére, egy `PING`. Ez a `PING` hashelt információkat tartalmaz az új csomópontra, a betöltő csomópontra és a lejárati időre vonatkozóan. A betöltő csomópont fogadja a `PING`-et, és visszaküld egy `PONG`-ot, amely tartalmazza a `PING` hash-t. Ha a `PING` és `PONG` hashek egyeznek, akkor az új csomópont és a betöltő csomópont közötti kapcsolat le van ellenőrizve, és „összekapcsolódtak”.
+
+Miután összekapcsolódott, az új csomópont küldhet egy `FIND-NEIGHBOURS` kérést a betöltő csomópontnak. A betöltő csomópont által visszaküldött adatok tartalmazzák azoknak a partnereknek a listáját, amelyekhez az új csomópont csatlakozhat. Ha a csomópontok nincsenek összekötve, a `FIND-NEIGHBOURS` kérés sikertelen lesz, így az új csomópont nem tud belépni a hálózatba.
+
+Amint az új csomópont megkapja a betöltő csomóponttól a szomszédok listáját, mindegyikükkel PING-PONG cserét kezd. A sikeres PING-PONG-ok összekötik az új csomópontot a szomszédjaival, lehetővé téve az üzenetváltást.
+
+```
+start client --> connect to bootnode --> bond to bootnode --> find neighbours --> bond to neighbours
+```
+
+A végrehajtási kliensek jelenleg a [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) felfedezőprotokollt használják, és aktív erőfeszítéseket tesznek a [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) protokollra való áttérésre.
+
+#### ENR: Ethereum csomópontfeljegyzés {#enr}
+
+A [Ethereum csomópontfeljegyzés (ENR)](/developers/docs/networking-layer/network-addresses/) egy objektum, amely három alapvető elemet tartalmaz: egy aláírást (a rekord tartalmának egy elfogadott azonosítási séma szerinti hash-e), egy sorszámot, amely a rekord változását követi, és kulcs-érték párok tetszőleges listáját. Ez egy jövőbiztos formátum, amellyel az azonosító információk könnyebben cserélhetők az új társak között, és ez az Ethereum-csomópontok preferált [hálózati cím](/developers/docs/networking-layer/network-addresses) formátuma.
+
+#### Miért épül a felfedezés az UDP-re? {#why-udp}
+
+Az UDP nem támogatja a hibaellenőrzést, a sikertelen csomagok újraküldését vagy a kapcsolatok dinamikus megnyitását és lezárását – ehelyett egy folyamatos információáramlást küld a célpontnak, függetlenül attól, hogy sikeresen fogadja-e azt. Ez a minimális funkcionalitás minimális költséget is jelent, így ez a kapcsolat nagyon gyors. A felfedezéshez, amikor egy csomópont egyszerűen csak jelezni akarja jelenlétét, hogy aztán hivatalos kapcsolatot létesítsen egy társsal, elegendő az UDP. A hálózati stack többi része számára azonban az UDP nem felel meg a célnak. A csomópontok közötti információcsere meglehetősen összetett, ezért egy teljesebb funkciójú protokollra van szükség, amely támogatja az újraküldést, a hibaellenőrzést stb. A TCP-hez kapcsolódó többletköltség megéri a többletfunkciókat. Ezért a P2P stack nagy része TCP-n keresztül működik.
+
+### DevP2P {#devp2p}
+
+A DevP2P a protokollok egész halmaza, amelyet az Ethereum a peer-to-peer hálózat létrehozásához és fenntartásához implementál. Miután az új csomópontok belépnek a hálózatba, interakcióikat a [DevP2P](https://github.com/ethereum/devp2p) stack protokolljai szabályozzák. Ezek mind a TCP-re épülnek, és magukban foglalják az RLPx transzport protokollt, a vezetékes protokollt és számos alprotokollt. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) a csomópontok közötti munkamenetek kezdeményezését, hitelesítését és fenntartását szabályozó protokoll. Az RLPx az RLP (Rekurzív hosszúságú prefixum) segítségével kódolja az üzeneteket, ami egy helytakarékos módszer az adatok minimális struktúrába történő kódolására, hogy azokat a csomópontok közötti küldhessék.
+
+A két csomópont közötti RLPx kapcsolódás egy kezdeti kriptográfiai kézfogással kezdődik. Ennek során a csomópont hitelesítő üzenetet küld, amelyet a társ ellenőriz. Sikeres ellenőrzés esetén a társ egy hitelesítést igazoló üzenetet generál, amelyet visszaküld a kezdeményezőnek. Ez egy kulcscsere-folyamat, amely lehetővé teszi a csomópontok számára a privát és biztonságos kommunikációt. A sikeres kriptográfiai kézfogás után mindkét csomópont „hello” üzenetet küld egymásnak „a vezetéken”. A vezetékes protokollt a hello üzenetek sikeres cseréje indítja el.
+
+A helló üzenetek a következőt tartalmazzák:
+
+- protokoll verziója
+- kliens ID
+- port
+- csomópont ID
+- a támogatott alprotokollok listája
+
+Ez a sikeres interakcióhoz szükséges információ, mivel meghatározza, hogy a két csomópont milyen képességeket oszt meg egymással, és konfigurálja a kommunikációt. Létezik egy alprotokoll-tárgyalási folyamat, amelynek során az egyes csomópontok által támogatott alprotokollok listáját összehasonlítják, és a két csomópont számára közös alprotokollok használhatók a kapcsolódásban.
+
+A hello üzenetek mellett a vezetékes protokoll „szétkapcsolási” üzenetet is küldhet, amely figyelmeztetést ad a társnak, hogy a kapcsolat lezárul. A vezetékes protokoll PING és PONG üzeneteket is tartalmaz, amelyeket időszakosan küld a munkamenet nyitva tartása érdekében. Az RLPx és a vezetékes protokollok cseréje tehát megteremti a csomópontok közötti kommunikáció alapjait, és biztosítja a hasznos információk cseréjének keretét egy adott alprotokoll szerint.
+
+### Alprotokollok {#sub-protocols}
+
+#### Vezetékes protokoll {#wire-protocol}
+
+Miután a partnerek csatlakoztak, és az RLPx kapcsolódás elindult, a vezetékes protokoll határozza meg, hogy a partnerek hogyan kommunikálnak egymással. Kezdetben a vezetékes protokoll három fő feladatot határozott meg: a láncszinkronizációt, a blokkelőterjesztést és a tranzakciók cseréjét. Miután azonban az Ethereum átállt a proof-of-stake-re, a blokkelőterjesztés és a láncszinkronizáció a konszenzusréteg részévé vált. A tranzakciók cseréje továbbra is a végrehajtási kliensek hatáskörébe tartozik. A tranzakciók cseréje a függőben lévő tranzakciók csomópontok közötti cseréjére utal, hogy a bányászok kiválaszthassanak közülük néhányat a következő blokkba. Bővebb információk [itt](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) érhetők el ezekről a feladatokról. Az ezeket az alprotokollokat támogató kliensek a [JSON-RPC](/developers/docs/apis/json-rpc/) segítségével teszik közzé azokat.
+
+#### Les (könnyű Ethereum alprotokoll) {#les}
+
+Ez egy minimális protokoll a könnyű kliensek szinkronizálásához. Ezt a protokollt ritkán használják, mivel a teljes csomópontoknak ösztönzés nélkül kell adatokat szolgáltatniuk a könnyű klienseknek. A végrehajtási kliensek alapértelmezett viselkedése az, hogy nem szolgálják ki a könnyű klienseket a Les-en keresztül. Bővebb információ található a Les [specifikációban](https://github.com/ethereum/devp2p/blob/master/caps/les.md).
+
+#### Snap {#snap}
+
+A [snap protokoll](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) egy opcionális kiterjesztés, amely lehetővé teszi, hogy a társak pillanatfelvételeket cseréljenek a legutóbbi státuszokról, így anélkül ellenőrizhetik a számla- és tárolási adatokat, hogy közbenső Merkle-fa csomópontokat kellene letölteniük.
+
+#### Wit (tanúprotokoll) {#wit}
+
+A [tanúprotokoll](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) egy opcionális kiterjesztés, amely lehetővé teszi a státusztanúk cseréjét a társak között, hogy a kliensek szinkronizálva legyenek a lánc elejéhez.
+
+#### Whisper {#whisper}
+
+A Whisper egy olyan protokoll, amelynek célja a biztonságos üzenetváltás biztosítsa a társak között anélkül, hogy bármilyen információt írna a blokkláncra. A DevP2P vezetékes protokoll része volt, de már elavult. Más [kapcsolódó projektek](https://wakunetwork.com/) is léteznek hasonló célokkal.
+
+## A konszenzusréteg {#consensus-layer}
+
+A konszenzuskliensek egy különálló, eltérő specifikációjú peer-to-peer hálózatban vesznek részt. A konszenzuskliensek részt kell venniük a blokkpletykában, hogy új blokkokat kaphassanak a társaiktól, és továbbíthassák azokat, amikor rájuk kerül a sor, hogy blokkot javasoljanak. A végrehajtási réteghez hasonlóan ehhez is először egy felfedező protokollra van szükség, hogy a csomópont megtalálja a társait, és biztonságos kapcsolódásokat hozzon létre a blokkok, igazolások stb. cseréjéhez.
+
+### Felfedezés {#consensus-discovery}
+
+A végrehajtási kliensekhez hasonlóan a konszenzuskliensek is [discv5](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-discovery-domain-discv5)-öt használnak UDP-n keresztül a társak megkereséséhez. A discv5 konszenzusréteg implementációja csak annyiban különbözik a végrehajtási kliensekétől, hogy tartalmaz egy illesztőt, amely a discv5-öt egy [libP2P](https://libp2p.io/) stackbe kapcsolja, elavulttá téve ezzel a DevP2P-t. A végrehajtási réteg RLPx kapcsolódásait elhagyták a libP2P zajmentes csatornáján való kézfogásért.
+
+### ENR-ek {#consensus-enr}
+
+A konszenzus csomópontok ENR-je tartalmazza a csomópont nyilvános kulcsát, IP-címét, UDP- és TCP-portjait, valamint két konszenzusspecifikus mezőt: a tanúsítást végező alhálózat bitmezőjét és az `eth2` kulcsot. Az előbbi megkönnyíti a csomópontok számára, hogy megtalálják az adott tanúsítási pletyka alhálózatokban részt vevő társaikat. Az `eth2` kulcs információt tartalmaz arról, hogy a csomópont melyik Ethereum elágazási (fork) verziót használja, így biztosítva, hogy a társak a megfelelő Ethereumhoz kapcsolódjanak.
+
+### libP2P {#libp2p}
+
+A libP2P stack a felfedezés után minden kommunikációt támogat. A kliensek tárcsázhatnak és hallgathatják az IPv4 és/vagy IPv6 protokollt az ENR-ben meghatározottak szerint. A libP2P réteg protokolljai feloszthatók a pletyka és a kérés/válasz (req/resp) domainekre.
+
+### Pletyka {#gossip}
+
+A pletyka domainbe tartozik minden információ, amelynek gyorsan kell terjednie a hálózaton. Ezek a Beacon-blokkok, bizonyítékok, tanúsítások, kilépések és kizárások. Ezt a libP2P gossipsub v1 segítségével továbbítják, ami a csomópontokon helyileg tárolt metaadatokra támaszkodik, beleértve a fogadható és továbbítandó pletykacsomagok maximális méretét. A pletyka domain további információt megtalálja [itt](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub).
+
+### Kérés-válasz {#request-response}
+
+A kérés-válasz domain olyan protokollokat tartalmaz, amelyekkel a kliensek konkrét információkat kérhetnek a társaiktól. Például bizonyos Beacon blokkok lekérése, melyek bizonyos gyökér-hash-eknek megfelelnek vagy egy slot-tartományba esnek. A válaszok mindig snappy-tömörített SSZ-kódolt bájtként érkeznek vissza.
+
+## Miért részesíti előnyben a konszenzuskliens az SSZ-t az RLP-vel szemben? {#ssz-vs-rlp}
+
+Az SSZ jelentése egyszerű sorosítás. Fix offseteket használ, amelyek megkönnyítik a kódolt üzenet egyes részeinek dekódolását anélkül, hogy a teljes struktúrát dekódolni kellene, ami hasznos a konszenzuskliens számára, mivel hatékonyan ki tudja venni a kódolt üzenetekből az információrészeket. Kifejezetten a Merkle protokollokkal való integrációra is tervezték, ami a Merkle-szerűsítés hatékonyságának növelésével jár. Mivel a konszenzusrétegben minden hash Merkle-gyök, ez jelentős javulást jelent. Az SSZ garantálja az értékek egyedi ábrázolását is.
+
+## A végrehajtási és konszenzuskliensek kapcsolódása {#connecting-clients}
+
+A konszenzus- és végrehajtási kliensek párhuzamosan futnak. Össze kell kapcsolódniuk, hogy a konszenzuskliens utasításokat adhasson a végrehajtási kliensnek, a végrehajtási kliens pedig tranzakciókötegeket adhasson át a konszenzus kliensnek, hogy azok bekerülhessenek a Beacon blokkokba. A két kliens közötti kommunikáció helyi RPC-kapcsolat segítségével valósítható meg. Egy [Engine-API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) néven ismert API határozza meg a két kliens között küldött utasításokat. Mivel mindkét kliens egyetlen hálózati identitás mögött helyezkedik el, megosztanak egy ENR-t (Ethereum csomópontfeljegyzés), amely mindkét kliens számára külön kulcsot tartalmaz (eth1 és eth2 kulcs).
+
+A kontrollfolyamat összefoglalása az alábbiakban látható, zárójelben a vonatkozó hálózati stackkel.
+
+### Amikor a konszenzuskliens nem terjeszt elő blokkot:
+
+- A konszenzuskliens blokkot kap a blokkpletyka-protokollon keresztül (konszenzus p2p)
+- A konszenzuskliens előzetesen validálja a blokkot, azaz biztosítja, hogy az érvényes feladótól érkezett, helyes metaadatokkal
+- A blokkban lévő tranzakciókat a végrehajtási rétegnek küldik el végrehajtási csomagként (helyi RPC-kapcsolat)
+- A végrehajtási réteg végrehajtja a tranzakciókat és ellenőrzi a blokkfejlécben lévő státuszt (azaz a hash-ek egyezését)
+- A végrehajtási réteg visszaadja a validációs adatokat a konszenzus rétegnek, a blokk validáltnak tekinthető (helyi RPC kapcsolat)
+- A konszenzus réteg hozzáadja a blokkot a saját blokkláncának fejéhez és tanúsítja azt, a tanúsítást a hálózaton keresztül küldi szét (konszenzus p2p)
+
+### Amikor a konszenzuskliens blokkot terjeszt elő:
+
+- A konszenzuskliens értesítést kap arról, hogy ő a következő blokkelőterjesztő (konszenzus p2p)
+- A konszenzusréteg meghívja a `blokk létrehozása` metódust a végrehajtási kliensben (helyi RPC)
+- A végrehajtási réteg hozzáfér a tranzakciógyűjtőhöz (mempool), amelyet a tranzakciós pletykaprotokoll töltött fel (végrehajtási p2p)
+- A végrehajtási kliens a tranzakciókat egy blokkba foglalja, végrehajtja a tranzakciókat és létrehoz egy blokk hash-t
+- A konszenzuskliens átveszi a tranzakciókat és a blokk hash-t a végrehajtási klienstől, és hozzáadja azokat a Beacon-blokkhoz (helyi RPC)
+- A konszenzuskliens a blokkot a blokkpletyka-protokollon keresztül továbbítja (konszenzus p2p)
+- A többi kliens megkapja a javasolt blokkot a blokkpletyka-protokollon keresztül, és a fent leírtak szerint validálja (konszenzus p2p)
+
+Amint a blokkot elegendő validátor tanusította, a lánc fejéhez adják, igazolják és végül véglegesítik.
+
+![](cons_client_net_layer.png) ![](exe_client_net_layer.png)
+
+A hálózati réteg sémája a konszenzus- és végrehajtási kliensek számára, az [ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248) honlapról
+
+## További olvasnivaló {#further-reading}
+
+[DevP2P](https://github.com/ethereum/devp2p) [LibP2p](https://github.com/libp2p/specs) [Konszenzusréteg hálózati specifikáció](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) [Kademlia to discv5](https://vac.dev/kademlia-to-discv5) [Kademlia leírás](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) [Bevezetés az Ethereum p2p-be](https://p2p.paris/en/talks/intro-ethereum-networking/) [Eth1 és eth2 kapcsolata](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) [Merge és eth2 kliensrészletekről szóló videó](https://www.youtube.com/watch?v=zNIrIninMgg)
diff --git a/public/content/translations/hu/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/hu/developers/docs/networking-layer/network-addresses/index.md
new file mode 100644
index 00000000000..19be6166824
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/networking-layer/network-addresses/index.md
@@ -0,0 +1,38 @@
+---
+title: Hálózati címek
+description: Bevezetés a hálózati címekbe.
+lang: hu
+sidebarDepth: 2
+---
+
+Az Ethereum csomópontoknak azonosítaniuk kell magukat néhány alapvető információval, hogy a társaikhoz tudjanak kapcsolódni. Annak érdekében, hogy a lehetséges társak értelmezni tudják ezeket az információkat, három szabványosított formátumban továbbítják, amelyeket bármely Ethereum-csomópont megérthet: multiaddr, enode vagy Ethereum Node Records (ENRs). Az ENRs az Ethereum hálózati címek jelenlegi szabványa.
+
+## Előfeltételek {#prerequisites}
+
+A jelen téma könnyebb megértéséhez érdemes megtekinteni az Ethereum [hálózati rétegéről](/developers/docs/networking-layer/) szóló oldalt.
+
+## Multiaddr {#multiaddr}
+
+Az eredeti Ethereum csomópontcím formátuma a multiaddr (a multi-addresses rövidítése) volt. A multiaddr egy egyetemes formátum a peer-to-peer hálózatokhoz. A címek kulcs-érték párokként jelennek meg, a kulcsok és az értékek perjellel vannak elválasztva. Például a multiaddr értéke a `192.168.22.27` IPv4-címmel rendelkező csomópontnak, ami a `33000` TCP-portot figyeli:
+
+`/ip4/192.168.22.27/tcp/33000`
+
+Az Ethereum csomópont esetében a multiaddr tartalmazza a csomópont azonosítót (a nyilvános kulcs hash-e):
+
+`/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br`
+
+## Enode {#enode}
+
+Az enode az Ethereum-csomópontok azonosítására szolgál egy URL-címformátum segítségével. A hexadecimális csomópont-ID az URL felhasználónevet tartalmazó részében van kódolva, a hoszttól @ jellel elválasztva. A hosztnév csak IP-címként adható meg; DNS nevek nem engedélyezettek. A hosztnév szakaszban szereplő port a TCP figyelő port. Ha a TCP és UDP (felfedező) portok különböznek, az UDP portot a „discport” lekérdezési paraméterként kell megadni.
+
+A következő példában a csomópont URL-címe egy olyan csomópontot ír le, amelynek IP-címe `10.3.58.6`, TCP-portja `30303` és UDP felfedezőportja `30301`.
+
+`enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301`
+
+## Ethereum Node Records (ENRs) {#enr}
+
+Az Ethereum Node Records (ENR) a hálózati címek szabványosított formátuma az Ethereumon. Ez váltotta fel a multiaddr és az enode használatát. Ezek különösen hasznosak, mert nagyobb információcserét tesznek lehetővé a csomópontok között. Az ENR tartalmaz egy aláírást, egy sorszámot és olyan mezőket, melyek az aláírások létrehozására és érvényesítésére használt azonosítási rendszert részletezik. Az ENR tetszőleges, kulcs-érték párokba rendezett adatokkal is feltölthető. Ezek a kulcs-érték párok tartalmazzák a csomópont IP-címét és a csomópont által használható alprotokollokra vonatkozó információkat. A konszenzus kliensek egy [specifikus ENR struktúrát](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) használnak a betöltőcsomópontok (bootnode) azonosítására, és tartalmaznak egy `eth2` mezőt is, amely az aktuális Ethereum elágazásról és a tanúsításpletyka alhálózatról tartalmaz információt (ez köti a csomópontot a társak egy adott csoportjához, akiknek tanúsításait aggregálják).
+
+## További olvasnivaló {#further-reading}
+
+[EIP-778: Ethereum Node Records (ENR)](https://eips.ethereum.org/EIPS/eip-778) [Hálózati címek az Ethereumban](https://dean.eigenmann.me/blog/2020/01/21/network-addresses-in-ethereum/) [LibP2P: Multiaddr-Enode-ENR?!](https://consensys.net/diligence/blog/2020/09/libp2p-multiaddr-enode-enr/)
diff --git a/public/content/translations/hu/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/hu/developers/docs/networking-layer/portal-network/index.md
new file mode 100644
index 00000000000..a057cbc6177
--- /dev/null
+++ b/public/content/translations/hu/developers/docs/networking-layer/portal-network/index.md
@@ -0,0 +1,82 @@
+---
+title: Portal Network
+description: Áttekintés a Portal Network-ről, egy fejlesztés alatt álló hálózatról, mely a kevés forrással bíró klienseket támogatja.
+lang: hu
+---
+
+Az Ethereum egy számítógépekből álló hálózat, melyek az Ethereum kliensszoftvert futtatják. Minden ilyen számítógépet csomópontnak neveznek. A kliensszoftver lehetővé teszi, hogy a csomópont adatot tudjon küldeni és fogadni az Ethereum hálózaton, s hozzá tudja ellenőrizni az adatokat az Ethereum protokollszabályokhoz. A csomópontok rengeteg historikus adatot tárolnak a merevlemezen, s az új információs csomagokat, vagyis blokkokat hozzáadják ezekhez, melyeket a hálózat többi csomópontjától kapnak. Ez azért szükséges, hogy ellenőrizhető legyen, egy csomópont a hálózat többi részével konzisztens információkat tartalmaz. Tehát a csomópontok üzemeltetéséhez sok tárhelyre van szükség. Néhány csomópont működés sok RAM-ot is igényel emellett.
+
+A tárhely probléma megoldására fejlesztettek könnyű csomópontokat, amelyek nem maguk tárolják az információt, hanem lekérik azt a teljes csomópontoktól. Ez ugyanakkor azt is jelenti, hogy a könnyű csomópont nem független módon ellenőrzi az információt, hanem egy másik csomópontban bízik. Emellett a teljes csomópontoknak egy extra feladatot kell ellátni, amikor kiszolgálják ezeket a könnyű csomópontokat.
+
+A Portal Network egy új hálózati dizájn az Ethereumon, hogy megoldja az adatelérhetőségi problémát a könnyű csomópontok esetében anélkül, hogy bízniuk kellene másban vagy a teljes csomópontot terhelnénk vele, s ehhez a szükséges információt kis darabokban osztják meg a hálózaton.
+
+Bővebben a [csomópontokról és kliensekről](/developers/docs/nodes-and-clients/)
+
+## Miért van szükség Portal Networkre? {#why-do-we-need-portal-network}
+
+Az Ethereum csomópontok a saját teljes vagy részleges másolatukat tárolják az Ethereum blokkláncról. Ezt a helyi másolatot használják a tranzakciók validálására, s arra, hogy a csomópont a megfelelő láncot kövesse. Ez a helybeli másolat lehetővé teszi, hogy a csomópontok független módon ellenőrizzák a bejövő adatok érvényességét és helyességét, anélkül hogy egy másik entitásban kellene megbízniuk.
+
+A blokklánc és a kapcsolódó státusz és megkapott adatok a csomópont merevlemezén rengeteg helyet foglalnak. Például egy 2 TB merevlemez kell egy olyan csomópont futtatásához, mely [Geth-et](https://geth.ethereum.org) használ egy konszenzusklienssel párban. A snap szinkronizálás használatával, amely csak a viszonylag friss blokkok láncadatait tárolja, a Geth kb. 650 GB lemezterületet foglal el, de kb. 14 GB/hét sebességgel növekszik (a csomópontot időszakosan vissza lehet vágni 650 GB-ra).
+
+Tehát a csomópont futtatása költséges lehet, mert nagy tárhelyet kell dedikálni az Ethereumnak. Az Ethereum ütemterve számos megoldást kínál erre a problémára, beleértve a [előzményadatok lejáratát](/roadmap/statelessness/#history-expiry), [státuszlejáratot](/roadmap/statelessness/#state-expiry) és [státuszmentességet](/roadmap/statelessness/). Ugyanakkor ezek bevezetésére még kell várni néhány évet. Emellett működnek [könnyű csomópontok](/developers/docs/nodes-and-clients/light-clients/), amelyek nem mentenek saját adatot a láncról, hanem a teljes csomópontoktól kérdezik le a szükséges információkat. Ekkor azonban a könnyű csomópontnak meg kell bíznia a teljes csomópontban, hogy korrekt adatot szolgáltat, s még terhet is jelent a teljes csomópontnak.
+
+A Portal Network célja, hogy alternatív módot biztosítson a könnyű csomópontoknak, hogy hozzájussanak az adatokhoz bizalomigény nélkül, s nem növeli jelentősen a teljes csomópontok által elvégzendő munkát. Ennek módja az Ethereum csomópontok számára, hogy az adatot másképpen kell megosztani a hálózaton.
+
+## Hogyan működik a Portal Network? {#how-does-portal-network-work}
+
+Az Ethereum csomópontok szigorú protokollt követnek abban, hogyan kommunikálnak egymással. A végrehajtási kliensek a kommunikációhoz néhány alprotokollt használnak, mint a [DevP2P](/developers/docs/networking-layer/#devp2p), miközben a konszenzuskliensek egy másik adagot, amit [libP2P](/developers/docs/networking-layer/#libp2p) néven neveznek. Ezek határozzák meg a csomópontok között átadható adattípusokat.
+
+![devP2P és libP2P](portal-network-devp2p-libp2p.png)
+
+A csomópontok emellett specifikus adatokat is tudnak adni a [JSON-RPC API](/developers/docs/apis/json-rpc/) révén, amely az a mód, ahogy az alkalmazások és tárcák cserélnek információt az Ethereum csomópontokkal. Ugyanakkor ezek egyike sem az ideális megoldás a könnyű kliensek kiszolgálására.
+
+A könnyű kliensek nem tudnak adatot szerezni a láncról a DevP2P vagy libP2p protokollok révén, mert ezeket szinkronizálásra és a blokkokról és tranzakciókról szóló pletykákhoz tervezték. A könnyű kliens nem akarja letölteni ezeket az információkat, mert akkor nem lenne könnyű súlyú.
+
+A JSON-RPC API azért nem jó, mert egy specifikus teljes csomóponton vagy egy közpinti RPC szolgáltatón múlik, hogy adatot adjon. Ekkor a könnyű kliensnek meg kellene bíznia a csomópontban vagy a szolgáltatóban, hogy az jóhiszemű, továbbá a teljes csomópontot is leterheli és nagyobb sávszélesség kell neki, ha egyszerre több könnyű kliens több kéréssel fordul hozzá.
+
+A Portal Network lényege, hogy újragondolja az egész dizájnt, kifejezetten a könnyedségre építve, a meglévő Ethereum kliensek tervezési korlátain kívül.
+
+A Portal Network lényege, hogy a jelenlegi hálózati stack legjobb részeit használja ki azáltal, hogy lehetővé teszi, hogy a könnyű kliensek számára szükséges információkat, például a historikus adatokat és a lánc fejének beazonosítását egy könnyű, DevP2P stílusú peer-to-peer decentralizált hálózaton keresztül szolgáltassák ki, amely egy [DHT-t](https://en.wikipedia.org/wiki/Distributed_hash_table) használ (hasonlóan a Bittorrenthez).
+
+Az ötlet lényege, hogy minden egyes csomóponthoz hozzáadnák a teljes Ethereum historikus adatainak kis részét és néhány konkrét csomóponti feladatot. Ezután a kéréseket úgy szolgálnák ki, hogy megkeresik az adatokat tároló csomópontot és azoktól lekérdezik azt.
+
+Ez megfordítja azt a szokásos modellt, amelyben a könnyű csomópontok egyetlen csomópontot találnak, és felkérik őket nagy mennyiségű adat szűrésére és kiszolgálására; ehelyett gyorsan megszűrik a csomópontok nagy hálózatát, amelyek mindegyike kis mennyiségű adatot kezel.
+
+A cél az, hogy a könnyű súlyú Portal kliensek decentralizált hálózata a következőket tegye:
+
+- a lánc elejét, vagyis legfrissebb állapotát kövesse
+- szinkronizálja a jelenlegi és a historikus láncadatokat
+- státuszadatokat szerezzen
+- tranzakciókat terjesszen el
+- tranzakciókat hajtson végre az [EVM](/developers/docs/evm/) révén
+
+Ennek a hálózati dizájnnak az előnyei:
+
+- csökkenti a központi szolgáltatóktól való függést
+- csökkenti az internet sávszélességi igényt
+- mininális vagy nulla szinkronizálásra van szükség
+- a kevés erőforrással bíró eszközök számára is működne (<1GB RAM, <100 MB merevlemez, 1 CPU)
+
+Az alábbi ábra a meglévő kliensek azon funkcióit mutatja be, amelyeket a Portal Network biztosíthat, lehetővé téve a felhasználók számára, hogy ezeket a funkciókat nagyon alacsony erőforrásigényű eszközökön is elérjék.
+
+![portal network táblázat](portal-network-table2.png)
+
+## Alapértelmezett kliensdiverzitás {#client-diversity-as-default}
+
+A Portal Network fejlesztők már eleve három elkülönült klienst építenek az első naptól fogva.
+
+A Portal Network kliensek a következők:
+
+- [Trin](https://github.com/ethereum/trin): Rust nyelven írva
+- [Fluffy](https://nimbus.team/docs/fluffy.html): Nim nyelven írva
+- [Ultralight](https://github.com/ethereumjs/ultralight): Typescript nyelven írva
+
+A több független kliensimplementáció növeli az Ethereum-hálózat rugalmasságát és decentralizációját.
+
+Ha az egyik kliensnél problémák vagy sebezhetőségek merülnek fel, a többi kliens zavartalanul működhet tovább, megelőzve az egyetlen hibapont kialakulását. Emellett az eltérő klienshasználat elősegíti az innovációt és a versenyt, ösztönzi a fejlesztéseket és csökkenti a monokultúra kockázatát az ökoszisztémán belül.
+
+## További olvasnivaló {#futher-reading}
+
+- [A Portal Network (Piper Merriam előadása a Devconon, Bogotában)](https://www.youtube.com/watch?v=0stc9jnQLXA).
+- [A Portal Network Discord csatornája](https://discord.gg/CFFnmE7Hbs)
+- [A Portal Network honlapja](https://www.ethportal.net/)
diff --git a/public/content/translations/hu/developers/docs/nodes-and-clients/index.md b/public/content/translations/hu/developers/docs/nodes-and-clients/index.md
index 60aadc3bb34..17d93b81389 100644
--- a/public/content/translations/hu/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/hu/developers/docs/nodes-and-clients/index.md
@@ -225,5 +225,4 @@ Az interneten rengeteg utasítás és információ található az Ethereum klien
## Kapcsolódó útmutatók {#related-tutorials}
-- [Csomópont futtatása Geth-tel](/developers/tutorials/run-light-node-geth/) _– Hogyan lehet letölteni, telepíteni és futtatni a Geth-et. Lefedi a szinkronizációs módokat, a JavaScript konzolt és még sok mást._
- [Alakítsd át a Raspberry Pi 4-edet egy Eth 1.0 vagy egy Eth 2.0 csomóponttá csak a MicroSD kártya flashelésével - Telepítési útmutató](/developers/tutorials/run-node-raspberry-pi/) _– Flasheld a Raspberry Pi 4-et, csatlakoztass egy ethernet kábelt, csatlakoztasd az SSD-t, és kapcsold be az eszközt, hogy a Raspberry Pi 4 teljes Ethereum 1.0 vagy Ethereum 2.0 csomópontokká (beacon chain / validátor) váljon._
diff --git a/public/content/translations/hu/developers/docs/smart-contracts/testing/index.md b/public/content/translations/hu/developers/docs/smart-contracts/testing/index.md
index 9e8311cf2ce..a8334c9c076 100644
--- a/public/content/translations/hu/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/hu/developers/docs/smart-contracts/testing/index.md
@@ -37,7 +37,7 @@ incomplete: true
- [Solidity and Truffle Continuous Integration Setup](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– A Travis vagy a Circle CI telepítése a Truffle-höz, valamint hasznos tesztelési pluginok._
- [Testing products overview](/developers/tutorials/guide-to-smart-contract-security-tools/) _– A külöböző tesztelési termékek bemutatása és összehasonlítása._
- [Echinda használata okosszerződés teszteléshez](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [A Manticore használata okosszerződés bugok felderítésére](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [A Manticore használata okosszerződés bugok felderítésére](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [A Slither használata okosszerződés bugok felderítésére](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [Solidity szerződés mockup-ok teszteléshez](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [Truffle Test migráció az OpenZeppelin Teszt környezetbe](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
diff --git a/public/content/translations/hu/developers/docs/standards/tokens/index.md b/public/content/translations/hu/developers/docs/standards/tokens/index.md
index 3b049014063..3d098c07e2d 100644
--- a/public/content/translations/hu/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/hu/developers/docs/standards/tokens/index.md
@@ -29,5 +29,5 @@ _Ismersz olyan közösségi anyagot, amely segített neked? Módosítsd az oldal
- [Token integrációs checklista](/developers/tutorials/token-integration-checklist/) _– Egy checklista, melyet figyelembe kell venni tokenekkel történő interakcióknál_
- [Az ERC20 token okosszerződés megértése](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– Bevezetés az első okosszerződésed telepítésébe egy Ethereum teszt hálózaton._
-- [ERC20 tokenek átutalása és jóváhagyása egy Solidity okosszerződésből](/developers/tutorials/transfers-and-approval-of-erc20-tokens-from-a-solidity-smart-contract/) _– Egy okosszerződés használata token interakcióhoz a Solidity nyelv használatával._
+- [ERC20 tokenek átutalása és jóváhagyása egy Solidity okosszerződésből](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– Egy okosszerződés használata token interakcióhoz a Solidity nyelv használatával._
- [ERC721 piac implementáció [egy how-to segédleg]](/developers/tutorials/how-to-implement-an-erc721-market/) _– Hogyan lehet tokenizált tárgyakat eladásra kínálni egy decentralizált és titkosított felületen._
diff --git a/public/content/translations/hu/enterprise/index.md b/public/content/translations/hu/enterprise/index.md
index 152fc757443..2c5b3ab99e7 100644
--- a/public/content/translations/hu/enterprise/index.md
+++ b/public/content/translations/hu/enterprise/index.md
@@ -13,9 +13,9 @@ A blokklánc alkalmazások segítenek a vállalatoknak:
- Új üzleti modelleket és értékteremtő lehetőségeket kifejleszteni
- Versenyképesen jövőbiztossá tenni a szervezeteiket
-Vállalati blokklánc alkalmazások fejleszthetőek a nyilvános, engedély nélküli Ethereum [főhálózatra](/glossary/#mainnet) vagy privát blokkláncokra, melyek az Ethereum technológiáján alapulnak. Tudj meg többet a [privát vállalati Ethereum láncokról](/enterprise/private-ethereum/).
+A vállalati blokkláncalkalmazások fejleszthetőek a nyilvános, engedély nélküli Ethereum [főhálózatra](/glossary/#mainnet) vagy privát blokkláncokra, melyek az Ethereum technológiáján alapulnak. Tudjon meg többet a [privát vállalati Ethereum láncokról](/enterprise/private-ethereum/).
-## Nyilvános vs privát Ethereum {#private-vs-public}
+## Nyilvános versus privát Ethereum {#private-vs-public}
Csak egy nyilvános Ethereum főhálózat létezik. A főhálózatra épült alkalmazások integrálódhatnak egymással, hasonlóan ahogy az internetre épített alkalmazások egymáshoz kapcsolódhatnak, kihasználva ezzel a decentralizált blokklánc teljes potenciálját.
@@ -24,136 +24,121 @@ Számos vállalat és konzorcium indított privát, engedélyköteles blokklánc
### Legfontosabb különbségek {#key-differences}
- Blokklánc biztonság/megváltoztathatóság - A blokklánc ellenállását az adatmódosítás ellen a konszenzus algoritmusa határozza meg. Az Ethereum főhálózatot több ezer független csomópont együttműködése biztosítja, amelyeket egyének és bányászok vezetnek szerte a világon. A privát láncoknak általában kevés csomópontja van, amelyeket egy vagy több szervezet irányít; ezeket a csomópontokat szigorúan lehet ellenőrizni, de elég néhány felett átvenni az irányítást a lánc átírása vagy hamis tranzakciók végrehajtása érdekében.
-- Teljesítmény - Mivel a vállalatok privát Ethereum láncai nagy teljesítményű csomópontokat használhatnak, speciális hardverkövetelményekkel és különböző konszenzus algoritmusokkal, például a proof-of-authority-vel, így magasabb tranzakciós átvitelt érhetnek el az alaprétegen (1. réteg). Az Ethereum főhálózaton nagy átvitel érhető el a [2. rétegű skálázási megoldások használatával](/developers/docs/layer-2-scaling/).
-- Költség - A privát lánc működtetésének költségei elsősorban a lánc felállításához és kezeléséhez szükséges munkában, valamint a szerverek futtatásában mutatkoznak meg. Bár nincs költsége csatlakozni az Ethereum főhálózathoz, minden tranzakció gáz költséget von maga után, amelyet Ether-ben kell kifizetni. Tranzakció váltókat (más néven benzinkutakat) fejlesztettek, hogy a felhasználóknak és még a vállalatoknak se kelljen közvetlenül Ether-t használni a tranzakcióik során. Néhány [elemzés](https://github.com/EYBlockchain/fundamental-cost-of-ownership/blob/master/EY%20Total%20Cost%20of%20Ownership%20for%20Blockchain%20Solutions.pdf) kimutatta, hogy egy alkalmazás működtetésének teljes költsége alacsonyabb lehet a főhálózaton, mint egy privát lánc futtatásával.
+- Teljesítmény - Mivel a vállalatok privát Ethereum láncai nagy teljesítményű csomópontokat használhatnak, speciális hardverkövetelményekkel és különböző konszenzusalgoritmusokkal, például a jogosítványigazolással (proof-of-authority), így magasabb tranzakciós átvitelt érhetnek el az első blokkláncrétegen (L1). Az Ethereum főhálózaton nagy átvitel érhető el a [második blokkláncréteg (L2) skálázási megoldásaival](/developers/docs/scaling/#layer-2-scaling).
+- Költség - A privát lánc működtetésének költségei elsősorban a lánc felállításához és kezeléséhez szükséges munkában, valamint a szerverek futtatásában mutatkoznak meg. Bár annak nincs költsége, hogy az Ethereum főhálózathoz csatlakozzon, minden tranzakció gázköltséget von maga után, amelyet etherben kell kifizetni. Tranzakcióközvetítőket (amolyan gáztöltőállomásokat) fejlesztettek, hogy a felhasználóknak és még a vállalatoknak se kelljen közvetlenül ethert használni a tranzakcióik során. Néhány [elemzés](https://github.com/EYBlockchain/fundamental-cost-of-ownership/blob/master/EY%20Total%20Cost%20of%20Ownership%20for%20Blockchain%20Solutions.pdf) kimutatta, hogy egy alkalmazás működtetésének teljes költsége alacsonyabb lehet a főhálózaton, mint egy privát lánc futtatásával.
- Csomóponti engedélyezés - Csak felhatalmazott csomópontok csatlakozhatnak a privát láncokhoz. Bárki felállíthat egy csomópontot az Ethereum főhálózatán.
-- Adatvédelem - A privát láncokra írt adatokhoz való hozzáférést a hálózatra való hozzáférés korlátozásával lehet szabályozni, és alaposabban hozzáférés-szabályozással és privát tranzakciókkal. A főhálózat 1. rétegére írt minden adat bárki számára hozzáférhető, így az érzékeny információkat off-chain kell tárolni és továbbítani, vagy titkosítani kell őket. Az ilyen design minták felemelkedőben vannak (pl.: Baseline, Aztec), csakúgy mint a 2. rétegű megoldások, melyek szétválasztják és az 1.rétegen kívül kezelik az adatot.
+- Adatvédelem - A privát láncok adataihoz való hozzáférést elsősorban a hálózati hozzáférés korlátozásával lehet szabályozni, kifinomultabb szinten a hozzáférés-szabályozással és privát tranzakciókkal. A főhálózat L1 rétegére írt minden adat bárki számára hozzáférhető, így az érzékeny információkat láncon kívül kell tárolni és továbbítani, vagy titkosítani kell azokat. Az ilyen dizájnminták elterjedőben vannak (például Baseline, Aztec), csakúgy mint az L2-es megoldások, melyek szétválasztják és az L1-en kívül kezelik az adatot.
### Miért építsünk az Ethereum főhálózaton {#why-build-on-ethereum-mainnet}
-A vállalkozások 2016 óta kísérleteztek a blokklánc technológiával, amikor elindították a Hyperledger, a Quorum és a Corda projekteket. A hangsúly főleg a privát engedélyköteles vállalati blokkláncokra helyezkedett, de 2019-től kezdődően váltás történt a gondolkodásban az nyilvános vagy privát blokkláncok használatára az üzleti alkalmazások esetében. Egy [felmérés](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf), melyet a Forrester vezettet, kimutatta, hogy "A felmérésben résztvevők 75%-a ... látja a lehetőséget, hogy egy valószínűséggel kihasználják majd a nyilvános blokkláncokat a jövőben, és közel kétharmaduk állította azt, hogy nagy valószínűséggel. Paul Brody az EY-tól [beszélt](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668) a nyilvános blokkláncokra történő fejlesztés előnyeiről, mely (az alkalmazástól függően) magasabb szintű biztonságot/megváltoztathatatlanságot, transzparenciát, a tulajdonjog alacsonyabb teljes költségét, és a többi alkalmazással történő interoperabilitási képességét nyújthatja, melyek szintén a főhálózaton vannak (hálózati hatások). A közös referenciakeret megosztása a vállalkozások között elkerülhetővé teszi a különféle szegregált silók felesleges létrehozását, amelyek nem képesek kommunikálni, megosztani vagy szinkronizálni az információkat egymással.
+A vállalkozások 2016 óta kísérleteztek a blokklánctechnológiával, amikor elindították a Hyperledger, a Quorum és a Corda projekteket. A hangsúly főleg a privát, engedélyköteles, vállalati blokkláncokon volt, de 2019-től kezdődően elmozdult a gondolkodás a privát irányából a nyilvános blokkláncok felé az üzleti alkalmazások esetében. Egy [felmérés](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf), melyet a Forrester vezettet, kimutatta, hogy „A felmérésben résztvevők... látják ezt a lehetőséget, s 75%-uk valószínűleg kihasználná a nyilvános blokkláncokat a jövőben, és közel egyharmaduk állította azt, hogy ennek nagy a valószínűsége.” Paul Brody az Ernst & Youngtól [beszélt](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668) a nyilvános blokkláncokra történő fejlesztés előnyeiről, mely (az alkalmazástól függően) magasabb szintű biztonságot/megváltoztathatatlanságot, transzparenciát, alacsonyabb birtoklási költséget, és a főhálózaton lévő többi alkalmazással történő interoperabilitási képességét nyújthatja (hálózati hatások). A közös referenciakeret megosztása a vállalkozások között elkerülhetővé teszi a szegregált rendszerek felesleges létrehozását, amelyek nem képesek kommunikálni, megosztani vagy szinkronizálni az információkat egymással.
-Egy másik fejlesztés, mely a nyilvános blokkláncokra tereli a figyelmet a [2. réteg technológia](/developers/docs/layer-2-scaling/). A 2. réteg elsősorban egy skálázási technológia kategória, mely magas átvitelű alkalmazásokat tesz lehetővé a nyilvános blokkláncokon. De a 2. réteg megoldások egy [másik kihívásra is megoldást nyújthatnak, melyek a vállalati fejlesztőket régen a privát láncok választására kényszerítette](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
-
-Az Baseline protokoll az egyik kulcsfontosságú projekt, amely olyan protokollt határoz meg, amely bizalmas és összetett együttműködést tesz lehetővé a vállalkozások között anélkül, hogy érzékeny adatokat hagynának a láncon. Nagy [lendületet](https://www.oasis-open.org/news/pr/baseline-protocol-achieves-key-milestone-with-release-of-v0-1-implementation-for-enterprise-) szereztek 2020 folyamán.
+Egy másik fejlesztés, mely a nyilvános blokkláncokra tereli a figyelmet a [második blokkláncréteg (L2)](/developers/docs/scaling/#layer-2-scaling) elérhetősége. Az L2 elsősorban egy skálázási technológia, mely magas átvitelű alkalmazásokat tesz lehetővé a nyilvános blokkláncokon. De az L2 megoldások egy [másik kihívásokra is megoldást nyújthatnak, melyek a vállalati fejlesztőket korábban a privát láncok választására kényszerítették](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
## Vállati fejlesztői anyagok {#enterprise-developer-resources}
### Szervezetek {#organizations}
-Az Ethereum vállalkozásbarátabbá tételére irányuló egyes együttműködési törekvések különböző szervezetek munkájának eredménye:
+Különféle szervezetek számtalan együttműködésen alapuló erőfeszítést tettek azért, hogy az Ethereumot vállalkozásbarátabbá tegyék:
-- [Enterprise Ethereum Alliance (EEA)](https://entethalliance.org/) Az EEA lehetővé teszi a szervezetek számára, hogy bevezessék és használják az Ethereum technológiát napi üzleti tevékenységükben. Arra sarkalja az Ethereum ökoszisztémát, hogy új üzleti lehetőségeket teremtsen, felfuttassa az iparági adoptációt, valamint tanuljanak és kollaboráljanak egymással a résztvevők. Az EEA főhálózati munkacsoportja fókuszpontot jelent az üzleti vállalkozások képviselői számára, akik érdekeltek a nyilvános Ethereum főhálózaton történő építésében, valamint az Ethereum közösség tagjai számára, akik támogatni szeretnék őket.
-- [Ethereum OASIS Open Project](https://github.com/ethereum-oasis/oasis-open-project) Az Ethereum OASIS Open Projekt egy OASIS Open Project, amely azért létezik, hogy semleges fórumot biztosítson a különböző érdekelt felek számára, hogy magas színvonalú specifikációkat hozzanak létre, amelyek megkönnyítik az Ethereum hosszú élettartamát, interoperabilitását és könnyű integrációját. A projekt célja világos, nyílt szabványok, magas színvonalú dokumentációk és megosztott tesztcsomagok kifejlesztése, amelyek megkönnyítik az Ethereum protokoll új funkcióit és továbbfejlesztéseit.
-- [Baseline Project](https://www.baseline-protocol.org/) A Baseline Protocol egy nyílt forráskódú kezdeményezés, amely egyesíti a kriptográfia, az üzenetküldés és a blokklánc fejlesztéseit, hogy biztonságos és privát üzleti folyamatokat nyújtson alacsony költségen, az Ethereum nyilvános főhálózatán keresztül. A protokoll bizalmas és összetett együttműködést tesz lehetővé a vállalkozások között anélkül, hogy érzékeny adatokat hagyna a láncon. A Baseline Project az Ethereum OASIS Open Project egy alprojektje és a Baseline Technical Steering Committe irányítja.
+- [Enterprise Ethereum Alliance (EEA)](https://entethalliance.org/) Az EEA lehetővé teszi a szervezetek számára, hogy bevezessék és használják az Ethereum technológiát napi üzleti tevékenységükben. Arra sarkallja az Ethereum ökoszisztémát, hogy új üzleti lehetőségeket jelenjenek meg, növekedjen az iparági adoptáció, valamint tanuljanak és kollaboráljanak egymással a résztvevők. Az EEA főhálózati munkacsoportja fókuszpontot jelent az üzleti vállalkozások képviselői számára, akik érdekeltek a nyilvános Ethereum főhálózaton történő építésében, valamint az Ethereum közösség tagjai számára, akik támogatni szeretnék őket.
+- [Ethereum OASIS Open Project](https://github.com/ethereum-oasis/oasis-open-project) Ez egy OASIS Open Project, amely azért létezik, hogy semleges fórumot biztosítson a különböző érdekelt felek számára, hogy magas színvonalú specifikációkat hozzanak létre, amelyek megkönnyítik az Ethereum hosszú élettartamát, interoperabilitását és könnyű integrációját. A projekt célja világos, nyílt szabványok, magas színvonalú dokumentációk és megosztott tesztcsomagok kifejlesztése, amelyek megkönnyítik az Ethereum protokoll új funkcióit és továbbfejlesztéseit.
+- [Baseline Project](https://www.baseline-protocol.org/) A Baseline Protocol egy nyílt forráskódú kezdeményezés, amely egyesíti a kriptográfia, az üzenetküldés és a blokklánc fejlesztéseit, hogy biztonságos és privát üzleti folyamatokat nyújtson alacsony költségen, az Ethereum nyilvános főhálózatán keresztül. A protokoll bizalmas és összetett együttműködést tesz lehetővé a vállalkozások között anélkül, hogy érzékeny adatokat hagyna a láncon. A Baseline Project az Ethereum OASIS Open Project egy alprojektje és a Baseline Technical Steering Committee irányítja.
### Termékek és szolgáltatások {#products-and-services}
-- [Alchemy](https://alchemyapi.io/) _API szolgáltatásokat és eszközöket szolgáltat az Ethereum alkalmazások fejlesztéséhez és monitorozásához_
-- [Blockapps](https://blockapps.net/) _az Enterprise Ethereum implementációja, eszközök, API-ok, melyek a STRATO platformot alkotják_
-- [ConsenSys](https://consensys.net/) _számos terméket és eszközt kínál az Ethereum fejlesztésére, valamint tanácsadási és egyedi fejlesztési szolgáltatásokat_
-- [Envision Blockchain](https://envisionblockchain.com/) _az Ethereum főhálózatra szakosodott, vállalati fókuszú tanácsadási és fejlesztési szolgáltatásokat nyújt_
-- [EY OpsChain](https://blockchain.ey.com/products/contract-manager) _egy beszerzési workflow-t biztosít RFQ-k, szerződések, rendelések és számlák kiadásával az Ön megbízható üzleti partnereiből álló hálózaton keresztül_
-- [Hyperledger Besu](https://www.hyperledger.org/use/besu) _egy vállalati fókuszú nyílt forráskódú Ethereum kliens Apache 2.0 licenccel fejlesztve és Java-ban írva_
-- [Infura](https://infura.io/) _skálázható Ethereum és IPFS hálozat API hozzáférés_
-- [Provide](https://provide.services/) _infrastruktúra és API-ok vállalati web3 alkalmazásoknak_
-- [Unibright](https://unibright.io/) _egy blokklánc specialistákból, tervezőkből, fejlesztőkőből és szaktanácsadókból álló csapat több mint 20 év tapasztalattal az üzleti folyamatok és az integráció területén_
+- Az [Alchemy](https://www.alchemy.com/) _API szolgáltatásokat és eszközöket szolgáltat az Ethereum alkalmazások fejlesztéséhez és monitorozásához_
+- A [Blast](https://blastapi.io/) _egy API platform, ami RPC/WSS API-okat biztosít az Ethereum archív főhálózathoz és a teszthálózatokhoz._
+- A [Blockapps](https://blockapps.net/) _a vállalati Ethereum protokoll, az eszközök és az API-ok implementációja, melyek a STRATO platformot alkotják_
+- A [Chainstack](https://chainstack.com/) _az Ethereum főhálózatára és teszthálózataira biztosít infrastruktúrást, melyet publikus & elkülönített vevői felhőkben hosztol_
+- A [ConsenSys](https://consensys.net/) _számos terméket és eszközt kínál az Ethereum fejlesztésére, valamint tanácsadási és egyedi fejlesztési szolgáltatásokat nyújt_
+- Az [Envision Blockchain](https://envisionblockchain.com/) _az Ethereum főhálózatra szakosodott, vállalati fókuszú, tanácsadási és fejlesztési szolgáltatásokat nyújt_
+- Az [EY OpsChain](https://blockchain.ey.com/products/contract-manager) _egy beszerzési munkafolyamatot biztosít, melynek során ajánlat bekéréseket (RFQ), szerződéseket, rendeléseket és számlákat bocsát ki az Ön megbízható üzleti partnereiből álló hálózatán keresztül_
+- A [Hyperledger Besu](https://www.hyperledger.org/use/besu) _egy vállalati fókuszú, nyílt forráskódú Ethereum kliens Apache 2.0 licensszel fejlesztve és Java-ban írva_
+- Az [Infura](https://infura.io/) _egy skálázható API hozzáférés az Ethereumhoz és az IPFS hálozatokhoz_
+- A [Kaleido](https://kaleido.io/) _egy vállalati fókuszú fejlesztési platform, ami egyszerűsített blokklánc- és digitális eszköz alkalmazásokat ajánl_
+- A [NodeReal](https://nodereal.io/) _skálázható blokkláncinfrastruktúrát és API szolgáltatásnyújtókat biztosít a web3 ökoszisztémának_
+- A [Provide](https://provide.services/) _infrastruktúrát és API-okat biztosít vállalati web3 alkalmazásoknak_
+- A [QuickNode](https://www.quicknode.com/) _megbízható és gyors csomópontokat biztosít magas szintű API-okkal, mint amilyen az NFT API, Token API stb., miközben egy egységes termékcsomagot és vállalati szintű megoldásokat szállít_
+- A [Tenderly](https://tenderly.co) _egy web3 fejlesztői platform, ami okosszerződés fejlesztéshez, teszteléshez, monitorozáshoz és működtetéshez biztosít hibakeresési, megfigyelhetőségi és infrastruktúrához kapcsolódó építőelemeket_
+- A [Unibright](https://unibright.io/) _egy blokklánc specialistákból, tervezőkből, fejlesztőkőből és szaktanácsadókból álló csapat, több mint 20 év tapasztalattal az üzleti folyamatok és az integráció területén_
+- A [Zero Services GmbH](https://www.zeroservices.eu/) _ menedzselt szolgáltatásokat biztosít európai és ázsiai közös helyeken keresztül. Működteti & monitorozza az Ön csomópontjait biztonságos és megbízható módon_
+- A [Zeeve](https://www.zeeve.io/) _az Ethereumra való építéshez nyújt termékeket és eszközöket, valamint infrastruktúrát és API-okat biztosít vállalati web3 alkalmazásoknak_
### Eszközök és könyvtárak {#tooling-and-libraries}
-- [Alethio](https://aleth.io/) _Ethereum Data Analytics Platform_
-- [Epirus](https://www.web3labs.com/epirus) _Egy platform blokklánc alkalmazások fejlesztésére, telepítésére és monitorozására a Web3 Labs által_
-- [Ernst & Young's ‘Nightfall'](https://github.com/EYBlockchain/nightfall) _ eszköztár privát tranzakciókhoz_
-- [EthSigner](https://github.com/ConsenSys/ethsigner) _Tranzakció aláírási alkalmazás, amelyet egy web3 szolgáltatóval kell használni_
-- [Tenderly](https://tenderly.co/) _egy adat platform, mely valós idejű elemzéseket, figyelmeztetéseket és monitorozást kínál privát láncok támogatásával._
-- [Truffle Suite](https://trufflesuite.com) _blockchain development suite (Truffle, Ganache, Drizzle)_
+- Az [Alethio](https://explorer.aleth.io/) _egy Ethereum adatelemzési platform_
+- A [Sirato](https://www.web3labs.com/sirato) _egy adat és elemzési platform publikus és privát, Ethereum kompatibilis hálózatokhoz, melyet a Web3 Labs fejlesztett_
+- Az [Ernst & Young Nightfall](https://github.com/EYBlockchain/nightfall) _ egy eszköztár privát tranzakciókhoz_
+- Az [EthSigner](https://github.com/ConsenSys/ethsigner) _egy tranzakció aláírási alkalmazás, amelyet egy web3 szolgáltatóval kell használni_
+- A [Tenderly](https://tenderly.co/) _egy adatplatform, mely valós idejű elemzéseket, figyelmeztetéseket és monitorozást kínál támogatással együtt privát láncoknak._
+- A [Truffle Suite](https://trufflesuite.com) _egy blokkláncfejlesztési csomag (Truffle, Ganache, Drizzle)_
### Skálázási megoldások {#scalability-solutions}
-A [2. réteget](/developers/docs/layer-2-scaling/) olyan technológiák vagy rendszerek alkotják, melyek az Ethereumon (1. réteg) futnak, öröklik a biztonsági tulajdonságait az 1. rétegről és nagyobb tranzakció feldolgozási kapacitást (átvitelt) biztosítanak, alacsonyabb tranzakciós díjjal (működési költség) és gyorsabb tranzakció megerősítést, mint az 1. réteg esetében. A 2. rétegű skálázási megoldások biztonságát az 1. réteg szolgáltatja, de a blokklánc alkalmazások számára elérhetővé teszik, hogy több felhasználót, tevékenységet vagy adatot kezeljenek, mint amire az 1. réteg képes lenne. A legtöbbjük kihasználja a legutóbbi fejlődési eredményeket a kriptográfiában és zero-knowledge (ZK) bizonyítékokat használnak, hogy növeljék a teljesítményt és a biztonságot.
-
-Az alkalmazásod egy 2. rétegű skálázási megoldásra történő építése segíthet [megoldani sok olyan problémát, mely korábban a cégeket arra késztette, hogy egy privát blokkláncon fejlesszenek](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/), mégis megtartani a főhálózat előnyeit.
-
-Példák L2 megoldásokra, melyek produkcióra készek, vagy hamarosan készen lesznek:
-
-- Optimista összegzők (adat a láncon, csalási bizonyítékok)
- - [Optimism](https://optimism.io/)
- - [Offchain Labs Arbitrum Rollup](https://offchainlabs.com/)
- - [Fuel Network](https://fuel.sh)
-- ZK összegzők (adat a láncon, ZK érvényességi bizonyítékok)
- - [Loopring](https://loopring.org)
- - [Starkware](https://starkware.co)
- - [Matter Labs zkSync](https://matter-labs.io/)
- - [Aztec 2.0](https://aztec.network/)
-- Validium (adat a láncon kívül, ZK érvényességi bizonyítékok)
- - [Starkware](https://starkware.co)
- - [Matter Labs zkPorter](https://matter-labs.io/)
-- Plasma (adat láncon kívül, csalási bizonyítékok)
- - [OMG Network](https://omg.network/)
- - [Gazelle](https://gzle.io)
- - [Matic Network](https://matic.network/)
- - [LeapDAO](https://ipfs.leapdao.org/)
-- Állapot csatornák
- - [Connext](https://connext.network/)
- - [Raiden](https://raiden.network/)
- - [Perun](https://perun.network)
-- Mellékláncok
- - [Skale](https://skale.network)
- - [POA Network](https://www.poa.network/)
-- Hibrid megoldások, amelyek több kategória tulajdonságait ötvözik
- - [Celer](https://celer.network)
+A [második blokkláncréteget (L2)](/layer-2) olyan technológiák vagy rendszerek alkotják, melyek az Ethereumon (L1) futnak, öröklik a biztonsági tulajdonságait az L1-től és nagyobb tranzakciófeldolgozási kapacitást (átvitelt) biztosítanak, alacsonyabb tranzakciós díjjal (működési költség) és gyorsabb tranzakció megerősítést, mint az L1 esetében. Az L2 skálázási megoldások biztonságát az L1 szolgáltatja, de a blokkláncalkalmazások számára elérhetővé teszik, hogy több felhasználót, tevékenységet vagy adatot kezeljenek, mint amire az L1 képes lenne. A legtöbbjük a kriptográfiában és a zero-knowledge (ZK) bizonyítékok kapcsán elért fejlődési eredményeket használja, hogy növelje a teljesítményt és a biztonságot.
+
+Amennyiben Ön az alkalmazását egy L2 skálázási megoldásra építi, az [megoldhat több olyan problémát, mely korábban a cégeket arra késztette, hogy egy privát blokkláncon fejlesszenek](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/), mégis megtartja a főhálózat előnyeit.
## Vállalati alkalmazások a főhálózaton {#enterprise-live-on-mainnet}
-Itt egy pár vállalati alkalmazás, melyek telepítve lettek a nyilvános Ethereum főhálózatra
+Az alábbiakban néhány vállalati alkalmazást talál, melyek telepítve lettek a nyilvános Ethereum főhálózatra
### Fizetések {#payments}
-- [Brave Böngésző](https://basicattentiontoken.org/) _a felhasználókat fizetik, hogy hirdetéseket nézzenek és a felhasználók fizetéssel támogathatják a kiadókat a Basic Attention Token segítségével._
-- [hCaptcha](https://www.hcaptcha.com/) _Bot megelőző CAPTCHA rendszer, mely fizet a weboldal működtetőnek a felhasználók által végzett munkáért, akik a gépi tanulás számára jelölik az adatokat. Már telepítve van a Cloudflare-en is._
-- [Audius](https://audius.co/) _egy streaming szolgáltatás, mely összeköti a zene rajongókat közvetlenül a művészekkel, akiket teljes egészében a rajongóik fizethetnek ki, azonnal minden egyes stream után_
+- A [Brave Browser](https://basicattentiontoken.org/) _a felhasználóknak fizet, hogy hirdetéseket nézzenek, a felhasználók pedig fizetéssel támogathatják a kiadókat a Basic Attention Token segítségével._
+- Az [hCaptcha](https://www.hcaptcha.com/) _egy Bot-megelőző CAPTCHA rendszer, mely fizet a weboldal működtetőnek a felhasználók által végzett munkáért, akik a gépi tanuláshoz megjelölik az adatokat. Már telepítve van a Cloudflare-en is._
+- Az [EthereumAds](https://ethereumads.com/) _lehetővé teszi a weboldal működtetőknek, hogy reklámhelyeket értékesítsenek és az Ethereum keresztül kapjanak érte pénzt_
### Pénzügy {#finance}
-- [Santander Bank](https://www.coindesk.com/santander-settles-both-sides-of-a-20-million-bond-trade-on-ethereum) _kötvény kiadás és elszámolás_
-- [Societe Generale](https://www.societegenerale.com/en/newsroom-first-financial-transaction-settled-with-a-digital-currency) _kötvény kiadás_
-- [Cadence](https://www.forbes.com/sites/benjaminpirus/2019/10/09/fatburger-and-others-feed-30-million-into-ethereum-for-new-bond-offering/#513870be115b) _kötvény kibocsájtás és a FAT brandek tokenizálása_
-- [Sila](https://silamoney.com/) _banking és ACH fizetési infrastruktúra, mint szolgáltatás_
-- [Tinlake](https://tinlake.centrifuge.io/) _Követelések finanszírozása tokenizált valós eszközökön keresztül, mint például a számlák, jelzálogok vagy streaming jogdíjak_
-- [Kratos](https://triterras.com/kratos) _árupiaci kereskedés és pénzügyi platform, mely összeköti és lehetővé teszi az árukereskedőknek, hogy kereskedjenek és tőkét szerezzenek kölcsönzőktől közvetlenül online_
-- [Fasset](https://www.fasset.com/) _egy platform a fenntartható infrastruktúráért_
+- A [Santander Bank](https://www.coindesk.com/santander-settles-both-sides-of-a-20-million-bond-trade-on-ethereum) _kötvénykiadást és elszámolást épített_
+- A [Societe Generale](https://www.generali-investments.com/it/en/institutional/article/generali-investments-and-generali-iard-carry-out-first-market-transaction-based-on-blockchain-infrastructure) _kötvénykiadásra használja_
+- A [Cadence](https://www.forbes.com/sites/benjaminpirus/2019/10/09/fatburger-and-others-feed-30-million-into-ethereum-for-new-bond-offering/#513870be115b) _kötvénykibocsájtást és a FAT brandek tokenizálást végzi_
+- A [Sila](https://silamoney.com/) _bankolásra és ACH fizetésre ad infrastruktúra mint szolgáltatást egy stabilérmét használva_
+- A [Taurus](https://www.taurushq.com/) _tokenizált részvényeket bocsát ki_
+
+### Eszköztokenizálás {#tokenization}
+
+- A [Tinlake](https://tinlake.centrifuge.io/) _követelések finanszírozását végzi tokenizált valós eszközökön keresztül, mint például a számlák, jelzálogok vagy műsorszolgáltatási jogdíjak_
+- A [RealT](https://realt.co/) _révén a befektetők a világ minden részéről vásárolhatnak az amerikai ingatlanpiacon a szabályozásnak megfelelő, tokenizált résztulajdont._
+- Az [AgroToken](https://agrotoken.io/en/) _ mezőgazdasági anyagokat tokenizál és kereskedik velük_
+- A [Fasset](https://www.fasset.com/) _egy platform a fenntartható infrastruktúráért_
### Adatok notarizációja {#notarization-of-data}
-- [BBVA](https://www.ledgerinsights.com/bbva-blockchain-loan-banking-tech-award/) _a véglegesített kölcsönök részletei hashelődnek és feljegyzésre kerülnek a főhálózatra_
-- [Splunk](https://www.splunk.com/en_us/blog/security/the-newest-data-attack.html) _az adatok integritása biztosítható az indexelt adatok hashének rendszeres feljegyzésével a főhálózatra_
-- [ANSA](https://cointelegraph.com/news/italys-top-news-agency-uses-blockchain-to-fight-fake-coronavirus-news) _Olaszország legnagyobb hírügynöksége, mely küzd a fake news ellen és lehetővé teszi az olvasók számára, hogy ellenőrizzék az új hírek eredetiségét a főhálózatra történő feljegyzéssel_
-- [Verizon](https://decrypt.co/46745/verizon-news-press-releases-ethereum-full-transparency) _logolja a sajtókiadványokat az Ethereumra biztosítva ezzel a vállalati elszámoltathatóságot és bizalmat_
-- [Breitling](https://www.coindesk.com/breitling-arianee-all-new-watches-ethereum) _rögzíti az órák származását és javítását Ethereumra_
+- A [BBVA](https://www.ledgerinsights.com/bbva-blockchain-loan-banking-tech-award/) _a véglegesített kölcsönök részleteit hasheli és feljegyzi a főhálózatra_
+- A [Splunk](https://www.splunk.com/en_us/blog/security/the-newest-data-attack.html) _az adatok integritását biztosítja azzal, hogy az indexelt adatok hashét rendszeresen feljegyzi a főhálózatra_
+- Az [ANSA](https://cointelegraph.com/news/italys-top-news-agency-uses-blockchain-to-fight-fake-coronavirus-news) _Olaszország legnagyobb hírügynöksége, mely küzd a hamis hírek ellen, és a főhálózatra történő feljegyzéssel lehetővé teszi az olvasók számára, hogy ellenőrizzék az új hírek eredetiségét_
+- A [Verizon](https://decrypt.co/46745/verizon-news-press-releases-ethereum-full-transparency) _az Ethereumra naplózza a sajtókiadványokat, biztosítva ezzel a vállalati elszámoltathatóságot és bizalmat_
+- A [Breitling](https://www.coindesk.com/breitling-arianee-all-new-watches-ethereum) _rögzíti az órák származását és javítási részleteit az Ethereumra_
+- Az [EthSign](https://ethsign.xyz/) _feljegyezi az Ethereum blokkláncra az aláírt elektronikus dokumentumokat_
### Ellátási lánc {#supply-chain}
-- [CargoX](https://cargox.io/press-releases/full/cargox-becomes-first-public-blockchain-ethereum-bill-lading-provider-approved-international-group-pi-clubs) _Fuvarlevél és dokumentumátvitel szolgáltató_
-- [Morpheus.network](https://morpheus.network/) _ellátási lánc automatizálási platform, mely egy privát láncokból és a notarizált adatokat tartalmazó Ethereum főhálózatból álló hibridet vezetett be és olyan cégek használják, mint a kanadai élelmiszer, olaj & gáz elosztó Federated Co-op Ltd. és az argentín kisállat eledel Vitalcan_
-- [Minespider](https://www.minespider.com/) _ellátási lánc nyomonkövetés_
-- [ShipChain](https://shipchain.io) _Ethereum nyilvános oldallánc és vállalati rendszer az ellátási lánc láthatóságáért és megbízhatóságáért különösen a kombinált logisztika esetében_
-- [Follow Our Fibre](https://www.followourfibre.com) _viszkózus ellátási lánc nyomon követhetőség_
-- [EY OpsChain Network Procurement](https://blockchain.ey.com/products/contract-manager) _egy beszerzési workflow-ba történő belépést tesz lehetővé cégek számára RFQ-k, szerződések, rendelések és számlák kiadásával az Ön megbízható üzleti partnereiből álló hálózaton keresztül_
-- [Treum](https://treum.io/) _átláthatóságot, nyomonkövethetőséget és kereskedési lehetőséget biztosít ellátási láncoknak blokklánc technológia használatával_
+- A [CargoX](https://cargox.io/press-releases/full/cargox-becomes-first-public-blockchain-ethereum-bill-lading-provider-approved-international-group-pi-clubs) _egy fuvarlevél és dokumentumátviteli szolgáltató_
+- A [Morpheus.network](https://morpheus.network/) _egy ellátási lánc automatizálási platform, mely egy privát láncokból és a notarizált adatokat tartalmazó Ethereum főhálózatból álló hibridet vezetett be, és olyan cégek használják, mint a kanadai élelmiszer, olaj & gáz elosztó Federated Co-op Ltd. és az argentín kisállateledel gyártó Vitalcan_
+- A [Minespider](https://www.minespider.com/) _ellátási lánc nyomonkövetést biztosít_
+- Az [EY OpsChain Network Procurement](https://blockchain.ey.com/products/contract-manager) _egy beszerzési munkafolyamatot biztosít a cégek számára, melynek során ajánlat bekéréseket (RFQ), szerződéseket, rendeléseket és számlákat bocsát ki az Ön megbízható üzleti partnereiből álló hálózatán keresztül_
+- A [Treum](https://treum.io/) _átláthatóságot, nyomonkövethetőséget és kereskedési lehetőséget biztosít ellátási láncoknak blokklánctechnológia használatával_
+- A [TradeTrust](https://www.tradetrust.io/) _az elektronikus fuvarleveleket (eBLs) ellenőriz a nemzetközi szállításban_
+- A [Birra Peroni](https://www.ey.com/en_gl/news/2021/05/birra-peroni-is-the-first-industrial-organization-to-mint-unique-non-fungible-tokens-using-ey-opschain-traceability) _ minden egyes új söradaghoz NFT-t hoz létre, hogy ezzel nagyobb rálátása legyen a teljes ellátási láncra, s így nagyobb hatékonyságot érjen el_
+
+### Biztosítás {#insurance}
+
+- Az [Arbol](https://www.arbolmarket.com/) _egy parametrikus biztosítás az időjárásból eredő kockázatok fedezésére_
+- Az [Etherisc](https://etherisc.com/) _egy decentralizált biztosítás különféle kockázatokra_
### Hitelesítő adatok és tanúsítványok {#credentials}
-- [Utah Counties](http://www.utahcounty.gov/Dept/ClerkAud/DigitalCertCopy.html) _digitális házassági tanúsítványok kiadása Ethereumon_
-- [Két olasz középiskola](https://cointelegraph.com/news/two-italian-high-schools-to-issue-digital-diplomas-with-blockchain) _digitális érettségik az Ethereum főhálózaton kibocsájtva_
-- [St. Gallen Egyetem](https://cointelegraph.com/news/swiss-university-fights-fake-diplomas-with-blockchain-technology) _pilot project diplomák hitelesítésére egy svájci egyetem által_
-- [Malta](https://cointelegraph.com/news/malta-to-store-education-certificates-on-a-blockchain) _az összes oktatási tanúsítvány rögzítve van a főhálózaton a [Hyland](https://www.learningmachine.com/)_ által
-- [Pohang University of Science and Technology](https://www.theblockcrypto.com/linked/55176/south-korean-university-issues-blockchain-stored-diplomas-amid-the-spread-of-the-coronavirus) _dél-koreai egyetem, mely a frissen végzetteknek blokkláncon tárolt diplomákat ad_
-- [OpenCerts](https://opencerts.io/) _blokklánc oktatási hitelesítéseket ad ki Szingapúrban_
-- [BlockCerts](https://www.blockcerts.org/) _egy nyílt szabványt fejlesztett a blokklánc hitelesítőknek _
-- [SkillTree](http://skilltree.org/) _Online készség képzés és tanúsítványok, amelyek a lejárati triggerekkel vagy más készségekkel kapcsolatos függőségekkel konfigurálhatók_
+- [Két olasz középiskola](https://cointelegraph.com/news/two-italian-high-schools-to-issue-digital-diplomas-with-blockchain) _digitális érettségiket bocsát ki az Ethereum főhálózaton_
+- A [St. Gallen Egyetem](https://cointelegraph.com/news/swiss-university-fights-fake-diplomas-with-blockchain-technology) _ Svájcban diplomák hitelesítésére készített egy pilot projektet_
+- A [Hyland Credentials](https://www.hylandcredentials.com) _digitális diplomákat és más oktatási igazolványokat, engedélyeket és bizonyítványokat bocsát ki_
+- Az [OpenCerts](https://opencerts.io/faq) _blokkláncoktatási bizonyítványokat ad ki Szingapúrban_
+- A [BlockCerts](https://www.blockcerts.org/) _egy nyílt szabványt fejlesztett a blokklánc hitelesítőknek _
### Eszközök {#utilities}
-- [GridPlus](https://blog.gridplus.io/gridplus-is-live-in-texas-efc83c814601) _elektromos fizetések_
+- A [GridPlus](https://blog.gridplus.io/gridplus-is-live-in-texas-efc83c814601) _elektromos fizetéseket biztosít_
-Ha szeretnél valamit hozzáadni a listához, akkor nézd meg [ a közreműködési instrukciókat](/contributing/).
+Ha szeretne valamit hozzáadni a listához, akkor tekintse át a [közreműködésre vonatkozó instrukciókat](/contributing/).
diff --git a/public/content/translations/hu/enterprise/private-ethereum/index.md b/public/content/translations/hu/enterprise/private-ethereum/index.md
index ec4b4c45239..373e257248e 100644
--- a/public/content/translations/hu/enterprise/private-ethereum/index.md
+++ b/public/content/translations/hu/enterprise/private-ethereum/index.md
@@ -6,22 +6,23 @@ lang: hu
# Privát Ethereum vállalatoknak {#private-ethereum-for-enterprise}
-Vállalati blokklánc alkalmazások fejleszthetőek a nyilvános, engedély nélküli Ethereum főhálózatra vagy privát blokkláncokra, melyek az Ethereum technológiáján alapulnak. További információkért a nyilvános Ethereum főhálózaton való fejlesztére vonatkozóan nézd meg az [Ethereum főhálózat vállalatoknak](/enterprise/) cikket.
+Vállalati blokklánc alkalmazások fejleszthetőek a nyilvános, engedély nélküli Ethereum főhálózatra vagy privát blokkláncokra, melyek az Ethereum technológiáján alapulnak. A nyilvános Ethereum főhálózaton való fejlesztére vonatkozóan nézze meg az [Ethereum főhálózat vállalatoknak](/enterprise/) című cikket.
## Fejlesztői anyagok a privát vállalati Ethereumhoz {#developer-resources-private-enterprise-ethereum}
### Szervezetek {#organisations}
-Az Ethereum vállalkozásbarátabbá tételére irányuló egyes együttműködési törekvéseket különböző szervezetek hozták össze:
+Az Ethereum vállalkozásbaráttá tételére irányuló egyes együttműködési törekvéseket különböző szervezetek hozták össze:
-- [Enterprise Ethereum Alliance](https://entethalliance.org/) Az EEA lehetővé teszi a szervezetek számára, hogy bevezessék és használják az Ethereum technológiát napi üzleti tevékenységükben. Arra sarkaljuk az Ethereum ökoszisztémát, hogy új üzleti lehetőségeket teremtsünk, felfuttassuk az iparági adoptáció valamint tanuljunk és kollaboráljunk egymással.
-- [Hyperledger](https://hyperledger.org) _A Hyperledger egy olyan nyílt forráskódú kollaboratív törekvés, mely az iparágak közötti blokklánc technológiák előmozdítása érdekében jött létre. Ez egy globális együttműködés, melynek a Linux Foundation ad otthon és pénzügyi, banki, Internet of Things, ellátási lánc, a gyártás és a technológia iparági vezetői tartoznak bele. Az alapítványnak van egy pár projektre, mely az Ethereum stack-kel készült: [Besu](https://www.hyperledger.org/use/besu) és [Burrow](https://www.hyperledger.org/projects/hyperledger-burrow)._
+- [Enterprise Ethereum Alliance](https://entethalliance.org/) Az EEA lehetővé teszi a szervezetek számára, hogy bevezessék és használják az Ethereum technológiát napi üzleti tevékenységükben. Ezáltal alkalmassá tesszük az Ethereum ökoszisztémát arra, hogy új üzleti lehetőségeket jelenjenek meg, növeljük az iparági adoptációt, valamint tanuljunk és kollaboráljunk egymással.
+- [Hyperledger](https://hyperledger.org) _A Hyperledger egy olyan nyílt forráskódú, kollaboratív törekvés, mely az iparágak közötti blokklánc technológiák előmozdítása érdekében jött létre. Ez egy globális együttműködés, melynek a Linux Foundation ad otthont, és különféle iparágak vezetői tartoznak bele, többek között pénzügyi, banki, dolgok internete, ellátási lánc, gyártás és technológia területéről. Az alapítványnak van néhány projektre, mely az Ethereum rendszerrel működik, mint amilyen a[Besu](https://www.hyperledger.org/use/besu) és a [Burrow](https://www.hyperledger.org/projects/hyperledger-burrow)._
### Protokoll és infrastruktúra {#protocol-and-infrastructure}
-- [Chainstack](https://chainstack.com/) _multi-cloud és multi-protokoll platform, mely egy szolgáltatásként képessé teszi a vállalkozásokat decentralizált hálózatok és szolgáltatások gyors építésére, telepítésére és kezelésére_
-- [Clearmatics Autonity](https://www.clearmatics.com/about/) _protokoll sorozat, mely p2p protokollokat implementál és kliens szoftvereket, infrastruktúrákat biztosít_
-- [Hyperledger Besu](https://www.hyperledger.org/use/besu) _Nyílt forráskódú Ethereum kliens, melyet az Apache 2.0 licensszel fejlesztettek és Java-ban írtak, számos konszenzus algortimust tartalmaz többek között a PoW-t és a PoA-t (IBFT, IBFT 2.0, Etherhash és Clique). Az átfogó engedélyező sémái kimondottan a konzorcium környezetre lettek tervezve._
-- [Hyperledger Burrow](https://www.hyperledger.org/projects/hyperledger-burrow) _moduláris blokklánc kliens engedélyköteles okosszerződés fordítóval és részben az Ethereum Virtual Machine (EVM) specifikációjára fejlesztve_
-- [Kaleido](https://kaleido.io/) _full-stack platform cross-cloud, hibrid vállalati ökoszisztémák építésére és futtatására_
-- [Quorum](https://consensys.net/quorum/) _egy Ethereum alapú, nyílt forráskódú vállalati blokklánc platform fejlett, vállalati szintű funkciókkal, melyek lehetővé teszik az adatvédelmet, engedélyezést és a teljesítményt_
+- A [Chainstack](https://chainstack.com/) _egy több felhővel és több protokollra működő platform mint szolgáltatás, mely képessé teszi a vállalkozásokat a decentralizált hálózatok és szolgáltatások gyors építésére, telepítésére és kezelésére_
+- A [Clearmatics Autonity](https://www.clearmatics.com/about/) _egy protokollsorozat, mely p2p protokollokat implementál, valamint kliens szoftvereket és infrastruktúrákat biztosít_
+- A [Hyperledger Besu](https://www.hyperledger.org/use/besu) _egy nyílt forráskódú Ethereum-kliens, melyet az Apache 2.0 licensszel fejlesztettek és Java-ban írtak, számos konszenzusalgoritmust tartalmaz, többek között a PoW-t és a PoA-t (IBFT, IBFT 2.0, Ethhash és Clique). Az átfogó engedélyező sémái kimondottan a konzorcium környezetre lettek tervezve._
+- A [Hyperledger Burrow](https://www.hyperledger.org/projects/hyperledger-burrow) _egy moduláris blokklánckliens engedélyköteles okosszerződés fordítóval, melyet részben az Ethereum Virtuális Gép (EVM) specifikációjára fejlesztettek_
+- A [Kaleido](https://kaleido.io/) _egy teljes technikai rendszert biztosító platform arra, hogy felhők közötti, hibrid vállalati ökoszisztémákat lehessen építeni és futtatni_
+- A [Quorum](https://consensys.net/quorum/) _egy Ethereum-alapú, nyílt forráskódú, vállalati blokkláncplatform fejlett, vállalati szintű funkciókkal, melyek lehetővé teszik az adatvédelmet, az engedélyezést és a megfelelő teljesítményt_
+- A [Zeeve](https://www.zeeve.io/) _az Ethereumra való építéshez nyújt termékeket és eszközöket, valamint infrastruktúrát és API-okat biztosít vállalati web3 alkalmazásoknak_
diff --git a/public/content/translations/hu/foundation/index.md b/public/content/translations/hu/foundation/index.md
index 1333c4f934c..a2b8bfe1a65 100644
--- a/public/content/translations/hu/foundation/index.md
+++ b/public/content/translations/hu/foundation/index.md
@@ -1,6 +1,7 @@
---
title: Ethereum Alapítvány
-description: Ismerd meg az Ethereum Alapítványt (EA), egy non-profit szervezetet, melynek célja az Ethereum és a hozzá kapcsolódó technológiák támogatása.
+description: Ismerje meg az Ethereum Alapítványt (EF), amely egy non-profit szervezet, s célja az Ethereum és a hozzá kapcsolódó technológiák támogatása.
+hideEditButton: true
lang: hu
---
@@ -8,26 +9,32 @@ lang: hu
-Az [Ethereum Alapítvány](http://ethereum.foundation/) (EA) egy non-profit szervezet, melynek célja az [Ethereum](/what-is-ethereum/) és a kapcsolódó technológiák támogatása.
+Az [Ethereum Alapítvány (EF)](http://ethereum.foundation/) egy non-profit szervezet, melynek célja az [Ethereum](/what-is-ethereum/) és a kapcsolódó technológiák támogatása.
-Az EA nem egy cég, még csak nem is hagyományos non-profit. Feladatuk nem az Ethereum irányítása vagy vezetése, és ők sem az egyetlen szervezet, amely finanszírozza az Ethereumhoz kapcsolódó fontos technológiák fejlesztését. Az EF egy sokkal nagyobb [ökoszisztémának](/community/) a része.
+Az Ethereum Alapítvány (EF) nem egy cég, még csak nem is hagyományos non-profit. Feladatuk nem az Ethereum irányítása vagy vezetése, és nem is az egyetlen szervezet, amely finanszírozza az Ethereumhoz kapcsolódó, fontos technológiák fejlesztését. Az EF egy sokkal nagyobb [ökoszisztémának](/community/) a része.
## Ethereum Alapítvány Kezdeményezések {#ethereum-foundation-initiatives}
### Ecosystem Támogatási Program {#ecosystem-support-program}
-Az [Ecosystem Támogatási Program](https://esp.ethereum.foundation/) célja, hogy anyagi és nem anyagi támogatást nyújtson projekteknek és egyéneknek a tágabb Ethereum közösségen belül, hogy felgyorsítsa a növekedést az ökoszisztémán belül. Az Ecosystem Támogatási program az eredeti Ethereum Grants Program kibővítése, amely főként a pénzügyi támogatásra összpontosított.
+Az [Ökoszisztéma Támogatási Program](https://esp.ethereum.foundation/) célja, hogy pénzügyi és nem pénzügyi támogatást nyújtson projekteknek és egyéneknek a tágabb Ethereum közösségen belül, hogy felgyorsítsa az ökoszisztéma növekedését. Az Ökoszisztéma Támogatási Program az eredeti Ethereum támogatási/ösztöndíj program kibővítése, amely főként a pénzügyi támogatásra összpontosított.
-Tudj meg többet az Ecosystem Támogatási Programról, korábbi ösztöndíjasokról és az ösztöndíj jelentkezési folyamatról az [esp.ethereum.foundation](https://esp.ethereum.foundation/) oldalon. Ezenkívül megnézheted az [Ecosystem Support Program Blogot](https://blog.ethereum.org/category/ecosystem-support-program/) vagy bekövetheted az [@EF_ESP](https://twitter.com/EF_ESP) oldalt a legutóbbi hírekért és bejelentésekért.
+Tudjon meg többet az Ökoszisztéma Támogatási Programról, korábbi ösztöndíjasokról és az ösztöndíj jelentkezési folyamatáról az [esp.ethereum.foundation](https://esp.ethereum.foundation/) oldalon. Ezenkívül megnézheti az [Ökoszisztéma Támogatási Program Blogját](https://blog.ethereum.org/category/ecosystem-support-program/) vagy követheti az [@EF_ESP](https://twitter.com/EF_ESP) oldalt a legfrissebb hírekért és bejelentésekért.
### Devcon {#devcon}
-Az Ethereum Alapítvány 2014 óta szervezi a Devcont, az Ethereum összes fejlesztőjének, kutatójának, gondolkodójának és alkotójának éves konferenciáját.
+Az Ethereum Alapítvány 2014 óta szervezi a Devcont, az Ethereum éves konferenciáját, mely egy helyre gyűjti a fejlesztőket, kutatókat, gondolkodókat és alkotókat.
-Hozzáférhetsz az összes konferencia prezentáció videó tartalmához a kezdetektől az [archive.devcon.org](https://archive.devcon.org/) oldalon.
+Hozzáférhet az összes konferencián elhangzó előadás videójához a kezdetektől az [archive.devcon.org](https://archive.devcon.org/) oldalon.
-Tudj meg többet a [devcon.org](https://devcon.org/) oldalon, nézd meg a [Devcon Blogot](https://devcon.org/en/blogs/), vagy kövesd be az [@efdevcon](https://twitter.com/EFDevcon) oldalt a legfrissebb bejelentésekért.
+Tudjon meg többet a [devcon.org](https://devcon.org/) oldalon, tekintse meg a [Devcon Blogot](https://devcon.org/en/blogs/), vagy kövesse a [@efdevcon](https://twitter.com/EFDevcon) csatornát a legfrissebb információkért.
+
+### Ösztöndíjas program {#fellowship-program}
+
+Az [Ethereum Alapítvány Ösztöndíjas Programja](https://fellowship.ethereum.foundation/) egy olyan kezdeményezés, mely a kulturális, nemzeti és gazdasági csoportok egyenlő arányú jelenlétét akarja elősegíteni. A program úgy akarja áthidalni a szakadékokat, hogy kivételes és tehetséges egyéneket azonosít és támogat, hogy lehetővé tegyék azt Ethereum fontosságát e csoportok számára, elhárítsák azokat az akadályokat, amelyek miatt a távolmaradó emberek és közösségek nem tudnak csatlakozni az Ethereum világához, pedig ők jelentik a web3 jövőjét.
+
+[Tudjon meg többet a fellowship.ethereum.foundation oldalon](https://fellowship.ethereum.foundation/).
-További információkért az Alapítványról látogasd meg az [ethereum.foundation](http://ethereum.foundation/) weboldalt, vagy nézd meg az [Ethereum Foundation Blogot](https://blog.ethereum.org/) a legfrissebb EA hírekért és bejelentésekért.
+További információkért az Alapítványról látogasson el az [ethereum.foundation](http://ethereum.foundation/) weboldalra, vagy nézze meg az [Ethereum Alapítvány Blogot](https://blog.ethereum.org/) a legfrissebb hírekért és bejelentésekért.
diff --git a/public/content/translations/hu/glossary/index.md b/public/content/translations/hu/glossary/index.md
index 206910322c6..6ccad466723 100644
--- a/public/content/translations/hu/glossary/index.md
+++ b/public/content/translations/hu/glossary/index.md
@@ -2,816 +2,435 @@
title: Ethereum szótár
description: Szójegyzék az Ethereumhoz kapcsolódó technikai és nem technikai szavakról, a teljesség igénye nélkül
lang: hu
-sidebarDepth: 2
---
-# Összegzés {#ethereum-glossary}
+# Szójegyzék {#ethereum-glossary}
-
-
-## # {#section-numbers}
+## \# {#section-numbers}
-### 51% attack (51%-os támadás) {#51-attack}
+
-Egy decentralizált [hálózat](#network) ellen irányuló támadás, amikor egy csoport irányítja a [csomópontok](#node) többségét. Ez lehetővé tenné számukra, hogy meghamisítsák a blokkláncot [tranzakciók](#transaction) visszaállításával és [ether](#ether) vagy más token kétszeres elköltésével.
+
## A {#section-a}
-### account (számla) {#account}
-
-Egy objektum, mely egy [címet](#address), egy egyenleget, [egy nonce-t](#nonce), és opcionálisan tárhelyet és kódot tartalmazhat. Egy számla lehet [szerződéses számla](#contract-account) vagy egy [külső tulajdonú számla (EOA)](#eoa).
-
-
- Ethereum számlák
-
+
-### address (cím) {#address}
+
-Általánosságban ez egy [EOA-t](#eoa) vagy egy [szerződést](#contract-account) reprezentál, mely fogadhat (cél cím) vagy küldhet (eredő cím) [tranzakciókat](#transaction) a blokkláncon. Pontosabban ez egy [ECDSA](#ecdsa) [publikus kulcs](#public-key) [Keccak hashének](#keccak-256) jobb oldalra eső 160 bitje.
+
-### assert {#assert}
+
-A [Solidity-ben](#solidity), az `assert(false)` a `0xfe` opkódra fordítódik, mely egy érvénytelen opkód, ami felhasználja az összes megmaradt [gázt](#gas) és visszaállítja a változásokat. Ha egy `assert()` állítás meghiúsul, akkor valami nagyon rossz és váratlan történik, és meg kell javítanod a kódot. Az `assert()` kódot, olyan feltételek elkerülésére kell használnod, melynek soha sem szabad megtörténnie.
+
-
- Biztonság
-
+
-### attestation (tanúsítás) {#attestation}
-
-Egy validátor szavazata egy [Beacon Chain](#beacon-chain) vagy egy [shard](#shard) [blokkra](#block). A validátoroknak tanúsítaniuk kell a blokkokat, jelezve, hogy egyetértenek a blokk által javasolt állapottal.
+
## B {#section-b}
-### Beacon Chain {#beacon-chain}
+
+
+
-Egy Eth2 fejlesztés, mely az Ethereum hálózat koordinátora lesz. Bevezeti a [letétbizonyítékot](#proof-of-stake) és a [validátorokat](#validator) az Ethereumra. Idővel össze fog olvadni a [főhálózattal](#mainnet).
+
-
- Beacon Chain
-
+
-### big-endian {#big-endian}
+
-Helyzeti számábrázolás, ahol a legfontosabb számjegy az első a memóriában. A little-endian az ellentéte, ahol a legkevésbé jelentős számjegy az első.
+
-### blokk {#block}
+
-A szükséges információ (egy blokk fejléc) gyűjteménye a befoglalt [tranzakciókról](#transaction), és más blokk fejlécek halmaza, melyet [ommereknek](#ommer) hívunk. A blokkokat a [bányászok](#miner) adják hozzá az Ethereum hálózathoz.
+
-
- Blokkok
-
+
-### blokklánc {#blockchain}
+
-Az Ethereumban [blokkok](#block) sorozatát jelenti, melyeket a [proof-of-work](#pow) rendszer érvényesít, mindegyik kapcsolódik az előzőhöz egészen a [genezis blokkig](#genesis-block). Nincsen blokk méret határ, ehelyett [gáz limitet](#gas-limit) használunk.
+
-
- Mi az a blokklánc?
-
+
-### bytecode {#bytecode}
+
-Egy absztrakt utasításkészlet, amelyet egy szoftver fordító vagy virtuális gép általi hatékony végrehajtásra terveztek. Az emberek által is olvasható forráskóddal ellentétben a bájtkód numerikus formátumban van kifejezve.
+
-### Byzantium fork (Byzantium elágazás) {#byzantium-fork}
+
-Az első a két [hard forkból](#hard-fork) a [Metropolis](#metropolis) fejlesztési szinthgez. Tartalmazta az EIP-649 Metropolis [nehézség bomba](#difficulty-bomb) késeltetést és a blokk jutalom csökkentését, ahol az [Ice Age](#ice-age) el lett tolva 1 évvel és a blokk jutalom lecsökkent 5 etherről 3 etherre.
+
## C {#section-c}
-### compiling (fordítás) {#compiling}
-
-Egy magas szintű nyelvben (pl.: [Solidity](#solidity)) írt kód átkonvertálása egy alacsonyabb szintű nyelvre (pl.: EVM [bájtkód](#bytecode)).
-
-
- Okos szerződések fordítása
-
+
-### committee (bizottság) {#committee}
+
-Legalább 128 [validátorból](#validator) álló csoport, akiket hozzárendeltek a beacon vagy shard blokkok validálására véletlenszerűen [a Beacon Chain](#beacon-chain) által.
+
-### consensus (konszenzus) {#consensus}
+
-Ha számos csomópont (általában a legtöbb csomópont a hálózaton) ugyanazokkal a blokkokkal rendelkezik a saját lokálisan validált legjobb blokkláncukon. Nem összekeverendő a [konszenzus szabályokkal](#consensus-rules).
+
-### consensus rules (konszenzus szabályok) {#consensus-rules}
+
-A blokk érvényesítési szabályai, amelyeket a teljes csomópontok követnek, hogy más csomópontokkal konszenzusban maradjanak. Nem összekeverendő a [konszenzussal](#consensus).
+
-### Constantinople fork (Constantinople elágazás) {#constantinople-fork}
+
-A [Metropolis](#metropolis) fázis második része, eleinte 2018 közepére tervezték. Egy váltást tartalmazott volna egy hibrid [proof-of-work](#pow)/[proof-of-stake](#pos) konszenzus algoritmusra más változtatásokkal együtt.
+
-### contract account (szerződéses számla) {#contract-account}
+
-Egy számla, mely kódot tartalmaz, mely lefut, amikor kap egy [tranzakciót](#transaction) egy másik [számláról](#account) ([EOA](#eoa) vagy [szerződéses](#contract-account)).
+
-### contract creation transaction (szerződés létrehozó tranzakció) {#contract-creation-transaction}
+
-Egy speciális [tranzakció](#transaction), a [zéró címmel](#zero-address) mint a fogadó, melyet arra használunk, hogy egy [szerződést](#contract-account) regisztráljunk és rögzítsük az Ethereum blokkláncra.
-
-### crosslink (kereszt kapcsolat) {#crosslink}
-
-A kereszt kapcsolat egy összesítést ad vissza egy shard állapotáról. Így fognak a [shard](#shard) láncok kommunikálni egymással [Beacon Chain-en](#beacon-chain) keresztül a [proof-of-stake rendszerben](#proof-of-stake).
-
-
- Proof-of-stake
-
+
## D {#section-d}
-### Decentralized Autonomous Organization (DAO) {#dao}
-
-Egy olyan vállalat vagy szervezet, amely hierarchikus menedzsment nélkül működik. A DAO utalhat a "The DAO" nevű szerződésre, melyet 2016 április 30.-án indítottak, és 2016 júniusában meghackeltek; ez végül erősen motiválta a [hard forkot](#hard-fork) (DAO kódnév) az 1,192,000 blokkban, mely visszaállította a meghackelt DAO szerződést és az Ethereum és az Ethereum Classic szétválását okozta két rivális rendszerré.
-
-
- Decentralizált autonóm szervezetek (DAO-k)
-
-
-### Dapp {#dapp}
-
-Decentralizált alkalmazás. Legalább egy [okosszerződés](#smart-contract) és egy webes felhasználói felület. Tágabb értelemben egy dapp egy olyan web alkalmazás, mely egy decentralizált, peer-to-peer infrastruktúra szolgáltatásra épült. Továbbá sok dapp tartalmazhat decentralizált tárhelyet és/vagy egy üzenetküldő protokollt és platformot.
-
-
- Bevezetés a dappokba
-
+
-### decentralizált tőzsde (DEX) {#dex}
+
-Egy [dapp](#dapp) típus, mellyel tokeneket cserélhetsz a peerekkel a hálózaton. Szükséged lesz [etherre](#ether) a használatukhoz (a [tranzakciós díjak](#transaction-fee) kifizetésére) de nincsenek kitéve a földrajzi megszorításoknak, mint a centralizált tőzsdék – bárki használhatja őket.
+
-
- Decentralizált tőzsdék
-
+
-### deed {#deed}
+
-Lásd [nem felcserélhető token (NFT)](#nft)
+
-### defi {#defi}
+
-A "decentralized finance", vagyis "decentralizált pénzügy" rövidítése, amely olyan [Dappok](#dapp) széles kategóriája, melyeknek célkitűzése blokklánc alapú pénzügyi szolgáltatások létrehozása, köztes szereplők nélkül, így bárki részt vehet benne internetkapcsolattal.
+
-
- Defi dappok
-
+
-### difficulty (nehézség) {#difficulty}
+
-Egy hálózati szintű beállítás, mely beszabályozza, hogy mennyi számítás szükséges egy [proof-of-work](#pow) létrehozásához.
+
-### difficulty bomb (nehézség bomba) {#difficulty-bomb}
+
-A [proof-of-work](#pow) [nehézség](#difficulty) tervezett exponenciális megnövelése, mely motiválja a [proof-of-stake-re](#pos) történő átállást, csökkenti a [forknak](#hard-fork) a változásait
+
-### digitális aláírás {#digital-signatures}
+
-Egy rövid adat sztring, melyet egy felhasználó hoz létre egy dokumentumhoz egy [privát kulcs](#private-key) használatával úgy, hogy bárki a hozzátartozó [publikus kulccsal](#public-key), az aláírással és a dokumentummal hitelesíteni tudja, hogy (1) a dokumentumot "aláírta" a bizonyos privát kulcs tulajdonosa, és (2) a dokumentum nem változott miután aláírták.
+
## E {#section-e}
-### elliptikus görbe digitális aláírás algoritmus (ECDSA) {#ecdsa}
+
-Az Ethereum által használt kriptográfiai algoritmus, mely biztosítja, hogy a javakat csak a tulajdonosok költhetik el.
+
-### epoch (korszak) {#epoch}
+
-Egy 32 [slotból](#slot) álló periódus (6.4 perc) a [Beacon Chain](#beacon-chain)-által koordinált rendszerben. A [validátor](#validator) [bizottságokat](#committee) összekeverik minden korszakban biztonsági okokból. Minden korszakban esély van a lánc [véglelesítésére](#finality).
+
-
- Proof-of-stake
-
+
-### Ethereum Fejlesztési Javaslatok (EIP-k) {#eip}
+
-Tervezési dokumentum, amely információkat nyújt az Ethereum közösség számára, és ismerteti a javasolt új funkciót, annak folyamatait vagy környezetét (lásd [ERC](#erc)).
+
-
- Bevezetés az EIP-kbe
-
+
-### Ethereum Name Service (ENS) {#ens}
+
-Az ENS jegyzés az egyedüli, központi [szerződés](#smart-contract), mely egy leképezést szolgáltat a domén nevek és a tulajdonosok és a feloldók között, ahogy az [EIP](#eip) 137-ben elő van írva.
+
-[Olvass róla többet a ens.domains](https://ens.domains)
+
-### entrópia {#entropy}
+
-A kriptográfia kontextusában a megjósolhatóság hiányát vagy a véletlenszerűség mértékét jelenti. Amikor titkos információkat generálunk, mint a [privát kulcsok](#private-key), az algoritmusok általában egy magas entrópia forrásra támaszkodnak, hogy biztosítsák a kimenet megjósolhatatlanságát.
+
-### externally owned account (EOA) {#eoa}
+
-Egy emberi felhasználók által vagy számára létrehozott [számla](#account) az Ethereum hálózaton.
+
-### Ethereum Request for Comments (ERC) {#erc}
+
-Néhány [EIP-hez](#eip) tartozó címke, melyek specifikus Ethereum használati szabványokat definiálnak.
+
-
- Bevezetés az EIP-kbe
-
-
-### Ethash {#ethash}
-
-Az Ethereum 1.0 [munkabizonyíték](#pow) algoritmusa.
-
-[Olvass róla többet a eth.wiki oldalon](https://eth.wiki/en/concepts/ethash/ethash)
-
-### ether {#ether}
-
-Az Ethereum ökoszisztéma által használt natív kriptovaluta, mely fedezi a [gáz](#gas) költségeket tranzakciók végrehajtásakor. Írásban találkozhatunk vele ETH-ként vagy a Ξ szimbólumként is, ami a nagybetűs görög kszí karakter.
-
-
- A digitális jövőnk valutája
-
-
-### events (események) {#events}
-
-Az [EVM](#evm) logolási lehetőségeinek használatát teszi lehetővé. A [dappok](#dapp) figyelhetik az eseményeket és a használatukkal JavaScript callback függvényeket triggerelhetnek az felhasználói felületen.
-
-
- Események és naplózások
-
-
-### Ethereum virtuális gép (EVM) {#evm}
-
-Egy stack alapú virtuális gép, mely [bájtkódot](#bytecode) futtat. Az Ethereumban a lefutási modell előírja, hogyan fog a rendszerállapot megváltozni adott bájtkód sorozattól és a környezeti adatok egy kis sorától. Ez a virtuális állapot gép formális modelljében van előírva.
-
-
- Ethereum virtuális gép
-
-
-### EVM assembly nyelv {#evm-assembly-language}
-
-Az EVM [bájtkód](#bytecode) emberek számára is olvasható változata.
+
## F {#section-f}
-### fallback függvény {#fallback-function}
-
-Egy alap függvény, mely adat vagy deklarált függvény név hiánya esetén hívódik meg.
-
-### faucet (csap) {#faucet}
-
-Egy [okosszerződés](#smart-contract) által működtetett szolgáltatás, mely javakat bocsájt ki ingyenes teszt ether formájában, melyet a tesztneten lehet használni.
+
-
- Tesztnet csapok
-
+
-### véglegesség {#finality}
+
-A véglegesség a garancia arra, hogy az adott tranzakciók egy bizonyos idő előtt nem fognak megváltozni és nem lehet visszavonni őket.
+
-
- Proof-of-work véglegesség
-
- Proof-of-stake véglegesség
-
+
-### finney {#finney}
+
-Az [ether](#ether) egyik részegysége. 1 finney = 1015 [wei](#wei). 103 finney = 1 ether.
+
-### fork (elágazás) {#fork}
-
-Egy protokoll változtatás, mely egy alternatív lánc létrejöttét vonja magával, vagy egy átmeneti eltérés két potenciális blokk útvonal között bányászat közben.
-
-### fraud proof (csalási bizonyítás) {#fraud-proof}
-
-Bizonyos [2. réteg](#layer-2) megoldások biztonsági modellje, ahol a sebesség növelése érdekében a tranzakciókat csoportokba [összegzik](#rollups) és egy tranzakcióként továbbítják az Ethereumra. Érvényesnek feltételezzük őket, de meg lehet kérdőjelezni, ha csalást feltételezünk. Ekkor lefut egy csalási bizonyítás, mely ellenőrzi, hogy történt-e csalás. Ez a módszer növeli a lehetséges tranzakciók mennyiségét mialatt fenntartja a biztonságot. Néhány [összegző](#rollups) [érvényességi bizonyítást](#validity-proof) használ.
-
-
- Optimista összegzők
-
-
-### frontier {#frontier}
-
-Az Ethereum kezdeti teszt fejlesztési fázisa, mely 2015 júliusától 2016 márciusáig tartott.
+
## G {#section-g}
-### gas (gáz) {#gas}
-
-Egy virtuális üzemanyag, melyet az Ethereumon használunk okosszerződések végrehajtására. Az [EVM](#evm) egy könyvelési mechanizmust használ, amivel méri a gázfogyasztást és behatárolja a számítási kapacitások fogyasztását (lásd [Turing teljes](#turing-complete)).
-
-
- Gáz és tranzakciós díjak
-
-
-### gas limit (gáz limit) {#gas-limit}
+
-A [gáz](#gas) maximális mennyisége, amit egy [tranzakció](#transaction) vagy egy [blokk](#block) elfogyaszthat.
+
-### genesis blokk {#genesis-block}
+
-Egy [blokklánc](#blockchain) első blokkja, amit egy adott hálózat és a kriptovalutája elindítására használnak.
+
-### geth {#geth}
+
-Go Ethereum. Az Ethereum egyik legprominensebb implementációja Go-ban írva.
-
-[Olvass róla többet a geth.ethereum.org oldalon](https://geth.ethereum.org/)
-
-### gwei {#gwei}
-
-A gigawei rövidítése, az [ether](#ether) egyik részegysége, gyakran a [gáz](#gas) díjak elszámolására használjuk. 1 gwei = 109 [wei](#wei). 109 gwei = 1 ether.
+
## H {#section-h}
-### hard fork {#hard-fork}
-
-A [blokklánc](#blockchain) permanens eltérése; más néven hard-forking változás. Gyakran előfordul, amikor a nem frissített csomópontok nem tudnak blokkokat validálni, melyet a frissített csomópontok hoztak létre, akik az új [konszenzus szabályokat](#consensus-rules) követik. Nem összetévesztendő a forkkal, soft forkkal, software forkkal, vagy a Git forkkal.
-
-### hash {#hash}
-
-Egy változó méretű bemenet fix hosszúságú lenyomata, melyet egy hash függvény állít elő. (Lásd [keccak-256](#keccak-256))
-
-### HD tárca {#hd-wallet}
-
-Egy [tárca](#wallet), mely a hierarchikus determinisztikus (HD) kulcs létrehozást és átutalási protokollt használja.
+
-[Olvass róla többet a github.com oldalon](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
+
-### HD tárca seed {#hd-wallet-seed}
+
-Egy érték, melyet a master [privát kulcs](#private-key) és a master lánc kód generálásához használnak a HD [tárcáknál](#wallet). A tárca seed reprezentálható mnemonikus szavakkal, így az embereknek könnyebb lemásolni és tárolni a privát kulcsokat.
-
-### homestead {#homestead}
-
-Az Ethereum második fejlesztési fázisa, mely 2016 márciusában indult el az 1,150,000 számú blokknál.
+
## I {#section-i}
-### Inter-exchange Client Address Protocol (ICAP) {#icap}
-
-Egy Ethereum cím kódolás, mely részben kompatibilis az International Bank Account Number (IBAN) kódolással, és sokoldalú, checksum ellenőrzött és interoperábilis kódolást kínál az Ethereum címek számára. Az ICAP címek az új IBAN pszeudo-ország kódot használják- XE, mely az "eXtended Ethereum" névből következik, ahogy a nem-hivatalos valuták használják (pl.: XBT, XRP, XCP).
-
-### Ice Age {#ice-age}
-
-Egy Ethereum [hard fork](#hard-fork) a 200,000 blokknál, mely bevezeti az exponenciális [nehézségi](#difficulty) növelést (más néven[nehézségi bomba](#difficulty-bomb)), hogy a [proof-of-stake-re](#pos) való átállást motiválja.
-
-### integrált fejlesztői környezet (IDE) {#ide}
-
-Egy felhasználói felület, mely általában egy kód szerkesztőt, egy fordítót, egy runtime-ot és egy debuggert egyesít.
-
-
- Integrált Fejlesztői Környezetek
-
-
-### immutable deployed code problem (nem megváltoztatható kód problémája) {#immutable-deployed-code-problem}
+
-Amint egy [szerződés](#smart-contract) (vagy [könyvtár](#library)) kód telepítésre került, megváltoztathatatlanná válik. A standard szoftverfejlesztési gyakorlat a lehetséges bugok javítására és új funkciók hozzáadására támaszkodik, így ez egy kihívást jelent az okosszerződés fejlesztésnél.
+
-
- Okosszerződések telepítése
-
+
-### internal transaction (belső tranzakció) {#internal-transaction}
+
-Egy [tranzakció](#transaction) egy [szerződéses számláról](#contract-account) egy másik szerződéses számlára vagy egy [EOA-ra](#eoa) (lásd [üzenet](#message)).
+
## K {#section-k}
-### kulcsszármaztatási függvény (KDF) {#kdf}
+
-Más néven "jelszó nyújtó algoritmus", melyet a [keystore](#keystore-file) formátumok használnak, hogy védekezzenek a brute-force, dictionary és a szivárvány tábla támadásokkal szemben a jelszó titkosításoknál a jelszó ismételt hashelésével.
+
-
- Biztonság
-
-
-### keccak-256 {#keccak-256}
-
-Az Ethereumban használt kriptográfiai [hash](#hash) függvény. A Keccak-256 [SHA](#sha)-3-ként lett szabványosítva.
-
-### keystore fájl {#keystore-file}
-
-Egy JSON kódolású fájl, mely egy (véletlenszerűen generált) [privát kulcsot](#private-key) tartalmaz, melyet egy jelszó titkosít magasabb fokú biztonságért.
+
## L {#section-l}
-### layer 2 (2. réteg) {#layer-2}
-
-Egy fejlesztési terület, mely az Ethereum protokollra épített fejlesztési rétegekre fókuszál. Ezek a fejlesztések a [tranzakciókhoz](#transaction) sebességhez, olcsóbb[tranzakciós díjakhoz](#transaction-fee) és a privát tranzakciókhoz kapcsolódnak.
-
-
- 2. réteg
-
-
-### LevelDB {#level-db}
-
-Egy nyílt forráskódú on-disk, kulcspár tároló, mely egy könnyű, egyedi célú [könyvtárként](#library) van implementálva több kapcsolódással más platformokhoz.
+
-### library (könyvtár) {#library}
+
-Egy speciális [szerződés](#smart-contract) típus, melynek nincsenek payable függvényei, fallback függvényei vagy adattárolója. Így nem tud ethert tartani vagy kapni, illetve adatot tárolni. Egy könyvtár korábban telepített kódként szolgál, melyet más szerződések meghívhatnak read-only számítás céljából.
+
-
- Okosszerződés könyvtárak
-
-
-### lightweight client (könnyű kliens) {#lightweight-client}
-
-Egy Ethereum kliens, mely nem tárolja a [blokklánc](#blockchain) lokális másolatát, nem validál blokkokat és [tranzakciókat](#transaction). Egy [tárca](#wallet) funkcionalitását szolgáltatja és tranzakciókat tud létrehozni és közvetíteni.
+
## M {#section-m}
-### Mainnet (főhálózat) {#mainnet}
-
-A "main network" rövidítése, ez a fő nyilvános Ethereum [blokklánc](#blockchain). Valódi ETH, valódi érték, és valódi következmények. 1. rétegként is hivatkozunk rá, amikor a [2. rétegű](#layer-2) skálázhatósági megoldásokról beszélünk. (Ezenkívül lásd [tesztnet](#testnet))
-
-### Merkle Patricia fa {#merkle-patricia-tree}
-
-Egy adat struktúra az Ethereumban, mellyel hatékonyan lehet kulcs-érték párokat tárolni.
+
-### message (üzenet) {#message}
+
-Egy [belső tranzakció](#internal-transaction), mely sosincs sorba rendezve és csak az [EVM](#evm) belül kerül elküldésre.
+
-### message call (üzenet hívás) {#message-call}
+
-Egy [üzenet](#message) átadása egyik számláról egy másikba. Ha a cél számla összeköttetésben van [EVM](#evm) kóddal, akkor a VM elindul az adott objektum állapotával és az üzenettel, mellyel meghívták.
+
-### Metropolis {#metropolis}
+
-Az Ethereum harmadik fejlesztési fázisa, mely 2017 októberében indult el.
-
-### miner (bányász) {#miner}
-
-Egy hálózati [csomópont](#node), mely érvényes [munkabizonyítékokat](#pow) keres az új blokkoknak ismételt hasheléssel (lásd [Ethash](#ethash)).
-
-
- Bányászat
-
+
## N {#section-n}
-### network (hálózat) {#network}
-
-Az Ethereum hálózatra utal, mely egy peer-to-peer hálózat, mely tranzakciókat és blokkokat terjeszt az összes Ethereum csomópont (hálózati résztvevő) számára.
+
-
- Hálózatok
-
+
-### nem felcserélhető token (NFT) {#nft}
+
-Más néven "deed", ez egy token szabvány, melyet az ERC-721 javaslat vezetett be. Az NFT-ket nyomon lehet követni és kereskedni velük, de minden egyes token egyedi és különböző; nem felcserélhetőek, mint az ERC-20 tokenek. Az NFT-k tulajdonjogot reprezentálhatnak digitális vagy fizikai eszközöknél.
+
-
- ERC-721 Nem Felcserélhető Token Szabvány
-
-
-### node (csomópont) {#node}
-
-Egy szoftver kliens, mely részt vesz a hálózatban.
-
-
- Csomópontok és kliensek
-
-
-
- Csomópontok és kliensek
-
-
-### nonce {#nonce}
-
-A kriptográfiában egy olyan érték, melyet csak egyszer lehet felhasználni. Az Ethereum kétféle nonce-ot használ -a számla-nonce a tranzakciók számlán történő nyilvántartásához szükséges, és a tranzakciók megismétlésével történő támadások megelőzésére használja a hálózat; a [munkabizonyíték](#pow)-nonce pedig az a blokkban használt véletlenszerű érték, amely [munkabizonyítékként](#pow) szolgál.
+
## O {#section-o}
-### ommer (vagy uncle - nagybácsi) blokk {#ommer}
-
-Amikor egy [bányász](#miner) talál egy érvényes [blokkot](#block), lehetséges, hogy egy másik bányász már nyilvánosságra hozott egy másik blokkot, ami előbb kerül be a blokkláncba. Ez az érvényes, ugyanakkor elavult blokk _ommerként_ bekerülhet a blokkláncba az újabb blokkok által, és részleges blokk-jutalomban részesülhet. Az "ommer" kifejezés a szülő-blokk testvér-blokkjának gender-semleges formája, de néha "uncle", azaz "nagybácsi" blokként is hivatkoznak rá.
-
-### Optimistic rollup (Optimistic típusú összevont tranzakciók) {#optimistic-rollup}
+
-Olyan [összevont tranzakció](#rollups), amely [csalási bizonyítást](#fraud-proof) használ annak érdekében, hogy növelje a [2. rétegen](#layer-2) végrehajtható tranzakciók számát, ugyanakkor a [főhálózat](#mainnet) (1. réteg) biztonsági protokollját használja. Ellentétben egy hasonló 2. réteges megoldással, a [Plasmával](#plasma), az Optimistic típusú összevont tranzakciók komplexebb tranzakciókat is képesek kezelni - az [EVM](#evm)-ben bármi lehetséges. Vannak azonban késleltetési problémái a [Zero-knowledge típusú összevont tranzakciókhoz](#zk-rollups) képest, mivel egy tranzakciót meg lehet kérdőjelezni egy csalási bizonyítással.
+
-
- Optimista összegzők
-
+
## P {#section-p}
-### parity {#parity}
+
-Az Ethereum kliens szoftver egyik legprominensebb, interoperábilis implementációja.
+
-### Plasma {#plasma}
+
-Egy [2. réteges](#layer-2)skálázási megoldás, mely [csalási bizonyításokat használ](#fraud-proof), mint az [optimista összegzők](#optimistic-rollups). A Plasma csak egyszerű tranzakciókra alkalmas, mint az egyszerű token átutalás vagy cserélés.
+
-
- Plasma
-
+
-### private key (secret key) / privát kulcs (titkos kulcs) {#private-key}
+
-Egy titkos szám, mely lehetővé teszi az Ethereum felhasználóknak, hogy bizonyítsák a tulajdonjogukat egy számlához vagy szerződéshez egy digitális aláírással (lásd [publikus kulcs](#public-key), [cím](#address), [ECDSA](#ecdsa)).
+
-### proof-of-stake (PoS) / letétbizonyíték {#pos}
-
-Egy metódus, mellyel egy kriptovaluta blokklánc protokoll eléri az elosztott [konszenzust](#consensus). A PoS utasítja a felhasználókat, hogy bizonyítsák a tulajdonjogukat egy bizonyos összegű kriptovaluta felett (a "letétük" a hálózatban) azért, hogy részt vehessenek a tranzakciók validálásában.
-
-
- Proof-of-stake
-
-
-### proof-of-work (PoW) / munkabizonyíték {#pow}
-
-Egy adatsor (a bizonyíték), melynek megtalálása jelentős mennyiségű számítást igényel. Az Ethereumban a [bányászoknak](#miner) meg kell találniuk a numerikus megoldását az [Ethash](#ethash) algoritmusnak, mely eléri a hálózati szintű [nehézségi](#difficulty) célt.
-
-
- Proof-of-work
-
-
-### public key (publikus kulcs) {#public-key}
-
-Egy a [privát kulcsból](#private-key) egy egyirányú függvénnyel származtatott szám, amelyet nyilvánosan meg lehet osztani, és bárki felhasználhatja az ehhez tartozó privát kulccsal készült digitális aláírások hitelesítéséhez.
+
## R {#section-r}
-### receipt (visszaigazolás) {#receipt}
-
-Egy Ethereum kliens által visszadott adat, mely egy adott [tranzakció](#transaction) eredményét reprezentálja, beleértve a tranzakció [hash-t](#hash), a [blokk](#block) számát, a felhasznált [gáz](#gas) mennyiséget, és, egy [okosszerződés](#smart-contract) telepítés esetében, a szerződés [címét](#address).
-
-### re-entrancy attack (újbóli belépés támadás) {#re-entrancy-attack}
+
-Egy támadás, mely során egy támadó szerződés meghívja az áldozat szerződés egyik függvényét úgy, hogy újra meghívja a függvényt lefutás közben rekurzívan. Ez például a pénz ellopását eredményezheti úgy, hogy kihagy egy pár lépést az áldozat szerződéséből, mely frissítené az egyenlegeket vagy számolná a kiutalási mennyiségeket.
+
-
- Újbóli belépés (re-entrancy)
-
+
-### reward (jutalom) {#reward}
+
-Egy minden egyes blokkban jelenlévő ether mennyiség, mely a jutalom a [bányásznak](#miner), aki megtalálta a [proof-of-work](#pow) megoldást.
+
-### Recursive Length Prefix (RLP) {#rlp}
-
-Egy Ethereum fejlesztők által megtervezett kódolási szabvány tetszőlegesen komplex és tetszőlegesen hosszú objektumok (adat struktúrák) kódolására és sorosítására.
-
-### rollups (összevont tranzakciók) {#rollups}
-
-A [2. réteg](#layer-2) skálázódásának egyik módszere, amely több tranzakciót gyűjt össze, és egyszerre, egyetlen tranzakcióban küldi el őket az [Ethereum főhálózatára](#mainnet). Ez lehetővé teszi a [gáz](#gas) költségének csökkentését, és növeli a feldolgozható [tranzakciók](#transaction) számát. Vannak Optimistic és Zero-knowledge típusú összevont tranzakciók, melyek különböző biztonsági módszert használnak, hogy elérjék a skálázási eredményt.
-
-
- Összegzők
-
+
## S {#section-s}
-### Serenity {#serenity}
-
-Az Ethereum negyedik és végső fejlesztési fázisa.
-
-
- Ethereum 2.0 (Eth2)
-
-
-### Secure Hash Algorithm (SHA) {#sha}
-
-Kriptográfiai hash függvények egy családja, melyet a National Institute of Standards and Technology (NIST) adott ki.
+
-### shard / shard lánc {#shard}
+
-Egy [proof-of-stake](#proof-of-stake) lánc, melyet a [Beacon Chain](#beacon-chain) koordinált és a [validátorok](#validator) tartják biztonságban. 64 lesz hozzáadva a hálózathoz az Eth2 shard lánc fejlesztés részeként. A shard láncok megnövelt tranzakció átvitelt tesznek majd lehetővé az Ethereumon extra adat szolgáltatással az olyan [2. réteg](#layer-2) megoldások részére, mint az [optimista összegzők](#optimistic-rollups) és az [ZK összegzők](#zk-rollups).
+
-
- Shard láncok
-
+
-### Sidechain (melléklánc) {#sidechain}
+
-Egy skálázási megoldás, mely egy különálló láncot használ másfajta, gyakran gyorsabb, [konszenzus szabályokkal](#consensus-rules). Egy áthidalás szükséges, hogy ezek a mellékláncok a [főhálózathoz](#mainnet) csatlakozzanak. Az [összegzők](#rollups) szintén mellékláncokat használnak, de ehelyett a [főhálózattal](#mainnet) együttműködve teszik ezt.
+
-
- Mellékláncok
-
+
-### singleton {#singleton}
+
-Egy számítógép programozási fogalom, mely egy olyan objektumot jelent, aminek csak egy példánya létezhet.
+
-### slot {#slot}
+
-Időperiódus (12 másodperc), amely alatt egy új [Beacon Chain](#beacon-chain) és [shard](#shard) lánc blokkot terjeszthet elő egy [validátor](#validator) a [letétbizonyíték](#proof-of-stake) alapú rendszerben. A slot lehet üres is. 32 slot tesz ki egy [epochát](#epoch).
+
-
- Proof-of-stake
-
+
-### smart contract (okosszerződés) {#smart-contract}
+
-Egy program, amelyet az Ethereum számítási infrastruktúráján lehet futtatni.
+
-
- Bevezetés az okosszerződésekbe
-
+
-### Solidity {#solidity}
+
-Egy eljárásközpontú (imperatív) programozási nyelv, amelynek szintaxisa hasonló mint a JavaScript, a C++ és a Java. Az Ethereum [okosszerződések](#smart-contract) legnépszerűbb, leggyakrabban használt programozási nyelve. Dr. Gavin Wood alkotta meg.
+
-
- Solidity
-
+
-### Solidity inline assembly {#solidity-inline-assembly}
+
-A [Solidity](#solidity) programokban használható [EVM](#evm) assembly nyelv. Az inline assembly támogatottsága a Solidity-ben megkönnyíti bizonyos műveletek írását.
+
-### Spurious Dragon {#spurious-dragon}
+
-Az Ethereum blokklánc [hard-forkja](#hard-fork), ami a 2.675.000 számú blokknál ment végbe, a szolgáltatásmegtagadási támadások kiküszöbölésének érdekében. (Lásd: [Tangerine Whistle](#tangerine-whistle)). Ezen kívül egy újrajátszási támadások elleni mechanizmust is magában foglalt (lásd: [nonce](#nonce)).
+
-### stablecoin (stabil értékű token) {#stablecoin}
-
-Olyan [ERC-20 token](#token-standard), amelynek értéke egy másik vagyontárgyéhoz van kötve. Léteznek hagyományos devizához, például dollárhoz, nemesfémekhez, például aranyhoz, és más kriptovalutákhoz, például Bitcoinhoz kötött értékű stablecoinok.
-
-
- Az ETH nem az egyedüli kripto az Ethereumon
-
-
-### staking (letétbe helyezés) {#staking}
-
-Adott mennyiségű [ether](#ether) letétbe helyezése a validátorrá válás és a [hálózat](#network) biztosításának érdekében. A validátor ellenőrzi a [tranzakciókat](#transaction), és új [blokkokat](#block) terjeszt elő a [letétbizonyíték](#pos) konszenzus-modellje alapján. A letétbe helyezés pénzügyi motivációt ad arra, hogy a hálózat érdekét szem előtt tartva járj el. A [validátori](#validator) feladatok elvégzéséért jutalomban részesülsz, de váltzó mennyiségű ETH-t veszíthetsz el, ha nem így teszel.
-
-
- Helyezd letétbe az ETH-ed, hogy Ethereum validátorrá válhass
-
-
-### state channels (állapot csatornák) {#state-channels}
-
-Egy [2. rétegű](#layer-2) megoldás, ahol egy csatorna van létrehozva a résztvevők között és ahol szabadon és kis költséggel indíthatnak tranzakciókat. Csak egy, a csatornát megnyitó és a csatornát lezáró, [tranzakció](#transaction) kerül fel a [főhálózatra](#mainnet). Ez nagyon magas tranzakció átvitelt tesz lehetővé, de a résztvevők számának előzetes ismeretére, valamint a tőke lekötésére támaszkodik.
-
-
- Állapot csatornák
-
-
-### szabo {#szabo}
-
-Az [ether](#ether) egyik címlete. 1 szabo = 1012 [wei](#wei), 106 szabo = 1 ether.
+
## T {#section-t}
-### Tangerine Whistle {#tangerine-whistle}
-
-Az Ethereum blokklánc egyik[hard-forkja](#hard-fork), mely az 2,463,000 számú blokknál történt és megváltoztatta a [gáz](#gas) számítást bizonyos I/O intenzív műveleteknél, valamint ezután törlődik a szolgáltatás megtagadás támadás után felhalmozott állapot, mely kihasználta az alacsony gáz díjakat ezeknél a műveleteknél.
-
-### testnet (tesztnet) {#testnet}
-
-A "test network", (vagyis "teszthálózat") rövidítése. A fő Ethereum hálózat (lásd: [főhálózat](#mainnet)) viselkedésének szimulálására használt hálózat.
-
-
- Tesztnetek
-
-
-### token standard (token szabvány) {#token-standard}
-
-Az ERC-20 előterjesztéssel került be a rendszerbe ez a standardizált [okosszerződési](#smart-contract) struktúra a felcserélhető tokenek kezelésére. Az egyazon szerződésből származó tokenek követhetők, eladhatók, és az [NFT](#nft)-kkel ellentétben felcserélhetők.
-
-
- ERC-20 Token Szabvány
-
+
-### tranzakció {#transaction}
+
-Az Ethereum Blokkláncra küldött, egy feladó [számla](#account) által aláírt, egy bizonyos [címet](#address) célzó adat. A tranzakció metaadatokat tartalmaz, mint például az adott tranzakció [gáz limitje](#gas-limit).
+
-
- Tranzakciók
-
+
-### transaction fee (tranzakciós díj) {#transaction-fee}
+
-Egy díj, amit minden alkalommal ki kell fizetned, amikor az Ethereum hálózatot használod. Díjat kell fizetned például akkor, ha pénzt küldesz a [tárcádból](#wallet), vagy interakcióba lépsz egy [dapp](#dapp)al, például tokeneket váltasz, vagy gyűjthető tárgyat vásárolsz. Úgy is gondolhatsz erre, mint egy szolgáltatás ára. A díj mértéke attól függően változik, hogy mennyire van leterhelve a hálózat. Ez azért van, mert a [bányászok](#miner), akik a tranzakciók feldolgozásáért felelnek, valószínűleg előrébb veszik a magasabb díjjal járó tranzakciókat - így a leterheltség felfelé mozdítja az árakat.
+
-Technikai szempontból a tranzakciós díj attól függ, mennyi [gázra](#gas) van szükség a tranzakciód végrehajtásához.
-
-A tranzakciós díjak csökkentésének témáját nagy érdeklődés övezi mostanában. Lásd: [2. réteg](#layer-2)
-
-### Turing complete (Turing-teljes) {#turing-complete}
-
-Az angol matematikus és számítástechnikus Alan Turing után elnevezett fogalom - az adatmanipulációs szabályok rendszere (például egy számítógép utasításai, egy programozási nyelv, vagy egy sejtautomata) "Turing-teljesnek" vagy számítási szempontból univerzálisnak mondható, ha bármely Turing-gép szimulálására használható.
+
## V {#section-v}
-### validátor {#validator}
-
-Egy [csomópont](#node) a [letétbizonyíték](#proof-of-stake) alapú rendszerben, amely az adattárolásért, a tranzakciók felolgozásáért, és az új blokkok blokklánchoz való hozzáadásáért felel. A validátor-szoftver aktiválásához 32 ETH-t kell [letétbe helyezned](#staking).
-
-
- Proof-of-stake
-
- Letétbe helyezés az Ethereumon
-
-
-### Validity proof (érvényességi bizonyíték) {#validity-proof}
-
-Egyes [2. réteges](#layer-2) megoldások biztonsági modellje, amely a feldolgozási sebesség növelésének érdekében a tranzakciókat [összevonják](/#rollups), és egyetlen tranzakció keretében küldik el az Ethereum hálózatra. A tranzakciós számítások a láncon kívül történnek, majd az érvényességük bizonyítékával együtt kerülnek fel a láncra. Ez a módszer növeli a végrehajtható tranzakciók számát, mialatt a biztonságot is fenntartja. Egyes [összesített tranzakciók](#rollups) [csalási bizonyítást](#fraud-proof) használnak.
-
-
- Zero-knowledge összegzők
-
-
-### Validium {#validium}
+
-[2. réteges](#layer-2) megoldás, amely [érvényességi bizonyítást](#validity-proof) használ a feldolgozható tranzakciók számának növelésére. A [Zero-knowledge összegzőkkel](#zk-rollup) ellentétben a Validium adat nem az 1. rétegű [főhálózaton](#mainnet) tárolódik.
+
-
- Validium
-
+
-### Vyper {#vyper}
+
-Egy magas szintű programozási nyelv Python-szerű szintaxissal. Az a célja, hogy megközelítse a tiszta funkcionális nyelvet. Vitalik Buterin készítette.
-
-
- Vyper
-
+
## W {#section-w}
-### wallet (tárca) {#wallets}
-
-Szoftver, amely a [privát kulcsokat](#private-key) tartalmazza. Az Ethereum [számlák](#account) elérésére és kezelésére, valamint az [okosszerződésekkel](#smart-contract) való interakcióra használható. A kulcsokat nem kell a tárcában tárolni, a nagyobb biztonság érdekében lehetséges offline tárhelyen (például memóriakártyán vagy papíron) őrizni azokat. Neve ellenére a tárca soha nem tartalmazza a tényleges érméket vagy tokeneket.
-
-
- Ethereum tárcák
-
-
-### Web3 {#web3}
+
-A világháló harmadik verziója. A Web3, amit először Dr. Gavin Wood írt le, új célt tűz ki a webes applikációknak - központilag birtokolt és menedzselt applikációk helyett decentralizált protokollokra épülő applikációk (lásd: [Dapp](#dapp)).
+
-
- Web2 vs Web3
-
-
-### wei {#wei}
-
-Az [ether](#ether) legkisebb címlete. 1018 wei = 1 ether.
+
## Z {#section-z}
-### zero address (zéró számla) {#zero-address}
-
-Egy speciális, kizárólag nullákat tartalmazó Ethereum cím, amely a [szerződés létrehozó tranzakciók](#contract-creation-transaction) címzettjeként működik.
-
-### Zero-knowledge rollup (Nulla tudás alapú összevont tranzakció) {#zk-rollup}
+
-[Érvényességi bizonyítást](#validity-proof) használó tranzakciók [összevonása](#rollups), a [2. réteg](#layer-2) tranzakciófelolgozási kapacitásának, és a [főhálózat](#mainnet) (1. réteg) által nyújtott biztonság elérésének érdekében. Bár ezek nem képesek olyan komplex tranzakciókat kezelni, mint az [Optimistic típusú összevont tranzakciók](#optimistic-rollups), nincsenek késleltetési problémáik, mert a tranzakciók feltételezhetően érvényesek a hálózatra küldés pillanatában.
+
-
- Zero-knowledge összegzők
-
+
@@ -821,8 +440,8 @@ _Részben a [Mastering Ethereum](https://github.com/ethereumbook/ethereumbook)al
-## Járulj hozzá az oldalhoz {#contribute-to-this-page}
+## Járuljon hozzá az oldalhoz {#contribute-to-this-page}
-Kihagytunk valamit? Valami nem helyes? Segíts nekünk jobbá tenni úgy, hogy közreműködsz ehhez a szójegyzékhez a GitHub-on!
+Kihagytunk valamit? Valami nem helyes? Segítsen nekünk jobbá tenni úgy, hogy közreműködik a szójegyzék fejlesztésében a GitHubon!
-[Tudj meg többet a hozzájárulásról](/contributing/adding-glossary-terms)
+[Tudj meg többet a közreműködésről](/contributing/adding-glossary-terms)
diff --git a/public/content/translations/hu/history/index.md b/public/content/translations/hu/history/index.md
index 79fb9e55439..3f1c4cb751e 100644
--- a/public/content/translations/hu/history/index.md
+++ b/public/content/translations/hu/history/index.md
@@ -1,22 +1,214 @@
---
-title: Az Ethereum története
-description: Az Ethereum blokklánc története a nagyobb mérföld kövekkel, kiadásokkal és forkokkal.
+title: Az Ethereum története és elágazásai
+description: Az Ethereum blokklánc története a nagyobb mérföldkövekkel, frissítésekkel és elágazásokkal.
lang: hu
sidebarDepth: 1
-isOutdated: true
---
# Az Ethereum története {#the-history-of-ethereum}
-Az Ethereum blokklánc összes fontos mérföldkövének, forkjának és frissítésének idővonala.
+Az Ethereum blokklánc összes fontos mérföldkövének, elágazásának és frissítésének idővonala.
-
+
-A forkok a hálózat nagyobb technikai frissítései vagy változtatásai esetében jönnek létre – általában az [Ethereum Fejlesztési Javaslatokból (EIP-k)](/eips/) származnak és megváltoztatják a protokoll "szabályait".
+Az elágazások a hálózat nagyobb technikai frissítései vagy változtatásai esetében jönnek létre – általában az Ethereum fejlesztési javaslatokból (EIP) származnak és megváltoztatják a protokoll „szabályait”.
-Amikor a hagyományos, központi irányítású szoftverek esetében szükséges egy frissítés, a cég csak kibocsájt egy új verziót a végfelhasználó részére. A blokkláncok máshogy működnek, mivel nincsen központi tulajdonjog. Az [Ethereum klienseknek](/developers/docs/nodes-and-clients/) kell frissíteni a szoftverjüket, hogy implementálják az új változtatásokat. Ezenkívül a blokk létrehozóknak (bányászok egy proof-of-work rendszerben, validátorok egy proof-of-stake rendszerben) és a csomópontoknak blokkokat kell létrehozniuk és az új szabályokkal szembe menően validálniuk. [Többet a konszenzus mechanizmusokról](/developers/docs/consensus-mechanisms/)
+Amikor a hagyományos, központi irányítású szoftverek esetében szükséges egy frissítés, a cég csak kibocsájt egy új verziót a végfelhasználó részére. A blokkláncok máshogy működnek, mivel nincsen központi tulajdonjog. Az Ethereum-klienseknek frissíteni kell a szoftverjét, hogy az új elágazási szabályokat életbe léptessék. Ezenkívül a blokklétrehozóknak (bányászok egy proof-of-work rendszerben, validátorok egy proof-of-stake rendszerben) és a csomópontoknak blokkokat kell létrehozniuk és az új szabályokkal szembemenően kell validálniuk. Bővebben a konszenzusmechanizmusokról
-Ezek a szabályváltoztatások átmeneti törést okozhatnak a hálózatban. Új blokkok jöhetnek létre az új szabályok vagy a régiek szerint. A forkokról általában előzetes egyezség születik, így a kliensek együttesen vezetik be a változtatásokat és a változásokkal rendelkező fork válik a fő lánccá. Azonban néha előfordul nézeteltérés a forkokat illetően, mely a lánc megmaradó kettészakadását eredményezi - a legismertebb ilyen eset az Ethereum Classic létrejötte volt a [DAO forkkal](#dao-fork).
+Ezek a szabályváltozások létrehozhatnak egy átmeneti szétválást a hálózatban. Új blokkok jöhetnek létre az új szabályok vagy a régiek szerint. Az elágazásokról általában előzetes egyezség születik, így a kliensek együttesen vezetik be a változtatásokat és a változásokkal rendelkező elágazás válik a fő lánccá. Azonban néha előfordul nézeteltérés az elágazásokat illetően, mely a lánc megmaradó kettészakadását eredményezi – a legismertebb ilyen eset az Ethereum Classic létrejötte volt a DAO elágazással.
+
+
+
+Odaugorhat akár néhány rendkívül fontos frissítéshez: [A Beacon lánc](/roadmap/beacon-chain/); [A Merge](/roadmap/merge/); és [EIP-1559](#london)
+
+Az elkövetkező protokollfrissítések érdeklik? [Tudjon meg többet a következő frissítésekről az Ethereum ütemtervéből](/roadmap/).
+
+
+
+## 2023 {#2023}
+
+### Shanghai {#shanghai}
+
+
+
+#### Összegzés {#shanghai-summary}
+
+A Shanghai frissítés bevezette a letétek kivonási lehetőségét a végrehajtási rétegen. A Capella frissítéssel együtt ez lehetővé tette, hogy a blokkok kivonási műveletet fogadjanak el, amivel a letétesek ki tudják venni az ETH a Beacon láncról a végrehajtási rétegre.
+
+
+
+
+
+
+
+- [Olvassa el a Shanghai frissítés specifikációit](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
+
+---
+
+### Capella {#capella}
+
+
+
+#### Összegzés {#capella-summary}
+
+A Capella frissítés a harmadik legnagyobb frissítés volt a konszenzusrétegen (Beacon lánc) és lehetővé tette a letétek kivételét. A Capella egyszerre történt a Shanghai frissítéssel, ami a végrehajtási réteget változtatta meg, s így lehetővé vált a letét kivétele.
+
+Ez a konszenzusréteg frissítés megengedte a letétbe helyezőknek, hogy ha a letét kezdetén nem adtak meg kivételi adatokat, akkor most megtehessék.
+
+Emellett bevezették az automatikus számlasöprési funkciót, ami folyamatosan átnézi a validátorok számláit, hogy van-e kifizetendő jutalom vagy teljes kivétel.
+
+- [Bővebben a letétek visszavonásáról](/staking/withdrawals/).
+- [Olvassa el a Capella frissítés specifikációit](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/)
+
+
+
+## 2022 {#2022}
+
+### Paris (a Merge) {#paris}
+
+
+
+#### Összegzés {#paris-summary}
+
+A Paris frissítést az váltotta ki, hogy a proof-of-work blokklánc meghaladta a [végső teljes nehézséget](/glossary/#terminal-total-difficulty), melynek mértéke 58750000000000000000000 volt. Az a 15537393. blokknál történt 2022. szeptember 15-én, így kiváltva a következő blokktól a Paris frissítést. A Paris volt [a beolvadás (Merge)](/roadmap/merge/) áttérés, melynek fő jellemzője a [proof-of-work](/developers/docs/consensus-mechanisms/pow) bányászó algoritmus és a kapcsolódó konszenzuslogika kikapcsolása, ehelyett pedig a [proof-of-stake](/developers/docs/consensus-mechanisms/pos) bekapcsolása. Paris egyúttal frissítette a [végrehajtási klienseket](/developers/docs/nodes-and-clients/#execution-clients) (a Bellatrix-hoz hasonlóan, ami a konszenzusrétegen tette), hogy instrukciókat tudjanak fogadni a velük kapcsolódó [konszenzuskliensektől](/developers/docs/nodes-and-clients/#consensus-clients). Ehhez szükség volt arra, hogy a belső API metódusok egy új készletét, az [Engine API-kat](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) aktiválják. Ez kétségtelenül az Ethereum történetének legjelentősebb frissítése volt a [Homestead](#homestead) óta!
+
+- [Olvassa el a Paris frissítés specifikációit](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)
+
+
+
+
+
EIP-3675 – A konszenzus frissítése proof-of-stake-re
+
EIP-4399 – A DIFFICULTY opkód kiváltása PREVRANDAO-val
+
+
+
+
+---
+
+### Bellatrix {#bellatrix}
+
+
+
+#### Összegzés {#bellatrix-summary}
+
+A Bellatrix frissítés a második betervezett frissítés volt a [Beacon láncra](/roadmap/beacon-chain), hogy előkészítse a láncot a [Merge-re](/roadmap/merge/). Ezzel a validátorok büntetései teljes értékűek lettek az aktivitás hiányára és a súlyos büntetésekre vonatkozóan. A Bellatrix szintén hozott egy frissítést az elágazásválasztás szabályaiba, hogy felkészítse a láncot a Merge-re és arra, hogy az utolsó proof-of-work blokk után az első proof-of-stake blokk következzen. A konszenzuskliensek ezzel tudatosak lettek az 58750000000000000000000 [végső teljes nehézségről](/glossary/#terminal-total-difficulty).
+
+- [Olvassa el a Bellatrix frissítés specifikációit](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix)
+
+---
+
+### Gray Glacier {#gray-glacier}
+
+
+
+#### Összegzés {#gray-glacier-summary}
+
+A Gray Glacier hálózati frissítés eltolta a [nehézségbombát](/glossary/#difficulty-bomb) három hónappal. Ez a frissítés csak ezt változtatta meg, s így természetében hasonlít a [Arrow Glacier](#arrow-glacier) és a [Muir Glacier](#muir-glacier) frissítésekhez. Hasonló változtatások történtek a [Byzantium](#byzantium), [Constantinople](#constantinople) és [London](#london) hálózati frissítéseknél is.
+
+- [EF Blog – Gray Glacier frissítés bejelentése](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/)
+
+
+
+
+
EIP-5133 – A nehézségbomba elhalasztása 2022. szeptemberig
+
+
+
+
+
+
+## 2021 {#2021}
+
+### Arrow Glacier {#arrow-glacier}
+
+
+
+#### Összegzés {#arrow-glacier-summary}
+
+Az Arrow Glacier hálózati frissítés eltolta a [nehézségbombát](/glossary/#difficulty-bomb) néhány hónappal. Ez a frissítés csak ezt változtatta meg, s így természetében hasonlít a [Muir Glacier](#muir-glacier) frissítéshez. Hasonló változtatások történtek a [Byzantium](#byzantium), [Constantinople](#constantinople) és [London](#london) hálózati frissítéseknél is.
+
+- [EF Blog – Arrow Glacier frissítés bejelentése](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/)
+- [Ethereum Cat Herders – Ethereum Arrow Glacier frissítés](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002)
+
+
+
+
+
EIP-4345 – A nehézségbomba elhalasztása 2022. júniusig
+
+
+
+
+---
+
+### Altair {#altair}
+
+
+
+#### Összegzés {#altair-summary}
+
+Az Altair frissítés a [Beacon lánc](/roadmap/beacon-chain) első tervezett változtatása volt. A „szinkronizálási bizottságokhoz” adott támogatást, mint a könnyű kliensek bevezetése, valamint megnövelte a validátor nem aktivitás és súlyos büntetések mértékét, hogy előkészítse a Merge-t.
+
+- [Olvassa el az Altair frissítés specifikációit](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair)
+
+#### Érdekesség {#altair-fun-fact}
+
+Az Altair volt az első nagyobb hálózati frissítés, aminek konkrét bevezetési ideje volt. Az összes korábbi frissítés egy adott blokkszám alapján történt a proof-of-work láncon, ahol a blokkonkénti idő változó. A Beacon láncnak nem kellett igazodnia a proof-of-work-höz, így időalapú korszakok rendszerén alapszik, amelyek 32 darab 12 másodperces slotokból állnak, s a validátorok ezekben tudnak blokkot javasolni. Így pontosan lehetett tudni, hogy mikor következik a 74.240. korszak, s az Altair élesbe lép!
+
+- [Blokk idő](/developers/docs/blocks/#block-time)
+
+---
+
+### London {#london}
+
+
+
+#### Összegzés {#london-summary}
+
+A London frissítés bevezette az [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) változást, ami megreformálta a tranzakciós díj piacot, azzal együtt, hogyan kezelik a gázvisszatérítéseket, valamint betervezte az [Ice Age-et](/glossary/#ice-age).
+
+- [Ön egy dapp-fejlesztő? Feltétlenül frissítse a könyvtárakat és az eszközöket.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md)
+- [Olvassa el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/)
+- [Olvassa el az Ethereum Cat Herder magyarázatát](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41)
+
+
+
+
EIP-3529 – Csökkenti a gázvisszatérítést az EVM műveletekre
+
EIP-3541 – Megakadályozza olyan szerződések telepítését, melyek 0xEF kóddal kezdődnek
+
EIP-3554 – Elhalasztja az Ice Age-et 2021. decemberig
+
+
+
+
+---
+
+### Berlin {#berlin}
+
+
+
+#### Összegzés {#berlin-summary}
+
+A Berlin frissítés optimalizálta a gázköltséget bizonyos EVM műveleteknél, s több támogatást adott a többszörös tranzakció típusokra.
+
+- [Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/)
+- [Olvasd el az Ethereum Cat Herder magyarázatát](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80)
+
+
+
+
EIP-2718 – Könnyebb támogatást tesz lehetővé a többszörös tranzakciótípusokra
+
EIP-2929 – A gázköltséget megnöveli a státuszelérő opkódokra
+
EIP-2930 – Opcionális hozzáféréslistákat hoz létre
+
@@ -24,13 +216,13 @@ Ezek a szabályváltoztatások átmeneti törést okozhatnak a hálózatban. Új
## 2020 {#2020}
-### Beacon Chain genesis {#beacon-chain-genesis}
+### Beacon lánc genezis {#beacon-chain-genesis}
-#### Összefoglaló {#beacon-chain-genesis-summary}
+#### Összegzés {#beacon-chain-genesis-summary}
-A [Beacon Chain](/roadmap/beacon-chain/) biztonságos elindításához 16384 darab 32 ETH-nyi letétre volt szükség. Ez november 27.-én történt meg, vagyis a Beacon Chain a blokkok létrehozását december 1.-jén kezdte meg 2020-ban. Ez az [Eth2 vízió](/roadmap/vision/) elérésének fontos első lépése.
+A [Beacon lánc](/roadmap/beacon-chain/) biztonságos elindításához 16384 darab 32 ETH-nyi letétre volt szükség. Ez november 27-én történt meg, vagyis a Beacon lánc a blokkok létrehozását 2020. december 1-jén kezdte meg. Ez az [Ethereum vízió](/roadmap/vision/) elérésének fontos első lépése volt.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/)
@@ -44,9 +236,9 @@ A [Beacon Chain](/roadmap/beacon-chain/) biztonságos elindításához 16384 dar
-#### Összefoglaló {#deposit-contract-summary}
+#### Összegzés {#deposit-contract-summary}
-A letétbe helyezési szerződés bemutatta a [letétbe helyezés](/glossary/#staking) rendszerét az Ethereum ökoszisztémában. Bár [főhálózati](/glossary/#mainnet) szerződés, közvetlenül befolyásolta egy fontos [Eth2 frissítés](/roadmap/), a [Beacon Chain](/roadmap/beacon-chain/) indításának ütemezését.
+A letétbe helyezési szerződés bevezette a [letétbe helyezés](/glossary/#staking) rendszerét az Ethereum ökoszisztémába. Habár ez egy szerződés a [főhálózaton](/glossary/#mainnet), közvetlen hatást gyakorolt a [Beacon lánc](/roadmap/beacon-chain/) bevezetési idejére, ami egy fontos [Ethereum frissítés](/roadmap/).
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/)
@@ -60,16 +252,18 @@ A letétbe helyezési szerződés bemutatta a [letétbe helyezés](/glossary/#st
-#### Összefoglaló {#muir-glacier-summary}
+#### Összegzés {#muir-glacier-summary}
-A Muir Glacier nevű fork késleltetést vezetett be a [nehézségi bombához](/glossary/#difficulty-bomb). A blokknehézség növelése a [proof-of-work](/developers/docs/consensus-mechanisms/pow/) konszenzus-mechanizmusában azzal fenyegetett, hogy az Ethereum használhatósága csökkenni fog, mert a tranzakciók küldése és a dappok használata több időt fog igénybe venni.
+A Muir Glacier nevű elágazás késleltetést vezetett be a [nehézségi bombához](/glossary/#difficulty-bomb). A blokknehézség növelése a [proof-of-work](/developers/docs/consensus-mechanisms/pow/) konszenzusmechanizmusában azzal fenyegetett, hogy az Ethereum használhatósága csökkenni fog, mert a tranzakciók küldése és a dappok használata több időt fog igénybe venni.
- [Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/)
- [Olvasd el az Ethereum Cat Herder magyarázatát](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210)
-
+
-- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _újabb 4,000,000 blokkal, vagy ~611 nappal késlelteti a nehézségi bomba bekövetkezését._
+
+
EIP-2384 – Eltolta a nehézségbomba bevezetését újabb 4.000.000 blokkal vagy kb. 611 nappal.
+
@@ -81,26 +275,28 @@ A Muir Glacier nevű fork késleltetést vezetett be a [nehézségi bombához](/
-#### Összefoglaló {#istanbul-summary}
+#### Összegzés {#istanbul-summary}
-Az Istanbul fork:
+Az Istanbul elágazás:
-- Bizonyos műveletek [gas](/glossary/#gas) díj optimalizálása az [EVM-ben](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
-- Továbbfejlesztett szolgáltatás megtagadásos támadás elleni ellenállás.
-- A SNARKokon és a STARKokon alapuló [2. réteges skálázási](/developers/docs/layer-2-scaling/) megoldások teljesítményének javítása.
+- Bizonyos műveletek [gázdíj](/glossary/#gas) optimalizálása az [EVM-ben](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
+- Fejlettebb védekezés a szolgáltatásmegtagadásos támadás ellen.
+- A SNARKokon és a STARKokon alapuló [második blokkláncréteg (L2) skálázási](/developers/docs/scaling/#layer-2-scaling) megoldások teljesítményének javítása.
- Az Ethereum és a Zcash közötti együttműködés bevezetése.
-- Az okosszerződések kreatívabb függvényeinek lehetővé tétele.
+- Az okosszerződésekben kreatívabb függvényeket tett lehetővé.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/)
-
+
-- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _adatvédelmet biztosító valuták használata az Ethereumon, mint a Zcash._
-- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _olcsóbb kriptográfia a [gas](/glossary/#gas) díjak csökkentésére._
-- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _az Ethereum védelme a visszajátszási támadásokkal szemben a `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine) bevezetésével._
-- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _opkód gáz árak optimálása a fogyasztás alapján._
-- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _a CallData díjának csökkentése, hogy több adat férjen a blokkba – jó a [2. rétegű skálázásnak](/developers/docs/layer-2-scaling/)._
-- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _egyéb opkód gáz változtatások._
+
+
EIP-152 – Az Ethereum együtt tud működni az adatvédelmet megőrző valutával, mint amilyen a Zcash.
+
EIP-1108 – Olcsóbb kriptográfia, hogy javuljon a gázdíj.
+
EIP-1344 – Az Ethereumot védi az újrajátszási támadással szemben a CHAINIDopkód bevezetésével.
+
EIP-1884 – Optimizálja az opkód gázárakat a fogyasztás alapján.
+
EIP-2028 – A CallData költségének csökkentése, hogy több adat férjen be a blokkokba, ami támogatja az L2 skálázást.
@@ -110,22 +306,25 @@ Az Istanbul fork:
-#### Összefoglaló {#constantinople-summary}
+#### Összegzés {#constantinople-summary}
-A Constantinople fork:
+A Constantinople elágazás:
+- A [blokkbányászat](/developers/docs/consensus-mechanisms/pow/mining/) jutalmának csökkentése 3 ETH-ről 2-re.
- A blokklánc lefagyásának megakadályozása, mielőtt a [proof-of-stake bevezetésre kerülne](#beacon-chain-genesis).
-- Bizonyos műveletek [gas](/glossary/#gas) díj optimálása az [EVM-ben](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
+- Bizonyos műveletek [gázdíj](/glossary/#gas) optimalizálása az [EVM-ben](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
- Lehetőség olyan címekkel történő interakcióra, melyek még nem jöttek létre.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/)
-
+
-- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _bizonyos on-chain műveletek díjának optimalizálása._
-- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _lehetőség olyan címekkel történő interakcióra, melyek még nem jöttek létre._
-- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _bizonyos on-chain műveletek díjának optimalizálása._
-- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _A blokklánc lefagyásának megakadályozása, mielőtt a proof-of-stake bevezetésre kerülne._
+
+
EIP-145 – Optimizálja bizonyos láncon futó működések költségét.
+
EIP-1014 – Lehetővé teszi az interakciót olyan szerződésekkel, melyeket még nem hoztak létre.
+
EIP-1052 – Optimizálja bizonyos láncon futó működések költségét.
+
EIP-1234 – Megakadályozza, hogy a blokklánc lefagyjon a proof-of-stake bevezetése előtt, és csökkenti a blokkjutalmat 3 ETH-ről 2-re.
+
@@ -137,28 +336,30 @@ A Constantinople fork:
-#### Összefoglaló {#byzantium-summary}
+#### Összegzés {#byzantium-summary}
-A Byzantium fork:
+A Byzantium elágazás:
-- A [bányászati](/developers/docs/consensus-mechanisms/pow/mining/) blokk jutalom csökkentése 5-ről 3 ETH-re.
-- A [nehézségi bomba](/glossary/#difficulty-bomb) késleltetése egy évvel.
-- Más szerződések is indíthatnak állapotot nem befolyásoló hívásokat.
-- Bizonyos kriptográfiai metódusok hozzáadása, mely lehetővé teszi a [2. réteges skálázást](/developers/docs/layer-2-scaling/).
+- A [blokkbányászat](/developers/docs/consensus-mechanisms/pow/mining/) jutalmának csökkentése 5 ETH-ről 3-ra.
+- A [nehézségbomba](/glossary/#difficulty-bomb) késleltetése egy évvel.
+- Bevezették azt a lehetőséget, hogy állapotot nem befolyásoló hívásokat lehet indítani más szerződések felé.
+- Bizonyos kriptográfiai módszerek hozzáadása, hogy támogassa az [L2 skálázást](/developers/docs/scaling/#layer-2-scaling).
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/)
-
+
-- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _`REVERT` opkód hozzáadása._
-- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _státusz mező hozzáadása a tranzakció nyugtákhoz, mely jelzi hogy sikeres volt-e._
-- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _elliptikus görbe és skaláris szorzás bevezetése, mely lehetővé teszi a [ZK-Snarkokat](/developers/docs/layer-2-scaling/#rollups)._
-- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _elliptikus görbe és skaláris szorzás bevezetése, mely lehetővé teszi a [ZK-Snarkokat](/developers/docs/layer-2-scaling/#rollups)._
-- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _RSA aláírás hitelesítés bevezetése._
-- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _változó hosszú visszatérítési érték támogatása._
-- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _a `STATICCALL` opkód hozzáadása, mely lehetővé teszi az állapotot nem befolyásoló hívások indítását a többi szerződésnek._
-- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _a nehézséget szabályozó képlet megváltoztatása._
-- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _a [nehézségi bomba](/glossary/#difficulty-bomb) késleltetése 1 évvel és a blokk jutalom 5-ről 3-ra csökkentése._
+
EIP-658 – A tranzakció visszaigazolásba bekerült a státuszmező, hogy mutassa a sikeres vagy sikertelen végrehajtást.
+
EIP-196 – Az elliptikus görbe és a skaláris szorzást bevezetése, hogy támogassa a ZK-SNARK-okat.
+
EIP-197 – Az elliptikus görbe és a skaláris szorzást bevezetése, hogy támogassa a ZK-SNARK-okat.
+
EIP-198 – Az RSA aláírásellenőrzés lehetővé tétele.
+
EIP-211 – A változó hosszúságú visszatérési értékek támogatása.
+
EIP-214 – A STATICCALL opkód bevezetése, hogy állapotot nem befolyásoló hívásokat lehessen indítani más szerződések felé.
+
EIP-100 – A nehézség beállítási formulájának változtatása.
+
EIP-649 – A nehézségbomba elhalasztása 1 évvel, s a blokkjutalom csökkentése 5 ETH-ről 3-ra.
+
@@ -170,22 +371,24 @@ A Byzantium fork:
-#### Összefoglaló {#spurious-dragon-summary}
+#### Összegzés {#spurious-dragon-summary}
-A Spurious Dragon fork volt a második válasz a szolgáltatás megtagadásos (DoS) támagásokkal szemben a hálózaton (2016 szeptember/október), mely az alábbiakat tartalmazta:
+A Spurious Dragon elágazás volt a második válasz a szolgáltatás megtagadásos (DoS) támadásokkal szemben a hálózaton (2016 szeptember/október), mely az alábbiakat tartalmazta:
- opkód árazás finomhangolása a jövőbeli támadások megakadályozása érdekében.
-- a blokklánc állapot "leeresztésének" lehetővé tétele.
+- a blokklánc állapot „leeresztésének” lehetővé tétele.
- visszajátszásos támadás elleni védelem hozzáadása.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/)
-
+
-- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _megakadályozza, hogy az Ethereum láncról származó tranzakciókat újra lehessen küldeni egy másik láncon, például egy tesztnet tranzakciót újra küldeni a fő Ethereum hálózatra._
-- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _az `EXP` opkód árának beállítása – megnehezíti a hálózat lelassítására irányuló törekvéseket számításilag költséges szerződés műveletekkel._
-- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _lehetővé teszi az üres számlák törlését, melyeket a DOS támadás közben adtak hozzá._
-- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _megváltoztatja a maximális kód méretet, mellyel egy blokkláncon lévő szerződés rendelkezhet – 24576 bájtra._
+
+
EIP-155 – Megakadályozza, hogy egy Ethereum-láncról a tranzakciókat újra elküldjék egy alternatív láncon, például egy teszthálózati tranzakciót lejátszanak a főhálózaton.
+
EIP-160 – Az EXP opkód árigazítása, hogy ezáltal nehezebb legyen lelassítani a hálózatot az intenzív számítást igénylő szerződésműködésekkel.
+
EIP-161 – Az üres számlák eltávolítása, melyeket a szolgáltatásmegtagadási (DoS) támadások alatt hoztak létre.
+
EIP-170 – A láncon lévő szerződés maximális kódméretének megnövelése 24576 bájtra.
+
@@ -195,34 +398,36 @@ A Spurious Dragon fork volt a második válasz a szolgáltatás megtagadásos (D
-#### Összefoglaló {#tangerine-whistle-summary}
+#### Összegzés {#tangerine-whistle-summary}
-A Tangerine Whistle fork volt a első válasz a szolgáltatás megtagadásos (DoS) támagásokkal szemben a hálózaton (2016 szeptember/október), mely az alábbiakat tartalmazta:
+A Tangerine Whistle elágazás volt a első válasz a szolgáltatásmegtagadásos (DoS) támadásokkal szemben a hálózaton (2016 szeptember/október), mely az alábbiakat tartalmazta:
- az alulárazott opkódokkal kapcsolatos sürgős hálózati kérdések kezelése.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/)
-
+
-- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _a gázár növelése olyan opkódoknál, melyet lehet használni a spam támadásoknál._
-- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _csökkenti az állapot méretet nagy számú üres számlák törlésével, melyek hozzá lettek adva az állapothoz nagyon alacsony költséggel az Ethereum korábbi verziói hibái miatt._
+
+
EIP-150 – Megnöveli azon opkódok gázköltségeit, melyeket teleszemetelési (spam) támadásokra lehet használni.
+
EIP-158 – Csökkenti a státuszméretet azáltal, hogy eltávolítja az üres számlákat, melyeket alacsony költségen küldtek be a státuszba a korábbi Ethereum protokoll hibái miatt.
+
---
-### DAO fork {#dao-fork}
+### DAO elágazás {#dao-fork}
-#### Összefoglaló {#dao-fork-summary}
+#### Összegzés {#dao-fork-summary}
-A DAO fork volt a válasz a [2016-os DAO támadásra](https://www.coindesk.com/understanding-dao-hack-journalists), amikor egy sérülékeny [DAO](/glossary/#dao) szerződésből 3.6 millió ETH-et ürítettek le a támadás során. A fork átmozgatta a pénzt a hibás szerződésből egy [új szerződésbe](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754), aminek csak egyetlen funkciója van: kiutalás. Bárki aki veszteséget szenvedett el kiutalhatott 1 ETH-et, minden tárcájukban lévő 100 DAO tokenre.
+A DAO elágazás volt a válasz a [2016-os DAO támadásra](https://www.coindesk.com/learn/understanding-the-dao-attack/), amikor egy sérülékeny [DAO](/glossary/#dao) szerződésből 3,6 millió ETH-t ürítettek le a támadás során. Az elágazás átmozgatta a pénzt a hibás szerződésből egy [új szerződésbe](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754), amelynek csak kiutalási funkciója volt. Bárki, aki veszteséget szenvedett el, kivehetett 1 ETH-t a tárcájában lévő minden 100 DAO tokenre.
-Ennek az akciónak a menetét megszavazták az Ethereum közösségen belül. Bármely ETH tulajdonos szavazhatott egy tranzakción keresztül [egy szavazási platformon](http://v1.carbonvote.com/). A fork mellett több mint a szavazók 85%-a voksolt.
+Ennek az akciónak a menetét megszavazták az Ethereum közösségen belül. Bármely ETH tulajdonos szavazhatott egy tranzakción keresztül [egy szavazási platformon](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). A fork mellett több mint a szavazók 85%-a voksolt.
-Némely bányász nem volt hajlandó forkolni, mivel a DAO incidens nem a protokollból származó hibából eredt. Ők ezután létrehozták az [Ethereum Classicot](https://ethereumclassic.org/).
+Némely bányász nem támogatta az elágazást, mivel a DAO incidens nem a protokollból származó hibából eredt. Ők ezután létrehozták az [Ethereum Classicot](https://ethereumclassic.org/).
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2016/07/20/hard-fork-completed/)
@@ -232,17 +437,19 @@ Némely bányász nem volt hajlandó forkolni, mivel a DAO incidens nem a protok
-#### Összefoglaló {#homestead-summary}
+#### Összegzés {#homestead-summary}
-A Homestead fork, mely a jövőbe tekintett. Számos protokoll változtatást tartalmazott és egy hálózati változtatást, mely lehetővé tette az Ethereum számára a további hálózati változtatásokat.
+A Homestead elágazás a jövőbe tekintett. Számos protokollváltoztatást tartalmazott és egy hálózati változtatást, mely lehetővé tette az Ethereum számára a további hálózati változtatásokat.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2016/02/29/homestead-release/)
-
+
-- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _módosítja a szerződés létrehozás folyamatát._
-- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _új opkód hozzáadása: `DELEGATECALL`_
-- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _bevezeti a devp2p előrefelé történő kompatibilitási elvárásokat_
+
+
EIP-2 – A szerződéslétrehozási folyamat szerkesztése.
EIP-8 – Bevezették a devp2p jövőkompatibilitási (forward compatibility) követelményeket
+
@@ -254,11 +461,12 @@ A Homestead fork, mely a jövőbe tekintett. Számos protokoll változtatást ta
-#### Összefoglaló {#frontier-thawing-summary}
+#### Összegzés {#frontier-thawing-summary}
-A frontier thawing fork megszüntette az 5,000-es [gáz](/glossary/#gas) limitet egy [blokkra](/glossary/#block) és beállította az alapértelmezett gáz árat 51 [gweire](/glossary/#gwei). Ez lehetővé tette a tranzakciók létrejöttét – a tranzakciók 21,000 gázt igényeltek.
+A Frontier thawing elágazás megemelte az 5.000-es [gázhatárt](/glossary/#gas) [blokkonként](/glossary/#block) és beállította az alapértelmezett gázárat 51 [gweire](/glossary/#gwei). Ez lehetővé tette a tranzakciók létrejöttét, mivel azokhoz 21.000 gázra van szükség. Bevezették a [nehézségbombát](/glossary/#difficulty-bomb), hogy lehetőség legyen egy jövőbeli végleges elágazásra (hard fork) a [proof-of-stake](/glossary/#pos) mechanizmusra való áttérésnél.
-[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/)
+- [Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/)
+- [Tekintse meg az Ethereum protokollfrissítés 1. cikket](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/)
---
@@ -266,9 +474,9 @@ A frontier thawing fork megszüntette az 5,000-es [gáz](/glossary/#gas) limitet
-#### Összefoglaló {#frontier-summary}
+#### Összegzés {#frontier-summary}
-A Frontier egy működő, de teljesen leegyszerűsített implementációja volt az Ethereum projektnek. Az sikeres Olympic tesztelési fázist követte. A műszaki felhasználóknak készült, kimondottan fejlesztőknek. A [blokkoknak](/glossary/#block) egy 5000-es [gáz](/glossary/#gas) limit volt beállítva. Ez a ‘kiolvasztási’ időszak lehetővé tette a bányászok számára, hogy elindítsák a tevékenységüket és a korai felhasználóknak, hogy telepítsék a klienseiket anélkül, hogy 'sietniük' kellene.
+A Frontier egy működő, de teljesen leegyszerűsített implementációja volt az Ethereum projektnek. A sikeres Olympic tesztelési fázist követte. A műszaki felhasználóknak készült, kimondottan fejlesztőknek. A [blokkoknak](/glossary/#block) egy 5000-es [gázhatár](/glossary/#gas) volt beállítva. Ez a „kiolvasztási” időszak lehetővé tette a bányászok számára, hogy elindítsák a tevékenységüket, és a korai felhasználóknak, hogy telepítsék a klienseiket anélkül, hogy sietniük kellene.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/)
@@ -280,29 +488,29 @@ A Frontier egy működő, de teljesen leegyszerűsített implementációja volt
-A hivatalos Ether eladás 42 napig tartott. BTC-vel tudtál fizetni.
+A hivatalos Ether eladás 42 napig tartott. BTC-vel lehetett érte fizetni.
[Olvasd el az Ethereum Alapítvány közleményét](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/)
---
-### Sárga könyv kiadása {#yellowpaper}
+### Sárgakönyv kiadása {#yellowpaper}
-A Sárga Könyv, melynek a szerzője Dr. Gavin Wood, az Ethereum protokoll műszaki meghatározása.
+A Sárgakönyv, melynek a szerzője Dr. Gavin Wood, az Ethereum protokoll műszaki meghatározása.
-[A Sárga Könyv megtekintése](https://github.com/ethereum/yellowpaper)
+[A Sárgakönyv megtekintése](https://github.com/ethereum/yellowpaper)
## 2013 {#2013}
-### A fehérkönyv kiadása {#whitepaper}
+### A Fehérkönyv kiadása {#whitepaper}
-
+
-A bemutatkozó kiadvány, melyet Vitalik Buterin az Ethereum alapítója adott ki 2013-ban, a projekt 2015-ös indulása előtt.
+A bemutatkozó kiadvány, melyet Vitalik Buterin, az Ethereum alapítója adott ki 2013-ban, a projekt 2015-ös indulása előtt.
Fehérkönyv
diff --git a/public/content/translations/hu/roadmap/beacon-chain/index.md b/public/content/translations/hu/roadmap/beacon-chain/index.md
index 1624261f221..96c27947beb 100644
--- a/public/content/translations/hu/roadmap/beacon-chain/index.md
+++ b/public/content/translations/hu/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ Beacon lánc a neve annak a számlafőkönyvek, amely az Ethereum-[letétesek](/
A Beacon lánc vezette be a [proof-of-stake-et](/developers/docs/consensus-mechanisms/pos/) az Ethereum rendszerébe. Ez tartja fent az Ethereum biztonságát, és a folyamat során a validátorokat több ETH-hoz juttatja. A gyakorlatban a letétbe helyezés úgy néz ki, hogy ETH-t helyez letétbe a validátorszoftver aktiválásához. Letétesként futtatja a szoftvert, amely új blokkokat hoz létre és validál a láncon.
-A letétbe helyezés hasonló célt szolgál, mint korábban a [bányászat](/developers/docs/mining/), de számos tekintetben különbözik attól. A bányászat nagy összegű kezdeti kiadásokkal járt, nagy teljesítményű hardverek beszerzésével és nagy energiafogyasztással, ami a tehetősebbeknek kedvezett, és elősegítette a centralizációt. Emellett a bányászat nem követelte meg a fedezetként szolgáló eszközök zárolását, ezzel korlátozta a protokoll képességét a rosszindulatú szereplők megbüntetésére egy támadás után.
+A letétbe helyezés hasonló célt szolgál, mint korábban a [bányászat](/developers/docs/consensus-mechanisms/pow/mining/), de számos tekintetben különbözik attól. A bányászat nagy összegű kezdeti kiadásokkal járt, nagy teljesítményű hardverek beszerzésével és nagy energiafogyasztással, ami a tehetősebbeknek kedvezett, és elősegítette a centralizációt. Emellett a bányászat nem követelte meg a fedezetként szolgáló eszközök zárolását, ezzel korlátozta a protokoll képességét a rosszindulatú szereplők megbüntetésére egy támadás után.
A proof-of-stake mechanizmusra való áttérés jelentősen fokozta az Ethereum biztonságát és decentralizációját a proof-of-work rendszerhez képest. Minél több ember vesz részt a hálózatban, annál decentralizáltabb és védettebb lesz a támadásokkal szemben.
diff --git a/public/content/translations/hu/roadmap/single-slot-finality/index.md b/public/content/translations/hu/roadmap/single-slot-finality/index.md
index 21e774a6bac..ca0f469eb8a 100644
--- a/public/content/translations/hu/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/hu/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ Ha az aggregáció skálázásához az alhálózatokban megnövelnék a validát
## Jelenlegi helyzet {#current-progress}
-Az SSF még kutatási fázisban van. Nem várható, hogy a következő években bevezetésre kerül, inkább más lényeges fejlesztések után eszközölése várható, mint például a [Verkle-fák](/roadmap/verkle-trees/) és a [Danksharding](/roadmap/danksharding]).
+Az SSF még kutatási fázisban van. Nem várható, hogy a következő években bevezetésre kerül, inkább más lényeges fejlesztések után eszközölése várható, mint például a [Verkle-fák](/roadmap/verkle-trees/) és a [Danksharding](/roadmap/danksharding/).
## További olvasnivaló {#further-reading}
diff --git a/public/content/translations/hu/whitepaper/index.md b/public/content/translations/hu/whitepaper/index.md
index 6ff62f7f28d..d7ed722c436 100644
--- a/public/content/translations/hu/whitepaper/index.md
+++ b/public/content/translations/hu/whitepaper/index.md
@@ -1,57 +1,76 @@
---
title: Ethereum fehérkönyv
-description: Az Ethereum bemutató kiadványa, melyet 2013-ban adtak ki az indulása előtt.
+description: Az Ethereum működéséről szóló kiadvány, melyet 2013-ban adtak ki az indulása előtt.
lang: hu
sidebarDepth: 2
+hideEditButton: true
---
# Ethereum fehérkönyv {#ethereum-whitepaper}
-_Ezt a bemutató kiadványt eredetileg 2013-ban adta ki Vitalik Buterin, az [Ethereum](/what-is-ethereum/) alapítója, a projekt 2015-ös indulása előtt. Fontos megjegyezni, hogy az Ethereum sok másik közösség által vezetett, nyílt forráskódú szoftver projekthez hasonlóan, a kezdeti elindulás óta fejlődött._
+_Ezt a bemutató kiadványt eredetileg 2014-ban adta ki Vitalik Buterin, az [Ethereum](/what-is-ethereum/) alapítója, a projekt 2015-ös indulása előtt. Fontos megjegyezni, hogy az Ethereum sok másik közösség által vezetett, nyílt forráskódú szoftver projekthez hasonlóan, a kezdeti elindulás óta fejlődött._
-_Noha több éve íródott, fenntartjuk ezt a kiadványt, mert továbbra is hasznos referenciaként szolgál és pontos ábrázolást mutat az Ethereumról és annak jövőképéről. Ha többet szeretnél megtudni az Ethereum legutóbbi fejlesztéseiről és az általunk elvégzett protokoll változtatásokról, akkor ezt az [útmutatót](/learn/) ajánljuk._
+_Noha több éve íródott, fenntartjuk ezt a kiadványt, mert továbbra is hasznos referenciaként szolgál és pontos ábrázolást mutat az Ethereumról és annak jövőképéről. Ha többet szeretne megtudni az Ethereum legutóbbi fejlesztéseiről és az általunk elvégzett protokollváltoztatásokról, akkor ezt az [útmutatót](/learn/) ajánljuk._
-## Az okosszerződések és decentralizált alkalmazás platformok következő generációja {#a-next-generation-smart-contract-and-decentralized-application-platform}
+[A kutatók és egyetemi oktatók, akik a (2014. decemberi) fehér könyv historikus vagy kanonikus változatát keresik, használják ezt a PDF-et.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
-Satoshi Nakamoto 2009-ben történő Bitcoin fejlesztését gyakran a pénz és a pénznem radikális fejleményének nevezték, ez az első példa egy olyan digitális eszközre, amelynek egyszerre nincs háttér vagy [belső értéke](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/), valamint nincs központi kibocsájtója vagy irányítója. A Bitcoin kísérlet másik - vitathatatlanul fontosabb - része azonban az alapjául szolgáló blokklánc technológia, mint az elosztott konszenzus eszköze, és a figyelem gyorsan kezd áttérni a Bitcoin ezen másik aspektusára. A blokklánc technológia gyakran idézett alternatív alkalmazásai közé tartozik az blokkláncon lévő digitális eszközök használata az egyedi valuták és pénzügyi eszközök reprezentálására ([colored coins](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)), a mögöttes fizikai eszköz tulajdonjoga ([smart property](https://en.bitcoin.it/wiki/Smart_Property)), nem felcserélhető eszközök, mint a domén nevek ([Namecoin](http://namecoin.org)), vagy a komplexebb alkalmazások, melyek digitális javak közvetlen irányítását vonják magukkal egy tetszőleges szabályrendszert követő kód alapján ([smart contracts](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)) vagy akár blokklánc alapú [decentralizált autonóm szervezetek](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) (DAO-k). Az Ethereum egy olyan beépített, teljesen kidolgozott Turing-teljes programozási nyelvvel rendelkező blokkláncot szeretne nyújtani, amely használható olyan "szerződések" létrehozására, amelyek tetszőleges állapotátmeneti funkciók kódolására használhatóak, lehetővé téve a felhasználók számára a fent leírt rendszerek bármelyikének létrehozását, valamint sok olyan más dolgot is, melyre még nem gondoltunk, egyszerűen a logika pár sornyi kódként való leírásával.
+## Okosszerződés- és decentralizált alkalmazásplatform következő generációja {#a-next-generation-smart-contract-and-decentralized-application-platform}
-## Bevezetés a Bitcoinba és a létező fogalmakba {#introduction-to-bitcoin-and-existing-concepts}
+Satoshi Nakamoto 2009-ben történő Bitcoin fejlesztését gyakran a pénz és a pénznem radikális fejleményének nevezték, ez az első példa egy olyan digitális eszközre, amelynek egyszerre nincs mögöttes vagy [belső értéke](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/), valamint nincs központi kibocsájtója vagy irányítója. A Bitcoin kísérlet másik – vitathatatlanul fontosabb – része azonban az alapjául szolgáló blokklánc technológia, mint az elosztott konszenzus eszköze, és a figyelem gyorsan elkezdett áttérni ezen másik aspektusra. A blokklánc technológiát alternatív módon alkalmazzák arra, hogy a blokkláncra épülő digitális eszközök egyéni valutákat és pénzügyi eszközöket ([színes érmék](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)), fizikai eszköz tulajdonjogát ([okosingatlan](https://en.bitcoin.it/wiki/Smart_Property)), nem helyettesíthető eszközöket, például domain neveket ([Namecoin](http://namecoin.org)) képviselnek, emellett összetettebb alkalmazásokat működtetnek, amelyekben a digitális eszközöket közvetlenül egy tetszőleges szabályokat végrehajtó kódrészlet irányítja ([okosszerződések](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)), vagy akár blokklánc-alapú [decentralizált autonóm szervezeteket (DAO)](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) alapítanak. Az Ethereum egy olyan beépített, teljesen kidolgozott Turing-teljes programozási nyelvvel rendelkező blokkláncot szeretne nyújtani, amely használható olyan „szerződések” létrehozására, amelyek tetszőleges státuszváltozási funkciók kódolására használhatóak, lehetővé téve a felhasználók számára a fent leírt rendszerek bármelyikének létrehozását, valamint sok olyan más dolgot is, melyre még nem gondoltunk, egyszerűen pár sornyi kódba foglalva az adott logikát.
-### Előzmények {#history}
+## Bevezetés a Bitcoinba és kapcsolódó koncepciókba {#introduction-to-bitcoin-and-existing-concepts}
-A decentralizált digitális valuta, valamint az alternatív alkalmazások, például az ingatlan-nyilvántartások fogalma évtizedek óta létezik. Az 1980-as és 1990-es évek anonim e-cash protokolljai, melyek főleg a Chaum féle vakításként ismert kriptográfiai primitívre támaszkodtak, egy magas fokú adatvédelemmel rendelkező valutát kínáltak, de a protokolloknak többnyire nem sikerült elterjedniük, mivel egy centralizált közvetítőre támaszkodtak. 1998-ban Wei Dai [b-money-je](http://www.weidai.com/bmoney.txt) vált az első javaslattá, mely bemutatta a pénz létrehozásának számítási kirakósok megoldásával történő ötletét, valamint a decentralizált konszenzust, de a javaslat kevés részletet tartalmazott arról, hogy hogyan lehetne megvalósítani a decentralizált konszenzust a gyakorlatban. 2005-ben Hal Finney bemutatta az [újrafelhasználható munkabizonyítékokat](http://nakamotoinstitute.org/finney/rpow/), egy olyan rendszert, amely a b-pénzből származó ötleteket és Adam Back számítási szempontból nehéz Hashcash rejtvényeit használta fel a kriptovaluta koncepciójának megalkotására, de az ideálistól ez is elmaradt azáltal, hogy egy megbízható számítási backendre támaszkodott. Először 2009-ben került bevezetésre a gyakorlatban egy decentralizált valuta Satoshi Nakamoto által, amely egyesítette az alapként szolgáló már létező primitíveket amik a tulajdonjog publikus kulcs kriptográfiával történő kezelésére szolgáltak, egy konszenzus algoritmussal, mely az érmék tulajdonosainak számontartására szolgál és amit "munkabizonyítéknak" nevezünk.
+### Előzmények {#history}
-A proof-of-work mögötti mechanizmus egy áttörés volt, mivel egyszerre két problémára is megoldást nyújtott. Egyrészt egy olyan egyszerű és mérsékelten hatékony konszenzus algoritmust biztosított, amely lehetővé teszi a hálózat csomópontjainak, vagyis a résztvevő számítógépeknek (node-ok), hogy kollektíven egyetértsenek a Bitcoin főkönyvi állapotának kanonikus frissítéseiről. Másrészt egy olyan mechanizmust biztosított, amely szabad belépést tesz lehetővé abba a konszenzus folyamatba, mely megoldja annak a politikai problémának az eldöntését, hogy ki befolyásolja a konszenzust, emellett a Sybil-támadásokat is megelőzi. Ezt úgy teszi meg, hogy a részvétel formális akadályát - mint például egy adott listán egyedi entitásként való nyilvántartásba vétel követelményét - gazdasági akadályokkal helyettesíti: egy résztvevő csomópont súlya a konszenzusos szavazási folyamatban közvetlenül arányos azzal a számítási erővel, amivel a csomópont rendelkezik. Azóta javaslattétel született egy alternatív megközelítésre, amit _letétbizonyítéknak_ hívnak, mivel a hálózaton résztvevő számítógép, vagy csomópont (node) súlyozását a valuta letétbe helyezésének arányában számítja ki, nem pedig annak számítási kapacitása alapján; a két megközelítés relatív előnyeinek megvitatása meghaladja ennek a cikknek a kereteit, de meg kell jegyezni, hogy mindkét megközelítés felhasználható egy kriptovaluta alapjaként.
+A decentralizált digitális valuta, valamint az alternatív alkalmazások, például az ingatlannyilvántartások fogalma évtizedek óta létezik. Az 1980-as és 1990-es évek anonim e-cash protokolljai, melyek főleg a Chaum féle vakításként ismert kriptográfiai primitívre támaszkodtak, egy magas fokú adatvédelemmel rendelkező valutát kínáltak, de a protokolloknak többnyire nem sikerült elterjedniük, mivel egy centralizált közvetítőre támaszkodtak. 1998-ban Wei Dai [b-pénze (b-money)](http://www.weidai.com/bmoney.txt) volt az első javaslat a pénz létrehozására számítási kirakósok megoldásával és decentralizált konszenzussal, de kevés részletet tartalmazott arról, hogyan lehetne az utóbbit megvalósítani a gyakorlatban. 2005-ben Hal Finney bemutatta az [újrafelhasználható proof of work-öket (munkabizonyíték)](https://nakamotoinstitute.org/finney/rpow/), egy olyan rendszert, amely a b-pénzből származó ötleteket és Adam Back számítási szempontból nehéz Hashcash rejtvényeit használta fel a kriptovaluta koncepciójának megalkotására, de az ideálistól elmaradt azáltal, hogy egy megbízható számítási háttérre támaszkodott. Először 2009-ben került bevezetésre a gyakorlatban egy decentralizált valuta Satoshi Nakamoto által, amely egyesítette az alapként szolgáló létező primitíveket – a tulajdonjog publikus kulcs kriptográfiával történő kezelésére – egy konszenzus algoritmussal – az érmék tulajdonosainak számontartására, amelyet „proof-of-work-nek” (munkabizonyíték) nevezünk.
-Itt egy blog bejegyzés Vitalik Buterintől, az Ethereum alapítójától az [Ethereum előtörténetéről](https://vitalik.eth.limo/general/2017/09/14/prehistory.html). [Itt](https://blog.ethereum.org/2016/02/09/cut-and-try-building-a-dream/) egy másik blog bejegyzés további történetekkel.
+A proof-of-work mögötti mechanizmus egy áttörés volt, mivel egyszerre két problémára is megoldást nyújtott. Egyrészt egy olyan egyszerű és mérsékelten hatékony konszenzusalgoritmust biztosított, amely lehetővé teszi a hálózat csomópontjainak, vagyis a résztvevő számítógépeknek (node), hogy kollektíven egyetértsenek a Bitcoin főkönyvi állapotának kanonikus frissítéseiről. Másrészt egy olyan mechanizmust biztosított, amely szabad belépést tesz lehetővé abba a konszenzusfolyamatba, mely megoldja annak a politikai problémának az eldöntését, hogy ki befolyásolja a konszenzust, emellett a Sybil-támadásokat is megelőzi. Ezt úgy teszi meg, hogy a részvétel formális akadályát – mint például egy listán egyedi entitásként való nyilvántartás követelményét – gazdasági akadályokkal helyettesíti: egy résztvevő csomópont súlya a konszenzusos szavazási folyamatban közvetlenül arányos azzal a számítási erővel, amivel a csomópont rendelkezik. Azóta javaslattétel született egy alternatív megközelítésre, amelyet _proof-of-stake-nek (letéti bizonyíték)_ hívnak, mivel a hálózaton résztvevő számítógép vagy csomópont (node) súlyozását a valuta letétbe helyezésének arányában számítja ki, nem a számítási kapacitása alapján; a két megközelítés relatív előnyeinek megvitatása túlmutat a cikk keretein, ugyanakkor mindkét megközelítés felhasználható egy kriptovaluta alapjaként.
-### Bitcoin, mint egy állapot átmeneti rendszer {#bitcoin-as-a-state-transition-system}
+### Bitcoin mint egy státuszváltozási rendszer {#bitcoin-as-a-state-transition-system}
![Ethereum állapot átmenet](./ethereum-state-transition.png)
-Technikai szempontból egy kriptovaluta, például a Bitcoin főkönyve egy állapot átmeneti rendszernek tekinthető, ahol van egy "állapot", amely számon tartja az összes létező bitcoin tulajdonosi státuszát, és egy "állapot átmeneti függvény", ami az állapothoz egy tranzakció hozzáadásával egy új állapotot eredményez. Például egy szabályos banki rendszerben az állapot a vagyonmérlegnek felel meg, a tranzakció egy kérvény $X összeg átmozgatására A-ból B-be, az állapot átmeneti függvény pedig csökkenti A számlájának értékét $X összeggel, valamint növeli B számlájának értékét $X összeggel. Ha az A számla kevesebb összeggel rendelkezik mint $X, akkor az állapot átmeneti függvény egy hiba jelzést ad vissza. Tehát így definiálható formálisan:
+Technikai szempontból egy kriptovaluta, például a Bitcoin főkönyve egy státuszváltozási rendszernek tekinthető, ahol van egy státusz, amely számon tartja az összes létező bitcoin tulajdonosi állapotát, és egy státuszváltozási függvény, ami a státusz és a tranzakció hozzáadásával egy új státuszt eredményez. Például egy szabályos banki rendszerben a státusz a vagyonmérlegnek felel meg, a tranzakció egy kérvény $X összeg átmozgatására A-ból B-be, a státuszváltozási függvény pedig csökkenti A számlájának értékét $X összeggel és növeli B számlájának értékét $X összeggel. Ha az A számla kevesebb összeggel rendelkezik mint $X, akkor a státuszváltozási függvény hibajelzést ad vissza. Tehát így definiálható formálisan:
- APPLY(S,TX) -> S' or ERROR
+```
+APPLY(S,TX) -> S' or ERROR
+```
A fentiekben leírt banki rendszerben:
- APPLY({ Alice: $50, Bob: $50 },"küld $20 Alice-tól Bob-nak") = { Alice: $30, Bob: $70 }
+```js
+APPLY({ Alice: $50, Bob: $50 },"küld $20 Alice-tól Bob-nak") = { Alice: $30, Bob: $70 }
+```
De:
- APPLY({ Alice: $50, Bob: $50 },"küld $70 Alice-tól Bob-nak") = ERROR
-
-A Bitcoin "állapota" az összes érme együttvéve (műszaki nyelven "elköltetlen tranzakciós kimenetek" vagy UTXO), amelyek ki lettek bányászva és még nem lettek elköltve. Minden UTXO-nak van egy névértéke és egy tulajdonosa (melyet egy 20 bájtos cím határoz meg, mely lényegében egy kriptográfiai publikus kulcs[fn. 1](#notes)). Egy tranzakció egy vagy több bemenetet tartalmaz, és mindegyik bemenet tartalmaz egy hivatkozást egy meglévő UTXO-ra és egy kriptográfiai aláírást, amelyet a tulajdonos címéhez társított privát kulcs hoz létre, és egy vagy több kimenetet, ahol minden egyes kimenet egy új UTXO-t tartalmaz, amik aztán hozzáadódnak az állapothoz.
-
-Az állapot átmeneti függvény `APPLY(S,TX) -> S'` nagyjából a következő módon definiálható:
-
-1. Minden egyes bemenetre a `TX-ben`:
-
- - Ha a hivatkozott UTXO nincs benne az `S-ben`, hiba visszaadása.
- - Ha a szolgáltatott aláírás nem egyezik az UTXO tulajdonosának aláírásával, hiba visszaadása.
-
-2. Ha az összes bemeneti UTXO egység összege kisebb, mint az összes kimeneti UTXO egység összege, hiba visszaadása.
-3. `S'` visszaadása az összes bemeneti UTXO elvételével és az összes UTXO hozzáadásával.
+```js
+APPLY({ Alice: $50, Bob: $50 },"küld $70 Alice-tól Bob-nak") = ERROR
+```
+
+A Bitcoin státusza az összes érme együttvéve (technikailag az „elköltetlen tranzakciós kimenetek” vagy UTXO), amelyek ki vannak bányászva és még nem lettek elköltve. Minden UTXO-nak van egy névértéke és egy tulajdonosa (melyet egy 20 bájtos cím határoz meg, lényegében egy kriptográfiai publikus kulcs[fn1](#jegyzetek)). Egy tranzakció egy vagy több bemenetet tartalmaz, és mindegyik bemenet tartalmaz egy hivatkozást egy meglévő UTXO-ra és egy kriptográfiai aláírást, amelyet a tulajdonos címéhez társított privát kulcs hoz létre, és egy vagy több kimenetet, ahol minden egyes kimenet egy új UTXO-t tartalmaz, amik aztán hozzáadódnak a státuszhoz.
+
+A státuszváltozási függvény `APPLY(S,TX) -> S'` a következő módon definiálható:
+
+
+
+ Minden egyes bemenetre a TX-ben:
+
+
+ Ha a hivatkozott UTXO nincs benne az S-ben, hiba visszaadása.
+
+
+ Ha a szolgáltatott aláírás nem egyezik az UTXO tulajdonosának aláírásával, hiba visszaadása.
+
+
+
+
+ Ha az összes bemeneti UTXO egység összege kisebb, mint az összes kimeneti UTXO egység összege, hiba visszaadása.
+
+
+ S visszaadása az összes bemeneti UTXO elvételével és az összes UTXO hozzáadásával.
+
+
Az első lépés első fele megakadályozza, hogy a tranzakciók feladói nem létező érméket költsenek el, az első lépés második fele pedig megakadályozza, hogy a tranzakciók feladói mások érméit költsék el, a második lépés pedig az érték megőrzését hajtja végre. Ahhoz, hogy ezt fizetésnél használjuk, a protokoll a következő. Tegyük fel, hogy Alice 11,7 BTC-t szeretne Bob-nak átutalni. Először Alice megkeresi az általa birtokolt elérhető UTXO-k egy olyan halmazát, melynek összege legalább 11.7 BTC. A valóságban Alice nem fog pont 11.7 BTC-t találni; mondjuk, hogy a legkisebb, amit megtalált 6+4+2=12. Ezután elkészít egy tranzakciót ezzel a három bemenettel és két kimenettel. Az első kimenet 11.7 BTC lesz, aminek Bob címe lesz a tulajdonosa, a második kimenet pedig a maradék 0.3 BTC "visszajáró", melynek maga Alice a tulajdonosa.
@@ -59,18 +78,18 @@ Az első lépés első fele megakadályozza, hogy a tranzakciók feladói nem l
![Ethereum blokkok](./ethereum-blocks.png)
-Ha hozzáférnénk egy megbízható, központosított szolgáltatáshoz, ezt a rendszert jelentéktelen lenne megvalósítani; mivel ugyanezt pontosan a leírtak szerint lehetne kódolni, egy központosított, azaz centralizált szerver merevlemezén tárolva az állapotot. Azonban a Bitcoinnal egy decentralizált pénz rendszert próbálunk építeni, így az állapot átmeneti rendszert egy konszenzus rendszerrel kell kombinálnunk, hogy biztosítsuk, hogy mindenki egyetért a tranzakciók sorrendje felett. A Bitcoin decentralizált konszenzus folyamata elvárja a hálózat résztvevőitől, hogy folyamatosan tranzakciókból álló csomagokat próbáljanak készíteni, melyeket '"blokkoknak" hívunk. A hálózat nagyjából egy blokkot szándékozik gyártani minden tizedik percben, ahol minden egyes blokk tartalmaz egy időbélyeget, egy nonce-t, egy hivatkozást az előző blokkra (vagyis hash-t), és az összes olyan tranzakciót tartalmazó listát, melyek az előző blokk után következtek. Idővel egy tartós, folyamatosan növekvő "blokklánc" jön létre, mely folyamatosan frissül, hogy a Bitcoin főkönyv legutóbbi állapotát reprezentálja.
+Ha hozzáférnénk egy megbízható, központosított szolgáltatáshoz, ezt a rendszert egyértelmű lenne megvalósítani; mivel pontosan a leírtak szerint lehetne kódolni egy központosított, azaz centralizált szerver merevlemezén tárolva az állapotot. Azonban a Bitcoin egy decentralizált pénzrendszert próbált kiépíteni, így a státuszváltozási rendszert egy konszenzusrendszerrel kell kombinálni, hogy biztosítsa, hogy mindenki egyetért a tranzakciók sorrendjével. A Bitcoin decentralizált konszenzus folyamata elvárja a hálózat résztvevőitől, hogy folyamatosan tranzakciókból álló csomagokat próbáljanak készíteni, melyeket '"blokkoknak" hívunk. A hálózat nagyjából egy blokkot szándékozik gyártani minden tizedik percben, ahol minden egyes blokk tartalmaz egy időbélyeget, egy nonce-t, egy hivatkozást az előző blokkra (vagyis hash-t), és az összes olyan tranzakciót tartalmazó listát, melyek az előző blokk után következtek. Idővel egy tartós, folyamatosan növekvő "blokklánc" jön létre, mely folyamatosan frissül, hogy a Bitcoin főkönyv legutóbbi állapotát reprezentálja.
A blokkok érvényességét ellenőrző algoritmust az alábbi paradigma szerint lehet kifejezni:
-1. Ellenőrizni, hogy a blokk által hivatkozott előző blokk létezik és érvényes.
-2. Ellenőrizni, hogy a blokk időbélyege nagyobb-e, mint az előző blokké[fn. 2](#notes) és kevesebb mint 2 óra telt el azóta
-3. Ellenőrizni, hogy a blokk munkabizonyítéka érvényes-e.
-4. Legyen `S[0]` az előző blokk után lévő állapot.
-5. Legyen `TX` a blokk tranzakciós listája `n` tranzakcióval. Minden `i-re` `0...n-1-ig`, `S[i+1] = APPLY(S[i],TX[i])` Ha bármely lépés hibát ad vissza, kilépni és false értéket visszaadni.
-6. True visszaadása, és `S[n]` regisztrálása az állapotként a blokk végén.
+1. Ellenőrzi, hogy a blokk által hivatkozott előző blokk létezik és érvényes.
+2. Ellenőrzi, hogy a blokk időbélyege nagyobb-e, mint az előző blokké[fn2](#jegyzetek) és kevesebb mint 2 óra telt el azóta
+3. Ellenőrzi, hogy a blokk proof-of-work-je érvényes-e.
+4. Legyen `S[0]` az előző blokk után lévő állapot.
+5. Legyen `TX` a blokk tranzakciós listája `n` tranzakcióval. Minden `i`-re `0...n-1`-ig legyen beállítva `S[i+1] = APPLY(S[i],TX[i])`. Ha bármely lépés hibát ad vissza, kilép és hamis értéket ad vissza.
+6. Igaz érték visszaadása, és `S[n]` regisztrálása státuszként a blokk végén.
-Lényegében a blokkban szereplő minden tranzakciónak érvényes állapot átmenetet kell biztosítania a tranzakció lefutása előtti kanonikus állapotból egy új állapotba. Fontos megjegyezni, hogy az állapot semmilyen módon nincs belekódolva a blokkba; pusztán absztrakció, amelyre a hálózat érvényesítő résztvevőjének emlékeznie kell, és bármely blokkra (biztonságosan) csak akkor számítható ki, ha a kezdeti állapotból indulunk ki, és minden tranzakciót egymás után lefuttatunk minden blokkban. Továbbá meg kell jegyezni, hogy az is számít, hogy a bányász a tranzakciókat milyen sorrendben helyezte el a blokkban; ha van két olyan A és B tranzakció a blokkban, ahol B az A által létrehozott UTXO-t költi el, a blokk akkor lesz érvényes, ha A előbb van mint B, fordítva nem.
+Lényegében a blokkban szereplő minden tranzakciónak érvényes státuszváltozást kell biztosítania a tranzakció lefutása előtti kanonikus állapotból egy új állapotba. Fontos megjegyezni, hogy a státusz nincs belekódolva a blokkba; pusztán absztrakció, amelyre a hálózat érvényesítő résztvevőjének emlékeznie kell, és bármely blokkra (biztonságosan) csak akkor számítható ki, ha a kezdeti státuszból indulunk ki, és minden tranzakciót egymás után lefuttatunk minden blokkban. Továbbá meg kell jegyezni, hogy az is számít, hogy a bányász a tranzakciókat milyen sorrendben helyezte el a blokkban; ha van két olyan A és B tranzakció a blokkban, ahol B az A által létrehozott UTXO-t költi el, a blokk akkor lesz érvényes, ha A előbb van mint B, fordítva nem.
A fenti listában szereplő érvényességi feltételek közül egyedül a "munkabizonyíték" szükségessége nem található meg más rendszereknél. A pontos feltétel pedig az, hogy minden blokk dupla-SHA256 hashének, melyet egy 256 bites számként kezelünk, kisebbnek kell lennie, mint egy dinamikusan beállított célérték, mely ennek az anyagnak a megírása közben 2187. Ennek a célja, hogy a blokk létrehozása számítási szempontból "nehéz" legyen, és hogy ezáltal megakadályozza a sybil-támadókat, hogy átalakítsák a teljes blokkláncot a saját érdekükben. Mivel az SHA256-ot úgy tervezték, hogy egy teljesen megjósolhatatlan álvéletlen (pszeudo-random) függvény legyen, így a blokk létrehozásának egyetlen módja a próbaszerencse (trial and error), vagyis ismételten növelni kell a nonce-t és figyelni, hogy az új hash megfelelő-e.
@@ -78,14 +97,14 @@ A jelenlegi 2187-es cél esetében, a hálózatnak átlagosan \~2k UTXO minden k-ra egészen 30-ig) és az O eldönti, hogy melyik UTXO-t küldi A-nak és melyiket B-nek.
-- **Az állapot hiánya** - a [Egy UTXO lehet elköltött vagy elköltetlen](https://bitcoin.org/en/glossary/unspent-transaction-output); nincs lehetőség többlépcsős szerződésekre vagy szkriptekre, amelyek minden más belső állapotot ezen túl tartana. Ez megnehezíti a többlépcsős opciós szerződések, decentralizált csereajánlatok vagy kétlépcsős kriptográfiai elköteleződési protokollok létrehozását (ami szükséges a biztonságos számítási kompenzációhoz). Ez azt is jelenti, hogy az UTXO csak egyszerű, egyszeri szerződések és nem bonyolultabb "állapottal rendelkező" szerződések, például decentralizált szervezetek létrehozására használható, és a metaprotokollok megvalósítását megnehezíti. A bináris állapot az értékvaksággal kombinálva azt is jelenti, hogy egy másik fontos alkalmazás, a kiutalási limitek beállítása, sem lehetséges.
-- **Blockchain-vakság** - Az UTXO nem tud az olyan blokklánc adatokról, mint a nonce, az időbélyeg vagy az előző blokk hash. Ez súlyosan korlátozza a szerencsejátékokban és számos más kategóriában történő alkalmazásokat azáltal, hogy megfosztja a szkript nyelvet a véletlenszerűség potenciálisan értékes forrásától.
+- **Turing-teljesség hiánya** - vagyis, bár van egy nagy számítási részhalmaz, amelyet a Bitcoin szkriptnyelv támogat, közel sem támogat mindent. A fő kategória a hiányzó ciklusok. Ennek az az oka, hogy elkerüljük a végtelen ciklusokat a tranzakció ellenőrzések során; elméletileg ez egy leküzdhetetlen akadály a szkriptprogramozók számára, mivel bármely ciklus szimulálható úgy, hogy egyszerűen megismételjük több alkalommal a mögöttes kódot egy „if” (ha) utasítással, de ez nagyon kis hatékonyságú szkriptekhez vezet. Például egy alternatív elliptikus görbe aláírás algoritmus implementálása valószínűleg 256 ismételt szorzási kört igényelne, mely mindegyike egyenként szerepelne a kódban.
+- **Értékvakság** - nincs olyan UTXO szkript, mely képes lenne szofisztikáltan irányítani a kiutalható mennyiséget. Például egy oracle-szerződés komoly felhasználási területe a hedging szerződés, ahova A és B $1000 értékű BTC-t tesz be és 30 nappal később a szkript elküld $1000 értékű BTC-t A részére a maradékot pedig B részére. Ez egy oracle-t igényel, mely meghatározza 1 BTC értékét USD-ben, de még így is hatalmas előrelépés a bizalom és az infrastrukturális követelmények szempontjából a teljesen centralizált megoldásokhoz képest. Azonban mivel az UTXO mindent vagy semmit elven működik, ennek az egyedüli módja, ha sok UTXO-t használunk különböző egységekkel (például egy 2k UTXO minden k-ra egészen 30-ig) és az O eldönti, hogy melyik UTXO-t küldi A-nak és melyiket B-nek.
+- **Státuszhiány** - az UTXO lehet elköltött vagy elköltetlen; nincs lehetőség többlépcsős szerződésekre vagy szkriptekre, amelyek megtartanak minden más belső státuszt ezen túl. Ez megnehezíti a többlépcsős opciós szerződések, decentralizált csereajánlatok vagy kétlépcsős kriptográfiai elköteleződési protokollok létrehozását (ami szükséges a biztonságos számítási kompenzációhoz). Ez azt is jelenti, hogy az UTXO csak egyszerű, egyszeri szerződések és nem bonyolultabb „státuszos” szerződések, például decentralizált szervezetek létrehozására használható, és a metaprotokollok megvalósítását megnehezíti. A bináris állapot az értékvaksággal kombinálva azt is jelenti, hogy egy másik fontos funkció, a kiutalási limitek beállítása, sem lehetséges.
+- **Blokkláncvakság** - az UTXO nem tud az olyan blokkláncadatokról, mint a nonce, az időbélyeg vagy az előző blokkhash. Ez súlyosan korlátozza a szerencsejátékokban és számos más kategóriában történő alkalmazásokat azáltal, hogy megfosztja a szkript nyelvet a véletlenszerűség értékes forrásától.
Így meglátásunk szerint háromféleképpen lehet fejlett alkalmazásokat fejleszteni egy kriptovalutára: új blokklánc indítása, a Bitcoin szkripting használata és egy meta protokoll fejlesztése Bitcoinra. Egy új blokklánc indítása lehetővé teszi a korlátlan szabadságot a funkciókészlet építésében, de a fejlesztési idő, a bootstrapping és a biztonság árán. A szkriptek használata egyszerűen megvalósítható és szabványosítható, de nagyon korlátozott a képességeiben, és a meta protokollok, míg egyszerűek, nehezen skálázhatóak. Az Ethereummal egy olyan alternatív keretrendszert szeretnénk létrehozni, mely még jobban megkönnyíti a fejlesztést, valamint erősebb könnyű kliens tulajdonságokkal rendelkezik, egyúttal az alkalmazásoknak egy közös gazdasági környezetet és blokklánc biztonságot biztosít.
## Ethereum {#ethereum}
-Az Ethereum célja egy alternatív protokoll létrehozása decentralizált alkalmazások fejlesztésére, különböző kompromisszumokkal, amelyről úgy hisszük, hogy nagyon hasznos lesz a decentralizált alkalmazások nagy részének, különös tekintettel az olyan esetekre, ahol fontos a gyors fejlesztési idő, a biztonság a kisméretű és ritkán használt alkalmazások számára, és a különböző alkalmazások közötti nagyon hatékony együttműködés. Az Ethereum ezt úgy éri el, hogy felépíti azt, ami lényegében a végső absztrakt alapréteg: egy blokkláncot beépített Turing-teljes programozási nyelvvel, mely lehetővé teszi bárki számára az okosszerződés írást és a decentralizált alkalmazás fejlesztést, ahol létrehozhatják a saját tetszőleges tulajdonjogi szabályaikat, tranzakció formátumukat és az állapot átmeneti függvényeket. A Namecoin lecsupaszított verziója két sornyi kódból megírható, a többi protokoll, mint például a valuták és az identitás rendszerek pedig kevesebb, mint húsz sorból. Okosszerződések, olyan kriptográfiai "dobozok", melyek értéket tartalmaznak és csak akkor nyílnak ki amikor bizonyos feltételek teljesülnek, szintén építhetőek a platformra sokkal nagyobb erővel, mint amit a Bitcoin szkriptelés kínál, a Turing-teljesség, érték-tudatosság, blokklánc-tudatosság és az "állapot" hozzáadott ereje miatt.
-
-### Filozófia {#philosophy}
-
-Az Ethereum mögötti elgondolás az alábbi elveket szándékozik követni:
-
-1. **Egyszerűség**: az Ethereum protokollnak a lehető legegyszerűbbnek kell lennie, még az adattárolás vagy az időhatékonyság rovására is.[fn. 3](#notes) Egy átlagos programozó ideális esetben képes a teljes részletes leírást követni és implementálni,[fn. 4](#notes) annak érdekében, hogy teljes mértékben kiaknázhassuk a kriptovaluta példátlan demokratizálási potenciálját, és tovább terjesszük az Ethereum mint mindenki számára nyitott protokoll elképzelését. Az olyan optimalizálásokat, melyek a komplexitás növelésével járnak, nem szabad használni, kivéve ha az optimalizálás jelentős előnnyel jár.
-2. **Univerzalitás**: az Ethereum design filozófia egyik alapvetése, hogy az Ethereumnak nincsenek "jellemző vonásai".[fn. 5](#notes) Ehelyett az Ethereum egy olyan Turing-teljes szkript nyelvet szolgáltat, mellyel a programozó bármilyen okosszerződést vagy tranzakció típust felépíthet, melyek matematikailag definiálhatóak. Szeretnéd feltalálni a saját pénzügyi származékos termékedet? Az Ethereummal megteheted. Szeretnéd létrehozni a saját valutádat? Hozd létre egy Ethereum szerződéssel. Szeretnél egy teljeskörű Daemont vagy Skynetet felállítani? Lehet, hogy szükséged lesz pár ezer összekapcsolódó szerződésre és számíts rá, hogy bőkezűen kell majd őket táplálnod, de semmi nem állíthat meg a karnyújtásnyira lévő Ethereummal.
-3. **Modularitás**: az Ethereum protokoll részeit annyira modulárissá és szétválaszthatóvá kell tervezni, amennyire csak lehetséges. A fejlesztés során az a célunk, hogy egy olyan programot hozzunk létre, amiben ha valahol egy kisebb protokoll módosítást viszünk végbe, az alkalmazási verem (stack) továbbra is működni fog további módosítás nélkül. Az olyan innovációkat, mint az Ethash (lásd [Sárga Könyv Függelék](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.J) vagy [wiki szócikk](https://github.com/ethereum/wiki/wiki/Ethash)), a módosított Patricia fák ([Sárga Könyv](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.D), [wiki](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)) és az RLP ([YP](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.B), [wiki](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)) különálló, funkció-teljes könyvtárként kell alkalmazni, és így is vannak alkalmazva. Ennek az az oka, hogy annak ellenére, hogy az Ethereumban használjuk őket, még ha az Ethereum nem is igényli bizonyos funkcióit, ezek a funkciók más protokollok számára is hasznosak lehetnek. Az Ethereum fejlesztést úgy kell maximálisan elvégezni, hogy a teljes kriptovaluta ökoszisztéma javát szolgálja, ne csak a sajátját.
-4. **Agilitás**: az Ethereum protokoll részletei nincsenek kőbe vésve. Azonban rendkívül megfontoltak leszünk a magas szintű konstrukciók megváltoztatását illetően, mint például a [sharding ütemterv](https://ethresear.ch/t/sharding-phase-1-spec/1407/) esetében a végrehajtás absztrahálása csak az adatok konszenzusos elérhetőségével fog történni. A fejlesztési folyamat során történő későbbi számítási tesztek arra a felfedezésre vezethetnek, hogy bizonyos módosítások például a protokoll felépítésében vagy az Ethereum Virtuális Gépben (EVM) jelentős mértékben növelhetik a skálázhatóságot vagy a biztonságot. Ha találunk ilyen lehetőségeket, akkor ki fogjuk használni őket.
-5. **Megkülönböztetés-mentesség** és **cenzúra-mentesség**: a protokoll nem kísérelheti meg bizonyos használati kategóriák aktív betiltását vagy megelőzését. A protokoll összes szabályozási mechanizmusát arra kell tervezni, hogy közvetlenül a károkozást szabályozza nem pedig a bizonyos nemkívánatos alkalmazásokat. Egy programozó akár egy végtelen ciklusos szkriptet is futtathat az Ethereumon, amíg hajlandó fizetni a számítási lépések tranzakciós díját.
+Az Ethereum célja egy alternatív protokoll létrehozása decentralizált alkalmazások fejlesztésére, különböző kompromisszumokkal, amelyről úgy hisszük, hogy nagyon hasznos lesz a decentralizált alkalmazások nagy részének, különös tekintettel az olyan esetekre, ahol fontos a gyors fejlesztési idő, a biztonság a kisméretű és ritkán használt alkalmazások számára, és a különböző alkalmazások közötti nagyon hatékony együttműködés. Az Ethereum ezt úgy éri el, hogy felépíti azt, ami lényegében a végső absztrakt alapréteg: egy blokkláncot beépített Turing-teljes programozási nyelvvel, mely lehetővé teszi bárki számára az okosszerződés írást és a decentralizált alkalmazás fejlesztést, ahol létrehozhatják a saját tetszőleges tulajdonjogi szabályaikat, tranzakció formátumukat és a státuszváltozási függvényeket. A Namecoin lecsupaszított verziója két sornyi kódból megírható, a többi protokoll, mint például a valuták és az identitás rendszerek pedig kevesebb, mint húsz sorból. Okosszerződések, olyan kriptográfiai „dobozok”, melyek értéket tartalmaznak és csak akkor nyílnak ki, amikor bizonyos feltételek teljesülnek, szintén építhetőek a platformra sokkal nagyobb erővel, mint amit a Bitcoin szkriptelés kínál, a Turing-teljesség, értéktudatosság, blokklánctudatosság és a státusz hozzáadott értéke miatt.
### Ethereum számlák {#ethereum-accounts}
-Az Ethereumban az állapotot "számláknak" nevezett objektumok alkotják, ahol minden egyes számla egy 20-bájtos címmel rendelkezik és az állapot átmenetet a számlák közötti közvetlen érték és információ átutalás végzi. Az Ethereum számlák négy mezőt tartalmaznak:
+Az Ethereumban a státuszt „számláknak” nevezett objektumok alkotják, ahol minden egyes számla egy 20-bájtos címmel rendelkezik és a státuszváltozást a számlák közötti közvetlen érték és információ átadás végzi. Az Ethereum számlák négy mezőt tartalmaznak:
- A **nonce**, egy számláló, mely biztosítja, hogy minden tranzakció csak egyszer kerül feldolgozásra
- A számla jelenlegi **ether egyenlege**
-- A számla **szerződés kódja**, ha van
+- A számla **szerződéskódja**, ha van
- A számla **tárhelye** (alapértelmezetten üres)
-Az "Ether" az Ethereum elsődleges belső kripto-üzemanyaga és a tranzakciós díj kifizetésére lehet használni. Általánosságban kétfajta számlatípus létezik: **külső tulajdonú számlák**, melyeket privát kulcsok irányítanak és **szerződéses számlák**, melyeket a szerződés kódjuk irányít. Az külső tulajdonú számlának nincsen kódja, és az adott személy üzenetet küldhet egy külső tulajdonú számláról egy tranzakció létrehozásával és aláírásával; a szerződéses számla esetében minden esetben, amikor a szerződéses számla egy üzenetet kap aktiválódik a kódja, ennek hatására lehetővé teszi a belső tárhely írását és olvasását, új üzenetek küldését vagy szerződés létrehozást.
+Az „ether” az Ethereum elsődleges, belső kriptoüzemanyaga és a tranzakciós díj kifizetésére lehet használni. Általánosságban kétfajta számlatípus létezik: **külső tulajdonú számlák**, melyeket privát kulcsok irányítanak és **szerződéses számlák**, melyeket a szerződéskódjuk irányít. Az külső tulajdonú számlának nincsen kódja, és az adott személy üzenetet küldhet egy külső tulajdonú számláról egy tranzakció létrehozásával és aláírásával; a szerződéses számla esetében minden esetben, amikor e számla üzenetet kap, aktiválódik a kódja, ami lehetővé teszi a belső tárhely írását és olvasását, új üzenetek küldését vagy szerződés létrehozását.
-Fontos megjegyezni, hogy az Ethereumban a "szerződésekre" nem úgy kell tekinteni, mint amit „teljesíteni” vagy „betartani” kell; inkább "autonóm ügynökök", akik az Ethereum végrehajtási környezetében élnek, és mindig végrehajtanak egy adott kóddarabot, amikor "megböki" őket egy a üzenet vagy tranzakció, és közvetlen ellenőrzésük alatt tartják saját Ether egyenlegüket és saját kulcsérték-adatbázisukat, a tartós változók nyomon követésére.
+Fontos megjegyezni, hogy az Ethereumban a szerződések nem olyan egyezmények, amelyet teljesíteni vagy betartani kell; inkább „önálló ügynökök”, akik az Ethereum végrehajtási környezetében élnek, és végrehajtanak egy adott kóddarabot, amikor beindítja azokat egy üzenet vagy tranzakció, továbbá közvetlen ellenőrzésük alatt tartják saját ether egyenlegüket és saját kulcs-érték-adatbázisukat a tartós változók nyomon követésére.
### Üzenetek és tranzakciók {#messages-and-transactions}
-A "tranzakció" kifejezést az Ethereumban egy aláírt adat csomagra használjuk, ami egy külső tulajdonú számláról érkező üzenetet tartalmaz. A tranzakció a következőket tartalmazza:
+A „tranzakció” kifejezést az Ethereumban egy aláírt adatcsomagra használjuk, ami egy külső tulajdonú számláról érkező üzenetet tartalmaz. A tranzakció a következőket tartalmazza:
- Az üzenet címzettje
- A küldőt azonosító aláírás
-- Az Ether összeg, amit a küldő át akar utalni a címzettnek
+- Az ether összeg, amit a küldő át akar utalni a címzettnek
- Egy opcionális adat mező
-- A `STARTGAS` érték, ami a tranzakció végrehajtás számítási lépéseinek maximális számát jelenti
-- A `GASPRICE` érték, ami a számítási lépésenkénti díjat jelenti, amit a feladó fizet
+- A `STARTGAS` érték, ami a tranzakcióvégrehajtás számítási lépéseinek maximális számát jelenti
+- A `GASPRICE` érték, ami a számítás lépésenkénti díját jelenti, amit a feladó fizet
-Az első három olyan alap mező, ami minden kripto valutánál megtalálható. Az adatmezőnek alapértelmezés szerint nincs funkciója, de a virtuális gép rendelkezik egy opkóddal, amelyet a szerződés használhat az adatok elérésére; mint például, amikor egy szerződés domain regisztrációs szolgáltatásként működik a blokkláncon, akkor úgy értelmezheti a hozzá érkező adatot, hogy az két "mezőt" tartalmaz, az első mező a regisztrálandó domain, a második mező pedig az IP-cím, amelyre regisztrálni kell. A szerződés elolvassa ezeket az adatokat az üzenetből, és a megfelelő helyükre helyezi el őket az adattárban.
+Az első három olyan alap mező, ami minden kriptovalutánál megtalálható. Az adatmezőnek alapértelmezés szerint nincs funkciója, de a virtuális gép rendelkezik egy opkóddal, amelyet a szerződés használhat az adatok elérésére; például amikor egy szerződés domain regisztrációs szolgáltatásként működik a blokkláncon, akkor úgy értelmezheti a hozzá érkező adatot, hogy az két „mezőt” tartalmaz, az első a regisztrálandó domain, a második az IP-cím, amelyre regisztrálni kell. A szerződés elolvassa ezeket az adatokat az üzenetből, és a megfelelő helyükre helyezi azokat az adattárban.
-The `STARTGAS` és `GASPRICE` mezők kritikusak az Ethereum szolgáltatás megtagadása elleni modelljében. A véletlen vagy rosszindulatú végtelen ciklusok vagy más számítási kódveszteség megelőzésének érdekében minden tranzakciónak korlátot kell szabnia arra vonatkozóan, hogy a kódfuttatás hány számítási lépést használhat. A számítás alapvető egysége a "gas"; általában egy számítási lépés 1 gas-ba kerül, de egyes műveletek magasabb gas mennyiségbe kerülnek, mert számítási szempontból drágábbak, vagy növelik az állapot részeként tárolandó adatok mennyiségét. Továbbá minden egyes tranzakciós adatban található byte után 5 gas díj is felszámításra kerül. A díjrendszer célja, hogy megkövetelje a támadótól, hogy minden általa felhasznált erőforrásért arányosan fizessen, beleértve a számítást, a sávszélességet és a tárhelyet is; ennélfogva minden olyan tranzakció esetében, amelynek eredményeként a hálózat ezeknek az erőforrásoknak bármelyikét nagyobb mennyiségben fogyasztja, az erőforrások növekedésével nagyjából arányos gas költséggel kell számolni.
+A `STARTGAS` és `GASPRICE` mezők kritikusak az Ethereum szolgáltatásmegtagadás elleni védekezés modelljében. Azért, hogy megelőzzük a véletlen vagy ártó szándékú végtelen ciklusokat vagy más számítási pazarlással járó kódot, minden egyes tranzakciónak be kell állítani egy határt, hogy mennyi számítási lépést hajthat végre a kódlefutás. A számítás alapvető egysége a „gáz”; általában egy számítási lépés 1 gázba kerül, de egyes műveletek többet igényelnek, mert számítási szempontból drágábbak, vagy növelik a státuszként tárolandó adatok mennyiségét. Továbbá minden egyes tranzakciós adatban található bájt után 5 gázdíj is felszámításra kerül. A díjrendszer célja, hogy megkövetelje a támadótól, hogy minden általa felhasznált erőforrásért arányosan fizessen, beleértve a számítást, a sávszélességet és a tárhelyet is; ennélfogva minden olyan tranzakció esetében, amelynek eredményeként a hálózat ezeknek az erőforrásoknak bármelyikét nagyobb mennyiségben fogyasztja, az erőforrások növekedésével nagyjából arányos gázköltséggel kell számolni.
### Üzenetek {#messages}
-A szerződéseknek meg van a lehetőségük, hogy "üzeneteket" küldjenek más szerződéseknek. Az üzenetek olyan virtuális objektumok, amik soha nincsenek szerializálva és csak az Ethereum futtatási környezetben léteznek. Az üzenet a következőket tartalmazza:
+A szerződéseknek megvan a lehetőségük, hogy „üzeneteket” küldjenek más szerződéseknek. Az üzenetek olyan virtuális objektumok, amelyek nincsenek sorosítva és csak az Ethereum futtatási környezetben léteznek. Az üzenet a következőket tartalmazza:
- Az üzenet küldője (magától értetődő)
- Az üzenet címzettje
-- Az üzenettel küldendő Ether összege
-- Egy opcionális adat mező
+- Az üzenettel küldendő ether összege
+- Egy opcionális adatmező
- A `STARTGAS` érték
-Lényegében az üzenet olyan mint a tranzakció, kivéve, hogy nem a külső szereplő által lett létre hozva, hanem a szerződés által. Üzenet akkor jön létre, amikor a kódot jelenleg végrehajtó szerződés végrehajtja a `CALL` opkódot, amely előállítja és vére hajtja az üzenetet. Úgy mint a tranzakció, az üzenet is a kódja futtatására vezeti a címzett számlát. Ezáltal a szerződéseknek is ugyanúgy lehet kapcsolatuk másik szerződésekkel, mint a külső szereplőknek.
+Lényegében az üzenet olyan mint a tranzakció, kivéve, hogy nem a külső szereplő, hanem a szerződés hozta létre. Üzenet akkor jön létre, amikor a kódot végrehajtó szerződés a `CALL` opkódot futtatja, amely előállítja és végrehajtja az üzenetet. A tranzakcióhoz hasonlóan az üzenet is a címzett számla kódjának lefuttatását eredményezi. Ezáltal a szerződéseknek is ugyanúgy lehet kapcsolatuk másik szerződésekkel, mint a külső szereplőknek.
-Megjegyzendő, hogy a tranzakciók vagy szerződések által kiszabott gas díj vonatkozik a teljes gas összegre, amit az a tranzakció és az összes alvégrehajtási folyamat felhasznált. Például, ha egy külső szereplő A küld egy tranzakciót B-nek 1000 gas-al, és B 600 gas-t fogyaszt, mielőtt üzenetet küldene C-nek, és C belső végrehajtása 300 gas-t fogyaszt, mielőtt visszatérne, akkor B további 100 gas-t költhet, mielőtt kifogyna a gas-ból.
+Megjegyzendő, hogy a tranzakciók vagy szerződések által kiszabott gázdíj a teljes gázmennyiségre vonatkozik, amit az a tranzakció és az összes végrehajtási folyamat felhasznált. Például, ha a külső szereplő A küld egy tranzakciót B-nek 1000 gázzal, és B 600 gázt fogyaszt, mielőtt üzenetet küldene C-nek, és C belső végrehajtása 300 gázt fogyaszt, mielőtt visszatérne, akkor B még további 100 gázt költhet el.
-### Ethereum állapotátmenet függvény {#ethereum-state-transition-function}
+### Ethereum státuszváltozási függvény {#ethereum-state-transition-function}
-![Ether állapot átmenet](./ether-state-transition.png)
+![Ether státuszváltozás](./ether-state-transition.png)
-Az Ethereum állapotátmenet függvény, `APPLY(S,TX) -> S'` a következőképpen írható le:
+Az Ethereum státuszváltozási függvény `APPLY(S,TX) -> S'` a következőképpen írható le:
-1. Ellenőrizni, hogy a tranzakció jól formált-e (azaz megfelelő-e az értékek száma), az aláírás érvényes-e, és a nonce megegyezik-e a feladó számláján szereplő nonce-al. Ha nem, hiba vissza adása.
-2. Kiszámítani a tranzakciós díjat a következőképpen `STARTGAS * GASPRICE`, és meghatározni a küldő címet az aláírásból. Levonni a díjat a küldő fél számla egyenlegéről és növelni a küldő fél nonce-át. Ha nincs elegendő egyenleg, hiba vissza adása.
-3. Beállítani a `GAS = STARTGAS` kezdőértéket és bizonyos mennyiségű, bájtonkénti gas-t elvenni a tranzakció bájtjainak kifizetéséhez.
-4. Átutalni a tranzakció értékét a küldő számlájáról a fogadó számlájára. Ha a fogadó számla még nem létezik, létrehozni azt. Ha a fogadó számla egy szerződés, futtatni a szerződés kódját, addig amíg a tranzakció teljesül, vagy ameddig a végrehajtás során elfogy a gas.
-5. Ha az érték átutalás azért nem sikerült, mert a feladónak nem volt elegendő pénze, vagy a kódfuttatás során elfogyott a gas, akkor minden állapotváltozást visszavonni, kivéve a díjak kifizetését, és a díjakat a bányász számlájához hozzáadni.
-6. Máskülönben az összes fennmaradó gas díjat visszatéríteni a feladónak, az elfogyasztott gas-ért fizetett díjakat pedig elküldeni a bányásznak.
+1. Ellenőrzi, hogy a tranzakció jól formált-e (megfelelő az értékek száma), az aláírás érvényes-e, és a nonce megegyezik-e a feladó számláján szereplő nonce-szal. Ha nem, hiba visszaadása.
+2. Kiszámítja a tranzakciós díjat a következőképpen `STARTGAS * GASPRICE`, és meghatározza a küldő címét az aláírásból. Levonja a díjat a küldő fél számlaegyenlegéről és növeli a küldő fél nonce-át. Ha nincs elegendő egyenleg, hiba visszaadása.
+3. Beállítja a `GAS = STARTGAS` kezdőértéket, és bizonyos mennyiségű, bájtonkénti gázt elvesz a tranzakció bájtjainak kifizetéséhez.
+4. Átutalja a tranzakció értékét a küldő számlájáról a fogadó számlájára. Ha a fogadó számla még nem létezik, létrehozza azt. Ha a fogadó számla egy szerződés, futtatja a szerződés kódját, addig amíg a tranzakció teljesül, vagy ameddig a végrehajtás során elfogy a gáz.
+5. Ha az érték átutalás azért nem sikerült, mert a feladónak nem volt elegendő pénze, vagy a kódfuttatás során elfogyott a gáz, akkor minden állapotváltozást visszavon, kivéve a díjak kifizetését, majd a díjakat a bányász számlájához adja.
+6. Máskülönben az összes fennmaradó gázdíjat visszatéríti a feladónak, az elfogyasztott gázért fizetett díjakat pedig elküldi a bányásznak.
-Például tegyük fel, hogy a szerződés kódja:
+Tegyük fel, hogy a szerződés kódja a következő:
- if !self.storage[calldataload(0)]:
- self.storage[calldataload(0)] = calldataload(32)
+```py
+if !self.storage[calldataload(0)]:
+ self.storage[calldataload(0)] = calldataload(32)
+```
-Megjegyzendő, hogy a valóságban a szerződés alacsony szintű EVM programozási nyelven van írva; ez a példa az érthetőség kedvéért az egyik magas szintű programozási nyelven, a Serpent-en íródott, és le lehet fordítani EVM kódra. Tegyük fel, hogy a szerződés tárhelye az elején üres, és egy 10 Ether értékű tranzakciót elküldenek 2000 gas-al, 0,001 Ether gas árral, és 64 bájtnyi adattal, ahol 0-31 bájtok a `2` számot ábrázolják, és 32-63 bájtok pedig a karakterláncot ábrázolják `CHARLIE`.[fn. 6](#notes) Az állapot átmeneti függvény folyamata ebben az esetben a következőképpen alakul:
+Megjegyzendő, hogy a valóságban a szerződés alacsony szintű EVM programozási nyelven van írva; ez a példa az érthetőség kedvéért az egyik magas szintű programozási nyelven, a Serpentben íródott, és le lehet fordítani EVM kódra. Tegyük fel, hogy a szerződés tárhelye az elején üres, és egy 10 ether értékű tranzakciót elküldenek 2000 gázzal, 0,001 ether gázárral, és 64 bájtnyi adattal, ahol 0-31 bájtok a `2` számot ábrázolják, és 32-63 bájtok pedig a karakterláncot ábrázolják `CHARLIE`. A státuszváltozási függvény folyamata ebben az esetben a következőképpen alakul:
-1. Ellenőrizni, hogy a tranzakció érvényes és jól formált.
-2. Ellenőrizni, hogy a tranzakció küldőjének van legalább 2000 \* 0,001 = 2 Ethere. Ha igen, levonni 2 Ethert a küldő számlájáról.
-3. A gas = 2000 kezdőérték beállítása; feltételezve, hogy a tranzakció 170 bájt hosszú és a bájtdíj 5, levonni 850-et úgy, hogy 1150 gas maradjon.
-4. További 10 Ether levonása a küldő számlájáról, és annak hozzáadása a szerződés számlájához.
-5. A kód futtatása. Ebben az esetben ez egyszerű: a kód ellenőrzi, hogy a szerződés tárhelye a `2` indexen van használva, ha észreveszi, hogy nem, akkor a tárhely indexet beállítja `2` az értéket pedig `CHARLIE`. Tegyük fel, hogy ez 187 gas-ba kerül, így a fennmaradó gas összeg 1150 - 187 = 963
-6. 963 \ \* 0,001 = 0,963 Ether visszaadása a feladó fiókjába, és visszatérés az eredményül kapott állapothoz.
+1. Ellenőrzi, hogy a tranzakció érvényes és jól formált.
+2. Ellenőrzi, hogy a tranzakció küldőjének van legalább 2000 \* 0,001 = 2 ethere. Ha igen, levon 2 ethert a küldő számlájáról.
+3. Beállítja a gáz = 2000 kezdőértéket; feltételezve, hogy a tranzakció 170 bájt hosszú és a bájtdíj 5, levon 850-et úgy, hogy 1150 gáz marad.
+4. További 10 ethert levon a küldő számlájáról, és hozzáadja azt a szerződés számlájához.
+5. Lefuttatja a kódot. Ebben az esetben ez egyszerű: a kód ellenőrzi, hogy a szerződés tárhelye a `2` indexen van használva; ha észreveszi, hogy nem, akkor a tárhelyindexet beállítja `2`-re, az értéket pedig `CHARLIE`-ra. Tegyük fel, hogy ez 187 gázba kerül, így a fennmaradó gáz összege 1150 - 187 = 963
+6. 963 \ * 0,001 = 0,963 ethert visszaad a feladó számlájára, és visszatérés az eredményül kapott státuszhoz.
-Ha a tranzakció fogadó oldalán nem lenne szerződés, akkor a teljes tranzakciós díj egyszerűen megegyezne a megadott `GASPRICE` szorozva a tranzakció hosszával bájtokban, és a tranzakcióval együtt elküldött adatok lényegtelenek lennének.
+Ha a tranzakció fogadójának oldalán nem lenne szerződés, akkor a teljes tranzakciós díj egyszerűen megegyezne a megadott `GASPRICE` szorozva a tranzakció hosszával bájtokban, és a tranzakcióval együtt elküldött adatok lényegtelenek lennének.
-Megjegyzendő, hogy az üzenetek és a tranzakciók visszafordítása ugyanúgy működik: ha az üzenet végrehajtása során elfogy a gas, akkor az üzenet végrehajtása és az összes többi végrehajtás, amelyet az a végrehajtás váltott ki, visszaáll, de a szülő végrehajtásokat nem kell visszaállítani. Ez azt jelenti, hogy egy szerződés "biztonságosan" hívhat egy másik szerződést, mivel ha A G-gas-al hívja B-t, akkor A végrehajtása garantáltan legfeljebb G-gas veszteséget okoz. Végül megjegyzendő, hogy van egy műveleti kód (opcode) `CREATE`, ami létrehozza a szerződést; aminek a végrehajtási mechanikája általában hasonló a `CALL`-hoz, azaz híváshoz, azzal a kivétellel, hogy a végrehajtás kimenete határozza meg az újonnan létrehozott szerződés kódját.
+Megjegyzendő, hogy az üzenetek és a tranzakciók visszafordítása ugyanúgy működik: ha az üzenet végrehajtása során elfogy a gáz, akkor az üzenet végrehajtása és az ebből következő összes többi végrehajtás visszaáll, de a „szülő végrehajtásokat” nem kell visszaállítani. Ez azt jelenti, hogy egy szerződés „biztonságosan” hívhat egy másik szerződést, mivel ha A G mennyiségű gázzal hívja meg B-t, akkor A végrehajtása garantáltan legfeljebb G mennyiségű gázveszteséget okoz. Végül megjegyzendő, hogy van egy műveleti kód, `CREATE`, ami létrehozza a szerződést; aminek a végrehajtási mechanikája általában hasonló a `CALL`-hoz vagy híváshoz, azzal a kivétellel, hogy a végrehajtás kimenete határozza meg az újonnan létrehozott szerződés kódját.
-### Kód futtatás {#code-execution}
+### Kódfuttatás {#code-execution}
-Az Ethereum szerződésekben szereplő kód alacsony szintű, verem-alapú bájtkód nyelven íródott, amelyet "Ethereum virtuális gép kódnak" vagy "EVM kódnak" neveznek. A kód bájtok sorozatából áll, ahol mindegyik bájt egy műveletet képvisel. A kódfuttatás általában egy végtelen ciklus, ami a művelet ismételt végrehajtásából áll az aktuális programszámlálón (amely nullától kezdődik), majd eggyel növeli a programszámlálót addig, amíg el nem éri a kód végét, vagy egy hibát, illetve `STOP` vagy `RETURN` utasítást észlel. A műveletek háromféle helyhez férnek hozzá, ahol adatokat tárolhatnak:
+Az Ethereum szerződésekben szereplő kód alacsony szintű, stack-alapú bájtkód nyelven íródott, amelyet Ethereum virtuális gép (EVM) kódnak neveznek. A kód bájtok sorozatából áll, ahol mindegyik bájt egy műveletet képvisel. A kódfuttatás általában egy végtelen ciklus, ami a művelet ismételt végrehajtásából áll az aktuális programszámlálón (amely nullától kezdődik), majd eggyel növeli a számlálót addig, amíg el nem éri a kód végét, vagy egy hibát, illetve ` STOP ` vagy ` RETURN ` utasítást észlel. A műveletek háromféle helyhez férnek hozzá, ahol adatokat tárolhatnak:
-- A ** verem ** egy utolsóként be, elsőként ki (LIFO) tárolóhely, ahol az értékek rárakhatóak (push) és levehetőek (pop) a verem tetejéről
-- ** Memória **, egy végtelenül bővíthető bájt tömb
-- A szerződés hosszú távú ** tárhelye **, egy kulcs- és értéktároló. A veremtől és a memóriától eltérően, amelyek a számítás befejezése után nullázódnak, ez a tároló hosszú ideig fennmarad.
+- A **stack** egy utolsóként be, elsőként ki (LIFO) tárolóhely, ahol az értékek rárakhatóak (push) és levehetőek (pop) a stack tetejéről
+- **Memória **, egy végtelenül bővíthető bájttömb
+- A szerződés hosszú távú ** tárhelye **, egy kulcs-érték tároló. A stack-től és a memóriától eltérően, amelyek a számítás befejezése után nullázódnak, ez a tároló hosszú ideig fennmarad.
-A kód hozzáférhet a bejövő üzenet értékéhez, feladójához és adataihoz, valamint a blokk fejlécének adataihoz, és a kód egy bájt adattömböt is visszaadhat kimenetként.
+A kód hozzáférhet a bejövő üzenet értékéhez, feladójához és adataihoz, valamint a blokkfejléc adataihoz, és a kód egy bájt adattömböt is visszaadhat kimenetként.
-Az EVM kód formális végrehajtási modellje meglepően egyszerű. Amíg az Ethereum virtuális gép fut, teljes számítási állapota meghatározható a következő értéksorral: `(blokk_állapot, tranzakció, üzenet, kód, memória, verem, programszámláló(pc), gas)`, ahol a `blokk_állapot` az összes számlafiókot tartalmazó globális állapot, amely magában foglalja az egyenlegeket és a tárolóhelyeket. Minden egyes végrehajtási kör elején, az aktuális utasítás megtalálható a `kód`-nak (vagy 0 ha `pc >= len(code)`) a `programszámláló` -n meghatározott bájtja által, és minden utasításnak megvan a maga meghatározása abból a szempontból, hogy milyen hatással van az értéksorra. Például, `ADD` elvesz két elemet a veremből és visszarakja az összegüket, csökkenti a `gas` -t 1-el, és növeli a `programszámláló`-t 1-el, és a `SSTORE` leveszi a verem két legfelső elemét és behelyezi a második elemet a szerződés tárhelyébe az első elem által meghatározott indexen. Bár számos módja van az Ethereum virtuális gép végrehajtás optimalizálásának, futásidejű fordítással vagy másnéven röpfordítással, az Ethereum alapvető megvalósítása néhány száz kódsorban elvégezhető.
+Az EVM kód formális végrehajtási modellje meglepően egyszerű. Amíg az Ethereum virtuális gép fut, teljes számítási állapota meghatározható a következő értéksorral: `(block_state, transaction, message, code, memory, stack, pc, gas)` (blokk_állapot, tranzakció, üzenet, kód, memória, stack, programszámláló (pc), gáz), ahol a `block_state` az összes számlát tartalmazó globális státusz, amely magában foglalja az egyenlegeket és a tárolóhelyeket. Minden egyes végrehajtási kör elején, az aktuális utasítás megtalálható a `code`-nak a `pc` által meghatározott bájtja által (vagy 0 ha `pc >= len(code)`), és minden utasításnak megvan a maga meghatározása abból a szempontból, hogy milyen hatással van az értéksorra. Például, `ADD` elvesz két elemet a stack-ből és visszarakja az összegüket, csökkenti a `gas`-t 1-gyel, növeli a `pc`-t 1-gyel, az `SSTORE` leveszi a stack két legfelső elemét és behelyezi a második elemet a szerződés tárhelyébe az első elem által meghatározott indexen. Bár számos módja van az Ethereum virtuális gép végrehajtás optimalizálásának, futásidejű fordítással (röpfordítás), az Ethereum alapvető megvalósítása néhány száz kódsorban elvégezhető.
### Blokklánc és bányászat {#blockchain-and-mining}
-![Ethereum alkalmazás blokkdiagram](./ethereum-apply-block-diagram.png)
+![Ethereum blokkdiagram alkalmazása](./ethereum-apply-block-diagram.png)
-Az Ethereum blokklánc sok szempontból hasonló a Bitcoin blokklánchoz, bár vannak közöttük különbségek. A fő különbség az Ethereum és a Bitcoin között a blokklánc felépítésének tekintetében az, hogy a Bitcointól eltérően (amely csak a tranzakciós lista másolatát tartalmazza) az Ethereum blokkok tartalmazzák a tranzakciós lista és a legutóbbi állapot másolatát is. Emellett két másik érték, a blokk száma és a nehézsége is tárolva van a blokkban. Az Ethereum blokk érvényesítési algoritmusa a következő:
+Az Ethereum blokklánc sok szempontból hasonló a Bitcoin blokklánchoz, bár vannak közöttük különbségek. A fő különbség az Ethereum és a Bitcoin között a blokklánc felépítésének tekintetében az, hogy a Bitcointól eltérően (amely csak a tranzakciós lista másolatát tartalmazza) az Ethereum blokkok tartalmazzák a tranzakciós lista és a legutóbbi státusz másolatát is. Emellett két másik érték, a blokk száma és a nehézsége is tárolva van a blokkban. Az Ethereum blokk validációs algoritmusa a következő:
-1. Ellenőrizni, hogy az előző blokk, amire a blokk hivatkozik létezik és érvényes.
-2. Ellenőrizni, hogy a blokk időbélyege nagyobb-e, mint az előző blokké és kevesebb mint 15 perc telt el azóta
-3. Ellenőrizni, hogy a blokk száma, a nehézség, a tranzakció gyökér, a nagybácsi gyökér és a gas korlát (különféle alacsony szintű Ethereum-specifikus fogalmak) érvényesek-e.
-4. Ellenőrizni, hogy a blokk proof-of-work-je érvényes-e.
-5. Legyen `S[0]` az előző blokk után lévő állapot.
-6. Legyen `TX` a blokk tranzakciós listája `n` tranzakcióval. Minden `i`-t a `0...n-1`, -ban beállítani `S[i+1] = APPLY(S[i],TX[i])`. Ha valamelyik alkalmazás hibát ad vissza, vagy a blokkban az eddig a pontig fogyasztott gáz összmennyisége túllépi a `GASLIMIT` értéket, hibát ad vissza.
-7. Legyen az `S_FINAL` `S[n]`, de hozzáadva a bányásznak fizetett blokkjutalmat.
-8. Ellenőrizd, hogy az `S_FINAL` állapot Merkle-fája azonos-e a blokk fejlécben megadott végleges állapottal. Ha igen, a blokk érvényes; ellenkező esetben nem az.
+1. Ellenőrzi, hogy az előző blokk, amire a blokk hivatkozik, létezik és érvényes.
+2. Ellenőrzi, hogy a blokk időbélyege nagyobb-e, mint az előző blokké és kevesebb mint 15 perc telt el azóta
+3. Ellenőrzi, hogy a blokk száma, a nehézség, a tranzakciógyökér, az uncle-gyökér és a gázhatár (különféle alacsony szintű, Ethereum-specifikus fogalmak) érvényesek-e.
+4. Ellenőrzi, hogy a blokk proof-of-work-je érvényes-e.
+5. Legyen `S[0]` az előző blokk után lévő állapot.
+6. Legyen `TX` a blokk tranzakciólistája `n` tranzakcióval. Minden `i`-t a `0...n-1`-ben beállítja `S[i+1] = APPLY(S[i],TX[i])`. Ha valamelyik alkalmazás hibát ad vissza, vagy a blokkban az eddig a pontig fogyasztott gáz összmennyisége túllépi a `GASLIMIT` értéket, hibát ad vissza.
+7. Legyen az `S_FINAL` `S[n]`, de hozzáadva a bányásznak fizetett blokkjutalmat.
+8. Ellenőrzi, hogy az `S_FINAL` állapot Merkle-fája azonos-e a blokkfejlécben megadott végleges státusszal. Ha igen, a blokk érvényes; ellenkező esetben nem az.
-A megközelítés első pillantásra nagyon hatékonytalannak tűnhet, mert minden blokkal a teljes állapotot kell tárolni, de a valóságban a hatékonyság a Bitcoinéhoz hasonló. Ennek az oka, hogy az állapot a fa struktúrájában tárolódik, és minden blokk után a fa csak egy kis részét kell megváltoztatni. Így általában két szomszédos blokk között a fa túlnyomó részének azonosnak kell lennie, ezért az adatokat egyszer kell tárolni és kétszer lehet rájuk hivatkozni mutatók (azaz részfák hash-jeinek) használatával. Ennek megvalósításához egy speciális "Patricia-fának" nevezett fát használnak, beleértve a Merkle-fa koncepciójának módosítását, amely lehetővé teszi a csomópontok hatékony beillesztését és törlését, nem csak megváltoztatását. Ezen túlmenően, mivel az összes állapotinformáció része az utolsó blokknak, nincs szükség a teljes blokklánc előzmények tárolására - egy stratégia, amely, ha alkalmazható lenne a Bitcoin-ra, 5-20-szoros megtakarítást eredményezne a térben.
+A megközelítés első pillantásra nagyon hatékonytalannak tűnhet, mert minden blokkal a teljes státuszt kell tárolni, de a hatékonyság a Bitcoinéhoz hasonló. Ennek az oka, hogy a státusz fastruktúrában tárolódik, és minden blokk után a fa csak egy kis részét kell megváltoztatni. Így általában két szomszédos blokk között a fa túlnyomó részének azonosnak kell lennie, ezért az adatokat egyszer kell tárolni és kétszer lehet rájuk hivatkozni mutatók (azaz részfák hash-einek) használatával. Ennek megvalósításához egy speciális „Patricia-fát” használnak, beleértve a Merkle-fa koncepciójának módosítását, amely lehetővé teszi a csomópontok hatékony beillesztését és törlését, nem csak megváltoztatását. Ezen túlmenően, mivel az összes státuszinformáció része az utolsó blokknak, nincs szükség a teljes blokkláncelőzmények tárolására – ez egy olyan stratégia, amely ha alkalmazható lenne a Bitcoin-ra, 5-20-szoros megtakarítást eredményezne a tárhelyben.
-Gyakran feltett kérdés, hogy "hol" történik a szerződés kódjának végrehajtása, a fizikai hardver szempontjából. Erre egyszerű a válasz: a szerződés kódjának végrehajtási folyamata az állapotátmeneti függvény definíciójának része, amely a blokk érvényesítési algoritmus része, tehát ha egy tranzakciót hozzáadunk a `B` blokkhoz, akkor a tranzakció által létrehozott kód végrehajtását minden csomópont végrehajtja, most és a jövőben is, amelyek letöltik és érvényesítik a `B` blokkot.
+Gyakran felmerül az a kérdés, hogy „hol” történik a szerződés kódjának végrehajtása a fizikai hardver szempontjából. Erre egyszerű a válasz: a szerződés kódjának végrehajtási folyamata a státuszváltozási függvény definíciójának része, amely a blokk validációs algoritmus része, tehát ha egy tranzakciót hozzáadunk a `B` blokkhoz, akkor a tranzakció által létrehozott kód végrehajtását minden csomópont végrehajtja, most és a jövőben is, amelyek letöltik és validálják a `B` blokkot.
## Alkalmazások {#applications}
-Az Ethereumon általánosságban háromféle alkalmazás létezik. Az első kategória a pénzügyi alkalmazások, amelyek hatékonyabb módszereket kínálnak a felhasználóknak a pénzük kezelésére és szerződéskötésre. Ebbe beletartoznak a devizák, a derivatív pénzügyi eszközök, a fedezeti ügyletek, a takarék pénztárcák, végrendeletek, és végül akár teljes körű munkaszerződések egyes kategóriái. A második kategória a félig pénzügyi alkalmazások, amik kapcsolatosak a pénzzel, de a tevékenységeiknek van egy súlyos, nem pénzügyi oldala is; erre tökéletes példa az önérvényesítő jutalmak, a számítási problémák megoldásért. Végül vannak olyan alkalmazások, mint az online szavazás és a decentralizált irányítás, amelyek egyáltalán nem pénzügyi vonatkozásúak.
+Az Ethereumon általánosságban háromféle alkalmazás létezik. Az első kategória a pénzügyi alkalmazások, amelyek hatékonyabb módszereket kínálnak a felhasználóknak a pénzük kezelésére és szerződéskötésre. Ebbe beletartoznak a devizák, a derivatív pénzügyi eszközök, a fedezeti ügyletek, a megtakarításitárcák, végrendeletek, és végül akár teljes körű munkaszerződések egyes kategóriái. A második kategória a félig pénzügyi alkalmazások, amelyek kapcsolatosak a pénzzel, de a tevékenységeiknek van egy jelentős, nem pénzügyi oldala is; erre tökéletes példa az önérvényesítő jutalmak a számítási problémák megoldásért. Végül vannak olyan alkalmazások, mint az online szavazás és a decentralizált irányítás, amelyek egyáltalán nem pénzügyi vonatkozásúak.
-### Token rendszerek {#token-systems}
+### Tokenrendszerek {#token-systems}
-A blokkláncon való token vagyis zseton rendszereknek számos alkalmazása van, kezdve az olyan alvalutáktól, amik olyan eszközöket képviselnek, mint az USA Dollár vagy az arany, egészen a vállalati részvények, az okos tulajdont képviselő egyedi zsetonok, a biztonságos, hamisíthatatlan kuponok, és még olyan zseton rendszerekig is, amik semmilyen kapcsolatban nem állnak a hagyományos értékhez, csak a jutalmazás pontrendszereiként használják őket. A zseton rendszereket meglepően egyszerű módon létre lehet hozni az Ethereumon. Kulcsfontosságú megérteni azt, hogy a pénznem vagy a zseton rendszer alapvetően egy egy műveletből álló adatbázis: vonjon le X egységet A-ból, és adjon X egységet B-nek, azzal a feltétellel, hogy (1) A-nak a tranzakció előtt legalább X egysége volt és (2) a tranzakciót A jóváhagyta. A zseton rendszer megvalósításához mindössze annyi kell, hogy ezt a logikát beépítsék egy szerződésbe.
+A blokkláncon alapuló tokenrendszereknek számos alkalmazási területe van, mint az alvaluták, amelyek olyan eszközöket képviselnek, mint az USA dollár vagy az arany, a vállalati részvények, az okos tulajdont képviselő egyedi tokenek, a biztonságos és hamisíthatatlan kuponok, vagy amelyeknél semmilyen kapcsolat sincs a hagyományos értékhez, csak ösztönzéshez használják azokat. A tokenrendszereket meglepően egyszerű módon létre lehet hozni az Ethereumon. Kulcsfontosságú megérteni azt, hogy a pénznem vagy a tokenrendszer alapvetően egy műveletből álló adatbázis: vonjon le X egységet A-tól, és adjon X egységet B-nek, azzal a feltétellel, hogy 1) A-nak a tranzakció előtt legalább X egysége volt és 2) a tranzakciót A jóváhagyta. A tokenrendszer megvalósításához mindössze annyi kell, hogy ezt a logikát beépítsék egy szerződésbe.
-Az alapkód a zsetonrendszer megvalósítására Serpent programnyelven a következőképpen néz ki:
+Az alapkód a tokenrendszer megvalósítására Serpent programnyelven a következőképpen néz ki:
- def send(to, value):
- if self.storage[msg.sender] >= value:
- self.storage[msg.sender] = self.storage[msg.sender] - value
- self.storage[to] = self.storage[to] + value
+```py
+def send(to, value):
+ if self.storage[msg.sender] >= value:
+ self.storage[msg.sender] = self.storage[msg.sender] - value
+ self.storage[to] = self.storage[to] + value
+```
-Ez lényegében a "bankrendszer" állapotátmeneti függvényének szó szerinti megvalósítását jelenti, amely ebben a dokumentumban fentebb már le lett írva. Néhány extra kódsort hozzá kell adni, hogy biztosítsuk a pénzegységek elosztásának kezdeti lépését, néhány másik szélsőséges esetben is, és ideális esetben egy függvényt is hozzáadunk, ami lehetővé teszi másik szerződéseknek, hogy lekérdezzék egy cím számlaegyenlegét. De ennyi az egész. Elméletileg a pénznemként működő Ethereum-alapú zsetonrendszerek tartalmazhatnak egy másik fontos jellemzőt, ami a Bitcoin-alapú blokkláncon található pénzeszközöknél hiányzik: a tranzakciós díjak közvetlen fizetése ugyanabban a pénznemben. Ez úgy lehetne megvalósítható, hogy a szerződés fenntartana egy Ether egyenleget, amelyből visszatérítené a feladónak a díjakra használt Ethert, és ezt az egyenleget úgy töltené fel, hogy összegyűjti a díjakra beszedett belső valutaegységeket, és egy folyamatosan futó aukción továbbértékesíti azokat. A felhasználóknak tehát Etherrel kellene "aktiválniuk" a számláikat, de onnantól, hogy az Ether ott van, újrafelhasználható, mert a szerződés minden alkalommal visszatérítené.
+Ez lényegében a „bankrendszer” státuszváltozási függvényének szó szerinti megvalósítását jelenti, amely ebben a dokumentumban fentebb már le lett írva. Néhány extra kódsort hozzá kell adni, hogy biztosítsuk a pénzegységek elosztásának kezdeti lépését, néhány másik szélsőséges esetben is, és ideális esetben egy függvényt is hozzáadunk, ami lehetővé teszi másik szerződéseknek, hogy lekérdezzék egy cím számlaegyenlegét. De ennyi az egész. Elméletileg a pénznemként működő Ethereum-alapú tokenrendszerek tartalmazhatnak egy másik fontos jellemzőt, ami a Bitcoin-alapú blokkláncon található pénzeszközöknél hiányzik: a tranzakciós díjak közvetlen fizetése ugyanabban a pénznemben. Ez úgy lehetne megvalósítható, hogy a szerződés fenntartana egy ether egyenleget, amelyből visszatérítené a feladónak a díjakra használt ethert, és ezt úgy töltené fel, hogy összegyűjti a díjakra beszedett belső valutaegységeket, és egy folyamatosan futó aukción továbbértékesíti azokat. A felhasználóknak tehát etherrel kellene „aktiválniuk” a számláikat, de onnantól, hogy az ether ott van, újrafelhasználható, mert a szerződés minden alkalommal visszatérítené.
### Pénzügyi derivatívák és stabil értékű valuták {#financial-derivatives-and-stable-value-currencies}
-A pénzügyi derivatívák az "intelligens szerződés" leggyakoribb alkalmazásai, és az egyik legegyszerűbben megvalósítható kóddal. A pénzügyi szerződések végrehajtása során az a fő kihívás, hogy többségük külső árfolyamra való hivatkozást igényel; például nagyon kívánatos alkalmazás egy olyan okos szerződés, amely fedezetet ad az Ether (vagy más kriptovaluta) árfolyamingadozására az amerikai dollárral szemben, de ehhez a szerződésnek tudnia kell az ETH / USD értékét. Ennek legegyszerűbb módja egy adott fél (pl. NASDAQ) által fenntartott "adatcsatorna" szerződés, amelynek célja, hogy az adott fél képes legyen a szerződés szükség szerinti frissítésére, és egy olyan felület biztosítása, amely lehetővé teszi más szerződések számára, hogy üzenetet küldjenek a szerződésnek, és választ kapjanak, ami tratalmazza az árat.
+A pénzügyi derivatívák az „okosszerződés” leggyakoribb alkalmazásai, és az egyik legegyszerűbben megvalósíthatók a kód szempontjából. A pénzügyi szerződések végrehajtása során az a fő kihívás, hogy többségük külső árfolyamra való hivatkozást igényel; például kívánatos alkalmazás egy olyan okosszerződés, amely fedezetet ad az ether (vagy más kriptovaluta) árfolyamingadozására az amerikai dollárral szemben, de ehhez a szerződésnek tudnia kell az ETH/USD értékét. Ennek legegyszerűbb módja egy adott fél (például a NASDAQ) által fenntartott „adatforrás” szerződés, amelynek célja, hogy az adott fél képes legyen a szerződés szükség szerinti frissítésére, és egy olyan felület biztosítása, amely lehetővé teszi más szerződések számára, hogy üzenetet küldjenek a szerződésnek, és a válaszban megkapják az árat.
Tekintettel erre a kritikus összetevőre, a fedezeti szerződés a következőképpen nézne ki:
-1. Megvárni, amíg az A fél berak 1000 Ethert.
-2. Megvárni, amíg a B fél berak 1000 Ethert.
-3. Az adatcsatorna szerződés lekérdezésén keresztül kiszámított 1000 Ether USD értékének rögzítése a tárolóhelyen, mondjuk, hogy ez $x.
-4. 30 nap elteltével hagyni, hogy A vagy B "újraaktiválja" a szerződést úgy, hogy $x értékű Ethert küld (amelyet úgy számol ki, hogy újból lekérdezi az adatcsatorna szerződést az új árról) A-nak, a többit pedig B-nek.
+1. Megvárja, amíg az A fél berak 1000 ethert.
+2. Megvárja, amíg a B fél berak 1000 ethert.
+3. Az adatforrás szerződés lekérdezésén keresztül kiszámított 1000 ether USD értékének rögzítése a tárolóhelyen, mondjuk, hogy ez $x.
+4. 30 nap elteltével hagyja, hogy A vagy B „újraaktiválja” a szerződést annak érdekében, hogy $x értékű ethert küldjön (amelyet úgy számol ki, hogy újból lekérdezi az adatforrás szerződést az új árról) A-nak, a többit pedig B-nek.
-Egy ilyen szerződés jelentős potenciállal bírna a kriptokereskedelemben. Az egyik fő probléma, amire gyakran hivatkoznak a kriptovalutával kapcsolatban, hogy ingatag az árfolyama; bár sok felhasználó és kereskedő vágyik a kriptográfiai eszközök biztonságára és kényelmére, nem biztos, hogy szembe akar nézni azzal a lehetőséggel, hogy egyetlen nap alatt elveszítheti pénzeszközei értékének 23% -át. Eddig a leggyakrabban a kibocsátó által biztosított eszközöket javasolták; annak az elképzelésnek az alapján, hogy a kibocsátó létrehoz egy pénzeszközt, ahol joga van kibocsátani és visszavonni egységeket, és mindenkinek egy egységnyi pénzeszközt ad, aki (offline) cserébe ad neki egy meghatározott, egy egységnyi alapul szolgáló eszközt (pl. arany, USA Dollár). A kibocsátó ezután megígéri, hogy az alapul szolgáló eszköz egy egységét adja annak, aki visszaküldi a kripto eszköz egy egységét. Ez a mechanizmus lehetővé teszi minden nem kriptográfiai eszköz kriptográfiai eszközzé történő emelését, feltéve, hogy a kibocsátó megbízható.
+Egy ilyen szerződés jelentős potenciállal bírna a kriptokereskedelemben. Az egyik fő probléma, amire gyakran hivatkoznak a kriptovalutával kapcsolatban, hogy ingatag az árfolyama; bár sok felhasználó és kereskedő vágyik a kriptográfiai eszközök biztonságára és kényelmére, nem biztos, hogy vállalja azt a lehetőséggel, hogy egyetlen nap alatt elveszítheti pénzeszközei értékének 23%-át. Eddig a leggyakrabban a kibocsátó által biztosított eszközöket javasolták; annak az elképzelésnek az alapján, hogy a kibocsátó létrehoz egy pénzeszközt, ahol joga van kibocsátani és visszavonni egységeket, és mindenkinek egy egységnyi pénzeszközt ad, aki (offline) cserébe ad neki egy meghatározott, egy egységnyi alapul szolgáló eszközt (például arany, USA dollár). A kibocsátó ezután megígéri, hogy az alapul szolgáló eszköz egy egységét adja annak, aki visszaküldi a kriptoeszköz egy egységét. Ez a mechanizmus lehetővé teszi a nem kriptográfiai eszköz felemelését kriptográfiai eszközzé, feltéve, hogy a kibocsátó megbízható.
-A gyakorlatban azonban a kibocsátók nem mindig megbízhatóak, és egyes esetekben a banki infrastruktúra túl gyenge vagy túl ellenséges ahhoz, hogy ilyen szolgáltatások létezzenek. A pénzügyi derivatívák alternatívát kínálnak. Itt ahelyett, hogy egyetlen kibocsátó biztosítaná az eszközök fedezetére szolgáló alaptőkét, a spekulánsok decentralizált piacon való fogadásai arról, hogy egy kriptográfiai referencia eszköz (pl. ETH) ára emelkedni fog-e játsszák azt a szerepet. A kibocsátóktól eltérően a spekulánsoknak nincs lehetőségük az ügylettel kapcsolatos kötelezettségük elmulasztására, mert a fedezeti szerződés letétben tartja pénzeszközeiket. Fontos megjegyezni, hogy ez a megközelítés nincs teljesen decentralizálva, mert még mindig megbízható forrásra van szükség az árjegyző szerepének betöltésére, bár már ez is vitathatatlanul hatalmas előrelépés az infrastruktúra-követelmények csökkentése szempontjából (ellentétben a kibocsátóval, az árfolyam-kiadáshoz nem szükséges licenc és valószínűleg a szólásszabadság kategóriájába sorolhatók), és a csalás lehetőségét is csökkenti.
+A gyakorlatban azonban a kibocsátók nem mindig megbízhatóak, és egyes esetekben a banki infrastruktúra túl gyenge vagy túl ellenséges ahhoz, hogy ilyen szolgáltatások létezzenek. A pénzügyi derivatívák alternatívát kínálnak. Itt ahelyett, hogy egyetlen kibocsátó biztosítaná az eszközök fedezetére szolgáló alaptőkét, a spekulánsok decentralizált piacon való fogadásai arról, hogy egy kriptográfiai referencia eszköz (például az ETH) ára emelkedni fog-e játsszák ezt a szerepet. A kibocsátóktól eltérően a spekulánsoknak nincs lehetőségük az ügylettel kapcsolatos kötelezettségük elmulasztására, mert a fedezeti szerződés letétben tartja a pénzeszközeiket. Fontos megjegyezni, hogy ez a megközelítés nincs teljesen decentralizálva, mert még mindig megbízható forrásra van szükség az árjegyző szerepének betöltésére, bár már ez is hatalmas előrelépés az infrastruktúrakövetelmények csökkentése szempontjából (ellentétben a kibocsátóval, az árfolyamkiadáshoz nem szükséges engedély, és valószínűleg a szólásszabadság kategóriájába sorolhatók), és a csalás lehetőségét is csökkenti.
-### Identitás és Hírnév Rendszerek {#identity-and-reputation-systems}
+### Identitás- és hírnévrendszerek {#identity-and-reputation-systems}
-A legkorábbi alternatív kriptovaluta, a, [Namecoin](http://namecoin.org/), egy Bitcoinhoz hasonló blokkláncot próbált meg használni egy névregisztrációs rendszer biztosításához, ahol a felhasználók a nevüket egy nyilvános adatbázisba regisztrálhatták több más adat mellett. A leggyakrabban idézett alkalmazási eset [DNS](https://wikipedia.org/wiki/Domain_Name_System) rendszerre, a domain nevek, például "bitcoin.org" (vagy a Namecoin esetében "bitcoin.bit") leképezése egy IP címre. Egyéb alkalmazási esetek például az e-mail autentikációk és a potenciálisan haladóbb reputációs rendszerek. Nézzünk egy alap szerződést, amely Namecoin-féle név regisztrációt biztosít az Ethereumon:
+A legkorábbi alternatív kriptovaluta, a, [Namecoin](http://namecoin.org/), egy Bitcoinhoz hasonló blokkláncot próbált meg használni egy névregisztrációs rendszer biztosításához, ahol a felhasználók a nevüket egy nyilvános adatbázisba regisztrálhatták több más adat mellett. A leggyakrabban idézett alkalmazási eset a [DNS](https://wikipedia.org/wiki/Domain_Name_System) rendszerre, a domain nevek, például „bitcoin.org” (vagy a Namecoin esetében „bitcoin.bit”) leképezése egy IP-címre. Egyéb alkalmazási esetek például az e-mail autentikációk és a potenciálisan haladóbb reputációs rendszerek. Nézzünk egy alap szerződést, amely Namecoin-féle név regisztrációt biztosít az Ethereumon:
- def register(name, value):
- if !self.storage[name]:
- self.storage[name] = value
+```py
+def register(name, value):
+ if !self.storage[name]:
+ self.storage[name] = value
+```
-A szerződés nagyon egyszerű; gyakorlatilag egy adatbázis az Ethereum hálózatban, amelyhez hozzá lehet adni, de nem lehet módosítani vagy törölni belőle. Bárki regisztrálhat nevet valamilyen értékkel, majd a regisztráció örökre megmarad. Egy kifonomultabb névregisztrációs szerződésben szerepelne egy "függvény kaluzula", amely engedné a többi szerződésnek a lekérdezést, valamint a név "tulajdonosának" (azaz az első regisztrálónak) egy mechanizmust, az adat módosítására vagy a tulajdonjog átadására. Bárki hozzáadhat reputációt és web-of-trust funkcionalitást a legfelső réteghez.
+A szerződés nagyon egyszerű; gyakorlatilag egy adatbázis az Ethereum hálózatban, amelyhez hozzá lehet adni, de nem lehet módosítani vagy törölni belőle. Bárki regisztrálhat nevet valamilyen értékkel, majd a regisztráció örökre megmarad. Egy kifonomultabb névregisztrációs szerződésben szerepelne egy „függvény kaluzula”, amely engedné a többi szerződésnek a lekérdezést, valamint a név „tulajdonosának” (azaz az első regisztrálónak) egy mechanizmust, az adat módosítására vagy a tulajdonjog átadására. Bárki hozzáadhat reputációt és digitális azonosító (web-of-trust) funkcionalitást az egész tetejére.
### Decentralized fájltárhely {#decentralized-file-storage}
-Az elmúlt években számos népszerű online fájltárhely startup tűnt fel, amelyek közül az egyik legkiemelkedőbb a Dropbox, akik lehetővé teszik ügyfeleiknek, hogy a merevlemezük biztonsági mentését feltöltsék, majd a szolgáltatással tároltassák azt, majd a fehasználó havidíj ellenében férhet hozzá az adataihoz. Azonban ezen a ponton a fájltárhely piac relatív nem hatékony; ha megvizsgáljuk a különböző [meglévő megoldásokat](http://online-storage-service-review.toptenreviews.com/), láthatjuk, hogy különösen a "borzongások völgye", azaz a 20-200 GB szinten, ahol sem az ingyenes kvóták, sem a vállalati szintű kedvezmények nem jelennek meg, a mainstream fájltárolási költségek havi árszintje ott tart, hogy egy hónapért többet fizet az átlag felhasználó, mint egy teljes merevlemezért. Az Ethereum szerződések lehetővé teszik egy decentralizált fájl tárolási ökoszisztéma fejlesztését, ahol az egyes felhasználók kis mennyiségű pénzt kereshetnek azzal, hogy bérbeadják saját merevlemezüket és a használaton kívüli tárhelyüket, ezzel is lefelé hajtva a tárolás költségeit.
+Az elmúlt években számos népszerű online tárhely startup tűnt fel, amelyek közül az egyik legkiemelkedőbb a Dropbox, akik lehetővé teszik ügyfeleiknek, hogy a merevlemezük biztonsági mentését feltöltsék, majd a szolgáltatással tároltassák azt, majd a fehasználó havidíj ellenében férhet hozzá az adataihoz. Azonban ezen a ponton a fájltárhely piac relatíve nem hatékony; ha megvizsgáljuk a különböző meglévő megoldásokat, láthatjuk, hogy különösen a „furcsa zónában”, a 20-200 GB szinten, ahol sem az ingyenes kvóták, sem a vállalati szintű kedvezmények nem jelennek meg, a mainstream fájltárolási költségek havi árszintje ott tart, hogy egy hónapért többet fizet az átlag felhasználó, mint egy teljes merevlemezért. Az Ethereum szerződések lehetővé teszik egy decentralizált fájltárolási ökoszisztéma fejlesztését, ahol az egyes felhasználók kis mennyiségű pénzt kereshetnek azzal, hogy bérbeadják saját merevlemezüket és a használaton kívüli tárhelyüket, ezzel is lefelé hajtva a tárolás költségeit.
-Az ilyen eszközök kulcsfontosságú megerősítő eleme az általunk "decentralizált Dropbox szerződésnek" elnevezett megoldás. A szerződés a következő módon működik. Először a kívánt adatokat blokkokra bontjuk, adatvédelmi okokból ezeket titkosítjuk, majd egy Merkle-fát építünk belőle. Ezután létrehozunk egy szerződést azzal a szabállyal, hogy minden N blokkban a szerződés egy véletlen indexet választ ki a Merkle-fában (az előző blokk-hash segítségével a szerződés kódjából, véletlenszerűen), majd X ethert adunk az első entitásnak, hogy egy egyszerűsített fizetés hitelesítéssel lássa el a tranzakciót, például a blokk tulajdonjogát bizonyító elemmel az adott indexen a fában. Amikor egy felhasználó újra le szeretné tölteni a fájlt, egy mikrofizetési csatorna protokollt használhat (például 1 szabo 32 kilobyte adatért) a fájl lekérésére; a leginkább költséghatékony megközelítés az, amikor a fizető félnek csak a legvégén kell publikálnia a tranzakciót, ahelyett, hogy a tranzakciót egy kissé jövedelmezőbbre cserélné le ugyanazzal a nounce-al 32 kilobytonként.
+Az ilyen eszközök kulcsfontosságú megerősítő eleme az általunk „decentralizált Dropbox szerződésnek” elnevezett megoldás. A szerződés a következő módon működik. Először a kívánt adatokat blokkokra bontjuk, adatvédelmi okokból titkosítjuk, majd egy Merkle-fát építünk belőle. Ezután létrehozunk egy szerződést azzal a szabállyal, hogy minden N blokkban a szerződés egy véletlen indexet választ ki a Merkle-fában (az előző blokk-hash segítségével a szerződés kódjából véletlenszerűen), majd X ethert adunk az első entitásnak, hogy egy egyszerűsített fizetés hitelesítéssel lássa el a tranzakciót, például a blokk tulajdonjogát bizonyító elemmel az adott indexen a fában. Amikor egy felhasználó újra le szeretné tölteni a fájlt, egy mikrofizetési csatorna protokollt használhat (például 1 szabo 32 kilobájt adatért) a fájl lekérésére; a leginkább költséghatékony megközelítés az, amikor a fizető félnek csak a legvégén kell publikálnia a tranzakciót, ahelyett, hogy a tranzakciót egy kissé jövedelmezőbbre cserélné le ugyanazzal a nounce-al 32 kilobájtonként.
A protokoll egyik fontos jellemzője, hogy bár úgy tűnik, hogy valaki több véletlen csomópontot bíz meg azzal, hogy ne felejtse el a fájlt, a saját kockázatát a nullához közelire csökkentheti azzal, hogy a fájlt több részre bontja titkos megosztással, majd figyeli a szerződést, hogy lássa az egyes darabok továbbra is valamelyik csomópont birtokában vannak. Ha egy szerződés továbbra is fizet, akkor kriptográfiai bizonyíték van arra, hogy valaki továbbra is tárolja a fájlt.
### Decentralizált Autonóm Szervezetek {#decentralized-autonomous-organizations}
-A "decentralizált autonóm szervezetek" általános koncepciója, hogy egy virtuális entitásnak, amely adott számú taggal vagy "részvényessel" rendelkezik, akár esetleg 67%-os többséggel, felhatalmazása lehet arra, hogy elköltse az entitás pénzeszközeit és módosítsa a kódját. A tagok együttesen dönthetik el, hogy a szervezet hogyan allokálja a pénzeszközöket. Egy DAO pénzeszközeinek allokálásának módszerei a pénzadománytól, fizetéseken át akár még egzotikusabb mechanizmusokig terjedhet, mint például egy belső valuta a munka elismerésére. Ez gyakorlatilag replikálja a hagyományos vállalatok vagy non-profit entitások jogi csapdáit, de a végrehajtásra kizárólag kriptográfiai blokklánc technológiát használ. Eddig a DAO-kkal kapcsolatban leginkább a kapitalista "decentralizált autonóm vállalat" (DAC) modelljéről beszéltünk, ahol a részvényesek osztalékot vagy kereskedhető részvényeket kapnak; azonban van egy alternatív, talán a "decentralizált autonóm közösség" fogalommal leírható értelmezés is, ahol a tagok egyenlő mértékben vesznek részt a döntéshozatalban, és a tagok 67%-ának beleegyezése szükséges ahhoz, hogy felvegyenek egy új tagot, vagy eltávolítsanak egy tagot. Azt a követelményt, hogy egy személy csak egy tagsággal rendelkezhet a csoportnak kollektíven kell érvényre juttatnia.
+A „decentralizált autonóm szervezetek” (DAO) általános koncepciója, hogy egy virtuális entitásnak, amely adott számú taggal vagy „részvényessel” rendelkezik, akár esetleg 67%-os többséggel, felhatalmazása lehet arra, hogy elköltse az entitás pénzeszközeit és módosítsa a kódját. A tagok együttesen dönthetik el, hogy a szervezet hogyan allokálja a pénzeszközöket. Egy DAO pénzeszközeinek allokálásának módszerei a pénzadománytól, fizetéseken át akár még egzotikusabb mechanizmusokig terjedhet, mint például egy belső valuta a munka elismerésére. Ez gyakorlatilag replikálja a hagyományos vállalatok vagy non-profit entitások jogi csapdáit, de a végrehajtásra kizárólag kriptográfiai blokklánc technológiát használ. Eddig a DAO-kkal kapcsolatban leginkább a kapitalista „decentralizált autonóm vállalat” (DAC) modelljéről beszéltünk, ahol a részvényesek osztalékot vagy kereskedhető részvényeket kapnak; azonban van egy alternatív, talán a „decentralizált autonóm közösség” fogalommal leírható értelmezés is, ahol a tagok egyenlő mértékben vesznek részt a döntéshozatalban, és a tagok 67%-ának beleegyezése szükséges ahhoz, hogy felvegyenek vagy eltávolítsanak egy tagot. Azt a követelményt, hogy egy személy csak egy tagsággal rendelkezhet a csoportnak kollektíven kell érvényre juttatnia.
-A DAO-k kódolásának általános leírása a következő. A legegyszerűbb megoldás egy önmagát módosító kódelem alkalmazása, amely változik, ha a tagok kétharmada egyetért egy módosítással. Bár a kód elméletileg állandó, bárki megkerülheti, és de-facto megváltoztathatja, ha a kód darabjait külön szerződésekbe foglalja, majd a módosítható tárhelyen menti el azt a címet, amit a szerződéseknek meg kell hívni. Egy ilyen DAO szerződés egyszerű implementációjában három tranzakció típus lenne, amelyeket a tranzakcióban megadott adatok különböztetnek meg:
+A DAO-k kódolásának általános leírása a következő. A legegyszerűbb megoldás egy önmagát módosító kódelem alkalmazása, amely változik, ha a tagok kétharmada egyetért egy módosítással. Bár a kód elméletileg állandó, bárki megkerülheti, és de-facto megváltoztathatja, ha a kód darabjait külön szerződésekbe foglalja, majd a módosítható tárhelyen menti el azt a címet, amit a szerződéseknek meg kell hívni. Egy ilyen DAO szerződés egyszerű implementációjában három tranzakciótípus lenne, amelyeket a tranzakcióban megadott adatok különböztetnek meg:
-- `[0,i,K,V]` ahol a javaslatot az `i` indexxel regisztrálják, hogy módosítsa a címet a `K` tárolási indexen `V` értékre
-- `[1,i]` amely egy szavazatot regisztrál az `i` javaslat előnyben részesítésére
+- `[0,i,K,V]`, ahol a javaslatot az `i` indexxel regisztrálják, hogy módosítsa a címet a `K` tárolási indexen `V` értékre
+- `[1,i]` egy szavazatot regisztrál az `i` javaslat előnyben részesítésére
- `[2,i]` az `i` javaslat véglegesítésére, ha elég szavazat érkezett be
-A szerződésben ezután mindegyikre szerepel egy klauzula. Ezután rögzíti az összes nyitott tárolási módosítást, és azt a listát is, hogy ki szavazott rájuk. Tartalmazza a tagok listáját is. Amikor valamelyik tárolási módosításra a tagok kétharmada szavazott, a véglegesítési tranzakció hajtja végre a módosítást. Egy kifinomultabb vázban lehet beépített szavazási lehetőség is olyan funkciókra, mint például tranzakció küldése, tagok hozzáadása vagy eltávolítása, valamint lehetővé kell tenni egy [Liquid Democracy](https://wikipedia.org/wiki/Delegative_democracy)-stílusú szavazási delegálást is (azaz egyvalaki kijelölheti, hogy ki szavazzon helyette, majd a kijelölés átadható, tehát, ha A B-t bízza meg a szavazással, majd B C-t bízza meg, C határozza meg A szavazatát). A tervezés lehetővé teszi, hogy a DAO organikusan nőjjön decentralizált közösségként, és a tagok végül delegálhassák azt a feladatot egy specialistának, hogy kiszűrjék a tagokat, szemben a specialisták "jelenlegi rendszerével" akik a közösség egyes tagjait érintő változások függvényében könnyen ki- vagy beugorhatnak.
+A szerződésben ezután mindegyikre szerepel egy klauzula. Ezután rögzíti az összes nyitott tárolási módosítást, és azt a listát is, hogy ki szavazott rájuk. Tartalmazza a tagok listáját is. Amikor valamelyik tárolási módosításra a tagok kétharmada szavazott, a véglegesítési tranzakció hajtja végre a módosítást. Egy kifinomultabb vázban lehet beépített szavazási lehetőség is olyan funkciókra, mint például tranzakció küldése, tagok hozzáadása vagy eltávolítása, valamint lehetővé kell tenni egy [likvíd demokrácia](https://wikipedia.org/wiki/Liquid_democracy)-stílusú szavazási delegálást is (azaz egy valaki kijelölheti, hogy ki szavazzon helyette, majd a kijelölés átadható, tehát, ha A B-t bízza meg a szavazással, majd B C-t bízza meg, C határozza meg A szavazatát). A tervezés lehetővé teszi, hogy a DAO organikusan nőjjön decentralizált közösségként, és a tagok végül delegálhassák azt a feladatot egy specialistának, hogy kiszűrjék a tagokat, szemben a specialisták „jelenlegi rendszerével” akik a közösség egyes tagjait érintő változások függvényében könnyen ki- vagy beugorhatnak.
-Alternatív mód a decentralizált vállalat modell, amikor valamelyik számlán nulla vagy több részvény van, és a döntéshozatalhoz a részvények kétharmadára van szükség. Egy teljes vázban ideális esetben van egy eszközkezelő funkció, lehetőség részvények vásárlására vagy eladására szóló ajánlattételre, valamint lehetőség az ajánlatok elfogadására (lehetőség szerint a szerződésen belül egy ajánlat-egyeztető mechanizmussal). A delegálás szintén Liquid Democracy-stílusban létezik, általánosítva az "igazgatótanács" koncepciót.
+Alternatív modell egy decentralizált vállalat részére, amikor valamelyik számlán nulla vagy több részvény van, és a döntéshozatalhoz a részvények kétharmadára van szükség. Egy teljes vázban ideális esetben benne van az eszközkezelő funkció, a lehetőség részvények vásárlására vagy eladására szóló ajánlattételre, valamint a lehetőség az ajánlatok elfogadására (lehetőség szerint a szerződésen belül egy ajánlategyeztető mechanizmussal). A delegálás szintén likvid demokrácia-stílusban létezik, általánosítva az „igazgatótanács” koncepcióját.
### További alkalmazások {#further-applications}
-**1. Tárcák mentése**. Tegyük fel, hogy Alice biztonságban szeretné tudni pénzeszközeit, azonban aggódik amiatt, hogy veszteség éri, vagy valaki feltöri a privát-kulcsát. Ethert helyez el egy szerződésben Bobbal, egy bankkal a következőképpen:
+**1. Megtakarítási tárcák**. Tegyük fel, hogy Alice biztonságban szeretné tudni pénzeszközeit, azonban aggódik amiatt, hogy veszteség éri, vagy valaki feltöri a privát kulcsát. Ethert helyez el egy szerződésben Bobbal, egy bankkal, a következőképpen:
- Alice egyedül naponta legfeljebb a pénzeszközök 1%-át tudja felvenni.
-- Bob egyedül naponta a pénzeszközök legfeljebb 1%-át tudja felvenni, de Alicenak lehetősége van arra, hogy tranzakciót végezzen a kulcsával és zárolja ezt a lehetőséget.
+- Bob egyedül naponta a pénzeszközök legfeljebb 1%-át tudja felvenni, de Alice-nek lehetősége van arra, hogy tranzakciót végezzen a kulcsával és zárolja ezt a lehetőséget.
- Alice és Bob együtt bármennyit fel tud venni.
-Alicenek általában elég naponta 1%, azonban, ha Alice-nak többre van szüksége, értesítheti Bobot, és segítséget kérhet. Ha Alicet támadás éri, Bobhoz siethet, és a pénzeszközöket egy új szerződésbe tudja átmozgatni. Ha elveszíti a kulcsát, Bob tudja végül kivenni az eszközöket. Ha Bob rosszindulatúan kezd viselkedni, Alice ki tudja kapcsolni, hogy Bob pénzt vehessen fel.
+Alice-nek általában elég naponta 1%, azonban, ha Alice-nek többre van szüksége, értesítheti Bobot, és segítséget kérhet. Ha Alice-t támadás éri, Bobhoz siethet, és a pénzeszközöket egy új szerződésbe tudja átmozgatni. Ha elveszíti a kulcsát, Bob tudja végül kivenni az eszközöket. Ha Bob rosszindulatúan kezd viselkedni, Alice ki tudja kapcsolni, hogy Bob pénzt vehessen fel.
-**2. Termény-biztosítás**. Bárki készíthet könnyedén származtatott szerződést, ha az ár indexek helyett az időjárási adatokról érkező adat-feedet használja. Ha egy iowai farmer olyan származtatott ügyletet vásárol, ami fordítottan fizet az Iowában esett csapadék alapján, majd, ha szárazság van, a farmer automatikusan pénzhez jut, ha pedig elég eső esik, a farmer szintén jól jár, mert jó termése lesz. Ez általánosságban kiterjeszthető természeti csapásra vonatkozó biztosítással.
+**2. Terménybiztosítás**. Bárki készíthet könnyedén származtatott szerződést, ha az árindexek helyett az időjárási adatokról érkező adatforrást használja. Ha egy iowai farmer olyan származtatott ügyletet vásárol, ami fordítottan fizet az Iowában esett csapadék alapján, majd, ha szárazság van, a farmer automatikusan pénzhez jut, ha pedig elég eső esik, a farmer szintén jól jár, mert jó termése lesz. Ez általánosságban kiterjeszthető természeti csapásra vonatkozó biztosítással.
-**3. Egy decentralizált adat-feed**. A pénzügyi CFD-k (nyitó és záróérték közti különbség lekereskedése) esetében gyakorlatilag lehetőség van decentralizálni az adat-feed-et a következő protokollal [SchellingCoin](http://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/). A SchellingCoin gyakorlatilag a következőképpen működik: N fél beteszi a rendszerbe egy adott bázis értékét (pl. ETH/USD árfolyam), az értékeket rendezik, és mindenki, aki 25% - 75% között van egy tokent kap jutalmul. Ez a rendszer mindenkit arra ösztönöz, hogy olyan választ adjon, mint a többiek, és az egyetlen érték, amiben a játékosok nagy száma realisztikusan egyet tud érteni a nyilvánvaló alap: azaz az igazság. Ez egy decentralizált protokollt hoz létre, amely elméletileg bármilyen számú értéket adhat, ideértve az ETH/USD árát, vagy a berlini hőmérsékletet vagy egy nehéz számítási feladat eredményét.
+**3. Decentralizált adatforrás**. A pénzügyi CFD-k (nyitó és záróérték közti különbség lekereskedése) esetében gyakorlatilag lehetőség van decentralizálni az adaforrást a [SchellingCoin](http://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/) protokollal. A SchellingCoin a következőképpen működik: N fél beteszi a rendszerbe egy adott bázis értékét (például ETH/USD árfolyam), az értékeket rendezik, és mindenki, aki 25-75% között van egy tokent kap jutalmul. Ez a rendszer mindenkit arra ösztönöz, hogy olyan választ adjon, mint a többiek, és az egyetlen érték, amiben a résztvevők nagy száma realisztikusan egyet tud érteni a nyilvánvaló alap: az igazság. Ez egy decentralizált protokollt hoz létre, amely elméletileg bármilyen számú értéket adhat, ideértve az ETH/USD árát, vagy a berlini hőmérsékletet vagy egy nehéz számítási feladat eredményét.
-**4. Okos, több aláírásos escrow**. A Bitcoin többaláírásos tranzakciós szerződéseket is enged, ahol például adott öt kulcsból három tudja elkölteni a pénzeszközöket. Az Ethereum ennél részletesebb lehetőségeket is kínál; például ötből négy mindent el tud költeni, ötből három naponta 10%-ot, ötből kettő pedig csak napi 0,5%-t. Továbbá az Ethereum több aláírásos megoldás aszinkron - két fél különböző időben tudja regisztrálni az aláírását a blokkláncon, az utolsó aláírás küldi el automatikusan a tranzakciót.
+**4. Okos, több aláírásos fedezet**. A Bitcoin többaláírásos tranzakciós szerződéseket is enged, ahol például öt kulcsból három tudja elkölteni a pénzeszközöket. Az Ethereum ennél részletesebb lehetőségeket is kínál; például ötből négy mindent el tud költeni, ötből három naponta 10%-ot, ötből kettő pedig csak napi 0,5%-ot. Továbbá az Ethereum több aláírásos megoldás aszinkron – két fél különböző időben tudja regisztrálni az aláírását a blokkláncon, az utolsó aláírás küldi el automatikusan a tranzakciót.
-**5. Felhőben történő számítás**. Az EVM technológia szintén használható hitelesíthető számítási környezet létrehozására, ahol a felhasználók megkérhetnek másokat számítások végzésére, majd opcionálisan kérhetnek bizonyítékot arra, hogy a számítások adott, véletlenszerűen kiválasztott ellenőrzési pontokon pontosan lettek elvégezve. Így létre lehet hozni egy felhő alapú számítási piacot, amelyen bármelyik felhasználó részt vehet az asztali gépével, laptopjával, vagy speciális szerverével, és együtt ellenőrizhetik szúrópróbaszerűen, hogy mely biztonsági letétek használhatók annak biztosítására, hogy a rendszer megbízható (azaz a csomópontok nem tudnak nyereségesen csalni). Bár egy ilyen rendszer nem feltétlenül felel meg minden feladatra; például nehézkes olyan feladatokat elvégezni nagyméretű felhőalapú csomópontokon, amelyek magasszintű, folyamat közbeni kommunikációt igényelnek. Más feladatokat azonban sokkal könnyebb párhuzamosan végezni; például a SETI@home, folding@home és általános algoritmusokat könnyebben meg lehet valósítani ilyen platformokon.
+**5. Felhőben történő számítás**. Az EVM technológia szintén használható hitelesíthető számítási környezet létrehozására, ahol a felhasználók megkérhetnek másokat számítások végzésére, majd opcionálisan kérhetnek bizonyítékot arra, hogy a számítások adott, véletlenszerűen kiválasztott ellenőrzési pontokon pontosan lettek elvégezve. Így létre lehet hozni egy felhő alapú számítási piacot, amelyen bármelyik felhasználó részt vehet az asztali gépével, laptopjával vagy speciális szerverével, és együtt ellenőrizhetik szúrópróbaszerűen, hogy mely biztonsági letétek használhatók annak biztosítására, hogy a rendszer megbízható (azaz a csomópontok nem tudnak nyereségesen csalni). Bár egy ilyen rendszer nem feltétlenül felel meg minden feladatra; például nehézkes olyan feladatokat elvégezni nagyméretű felhőalapú csomópontokon, amelyek magasszintű, folyamat közbeni kommunikációt igényelnek. Más feladatokat azonban sokkal könnyebb párhuzamosan végezni; például a SETI@home, folding@home és általános algoritmusokat könnyebben meg lehet valósítani ilyen platformokon.
-**6. Peer-to-peer szerencsejáték**. Tetszőleges számú peer-to-peer szerencsejáték protokollt, például Frank Stajano és Richard Clayton [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) protokollját, lehet megvalósítani Ethereum blokkláncon. A legegyszerűbb szerencsejáték protokoll egyszerűen egy CFD a következő blokk-hashre, ennél bonyolultabb protokollokat is lehet építeni, például szerencsejáték szolgáltatásokat nullához közeli díjakkal, ahol ki lehet zárni a csalás lehetőségét.
+**6. Közvetítő nélküli (peer-to-peer) szerencsejáték**. Tetszőleges számú peer-to-peer szerencsejáték protokollt, például Frank Stajano és Richard Clayton [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) protokollját, lehet megvalósítani Ethereum blokkláncon. A legegyszerűbb szerencsejáték protokoll egyszerűen egy CFD a következő blokk-hashre, de ennél bonyolultabb protokollokat is lehet építeni, például szerencsejáték szolgáltatásokat nullához közeli díjakkal, ahol ki lehet zárni a csalás lehetőségét.
**7. Kimenetelre fogadó piacok**. Az Oracle vagy SchellingCoin környezetben futó kimenetelre fogadó piacokat könnyen meg lehet valósítani; ezek a piacok a SchellingCoin-nal együtt az első [futarchy](http://hanson.gmu.edu/futarchy.html) mainstream alkalmazássá nőhetik ki magukat a decentralizált szervezetek irányítási protokolljaként.
-**8. On-chain decentralizált piacterek**, amelyek az azonosítás és elismerés rendszert használják alapként.
+**8. Láncon belüli decentralizált piacterek**, amelyek az azonosítási és elismerési rendszert használják alapként.
## Egyebek és aggályok {#miscellanea-and-concerns}
### Módosított GHOST implementáció {#modified-ghost-implementation}
-A "Greedy Heaviest Observed Subtree" (GHOST) innovatív protokollt Yonatan Sompolinsky és Aviv Zohar vezette be [2013 decemberében](https://eprint.iacr.org/2013/881.pdf). A GHOST mögötti motiváció az volt, hogy azokon a blokkláncokon, ahol a megerősítési idő gyors, a magas elavulási aránynak köszönhetően csökken a biztonság - mivel a blokknak bizonyos időre van szüksége a hálózaton való terjedéshez, ha A bányász kibányász egy blokkot, majd B bányász még azelőtt kibányász egy blokkot, hogy A bányász blokkja eljutna B bányászhoz, ez utóbbi blokkja feleslegessé válik, és nem járul hozzá a hálózat biztonságához. Továbbá van egy centralizációs probléma is: ha A bányász egy 30% hash-erejű bányász-pool, és B bányásznak 10% hash-ereje van, A bányásznak megvan az a kockázata, hogy az esetek 70%-ában elavult blokkot hozzon létre (mivel a fennmaradó 30% esetben A bányász hozta létre az utolsó blokkot, így azonnal bányászati adathoz jut), míg B bányász kockázata, hogy az esetek 90%-ában fog létrehozni elavult blokkot. Ezért ha a blokk intervallum elég rövid ahhoz, hogy a lejárati arány magas legyen, A jelentősen hatékonyabb lesz pusztán a mérete miatt. A két hatás kombinálásával az a blokklánc, amely gyorsan gyárt blokkokat valószínűleg vezetni fog egy bányász poolt, és elég nagy százalékot fog elfoglalni a hálózat hash-teljesítményéből, hogy de facto átvegye az irányítást a bányászási folyamat fölött.
+A „Greedy Heaviest Observed Subtree” (GHOST, „mohó legsúlyosabb részfa”) innovatív protokollt Yonatan Sompolinsky és Aviv Zohar vezette be [2013 decemberében](https://eprint.iacr.org/2013/881.pdf). A GHOST mögötti motiváció az volt, hogy azokon a blokkláncokon, ahol a megerősítési idő gyors, a magas elavulási aránynak köszönhetően csökken a biztonság – mivel a blokknak bizonyos időre van szüksége a hálózaton való terjedéshez, ha A bányász kibányász egy blokkot, majd B bányász még azelőtt kibányász egy blokkot, hogy A bányász blokkja eljutna B bányászhoz, ez utóbbi blokkja feleslegessé válik, és nem járul hozzá a hálózat biztonságához. Továbbá van egy centralizációs probléma is: ha A bányász egy 30% hash-erejű bányászalap, és B bányásznak 10% hash-ereje van, akkor az A bányász elavult blokk létrehozási kockázata 70% (a fennmaradó 30%-ban az A bányász hozta létre az utolsó blokkot, így azonnal bányászati adathoz jut), míg B bányász az esetek 90%-ában fog létrehozni elavult blokkot. Ezért ha a blokkintervallum elég rövid ahhoz, hogy a lejárati arány magas legyen, az A bányász jelentősen hatékonyabb lesz pusztán a mérete miatt. A két hatás kombinálásával az a blokklánc, amely gyorsan gyárt blokkokat valószínűleg vezetni fog egy bányászalapot, és elég nagy százalékot fog elfoglalni a hálózat hash-teljesítményéből, hogy de facto átvegye az irányítást a bányászási folyamat fölött.
-Ahogy Sompolinsky és Zohar is leírta, a GHOST megoldja a hálózat biztonságának elvesztését érintő első problémát azzal, hogy lejárt blokkokat is belevesz annak kiszámításába, hogy melyik lánc a "leghosszabb"; azaz nem csak a blokk szülőit és elődeit veszi figyelembe, hanem a blokk elődeinek nem élő leszármazottait is (Ethereum kifejezéssel élve "nagybácsikat") hozzáadja ahhoz a számításhoz, hogy melyik blokkon van a legtöbb proof-of-work. A centralizációval kapcsolatos második probléma megoldására túlhaladunk a Sompolinsky és Zohar által ismertetett protokollon, és blokk jutalmakat adunk az elavult blokkokra is: egy elavult blokk az alapjutalom 87,5%-át éri, míg az elavult blokkot tartalmazó unokaöccs megkapja a fennmaradó 12,5%-ot. A tranzakciós díjakat azonban nem kapják meg a nagybácsik.
+Ahogy Sompolinsky és Zohar is leírta, a GHOST megoldja a hálózat biztonságának elvesztését érintő első problémát azzal, hogy lejárt blokkokat is belevesz annak kiszámításába, hogy melyik lánc a „leghosszabb”; azaz nem csak a blokk szülőit és elődeit veszi figyelembe, hanem a blokk elődeinek mellékes leszármazottait is (Ethereum kifejezéssel élve uncle/nagybácsi) hozzáadja ahhoz a számításhoz, hogy melyik blokkon van a legtöbb proof-of-work. A centralizációval kapcsolatos második probléma megoldására túlhaladunk a Sompolinsky és Zohar által ismertetett protokollon, és blokk jutalmakat adunk az elavult blokkokra is: egy elavult blokk az alapjutalom 87,5%-át éri, míg az elavult blokkot tartalmazó unokaöccs megkapja a fennmaradó 12,5%-ot. A tranzakciós díjakat azonban nem kapják meg a nagybácsik.
-Az Ethereum a GHOST egy egyszerűsített verzióját implementálja, amely hét szintre megy le. A részletes meghatározást lásd itt:
+Az Ethereum a GHOST egy egyszerűsített verzióját implementálta, amely hét szintre megy le. Ez a következőképpen néz ki:
- Egy blokknak meg kell határoznia egy szülőt, és 0 vagy több nagybácsit
-- Egy `B` blokkban lévő nagybácsinak a következő tulajdonságokkal kell rendelkeznie:
-- Közvetlen leszármazottnak kell lennie a `k`-adik generációs `B` ősnek, ahol `2 <= k <= 7`.
-- Nem lehet a `B` őse
-- Egy nagybácsinak érvényes blokk fejlécnek kell lennie, de nem kell korábban hitelesített vagy érvényes blokknak lennie
-- A nagybácsinak különböznie kell a korábbi blokkokban szereplő nagybácsiktól, illetve az ugyanabban a blokkban lévő más nagybácsiktól (nincs-dupla-szerepeltetés)
-- Minden`U` nagybácsihoz a `B` blokkban, a `B` bányász további 3,125%-ot kap a coinbase jutalmához, és az U bánász 93,75% standard coinbase jutalomban részesül.
+- Egy B blokkban lévő nagybácsinak a következő tulajdonságokkal kell rendelkeznie:
+ - Közvetlen leszármazottnak kell lennie a k-adik generációs B ősnek, ahol 2 <= k <= 7.
+ - Nem lehet a B őse
+ - Egy nagybácsinak érvényes blokkfejléccel kell rendelkeznie, de nem kell korábban hitelesített vagy érvényes blokknak lennie
+ - A nagybácsinak különböznie kell a korábbi blokkokban szereplő nagybácsiktól, illetve az ugyanabban a blokkban lévő más nagybácsiktól (nincs dupla szerepeltetés)
+- Minden U nagybácsihoz a B blokkban, a B bányász további 3,125%-ot kap a jutalmához, és az U bányász 93,75% sztenderd jutalomban részesül.
A GHOST limitált verzióját, ahol legfeljebb 7 generációig szerepelhet nagybácsi, két ok miatt használtuk. Először is a korlátlan GHOST túl sok komplikációval járna annak kiszámításában, hogy egy adott blokkban mely nagybácsik érvényesek. Másodsorban a korlátlan GHOST, ahogy az Ethereumban használják, nem ösztönzi a bányászt, hogy a fő láncon bányásszon a nyilvános támadó által használt lánc helyett.
### Díjak {#fees}
-Mivel minden blokkláncban közzétett tranzakció költséget ró a hálózatra a letöltés és a hitelesítés miatt, szükség van valamilyen szabályozó mechanizmusra, általában tranzakciós díjak beiktatását, hogy meg lehessen akadályozni a rosszindulatú viselkedést. A Bitcoinban is alkalmazott alapértelmezett megközelítés szerint tisztán önkéntes díjakra van szükség, ami a bányászokra támaszkodik abban, hogy őrizzék a biztonságot és dinamikus minimumokat állítsanak be. Ezt a megközelítést nagyon kedvezően fogadták a Bitcoin közösségben, különösen azért, mert "piaci-alapú", meghagyja a keresletet és a kínálatot a bányászok és a tranzakciók küldői között, és így meghatározza az árat. A probléma ezzel az érveléssel az, hogy a tranzakciók feldolgozása nem piac; bár intuitívan vonzó a tranzakció feldolgozását olyan szolgáltatásként értelmezni, amelyet a bányász kínál küldőnek, a valóságban minden olyan tranzakció, amelyhez bányász kell a hálózat minden csomópontján fel kell dolgozni, így a tranzakció feldolgozási költségének jelentős részét külső felek fizetik, és nem a bányász hozza meg azt a döntést, hogy foglalkozik-e vele vagy sem. Így nagyon valószínű a "közlegelő tragédiája" típusú problémák előfordulása.
+Mivel minden blokkláncban közzétett tranzakció költséget ró a hálózatra a letöltés és a hitelesítés miatt, szükség van valamilyen szabályozó mechanizmusra, általában tranzakciós díjak beiktatására, hogy meg lehessen akadályozni a rosszindulatú viselkedést. A Bitcoinban is alkalmazott alapértelmezett megközelítés szerint tisztán önkéntes díjakra van szükség, ami a bányászokra támaszkodik abban, hogy őrizzék a biztonságot és dinamikus minimumokat állítsanak be. Ezt a megközelítést nagyon kedvezően fogadták a Bitcoin közösségben, különösen azért, mert az „piaci alapú”, megengedi, hogy a bányászok és a tranzakciók küldői közötti keresletet és kínálatot határozza meg az árat. A probléma ezzel az érveléssel az, hogy a tranzakciók feldolgozása nem piac; bár intuitív módon vonzó a tranzakció feldolgozását olyan szolgáltatásként értelmezni, amelyet a bányász kínál küldőnek, a valóságban minden olyan tranzakció, amelyhez bányász kell a hálózat minden csomópontján fel kell dolgozni, így a tranzakció feldolgozási költségének jelentős részét külső felek fizetik, és nem a bányász hozza meg azt a döntést, hogy foglalkozik-e vele vagy sem. Így nagyon valószínű a „közlegelők tragédiája" típusú problémák előfordulása.
Azonban úgy tűnik, hogy a piaci alapú mechanizmus ezen hibája, amikor pontatlan egyszerűsítő feltételezéssel élnek, mágikusan megszünteti saját magát. Az érvelés a következő. Tegyük fel, hogy:
-1. Egy tranzakció `k` művelethez vezet, `kR` jutalmat kínál minden olyan bányásznak, aki szerepel benne, ahol az `R` értéket a küldő állítja be, és az `k` és `R` (durván) már előre látható a bányász oldalán.
-2. Egy művelet feldolgozásához szükséges költség `C` bármely csomóponton (azaz az összes csomópont hatékonysága azonos)
-3. `N` bányász csomópont van, mindegyik pontosan ugyanannyi feldolgozási teljesítménnyel (azaz `1/N` az összesből)
-4. Nincs nem-bányászó teljes csomópont.
+1. Egy tranzakció `k` művelethez vezet, `kR` jutalmat kínál minden olyan bányásznak, aki szerepel benne, ahol az `R` értéket a küldő állítja be, és az `k` és `R` (nagyjából) már előre látható a bányász oldalán.
+2. Egy művelet feldolgozásához szükséges költség `C` bármely csomóponton (azaz az összes csomópont hatékonysága azonos)
+3. `N` bányász csomópont van, mindegyik pontosan ugyanannyi feldolgozási teljesítménnyel (azaz `1/N` az összesből)
+4. Nincs nem bányászó teljes csomópont.
Egy bányász akkor hajlandó feldolgozni a tranzakciót, ha a várható jutalom nagyobb, mint a költség. Így a várható jutalom `kR/N` mivel a bányásznak `1/N` esélye van feldolgozni a következő blokkot, és a bányász feldolgozási költsége `kC`. Következésképpen a bányászok olyan tranzakciókban fognak részt venni, ahol `kR/N > kC`, vagy `R > NC`. Ne feledjük, hogy `R` a küldő által műveletenként biztosított díj, amely alulról korlátozza azt az előnyt, amit a küldő a tranzakcióból nyer, és az `NC` pedig a műveletet feldolgozó teljes hálózat költsége. Következésképpen a bányászok csak olyan tranzakcióban érdekeltek, amelyen a teljes haszonelvű előny nagyobb, mint a költség.
-Azonban a valóságban számos fontos eltérés mutatkozik a feltételezésektől:
+Azonban a valóságban a feltételezésektől számos fontos eltérés mutatkozik:
-1. A bányász nagyobb költséget fizet a tranzakció feldolgozásáért mint a többi, hitelesítést végző csomópont, mivel az extra hitelesítéshez szükséges idő késlelteti a blokk terjedését, és növeli annak az esélyét, hogy a blokk elavulttá válik.
-2. Így létezik nem-bányászó teljes csomópont.
-3. A bányászati teljesítmény eloszlás a gyakorlatban radikálisan egyenlőtlenné válhat.
-4. A spekulánsok, politikai ellenségek és őrültek, akiknek a használati függvényei a hálózatra nézve káros elemeket tartalmaznak okosan olyan szerződéseket készíthetnek, amelyekben a költségeik sokkal alacsonyabbak, mint a többi hitelesítő csomópont által fizetett költségek.
+1. A bányász nagyobb költséget fizet a tranzakció feldolgozásáért mint a többi, hitelesítést végző csomópont, mivel az extra hitelesítéshez szükséges idő késlelteti a blokk terjedését, és növeli annak az esélyét, hogy a blokk elavulttá válik.
+2. Tehát létezik nem bányászó teljes csomópont.
+3. A bányászati teljesítmény eloszlás a gyakorlatban radikálisan egyenlőtlenné válhat.
+4. A spekulánsok, politikai ellenségek és őrültek, akiknek a használati függvényei a hálózatra nézve káros elemeket tartalmaznak okosan olyan szerződéseket készíthetnek, amelyekben a költségeik sokkal alacsonyabbak, mint a többi hitelesítő csomópont által fizetett költségek.
-(1) olyan tendenciát biztosít a bányásznak, hogy kevesebb tranzakcióba vonódjon bele, és (2) növeli az `NC` értékét; következésképpen ez a két hatás legalább részben kiírtja egymást.[Hogyan?](https://github.com/ethereum/wiki/issues/447#issuecomment-316972260) (3) és (4) a fő probléma; megoldásukra egy egyszerű lebegő sapkát alkalmazunk: egyetlen blokkon sem lehet több művelet mint a hosszú távú exponenciális mozgóátlag `BLK_LIMIT_FACTOR` -szorosa. Különösképpen:
+(1) olyan tendenciát biztosít a bányásznak, hogy kevesebb tranzakcióba vonódjon bele, és (2) növeli az `NC` értékét; következésképpen ez a két hatás legalább részben kiírtja egymást.[Hogyan?](https://github.com/ethereum/wiki/issues/447#issuecomment-316972260) (3) és (4) a fő probléma; megoldásukra egy egyszerű lebegő limitet alkalmazunk: egyetlen blokkon sem lehet több művelet mint a hosszú távú exponenciális mozgóátlag `BLK_LIMIT_FACTOR`-szorosa. Különösképpen:
- blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
- floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```js
+blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
+floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```
-A `BLK_LIMIT_FACTOR` és `EMA_FACTOR` állandó, beállításuk jelenleg 65536 és 1,5, amely további elemzés után változhat.
+A `BLK_LIMIT_FACTOR` és `EMA_FACTOR` állandó, beállításuk 65536 és 1,5 jelenleg, amely további elemzés után változhat.
-Van még egy faktor, ami megszünteti a nagy blokkméretek iránti elköteleződést a Bitcoinban: a nagy blokkok terjedési ideje hosszabb, és így nagyobb eséllyel válnak elavulttá. Az Ethereumban a sok gázt fogyasztó blokkoknak is több időre van szüksége a terjedéshez, mivel egyrészt fizikailag hosszabbak, másrészt több időbe telik az állapot átmenet tranzakciók feldolgozásának validálása. Ez a késleltetési negatív ösztönző jelentős a Bitcoin esetében, de kevésbé az az Ethereum világában a GHOST protokoll miatt; következésképpen a szabályozott blokk limitekre való támaszkodás stabilabb alapkonfigurációt tesz lehetővé.
+Van még egy faktor, ami megszünteti a nagy blokkméretek iránti elköteleződést a Bitcoinban: a nagy blokkok terjedési ideje hosszabb, és így nagyobb eséllyel válnak elavulttá. Az Ethereumban a sok gázt fogyasztó blokkoknak is több időre van szüksége a terjedéshez, mivel egyrészt fizikailag hosszabbak, másrészt több időbe telik a státuszváltozási tranzakciók feldolgozásának validálása. Ez a késleltetési negatív ösztönző jelentős a Bitcoin esetében, de kevésbé az az Ethereum világában a GHOST protokoll miatt; következésképpen a szabályozott blokklimitekre való támaszkodás stabilabb alapkonfigurációt tesz lehetővé.
-### Számítási és Turing-teljesség {#computation-and-turing-completeness}
+### Számítás és Turing-teljesség {#computation-and-turing-completeness}
-Fontos megjegyezni, hogy az Ethereum virtuális gép Turing-teljes; azaz az EVM kód minden olyan számítást képes titkosítani, amelyet rejtve lehet elvégezni, ideértve a végtelen hurkokat is. Az EVm kód a hurkokat kétféleképpen teszi lehetővé. Egyfelől a `JUMP` utasítás lehetővé teszi a programnak, hogy visszaugorjon egy korábbi pontra a kódban, míg a `JUMPI` utasítás feltételhez kötött ugrást hajt végre, lehetővé téve a `while x < 27: x = x * 2` típusú állításokat. Másodsorban a szerződések más szerződéseket is meghívhatnak, ami potenciálisan lehetővé teszi a rekurzión keresztül történő hurkok alkalmazását. Ez természetesen egy problémát eredményez: a kártékony felhasználók lényegében le tudják állítani a bányászokat és a teljes csomópontokat azzal, hogy végtelen hurokba lépésre kényszerítik őket? A probléma a számítástechnikában megakadás problémaként ismert jelenség miatt jelentkezik: általánosságban nem lehet megmondani, hogy egy adott program mikor akad meg.
+Fontos megjegyezni, hogy az Ethereum virtuális gép Turing-teljes; azaz az EVM-kód minden olyan számítást képes titkosítani, amelyet rejtve lehet elvégezni, ideértve a végtelen hurkokat is. Az EVM-kód a hurkokat kétféleképpen teszi lehetővé. Egyfelől a `JUMP` utasítás lehetővé teszi a programnak, hogy visszaugorjon egy korábbi pontra a kódban, míg a `JUMPI` utasítás feltételhez kötött ugrást hajt végre, lehetővé téve a `while x < 27: x = x * 2` típusú állításokat. Másodsorban a szerződések más szerződéseket is meghívhatnak, ami potenciálisan lehetővé teszi a rekurzión keresztül történő hurkok alkalmazását. Ez természetesen egy problémát eredményez: a kártékony felhasználók le tudják állítani a bányászokat és a teljes csomópontokat azzal, hogy végtelen hurokba lépésre kényszerítik őket? Ez a helyzet a számítástechnikában megakadásproblémaként ismert: általánosságban nem lehet megmondani, hogy egy adott program mikor akad meg.
-Mint azt az állapot átmenet részben is leírtuk, a megoldásunk úgy működik, hogy egy tranzakcióban be kell állítani a maximálisan engedélyezett számítási lépések számát, és ha a futtatás tovább tart, a számítást visszatérítik, azonban díjat is kell fizetni. Az üzenetek hasonlóképpen működnek. A megoldás mögött húzódó motiváció bemutatására nézzük az alábbi példákat:
+Mint azt a státuszváltozási részben is leírtuk, a megoldásunk úgy működik, hogy egy tranzakcióban be kell állítani a maximálisan engedélyezett számítási lépések számát, és ha a futtatás tovább tart, a számítást visszatérítik, azonban díjat kell fizetni. Az üzenetek hasonlóképpen működnek. A megoldás mögötti motiváció bemutatására nézzük az alábbi példákat:
-- Egy támadó létrehoz egy szerződést, amely végtelen hurkot futtat, majd egy tranzakciót küld a bányásznak, amely aktiválja a hurkot. A bányász feldolgozza a tranzakciót, futtatja a végtelen hurkot, majd megvárja, amíg elfogy a gáz. Bár a futtatás kifogy a gázból és félúton megáll, a tranzakció továbbra is érvényes, és a bányász bekéri a díjat a támadótól minden számítási lépésért.
+- Egy támadó létrehoz egy szerződést, amely végtelen hurkot futtat, majd egy tranzakciót küld a bányásznak, amely aktiválja a hurkot. A bányász feldolgozza a tranzakciót, futtatja a végtelen hurkot, majd megvárja, amíg elfogy a gáz. Bár a futtatás közben kifogy a gáz és félúton megáll, a tranzakció továbbra is érvényes, és a bányász bekéri a díjat a támadótól minden számítási lépésért.
- Egy támadó egy nagyon hosszú végtelen hurkot hoz létre azzal a szándékkal, hogy a bányász olyan sokáig végezze a számítást, hogy a számítás végére pár új blokk is kikerüljön, és így lehetetlenné váljon a bányásznak a tranzakció belefoglalása, hogy díjat számíthasson fel. Azonban a támadónak be kell küldenie egy `STARTGAS` értéket, amely korlátozza a futtatásban használható számítások számát, így a bányász már előre tudni fogja, hogy a számítás jelentősen több lépésből fog állni.
-- Egy támadó valami ilyesmit kódot lát a szerződésben `send(A,contract.storage[A]); contract.storage[A] = 0`, és pont annyi gázzal küldi el a tranzakciót, hogy futtatni lehessen az első lépést, de a másodikat már ne (azaz meglegyen a levétel, de az egyenleg ne csökkenjen le). A szerződés létrehozójának nem kell azon aggódnia, hogy védekezzen az ilyen támadások ellen, mivel, ha a futtatás félúton megáll, azok vissza lesznek térítve.
-- Egy pénzügyi szerződés úgy működik, hogy kilenc tulajdonost illető adat -feed középértékét veszi a kockáztok minimalizálása érdekében. Amikor egy támadó átvesz egy adat-feed-et, amelyet úgy tervetek, hogy módosítható legyen a DAO részben ismertetett változó-cím-meghívás mechanizmuson keresztül, és átkonvertálja úgy, hogy végtelen hurokban fusson, és így megpróbál kikényszeríteni olyan próbálkozásokat amelyek pénzeszközöket kérnek a pénzügyi szerződéstől amíg ki nem fogy a gáz. Azonban a pénzügyi szerződésekben be lehet állítani gázkorlátot az üzeneten, és így meg lehet előzni a problémát.
+- Egy támadó valami ilyesmit kódot lát a szerződésben `send(A,contract.storage[A]); contract.storage[A] = 0`, és pont annyi gázzal küldi el a tranzakciót, hogy futtatni lehessen az első lépést, de a másodikat már ne (azaz meglegyen a levétel, de az egyenleg ne csökkenjen le). A szerződés létrehozójának nem kell azon aggódnia, hogy védekezzen az ilyen támadások ellen, mivel ha a futtatás félúton megáll, azok vissza lesznek térítve.
+- Egy pénzügyi szerződés úgy működik, hogy kilenc tulajdonos adatforrásának középértékét veszi a kockáztok minimalizálása érdekében. Amikor egy támadó átvesz egy adatforrást, amelyet úgy tervetek, hogy módosítható legyen a DAO részben ismertetett változó-cím-meghívás mechanizmuson keresztül, átkonvertálja úgy, hogy végtelen hurokban fusson, és így megpróbálja kikényszeríteni azokat a próbálkozásokat, amelyek pénzeszközöket kérnek a pénzügyi szerződéstől, amíg ki nem fogy a gáz. Azonban a pénzügyi szerződésekben be lehet állítani gázkorlátot az üzeneten, és így meg lehet előzni a problémát.
-A Turing-teljesség alternatívája a Turing-nem-teljesség, ahol a `JUMP` és `JUMPI` nem létezik, és egyszerre csak egy szerződéspéldány létezhet a hívás-stackben. Ezzel a rendszerrel a korábban ismertetett díjrendszer és a megoldásunk hatékonyságával kapcsolatos bizonytalanságok nem feltétlenül szükségesek, mivel a szerződés futtatásának költségét annak mérete korlátozza be. Továbbá a Turing-nem-teljesség nem túl nagy limitáció; az általunk kitalált összes szerződés példa közül csupán egyhez volt szükség hurokra, és még ez az egy hurok is eltávolítható egy egysoros kódrészlet 26 ismétlésével. A Turing-teljesség súlyos implikációi, valamint a korlátozott haszon alapján, miért nincs egyszerűen egy Turing-nem-teljesség nyelv? A valóságban azonban a Turing-nem-teljesség messze van a probléma elegáns megoldásától. Hogy megértsük miért, nézzük meg a következő szerződéseket:
+A Turing-teljesség alternatívája a Turing-nem-teljesség, ahol a `JUMP` és `JUMPI` nem létezik, és egyszerre csak egy szerződéspéldány létezhet a hívás-stackben. Ezzel a rendszerrel a korábban ismertetett díjrendszer és a megoldásunk hatékonyságával kapcsolatos bizonytalanságok nem feltétlenül szükségesek, mivel a szerződés futtatásának költségét annak mérete korlátozza be. Továbbá a Turing-nem-teljesség nem túl nagy limitáció; az általunk kitalált összes szerződés példa közül csupán egyhez volt szükség hurokra, és még ez az egy hurok is eltávolítható egy 26-szor ismételt, egysoros kódrészlettel. A Turing-teljesség súlyos implikációi, valamint a korlátozott haszon alapján, miért nincs egy Turing-nem-teljesség nyelv? A valóságban a Turing-nem-teljesség messze van a probléma elegáns megoldásától. Nézzük meg a következő szerződéseket, hogy ennek okát megértsük:
- C0: call(C1); call(C1);
- C1: call(C2); call(C2);
- C2: call(C3); call(C3);
- ...
- C49: call(C50); call(C50);
- C50: (futtasson egy lépést a programból, majd rögzítse a változtatást a tárhelyen)
+```sh
+C0: call(C1); call(C1);
+C1: call(C2); call(C2);
+C2: call(C3); call(C3);
+...
+C49: call(C50); call(C50);
+C50: (futtasson egy lépést a programból, majd rögzítse a változtatást a tárhelyen)
+```
-Most, küldjön egy tranzakciót A-nak. Így 51 tranzakcióban van egy olyan szerződésünk, amely akár 250 számítási lépést is magában foglalhat. A bányászok megpróbálhatják már jóelőre kiszűrni ezeket a logikai bombákat, ha értéket tartanak minden szerződés mellett, amely meghatározza, hogy legfeljebb mennyi számítási lépést vehet fel, és kiszámítják ezt azokhoz a szerződésekhez, amelyek rekurzívan hívnak más szerződéseket, azonban ez arra kényszerítené a bányászokat, hogy letiltsák azokat a szerződéseket, amelyek más szerződéseket hoznak létre (mivel a fenti 26 szerződés létrehozása és futtatása könnyedén egy szerződésbe gyúrható). Másik problematikus pont, hogy az üzenet címmezője egy változó, tehát általánosságban idő előtt nem lehet megmondani, hogy milyen más szerződést fog meghívni egy adott szerződés. Ezért összességében meglepő következtetésre jutottunk: A Turing-teljességet meglepően könnyű kezelni, valamint a Turing-teljesség hiányát hasonlóképpen meglepően nehéz kezelni, kivéve, ha ugyanezeket a vezérlőket alkalmazzuk - de ebben az esetben miért ne legyen a protokoll Turing-teljes?
+Küldjön egy tranzakciót A-nak. Így 51 tranzakcióban van egy olyan szerződésünk, amely akár 250 számítási lépést is magában foglalhat. A bányászok megpróbálhatják már előre kiszűrni ezeket a logikai bombákat, ha értéket tartanak minden szerződés mellett, amely meghatározza, hogy legfeljebb mennyi számítási lépést vehet fel, és kiszámítják ezt azokhoz a szerződésekhez, amelyek rekurzívan hívnak más szerződéseket, Ez azonban arra kényszerítené a bányászokat, hogy letiltsák azokat a szerződéseket, amelyek más szerződéseket hoznak létre (mivel a fenti 26 szerződés létrehozása és futtatása könnyedén egy szerződésbe gyúrható). Másik problematikus pont, hogy az üzenet címmezője egy változó, tehát általánosságban idő előtt nem lehet megmondani, hogy milyen más szerződést fog meghívni egy adott szerződés. Ezért összességében meglepő következtetésre jutottunk: a Turing-teljességet meglepően könnyű kezelni, valamint a Turing-teljesség hiányát hasonlóképpen meglepően nehéz kezelni, kivéve, ha ugyanazokat a kontrollokat alkalmazzuk – de ebben az esetben miért ne legyen a protokoll Turing-teljes?
-### Valuta és kiadás {#currency-and-issuance}
+### Valuta és kibocsátás {#currency-and-issuance}
-Az Ethereum rendszerben saját beépített valuta, az ether szolgál kettős célt, egyfelől egy elsődleges likviditási réteget biztosít a különböző digitális eszközök közötti hatékony váltáshoz, másfelől pedig fontos mechanizmust biztosít a tranzakciós költségek fizetésére. Kényelmi szempontból, valamint elkerülve a későbbi vitákat (lásd a jelenlegi mBTC/uBTC/satoshi vitát a Bitcoin-ban), a névértékeket előre felcímkézzük:
+Az Ethereum rendszerben saját beépített valuta, az ether kettős célt szolgál, egyfelől egy elsődleges likviditási réteget biztosít a különböző digitális eszközök közötti hatékony váltáshoz, másfelől fontos mechanizmust biztosít a tranzakciós költségek fizetésére. Kényelmi szempontból, valamint elkerülve a későbbi vitákat (lásd a jelenlegi mBTC/uBTC/satoshi vitát a Bitcoin kapcsán), a névértékeket előre felcímkézzük:
- 1: wei
- 1012: szabo
- 1015: finney
- 1018: ether
-Ez a "dollár" és "cent", illetve a "BTC" és "satoshi" koncepció kibővített változataként értelmezhető. A közeljövőben az "ether" lesz használatos a hagyományos tranzakciókra, a "finney" a mikrotranzakciókra, a "szabo" és "wei" pedig a díjak és protokoll implementációkkal kapcsolatos technikai értekezésekben; a fennmaradó címletek pedig később lehetnek hasznosak, és jelenleg nem szerepelnek a kliensekben.
+Ez a „dollár” és „cent”, illetve a „BTC” és „satoshi” koncepció kibővített változataként értelmezhető. A közeljövőben az „ether” lesz használatos a hagyományos tranzakciókra, a „finney” a mikrotranzakciókra, a „szabo” és a „wei” pedig a díjakkal és protokollimplementációkkal kapcsolatos technikai értekezésekben; a fennmaradó címletek pedig később lehetnek hasznosak, és jelenleg nem szerepelnek a kliensekben.
-A kiadási modell a következő:
+A kibocsátási modell a következő:
-- Az Ether mint valuta egy BTC-hez viszonyítva 1000-2000 ether árfolyamon fog forogni; ez a mechanizmus az Ethereum szervezet forrásait biztosítja, valamint ezzel lehet fizetni a fejlesztésekért, amelyet más platformon, például a Mastercoin-on és az NXT-n már sikerrel használtak. A korai vásárlók nagyobb kedvezményekben részesülnek. Az eladásból kapott BTC-ket teljes mértékben a fejlesztők fizetésére és javadalmazására fordítják, valamint különböző for-profit és non-profit projektekbe fektetik az Ethereum és kriptovaluta ökoszisztémában.
-- A teljes értékesített összeg (60102216 ETH) 0.099x-át a szervezet kapja a korai hozzájárulók kompenzálására, valamint ETH-ban denominált költségekre fordítják a genesis blokk előtt.
+- Az ether mint valuta egy BTC-hez viszonyítva 1000-2000 ether árfolyamon fog forogni; ez a mechanizmus az Ethereum szervezet forrásait biztosítja, valamint ezzel lehet fizetni a fejlesztésekért, amelyet más platformon, például a Mastercoinon és az NXT-n már sikerrel használtak. A korai vásárlók nagyobb kedvezményekben részesülnek. Az eladásból kapott BTC-ket teljes mértékben a fejlesztők fizetésére és javadalmazására fordítják, valamint különböző profitot célzó és non-profit projektekbe fektetik az Ethereum és kriptovaluta ökoszisztémában.
+- A teljes értékesített összeg (60102216 ETH) 0.099x-ét a szervezet kapja a korai hozzájárulók kompenzálására, valamint az ETH-ben denominált költségekre fordítják a genezisblokk előtt.
- A teljes értékesített összeg 0,099x részét hosszú távú tartalékba helyezik.
- A teljes értékesített összeg 0,26x része a bányászokhoz kerül évente, örökre ezután a pont után.
-| Csoport | induláskor | 1 év után | 5 év után |
-| ------------------------------------- | ---------- | --------- | --------- |
-| Valuta egység | 1,198X | 1,458X | 2,498X |
-| Vásárlók | 83,5% | 68,6% | 40,0% |
-| Értékesítés előtt elköltött tartalék | 8,26% | 6,79% | 3,96% |
-| Értékesítés után felhasznált tartalék | 8,26% | 6,79% | 3,96% |
-| Bányászok | 0% | 17,8% | 52,0% |
+| Csoport | Indításkor | Egy év után | Öt év után |
+| --------------------------------- | ---------- | ----------- | ---------- |
+| Pénznemegységek | 1,198 X | 1,458 X | 2,498 X |
+| Vevők | 83,5% | 68,6% | 40,0% |
+| Eladás előtt felhasznált tartalék | 8,26% | 6,79% | 3,96% |
+| Eladás után felhasznált tartalék | 8,26% | 6,79% | 3,96% |
+| Bányászok | 0% | 17,8% | 52,0% |
-**Hosszú távú kínálati növekedési ütem (százalék)**
+#### Hosszú távú kínálati növekedési ütem (százalék)
-![Ethereum infláció](./ethereum-inflation.png)
+![Ethereum-infláció](./ethereum-inflation.png)
-_A lineáris valuta kibocsátások ellenére, hasonlóan a Bitcoin-hoz időről időre a kínálati növekedési ütem nulla felé tart_
+_A lineáris valutakibocsátások ellenére, a Bitcoinhoz hasonlóan, a kínálati növekedési ütem nulla felé tart._
-A fenti modellben két választási lehetőség van (1) egy felnagyítási-pool megléte és mérete, és (2) egy állandóan növekvő lineáris kereslet, szemben a Bitcoin esetében látható felső korlátos kínálattal. A felnagyítási-pool indoklása a következő. Ha nincs felnagyítási-pool, és a lineáris kibocsátás 0,217x-re csökken az infláció biztosítására, akkor az ether teljes mennyisége 16,5%-al lesz kevesebb, és minden egység 19,8%-al értékesebb lenne. Következésképpen a 19,8%-os egyensúlyban több ethert vásárolnak az értékesítés folyamán, így minden egység megőrzi korábbi értékét. A szervezet ezután 1,198x BTC-vel rendelkezik, amit két szeletre lehet bontani: az eredeti BTC és a további 0,198x rész. Következésképpen a helyzet _pontosan megegyezik_ a nagyítással, van azonban egy fontos különbség: a szervezetnél csupán BTC van, és így nincs ösztönözve arra, hogy támogassa az ether mértékegység értékét.
+A fenti modellben két fő választási lehetőség van: 1) egy felnagyítási alap megléte és mérete; és 2) egy állandóan növekvő lineáris kínálat megléte, szemben a Bitcoin esetében látható felső korlátos kínálattal. A felnagyítási alap indoklása a következő. Ha nincs felnagyítási alap, és a lineáris kibocsátás 0,217x-re csökken az azonos mértékű infláció biztosítására, akkor az ether teljes mennyisége 16,5%-kal lesz kevesebb, és így minden egység 19,8%-kal értékesebb lesz. Következésképpen az egyensúlyban 19.8%-kal több ethert vásárolnak az értékesítés folyamán, így minden egység megőrzi korábbi értékét. A szervezet ezután 1,198x BTC-vel rendelkezik, amelyet két szeletre lehet bontani: az eredeti BTC és a további 0,198x-es rész. Következésképpen a helyzet _pontosan megegyezik_ a nagyítással, van azonban egy fontos különbség: a szervezetnél csupán BTC van, és így nincs ösztönözve arra, hogy támogassa az ether mértékegység értékét.
-Az állandó lineáris keresletnövekedés modell csökkenti a jelentő vagyonkoncentráció kockázatát a Bitcoinban, és lehetőséget biztosít a jelen és jövő vásárlóinak, hogy reális esélyük legyen valuta egységeket venni, ugyanakkor erősen ösztönöznek arra, hogy még több ethert vegyenek és tartsanak, mivel a "kereslet növekedési üteme" százalékosan idővel a nulla felé közelít. Azt is feltételezzük, hogy mivel óvatlanság, haláleset stb. miatt mindig van, aki elveszti a coinjait, és ez százalékosan is modellezhető az éves kínálat függvényében, a teljes forgalomban lévő valutakészlet végül a veszteség arányával elosztott éves kiadás értékével azonos értéken stabilizálódik (például ha a veszteség aránya 1%, amint a kínálat 26X, 0,26X lesz bányászva és 0,26x veszik el évente, és létrejön az egyensúly).
+Az állandó lineáris keresletnövekedési modell csökkenti a Bitcoin esetében sokak által túlzónak tartott vagyonkoncentráció kockázatát, és lehetőséget biztosít a jelenlegi és jövőbeli vásárlóknak, hogy reális esélyük legyen valutaegységeket venni, ugyanakkor erősen ösztönöz arra, hogy még több ethert vegyenek és tartsanak, mivel a „keresletnövekedési ütem” százalékos értéke továbbra is idővel a nulla felé közelít. Azt is feltételezzük, hogy mivel óvatlanság, haláleset stb. miatt mindig van, aki elveszti az érméit, és ez százalékosan is modellezhető az éves kínálat függvényében, a forgalomban lévő teljes valutakészlet végül a veszteség arányával elosztott éves kibocsátás értékével azonos értéken stabilizálódik (például, ha a veszteség aránya 1%, akkor amint a kínálat eléri a 26X-t, évente 0,26X lesz bányászva és 0,26X veszik el, és létrejön az egyensúly).
-Ne feledjük, hogy a jövőben valószínű, hogy az Ethereum proof-of-stake modellre vált a biztonság érdekében, és évi nulla és 0,05X közé csökken a kiadásra vonatkozó követelmény. Abban az esetben, ha az Ethereum szervezet elveszíti pénzeszközeit, vagy valamilyen más okból kifolyólag eltűnik, nyitva hagyunk egy "társadalmi szerződést": mindenkinek joga van létrehozni egy jövőbeli Ethereum verziót, azzal a feltétellel, hogy az ether mennyiségének `60102216 * (1.198 + 0.26 * n)` kell lennie, ahol az `n` a z évek számát jelöli a genesis blokk után. A létrehozók szabadon értékesíthetik crowd-sell formájában, illetve meghatározhatják a PoS-által hajtott kínálat növekedés és a maximálisan engedélyezett kínálat bővülés különbségét részben vagy egészben a fejlesztés költségeinek lefedésére. Azok a frissítések, amelyek nem felelnek meg a társadalmi szerződés követelményeinek forkolhatók a követelményeknek megfelelő verziókba.
+Ne feledjük, hogy a jövőben valószínű, hogy az Ethereum proof-of-stake modellre vált a biztonság érdekében, és évi nulla és 0,05X közé csökken a kibocsátásra vonatkozó követelmény. Abban az esetben, ha az Ethereum szervezet elveszíti pénzeszközeit, vagy valamilyen más okból kifolyólag eltűnik, nyitva hagyunk egy „társadalmi szerződést”: mindenkinek joga van létrehozni egy jövőbeli Ethereum-verziót azzal a feltétellel, hogy az ether mennyisége legfeljebb `60102216 * (1,198 + 0,26 * n)` lehet, ahol az `n` a genezisblokk utáni évek számát jelöli. A létrehozók a proof-of-stake által hajtott kínálatnövekedés és a maximálisan engedélyezett kínálatbővülés különbségét részben vagy egészben szabadon értékesíthetik tömeges eladás (crowd-sell) formájában, illetve kioszthatják a fejlesztés költségeinek lefedésére. Azok a frissítések, amelyek nem felelnek meg a társadalmi szerződés követelményeinek, jogosan elágaztathatók a követelményeknek megfelelő verziókba.
### A bányászat centralizálása {#mining-centralization}
-A Bitcoin bányászati algoritmusa úgy működik, hogy a bányászok SHA256 számításokat végeznek a blokk fejléc kissé módosított verzióin egymás után több milliószor, amíg végül egy csomópont egy olyan verzióhoz ér, amelynek hash értéke kevesebb mint a cél (jelenleg körülbelül 2192). Azonban ez a bányászati algoritmus a centralizáció két formájára sérülékeny. Először is a bányászati ökoszisztémát az ASIC-ok (alkalmazásspecifikus integrált körök), az erre a célra tervezett számítógép chipek dominálják, és ezért ezek többezerszer hatékonyabbak a Bitcoin bányászat során. Ez azt jelenti, hogy a Bitcoin bányászat már egyáltalán nem decentralizált és az egyenlőségen alapuló tér, és több millió dolláros tőkére van szükség ahhoz, hogy hatékonyan részt lehessen venni benne. Másodsorban a legtöbb Bitcoin bányász gyakorlatilag nem lokálisan validálja a blokkokat; hanem helyette egy centralizált bányász-poolra támaszkodnak a blokk fejlécek megadásakor. Ez a probléma azonban még rosszabb: a tartalom írásakor a legjobb három bányász-pool indirekt módon a feldolgozási teljesítmény körülbelül 50%-át irányítja, bár ezt némiképp enyhíti az a tény, hogy a bányászok átválthatnak egy másik pool-ra, ha a pool vagy a koalíció 51%-os támadással próbálkozik.
+A Bitcoin bányászati algoritmusa úgy működik, hogy a bányászok SHA256-számításokat végeznek a blokkfejléc kissé módosított verzióin egymás után több milliószor, amíg végül egy csomópont egy verzióhoz ér, amelynek hash-értéke kisebb mint a cél (jelenleg körülbelül 2192). Azonban ez a bányászati algoritmus a centralizáció két formájával szemben sérülékeny. Először is a bányászati ökoszisztémát az ASIC-ok (alkalmazásspecifikus integrált körök) az erre a célra tervezett számítógép-chipek dominálják, és ezért ezek több ezerszer hatékonyabbak a Bitcoin-bányászat során. Ez azt jelenti, hogy a Bitcoin-bányászat már egyáltalán nem decentralizált és egyenlőségen alapuló tér, és több millió dolláros tőkére van szükség ahhoz, hogy hatékonyan részt lehessen venni benne. Másodsorban a legtöbb Bitcoin-bányász gyakorlatilag nem helyileg validálja a blokkokat; helyette egy centralizált bányászalapra támaszkodik a blokkfejlécek megadásakor. Ez a probléma azonban még rosszabb: a jelen tartalom írásakor a legjobb három bányászalap indirekt módon a feldolgozási teljesítmény körülbelül 50%-át birtokolja, bár ezt némiképp enyhíti az a tény, hogy a bányászok átválthatnak egy másik alapra, ha az alap vagy a koalíció 51%-os támadással próbálkozik.
-Az Ethereumban jelenleg az a szándék, hogy olyan bányászati algoritmust használjanak, ahol a bányászoknak véletlenszerűen kell adatot lekérniük az állapotról, ki kell számítaniuk néhány random kiválasztott tranzakciót a blokklánc utolsó N blokkjáról, és vissza kell adniuk az eredmény hashjét. Ennek két fontos előnye van. Először is az Ethereum szerződésekben bármilyen számítás lehet, így egy Ethereum ASIC lényegében egy általános számításra használt ASIC - azaz egy jobb CPU. Másodszor a bányászatnak hozzá kell férnie a teljes blokklánchoz, ami arra kényszeríti a bányászokat, hogy a teljes blokkláncot tárolják, és legalább képesnek kell lenniük minden tranzakció hitelesítésére. Emiatt nincs szükség centralizált bányászati-poolokra; bár a bányászati-poolok továbbra is betöltik azt a legitim szerepet, hogy kizárják a jutalom elosztás véletlenszerűségét, ezt a funkciót egyenlően el tudják látni a peer-to-peer poolok, központi irányítás nélkül.
+Az Ethereumban jelenleg az a szándék, hogy olyan bányászati algoritmust használjanak, amelyben a bányászoknak véletlenszerűen kell adatot lekérniük a státuszból, ki kell számítaniuk néhány véletlenszerűen kiválasztott tranzakciót a blokklánc utolsó N blokkjáról, és vissza kell adniuk az eredmény hash-ét. Ennek két fontos előnye van. Először is az Ethereum-szerződésekben bármilyen számítás lehet, így egy Ethereum ASIC lényegében egy általános számításra használt ASIC – azaz egy jobb CPU. Másodszor, a bányászathoz hozzá kell férni a teljes blokklánchoz, ami arra kényszeríti a bányászokat, hogy a teljes blokkláncot tárolják, és legalább képesnek kell lenniük minden tranzakció hitelesítésére. Emiatt nincs szükség centralizált bányászati alapokra; bár a bányászati alapok továbbra is betöltik azt a legitim szerepet, hogy kiegyenlítik a jutalomelosztás véletlenszerűségét – ezt a funkciót ugyanígy el tudják látni a peer-to-peer alapok központi irányítás nélkül.
-Ez a modell még nincs tesztelve, és szembejöhetnek még nehézségek bizonyos okos optimalizálások elkerülése terén, amikor a szerződés futtatást bányászati algoritmusként használják. Azonban ennek az algoritmusnak egyik érdekes funkciója, hogy bárki "megmérgezheti a kutat", ha nagyszámú szerződést vezet be a blokkláncra, azért, hogy megakasszon bizonyos ASIC-okat. Az ASIC gyártók számára léteznek gazdasági ösztönzők arra, hogy ezzel a trükkel megtámadják egymást. Ezért az általunk fejlesztett megoldás végeredményben egy adaptív humán gazdasági megoldás, és nem pusztán technikai.
+Ez a modell még nincs tesztelve, és szembejöhetnek még nehézségek az okos optimalizálások elkerülése okán, amikor a szerződésvégrehajtást bányászati algoritmusként használják. Azonban ennek az algoritmusnak egyik érdekes funkciója, hogy bárki „megmérgezheti a kutat”, ha nagyszámú szerződést vezet be a blokkláncra kifejezetten azért, hogy megakasszon bizonyos ASIC-okat. Az ASIC gyártók számára léteznek gazdasági ösztönzők arra, hogy ezzel a trükkel megtámadják egymást. Ezért az általunk fejlesztett megoldás végeredményben egy adaptív, gazdasági, humán megoldás, és nem pusztán technikai.
### Méretezhetőség {#scalability}
-Az Ethereummal kapcsolatos gyakori aggály a méretezhetőség kérdése. A Bitcoinhoz hasonlóan az Ethereumnak megvan az a hibája, hogy a hálózatban minden csomópontnak fel kell dolgoznia a tranzakciókat. A Bitcoin esetében a jelenlegi blokklánc mérete körülbelül 15 GB, ami óránként mintegy 1 MB-vel nő. Ha a Bitcoin hálózatnak másodpercenként 2000 Visa tranzakciót kellene feldolgoznia, akkor három másodpercenként nőne 1 MB-val (1 GB óránként, 8 TB évente). Az Ethereumon is hasonló növekedési tempó figyelhető meg, amelyet még rosszabbá tesz az a tény, hogy számos alkalmazást futtatnak az Ethereum blokkláncán, szemben azzal, hogy a Bitcoin csak egy valuta, azonban javít rajta az, hogy az Ethereum teljes csomópontjainak csak az állapotot és nem a teljes blokklánc előzményt kell tárolniuk.
+Az Ethereummal kapcsolatos gyakori aggály a skálázhatóság kérdése. A Bitcoinhoz hasonlóan az Ethereumnak is megvan az a hibája, hogy a hálózatban minden csomópontnak fel kell dolgoznia a tranzakciókat. A Bitcoin esetében a jelenlegi blokklánc mérete körülbelül 15 GB, ami óránként mintegy 1 MB-tal nő. Ha a Bitcoin hálózatnak másodpercenként 2000 Visa-tranzakciót kellene feldolgoznia, akkor három másodpercenként nőne 1 MB-tal (1 GB óránként, 8 TB évente). Az Ethereumon is hasonló növekedési tempó figyelhető meg, amelyet még nehezít az, hogy az Ethereum blokkláncán számos alkalmazást futtatnak, míg a Bitcoin egy valuta; ugyanakkor javítja a helyzetet, hogy az Ethereum teljes csomópontjainak csak a státuszt és nem a teljes blokkláncelőzményt kell tárolniuk.
-A nagyméretű blokklánccal a centralizáció kockázata a fő probléma. Ha a blokklánc mérete mérete mondjuk 100 TB-ra nő, a legvalószínűbb forgatókönyv szerint csak nagyon kevés nagyvállalat tud majd teljes csomópontot futtatni, az összes hagyományos felhasználó pedig könnyű SPV-csomópontokat fog használni. Egy ilyen helyzetben felmerülhet a lehetséges aggály, hogy a teljes csomópontok összefoghatnak, és megállapodnak abban, hogy profitábilis módon csaljanak (például módosítsák a blokkok után járó jutalmat, vagy BTC-t adjanak maguknak). A könnyű csomópontok nem tudják ezt azonnal felismerni. Természetesen legalább egy becsületes teljes csomópont valószínűleg létezne, és a csalás kiderülése után néhány órával már a Reddit is tele lenne a hírrel, azonban ezen a ponton ez már túl késő lenne: a normál felhasználókon múlna, hogy szervezetten tiltólistára tegyék az adott blokkokat, azonban ez a koordinációs probléma jelentős és eléggé megoldhatatlan helyzetet teremtene, hasonlóan egy sikeres 50%-os támadás indításához. A Bitcoin esetében ez jelenleg probléma, de létezik rá blokklánc módosítási [javaslat Peter Todd-tól](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) amely enyhítene a problémán.
+A nagyméretű blokklánccal a centralizáció kockázata a fő probléma. Ha a blokklánc mérete mérete mondjuk 100 TB-ra nő, a legvalószínűbb forgatókönyv szerint csak nagyon kevés nagyvállalat tud majd teljes csomópontot futtatni, az összes hagyományos felhasználó pedig könnyű SPV-csomópontokat fog használni. Egy ilyen helyzetben felmerülhet a lehetséges aggály, hogy a teljes csomópontok összefoghatnak, és megállapodhatnak abban, hogy profitábilis módon csaljanak (például módosítsák a blokkok után járó jutalmat, vagy BTC-t adjanak maguknak). A könnyű csomópontok nem tudják ezt azonnal felismerni. Természetesen legalább egy becsületes teljes csomópont valószínűleg létezne, és a csalás kiderülése után néhány órával már a Reddit is tele lenne a hírrel, azonban ezen a ponton már túl késő: a normál felhasználókon múlna, hogy szervezetten tiltólistára tegyék az adott blokkokat, ez a koordinációs probléma jelentős és szinte megoldhatatlan helyzetet teremt, hasonlóan egy sikeres 51%-os támadáshoz. A Bitcoin esetében ez jelenleg probléma, de létezik rá egy blokkláncmódosítási [javaslat Peter Toddtól](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/), amely enyhít a problémán.
-A közeljövőben az Ethereum két további stratégiát fog használni a probléma megoldására. Először a blokklánc alapú bányászati algoritmusok miatt legalább minden bányász rá lesz kényszerítve, hogy teljes csomópont legyen, ami alacsonyabb korlátot hoz létre a teljes csomópontok viszonylatában. Másodszor, és még fontosabb módon egy közbenső állapot fa gyökeret szerepeltetünk a blokkláncban a tranzakciók feldolgozása után. Még akkor is, ha a blokk validálása centralizált, addig, amíg van becsületes csomópont, a centralizációs probléma megkerülhető a protokoll validálásával. Ha egy bánász érvénytelen blokkot tesz közzé, vagy a blokk nincs megfelelően formázva, vagy az `S[n]` állapot pontatlan. Mivel az `S[0]` kódnak pontos, kell lennie egy első `S[i]` állapotnak, ami hibás ott, ahol az `S[i-1]` pontos. A hitelesítő csomópont megadja az `i` indexet egy "proof of invalidity" (érvénytelenségi bizonyíték) bizonyítékkal, ami olyan Patricia fa csomópontokból áll, amelyeknek fel kell dolgozniuk a `APPLY(S[i-1],TX[i]) -> S[i]` kifejezést. A csomópontok használni tudják ezeket a Patricia csomópontokat a számítás egy részének futtatásához, és látni fogják, ha a generált `S[i]` nem egyezik a megadott `S[i]` értékkel.
+Az Ethereum két további stratégiát fog használni a probléma megoldására. Először a blokkláncalapú bányászati algoritmusok miatt legalább minden bányász rá lesz kényszerítve, hogy teljes csomópont legyen, ami alacsonyabb korlátot hoz létre a teljes csomópontok viszonylatában. Másodszor, ami még fontosabb, egy közbenső státuszfagyökeret szerepeltetünk a blokkláncban a tranzakciók feldolgozása után. Még akkor is, ha a blokk validálása centralizált, amíg van becsületes hitelesítő csomópont, a centralizációs probléma megkerülhető a protokoll validálásával. Ha egy bánász érvénytelen blokkot tesz közzé, akkor a blokk nincs megfelelően formázva, vagy az `S[n]` státusz pontatlan. Mivel az `S[0]` kód pontos, kell lennie egy első `S[i]` státusznak, amely hibás ott, ahol az `S[i-1]` pontos. A hitelesítő csomópont megadja az `i` indexet egy érvénytelenségi bizonyítékkal (proof of invalidity), amely olyan Patricia-facsomópontokból áll, amelyeknek fel kell dolgozniuk az `APPLY(S[i-1],TX[i]) -> S[i]` kifejezést. A csomópontok használni tudják ezeket a Patricia-csomópontokat a számítás egy részének futtatásához, és látni fogják, ha a generált `S[i]`nem egyezik a megadott `S[i]` értékkel.
-Egy másik, kifinomultabb támadásban rosszindulatú bányászok félkész blokkokat publikálnak, így a teljes információ nem is létezik annak megállapítására, hogy a blokk érvényes-e. A megoldás egy kihívásra reagáló protokoll: a hitelesítő csomópont cél tranzakciós indexek formájában "kihívásokat" adnak ki, majd amikor visszakapnak egy csomópontot, egy könnyű csomópont mindaddig érvénytelennek tekinti a blokkot, amíg egy másik csomópont, egy bányász, vagy egy másik hitelesítő vissza nem ad Patricia csomópont készleteket igazolva az érvényességet.
+Egy másik, kifinomultabb támadásban rosszindulatú bányászok félkész blokkokat publikálnak, így a teljes információ nem is létezik annak megállapítására, hogy a blokk érvényes-e. A megoldás egy kihívásra reagáló protokoll: az ellenőrző csomópontok céltranzakciós indexek formájában „kihívásokat” adnak ki, majd amikor visszakapnak egy csomópontot, egy könnyű csomópont mindaddig érvénytelennek tekinti a blokkot, amíg egy másik csomópont, egy bányász vagy egy másik hitelesítő, vissza nem ad Patricia-csomóponti alkészleteket, igazolva az érvényességet.
## Következtetés {#conclusion}
-Az Ethereum protokollt eredetileg egy frissített kriptovaluta verziónak tekintették, ami haladó funkciókat is kínált, például blokkláncon lévő escrow-t, kivételi korlátokat, pénzügyi szerződéseket, szerencsejáték piacokat és hasonlókat egy nagyon általánosított programnyelven. Az Ethereum protokoll nem "támogatja" közvetlenül az alkalmazásokat, azonban a Turin-teljesség programnyelv megléte azt jelenti, hogy tetszőleges mennyiségű szerződés hozható létre bármilyen tranzakció típushoz vagy alkalmazáshoz. Még érdekesebb az Ethereummal kapcsolatban, hogy az Ethereum protokoll sokkal több puszta valutánál. A decentralizált fájl tárolással, számításokkal és kimenetelre fogadó piacokkal kapcsolatos protokollok több tucat hasonló koncepció mellett magukban rejtik a számítási ipar hatékonyságnövelésének potenciálját, és masszív lökést adnak más peer-to-peer protokolloknak egy korábban nem látott gazdasági réteg hozzáadásával. Végezetül pedig jelentős számú alkalmazás van, amely egyáltalán nem foglalkozik pénzzel.
+Az Ethereum protokollt eredetileg egy frissített kriptovaluta-verziónak tekintették, amely haladó funkciókat is kínált, például blokkláncon lévő fedezetet, kivételi korlátokat, pénzügyi szerződéseket, szerencsejátékpiacokat és hasonlókat egy nagyon általánosított programnyelven. Az Ethereum-protokoll nem „támogatná” közvetlenül az alkalmazásokat, azonban a Turing-teljes programnyelv megléte azt jelenti, hogy tetszőleges mennyiségű szerződés hozható létre bármilyen tranzakciótípushoz vagy alkalmazáshoz. Még érdekesebb az Ethereummal kapcsolatban, hogy az Ethereum-protokoll sokkal több puszta valutánál. A decentralizált fájltárolással, számításokkal és hírtőzsdei piacokkal kapcsolatos protokollok a több tucat hasonló koncepció mellett magukban rejtik a számítási ipar jelentős hatékonyságnövelésének potenciálját, és masszív lökést adnak más peer-to-peer protokolloknak egy korábban nem látott gazdasági réteg hozzáadásával. Végezetül pedig jelentős számú alkalmazás van, amely egyáltalán nem foglalkozik pénzzel.
-Az Ethereum protokollban implementált tetszőleges állapot átmenet függvény koncepciója egyedi potenciált rejtő platformot kínál; szemben a zártvégű, egycélú protokollokkal, amelyeket egy bizonyos típusú alkalmazásra fejlesztenek az adattárolás, pénzügy vagy szerencsejáték világában, az Ethereum egy alapvetően nyílt végű koncepció, és hiszünk abban, hogy kiválóan szolgál nagyon sok pénzügyi és nem pénzügyi protokoll alapozó rétegeként az elkövetkező években.
+Az Ethereum-protokollban implementált tetszőleges státuszváltozási függvény koncepciója egyedi potenciált rejtő platformot kínál; szemben a zárt végű, egycélú protokollokkal, amelyeket egy bizonyos típusú alkalmazásra fejlesztenek az adattárolás, pénzügy vagy szerencsejáték világában, az Ethereum egy alapvetően nyílt végű koncepció, és hiszünk abban, hogy kiválóan szolgál sok pénzügyi és nem pénzügyi protokoll alaprétegeként az elkövetkező években.
## Jegyzetek és további olvasnivaló {#notes-and-further-reading}
### Jegyzetek {#notes}
-1. A kifinomult olvasó észreveheti, hogy gyakorlatilag egy Bitcoin cím az elliptikus görbe nyilvános kulcs hash-e, és nem a nyilvános kulcs maga. Azonban gyakorlatilag teljesen legitim kriptográfiai terminológia a pubkey hash nyilvános kulcsként történő hivatkozása. Ez azért van, mert a Bitcoin kriptográfiáját tekinthetjük egy egyedi digitális aláírás algoritmusnak, ahol a nyilvános kulcs az ECC pubkey hashjéből áll, az aláírás az ECC pubkey és az ECC aláírás együttesen, a hitelesítő algoritmusban pedig az aláírásban lévő ECC pubkey-t a nyilvános kulcsként rendelkezésre bocsátott ECC pubkey hashhel vetik összes, majd az ECC aláírást az ECC pubkey értékével hitelesítik.
-2. Gyakorlatilag a 11 előző blokk mediánja.
-3. Az Ethereum protokollnak egyszerűnek és praktikusnak kell lennie, de elképzelhető, hogy viszonylag összetettnek kell lennie, például méretezhetőnek, hogy internalizálni lehessen a tárolás költségeit, a sávszélességet és I/O-t a biztonság, adatvédelem és átláthatóság stb. érdekében. Ahol a komplexitás elengedhetetlen, a dokumentációnak a lehető legegyértelműbbnek, átfogóbbnak és naprakészebbnek kell lennie, így bárki, aki nem járatos az Ethereumban meg tudja tanulni és szakértővé válhasson.
-4. Lásd az Ethereum Virtuális Gépről szóló [Sárgakönyvet](https://ethereum.github.io/yellowpaper/paper.pdf) (amely hasznos specifikációkat tartalmaz, és referenciaként szolgálhat azoknak, akik a nulláról szeretnének Ethereum klienst építeni), továbbá számos témakör ismertetése is megtalálható az [Ethereum wiki oldalán](https://github.com/ethereum/wiki/wiki), például a shard- fejlesztés, fő fejlesztés, dapp fejlesztés, kutatás, Casper K&F, és hálózati protokollok. A kutatásról és a lehetséges jövőbeli implementációkról lásd: [ethresear.ch](https://ethresear.ch).
-5. Ennek egy másik kifejezési módja az absztrakció. A [legfrissebb roadmap](https://ethresear.ch/t/sharding-phase-1-spec/1407/67) az absztrakt futtatás megtervezése, ahol a futtató motoroknak nem feltétlenül kell követniük egy kanonizáló specifikációt, de például testreszabható egy adott alkalmazáshoz vagy egy shard-hoz. (A futtató motorok heterogénsége nincs explicite leírva a roadmapban. Létezik heterogén sharding, amelyet Vlad Zamfir foglalt koncepcióba.)
-6. Belső értelmezésben a 2 és "CHARLIE" szám, ez utóbbi big-endian bázis 256 reprezentáció. A számok 0-tól legfeljebb 2256-1-ig terjedhetnek.
+1. A kifinomult olvasó észreveheti, hogy gyakorlatilag egy Bitcoin cím az elliptikus görbe nyilvános kulcs hash-e, és nem a nyilvános kulcs maga. Azonban gyakorlatilag teljesen legitim kriptográfiai terminológia a pubkey hash nyilvános kulcsként történő hivatkozása. Ez azért van, mert a Bitcoin kriptográfiáját tekinthetjük egy egyedi digitális aláírásalgoritmusnak, ahol a nyilvános kulcs az ECC pubkey hashéből áll, az aláírás az ECC pubkey és az ECC aláírás együttesen, a hitelesítő algoritmusban pedig az aláírásban lévő ECC pubkey-t a nyilvános kulcsként rendelkezésre bocsátott ECC pubkey hash-sel vetik összes, majd az ECC aláírást az ECC pubkey értékével hitelesítik.
+2. Gyakorlatilag a 11 előző blokk mediánja.
+3. Belső értelmezésben a 2 és „CHARLIE” szám, ez utóbbi nagy-endian bázis 256 reprezentáció. A számok 0-tól legfeljebb 2256-1-ig terjedhetnek.
### További olvasnivaló {#further-reading}
-1. [Valódi érték](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
-2. [Okos-tulajdonság](https://en.bitcoin.it/wiki/Smart_Property)
-3. [Okosszerződések](https://en.bitcoin.it/wiki/Contracts)
-4. [B-pénz](http://www.weidai.com/bmoney.txt)
-5. [Újrahasznosítható proof-of-work](http://www.finney.org/~hal/rpow/)
-6. [Biztonságos tulajdonság címek tulajdonosi rendelkezéssel](http://szabo.best.vwh.net/securetitle.html)
-7. [Bitcoin fehérkönyv](http://bitcoin.org/bitcoin.pdf)
-8. [Namecoin](https://namecoin.org/)
-9. [Zooko háromszög](https://wikipedia.org/wiki/Zooko's_triangle)
+1. [Valódi érték](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
+2. [Okos tulajdonság](https://en.bitcoin.it/wiki/Smart_Property)
+3. [Okosszerződések](https://en.bitcoin.it/wiki/Contracts)
+4. [B-pénz](http://www.weidai.com/bmoney.txt)
+5. [Újrahasznosítható proof-of-work](https://nakamotoinstitute.org/finney/rpow/)
+6. [Biztonságos tulajdonságcímek tulajdonosi rendelkezéssel](https://nakamotoinstitute.org/secure-property-titles/)
+7. [Bitcoin fehérkönyv](http://bitcoin.org/bitcoin.pdf)
+8. [Namecoin](https://namecoin.org/)
+9. [Zooko-háromszög](https://wikipedia.org/wiki/Zooko's_triangle)
10. [Colored coins fehérkönyv](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
11. [Mastercoin fehérkönyv](https://github.com/mastercoin-MSC/spec)
12. [Decentralizált autonóm vállalatok, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
-13. [Egyszerűsített fizetés hitelesítés](https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification)
-14. [Merkle fák](https://wikipedia.org/wiki/Merkle_tree)
-15. [Patricia fák](https://wikipedia.org/wiki/Patricia_tree)
+13. [Egyszerűsített fizetéshitelesítés](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification)
+14. [Merkle-fák](https://wikipedia.org/wiki/Merkle_tree)
+15. [Patricia-fák](https://wikipedia.org/wiki/Patricia_tree)
16. [GHOST](https://eprint.iacr.org/2013/881.pdf)
17. [StorJ és Autonóm ügynökök, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
-18. [Mike Hearn az Okos tulajdonságokról a Turing Fesztiválon](http://www.youtube.com/watch?v=Pu4PAMFPo5Y)
+18. [Mike Hearn az Okos tulajdonságokról a Turing Fesztiválon](https://www.youtube.com/watch?v=MVyv4t0OKe4)
19. [Ethereum RLP](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)
-20. [Ethereum Merkle Patricia fák](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
-21. [Peter Todd a Merkle összeg fákról](http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
+20. [Ethereum Merkle-Patricia-fák](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
+21. [Peter Todd a Merkle-összegfákról](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
-_A fehérkönyv történetéről lásd: https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md_
+_A fehérkönyv történetét tekintse meg ezen [a wiki](https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md) oldalon._
-_Az Ethereum sok másik közösség által vezetett, nyílt forráskódú szoftver projekthez hasonlóan, a kezdeti elindulás óta fejlődött. Ha többet szeretnél megtudni az Ethereum legutóbbi fejlesztéseiről és az általunk elvégzett protokoll változtatásokról, akkor ezt az [útmutatót](/learn/) ajánljuk._
+_Az Ethereum, hasonlóan sok más közösség által vezetett, nyílt forráskódú szoftverprojekthez, a kezdeti elindulás óta sokat fejlődött. Ha többet szeretnél megtudni az Ethereum legutóbbi fejlesztéseiről és az általunk elvégzett protokollváltoztatásokról, akkor ezt az [útmutatót](/learn/) ajánljuk._
diff --git a/public/content/translations/hu/zero-knowledge-proofs/index.md b/public/content/translations/hu/zero-knowledge-proofs/index.md
index dead07c9fe6..e548b01b01a 100644
--- a/public/content/translations/hu/zero-knowledge-proofs/index.md
+++ b/public/content/translations/hu/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: A zero-knowledge bizonyítékok nem technikai bemutatása kezdők s
lang: hu
---
-## Mik azok a zero-knowledge (nullaismeret-alapú) bizonyítékok? {#what-are-zk-proofs}
+# Mik azok a zero-knowledge (nullaismeret-alapú) bizonyítékok? {#what-are-zk-proofs}
A zero-knowledge bizonyíték annak módja, hogy egy állítás érvényességét úgy igazoljuk, hogy magát az állítást nem fedjük fel. A bizonyító próbálja az állítást elfogadtatni, miközben az ellenőrző felelős annak validálásáért.
diff --git a/public/content/translations/id/community/events/index.md b/public/content/translations/id/community/events/index.md
index 0f5dbd6f527..6aced63ea22 100644
--- a/public/content/translations/id/community/events/index.md
+++ b/public/content/translations/id/community/events/index.md
@@ -5,7 +5,7 @@ hideEditButton: true
lang: id
---
-## Aksi mendatang {#events}
+# Aksi mendatang {#events}
**Setiap bulan, ada aksi besar Ethereum di seluruh dunia.** Pertimbangkanlah untuk menghadiri salah satunya di dekat area Anda untuk bertemu dengan lebih banyak orang di komunitas, mendapatkan informasi tentang lowongan pekerjaan, dan mengembangkan keahlian baru.
diff --git a/public/content/translations/id/contributing/translation-program/index.md b/public/content/translations/id/contributing/translation-program/index.md
index 5352562fdff..3430534a439 100644
--- a/public/content/translations/id/contributing/translation-program/index.md
+++ b/public/content/translations/id/contributing/translation-program/index.md
@@ -46,7 +46,7 @@ Program Terjemahan ethereum.org bertujuan untuk membuat Ethereum dapat diakses o
Kami menyarankan Anda untuk melihat Panduan Gaya Penerjemahan ethereum.org. Ini berisi beberapa panduan, instruksi, dan tips yang paling penting bagi para penerjemah dan bisa menjadi rujukan saat melokalkan situs web.
- {" "}Lihat Panduan Gaya Penerjemahan
+ {" "}Lihat Panduan Gaya Penerjemahan
1. **[Bergabung dengan projek kami di Crowdin](https://crowdin.com/project/ethereum-org/)**
@@ -115,7 +115,7 @@ Jika Anda adalah seorang penerjemah ethereum.org atau ingin menjadi salah satuny
Jika Anda membantu kami dengan terjemahan, Anda mungkin menemukan beberapa informasi yang berguna dalam Pertanyaan yang Sering Diajukan tentang terjemahan kami.
- {" "}Pertanyaan yang Sering Diajukan tentang menerjemahkan ethereum.org
+ {" "}Pertanyaan yang Sering Diajukan tentang menerjemahkan ethereum.org
## Sumber Daya {#resources}
diff --git a/public/content/translations/id/decentralized-identity/index.md b/public/content/translations/id/decentralized-identity/index.md
index f74fbd257db..3b451cc89bc 100644
--- a/public/content/translations/id/decentralized-identity/index.md
+++ b/public/content/translations/id/decentralized-identity/index.md
@@ -151,7 +151,7 @@ Identitas terdesentralisasi dapat membantu menciptakan komunitas daring yang beb
Serangan Sybil mengacu pada individu manusia yang menipu suatu sistem untuk berpikir bahwa mereka adalah beberapa orang untuk meningkatkan pengaruhnya. [Aplikasi grant-giving](https://gitcoin.co/grants/) yang menggunakan [voting kuadrat](https://www.radicalxchange.org/concepts/plural-voting/) rentan terhadap serangan Sybil ini karena nilai grant meningkat ketika lebih banyak orang memilihnya, mendorong pengguna untuk membagi kontribusi mereka mewakili banyak identitas. Identitas terdesentralisasi membantu mencegah hal ini dengan meningkatkan bobot pada setiap peserta untuk membuktikan bahwa mereka benar-benar manusia, meski sering kali tanpa harus mengungkapkan informasi pribadi tertentu.
-## Identitas terdesentralisasi {#use-decentralized-identity}
+## Gunakan identitas terdesentralisasi {#use-decentralized-identity}
Ada banyak proyek ambisius yang menggunakan Ethereum sebagai landasan untuk solusi identitas terdesentralisasi, diantaranya:
@@ -161,6 +161,7 @@ Ada banyak proyek ambisius yang menggunakan Ethereum sebagai landasan untuk solu
- **[Proof of Humanity (PoH)](https://www.proofofhumanity.id)** - _Bukti Kemanusiaan adalah sistem verifikasi identitas sosial yang dibangun di Ethereum._
- **[BrightID](https://www.brightid.org/)** - _Jaringan identitas sosial open source yang terdesentralisasi, berupaya mereformasi verifikasi identitas melalui pembuatan dan analisis grafik sosial._
- **[Proof-of-personhood Passport](https://proofofpersonhood.com/)** - _Aggregator identitas digital terdesentralisasi._
+- **[walt.id](https://walt.id)** — _Infrastruktur identitas dan dompet sumber terbuka terdesentralisasi yang memungkinkan pengembang dan organisasi mengoptimalkan manfaat identitas mandiri dan NFT/SBT._
## Bacaan lebih lanjut {#further-reading}
@@ -170,6 +171,7 @@ Ada banyak proyek ambisius yang menggunakan Ethereum sebagai landasan untuk solu
- [Apa itu Ethereum ERC725? Manajemen Identitas Mandiri di Rantai Blok](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
- [Bagaimana Rantai Blok Dapat Memecahkan Masalah Identitas Digital](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
- [Apa Itu Identitas Terdesentralisasi Dan Mengapa Anda Harus Peduli?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [Pendahuluan tentang Identitas Terdesentralisasi](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
### Video {#videos}
@@ -177,9 +179,11 @@ Ada banyak proyek ambisius yang menggunakan Ethereum sebagai landasan untuk solu
- [Masuk dengan Ethereum dan Identitas Terdesentralisasi dengan Ceramic, IDX, React, dan 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Tutorial YouTube tentang membangun sistem manajemen identitas untuk membuat, membaca, dan memperbarui profil pengguna menggunakan dompet Ethereum mereka oleh Nader Dabit_
- [BrightID - Identitas Terdesentralisasi di Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Episode podcast Bankless membahas BrightID, solusi identitas terdesentralisasi untuk Ethereum_
- [Internet Di Luar Rantai: Identitas yang terdesentralisasi & Kredensial yang Dapat Diverifikasi](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Presentasi EthDenver 2022 oleh Evin McMullen
+- [Penjelasan tentang Kredensial Terverifikasi](https://www.youtube.com/watch?v=ce1IdSr-Kig) - Video penjelasan di YouTube dengan demo oleh Tamino Baumann
### Komunitas {#communities}
- [Aliansi ERC-725 di GitHub](https://github.com/erc725alliance) — _Pendukung standar ERC725 untuk mengelola identitas pada rantai blok Ethereum_
- [Server Discord SpruceID](https://discord.com/invite/Sf9tSFzrnt) — _Komunitas untuk para penggemar dan pengembang yang bekerja pada sign-in dengan Ethereum_
- [Lab Veramo](https://discord.gg/sYBUXpACh4) — _Komunitas developer yang berkontribusi membangun kerangka kerja untuk memungkinkan verifikasi data untuk aplikasi_
+- [wailt.id](https://discord.com/invite/AW8AgqJthZ) — _Komunitas pengembang dan pembuat sistem mengerjakan berbagai kasus penggunaan identitas terdesentralisasi pada berbagai industri_
diff --git a/public/content/translations/id/desci/index.md b/public/content/translations/id/desci/index.md
index 6cf927d6e1a..2fe1718e641 100644
--- a/public/content/translations/id/desci/index.md
+++ b/public/content/translations/id/desci/index.md
@@ -18,7 +18,7 @@ Ilmu pengetahuan terpusat (DeSci) adalah gerakan yang bertujuan untuk membangun
DeSci bertujuan untuk menciptakan ekosistem di mana para ilmuwan mendapatkan insentif untuk berbagi penelitian mereka dan menerima pengakuan atas karya mereka, sambil memungkinkan siapa pun untuk dengan mudah mengakses dan berkontribusi pada penelitian tersebut. DeSci membuat gagasan bahwa pengetahuan ilmiah harus dapat dilihat oleh semua orang dan bahwa proses penelitian ilmiah harus transparan. DeSci menciptakan model penelitian ilmiah yang lebih terdesentralisasi dan disebarkan, sehingga lebih tahan terhadap sensor dan kontrol oleh otoritas pusat. DeSci berharap menciptakan lingkungan di mana gagasan baru dan tidak konvensional dapat berkembang dengan desentralisasi akses ke pendanaan, perangkat ilmiah, dan saluran komunikasi.
-Sains terdesentralisasi memungkinkan sumber pendanaan yang lebih beragam (dari [DAO](/dao/), [sumbangan kuadratik](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) hingga crowdfunding dan lainnya), akses data dan metode yang lebih mudah diakses, dan memberikan insentif untuk produktibilitas.
+Dengan ilmu terdesentralisasi, dapat diperoleh sumber pendanaan yang lebih beragam (dari [DAO](/dao/), [sumbangan kuadratik](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) hingga pendanaan kolektif dan lainnya), data dan metode yang lebih mudah diakses, serta dengan memberikan insentif untuk keterulangan.
### Juan Benet - Gerakan DeSci
@@ -103,7 +103,7 @@ Jelajahi proyek-proyek dan bergabunglah dengan komunitas DeSci.
- [OceanDAO: Pendanaan yang diatur oleh DAO untuk ilmu pengetahuan terkait data](https://oceanprotocol.com/dao)
- [Opscientia: alur kerja ilmu pengetahuan terbuka dan terdesentralisasi](https://opsci.io/research/)
- [LabDAO: Melipat protein secara in-silico](https://alphafodl.vercel.app/)
-- [Bio.xyz: dapatkan pendanaan untuk proyek bioteknologi atau proyek DeSci Anda melalui DAO](https://www.molecule.to/)
+- [Bio.xyz: dapatkan pendanaan untuk proyek bioteknologi atau proyek DeSci Anda melalui DAO](https://www.bio.xyz/)
- [ResearchHub: Unggah hasil ilmiah dan terlibat dalam percakapan dengan rekan-rekan sejawat](https://www.researchhub.com/)
- [VitaDAO: Terima pendanaan melalui perjanjian penelitian yang disponsori untuk penelitian kelangsungan hidup](https://www.vitadao.com/)
- [Fleming Protocol: ekonomi data sumber terbuka yang mendukung penemuan biomedis kolaboratif](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
diff --git a/public/content/translations/id/developers/docs/apis/javascript/index.md b/public/content/translations/id/developers/docs/apis/javascript/index.md
index cbf960f4b40..6c2e0446e67 100644
--- a/public/content/translations/id/developers/docs/apis/javascript/index.md
+++ b/public/content/translations/id/developers/docs/apis/javascript/index.md
@@ -6,7 +6,7 @@ lang: id
Agar aplikasi web dapat berinteraksi dengan blockchain Ethereum (yaitu membaca data blockchain dan/atau mengirim transaksi ke jaringan), aplikasi harus terhubung ke node Ethereum.
-Untuk keperluan ini, setiap klien Ethereum mengimplementasikan spesifikasi [JSON-RPC](/developers/docs/apis/json-rpc/), sehingga ada keseragaman kumpulan [titik akhir](/developers/docs/apis/json-rpc/endpoints/) yang bisa menjadi tumpuan aplikasi.
+Untuk keperluan ini, setiap klien Ethereum mengimplementasikan spesifikasi [JSON-RPC](/developers/docs/apis/json-rpc/), sehingga ada keseragaman kumpulan [titik akhir](/developers/docs/apis/json-rpc/) yang bisa menjadi tumpuan aplikasi.
Jika ingin Anda menggunakan JavaScript untuk terhubung dengan node Ethereum, dimungkinkan menggunakan JavaScript vanilla, tetapi beberapa pustaka praktis telah ada di dalam ekosistem yang akan membuat proses ini jauh lebih mudah. Dengan pustaka ini, pengembang dapat menulis metode satu baris yang intuitif untuk memulai permintaan JSON RPC (di bawah tenda) yang berinteraksi dengan Ethereum.
diff --git a/public/content/translations/id/developers/docs/nodes-and-clients/index.md b/public/content/translations/id/developers/docs/nodes-and-clients/index.md
index 57e12dc6333..bccc501394c 100644
--- a/public/content/translations/id/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/id/developers/docs/nodes-and-clients/index.md
@@ -231,8 +231,6 @@ Perhatikan dokumentasi klien atau halaman bantuan untuk menemukan mode sinkronis
`geth --syncmode "light"`
-Untuk detail lebih lanjut, lihat tutorialnya di [menjalankan node ringan Geth](/developers/tutorials/run-light-node-geth/).
-
**Menyiapkan sinkronisasi penuh dengan arsip di [Besu](https://besu.hyperledger.org/)**
`besu --sync-mode=FULL`
@@ -310,5 +308,4 @@ Ada banyak informasi tentang klien Ethereum di internet. Berikut adalah beberapa
## Tutorial terkait {#related-tutorials}
-- [Menjalankan Node dengan Geth](/developers/tutorials/run-light-node-geth/) _– Cara mengunduh, menginstal, dan menjalankan Geth. Covering syncmodes, the JavaScript console, and more._
- [Ubah Raspberry Pi 4 Anda menjadi node validator cukup dengan mem-flash kartu MicroSD – Panduan instalasi](/developers/tutorials/run-node-raspberry-pi/) _– Flash Raspberry Pi 4, colokkan kabel ethernet, hubungkan SSD dan nyalakan perangkat untuk mengubah Raspberry Pi 4 menjadi node penuh Ethereum yang menjalankan lapisan eksekusi (Jaringan Utama) dan / atau lapisan konsensus (Rantai Suar / validator)._
diff --git a/public/content/translations/id/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/id/developers/docs/nodes-and-clients/run-a-node/index.md
index 95d4d45c56e..cc2244be4c1 100644
--- a/public/content/translations/id/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/id/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -88,7 +88,7 @@ Sebelum memulai perangkat lunak klien Ethereum, lakukan pemeriksaan terakhir bah
- Sistem memiliki waktu dan tanggal yang tepat.
- Router dan firewall Anda menerima koneksi pada port pendengar. Secara default, klien Ethereum menggunakan port pendengar (TCP) dan port penemuan (UDP), keduanya pada 30303 secara default.
-Jalankan klien Anda pada testnet terlebih dahulu untuk menolong memastikan semuanya bekerja dengan benar. [Menjalankan node ringan Geth](/developers/tutorials/run-light-node-geth/) seharusnya membantu. Anda perlu mendeklarasikan pengaturan klien mana pun yang bukan default pada awalnya. Anda dapat menggunakan bendera atau berkas konfigurasi untuk mendeklarasikan konfigurasi yang diinginkan. Lihat dokumentasi klien Anda untuk eksekusi Klien khusus yang akan memulai fungsi inti, titik akhir terpilihnya, dan mulai mencari peer. Setelah berhasil menemukan peer, klien memulai sinkronisasi. Data rantai blok saat ini akan tersedia setelah klien berhasil disinkronisasikan dengan state saat ini.
+Jalankan klien Anda pada testnet terlebih dahulu untuk menolong memastikan semuanya bekerja dengan benar. Anda perlu mendeklarasikan pengaturan klien mana pun yang bukan default pada awalnya. Anda dapat menggunakan bendera atau berkas konfigurasi untuk mendeklarasikan konfigurasi yang diinginkan. Lihat dokumentasi klien Anda untuk eksekusi Klien khusus yang akan memulai fungsi inti, titik akhir terpilihnya, dan mulai mencari peer. Setelah berhasil menemukan peer, klien memulai sinkronisasi. Data rantai blok saat ini akan tersedia setelah klien berhasil disinkronisasikan dengan state saat ini.
### Menggunakan klien {#using-the-client}
diff --git a/public/content/translations/id/developers/docs/smart-contracts/testing/index.md b/public/content/translations/id/developers/docs/smart-contracts/testing/index.md
index a48c83ad503..2fec20609ef 100644
--- a/public/content/translations/id/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/id/developers/docs/smart-contracts/testing/index.md
@@ -37,7 +37,7 @@ incomplete: true
- [Pengaturan Integrasi Berkelanjutan Solidity dan Truffle](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– Cara menyiapkan Travis atau Circle CI untuk pengujian Truffle bersama dengan plugin yang berguna._
- [Gambaran umum produk pengujian](/developers/tutorials/guide-to-smart-contract-security-tools/) _– Gambaran umum dan perbandingan dari produk pengujian berbeda._
- [Cara menggunakan Echidna untuk menguji kontrak pintar](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [Cara menggunakan Manticore untuk menemukan bug kontrak pintar](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [Cara menggunakan Manticore untuk menemukan bug kontrak pintar](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [Cara menggunakan Slither untuk menemukan bug kontrak pintar](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [Cara meniru kontrak Solidity untuk pengujian](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [Cara berpindah dari Uji Truffle ke Lingkungan Uji OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
diff --git a/public/content/translations/id/developers/tutorials/run-light-node-geth/index.md b/public/content/translations/id/developers/tutorials/run-light-node-geth/index.md
deleted file mode 100644
index a481e451498..00000000000
--- a/public/content/translations/id/developers/tutorials/run-light-node-geth/index.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: Cara menjalankan node ringan dengan Geth
-description: How to download, install and run a lightclient with Geth.
-author: "Brain Gu"
-tags:
- - "klien"
- - "node"
-skill: beginner
-lang: id
-published: 2022-03-04
----
-
-Anda mungkin tertarik menjalankan [node Ethereum](/developers/docs/nodes-and-clients/). Salah satu cara termudah untuk melakukannya adalah dengan mengunduh, menginstal, dan menjalankan Geth. Dengan Geth, kita bisa mengaktifkan node ringan dan menjalankannya dalam hitungan menit.
-
-A light client requires less than 400MB of storage whilst still allowing full interactivity with the Ethereum state. Light clients retrieve data from remote peers, so some queries may take longer to respond in comparison to other sync modes.
-
-For an explanation of the differences between the different sync modes, read our [nodes and clients developer docs](/developers/docs/nodes-and-clients/#node-types).
-
-## Install and run {#install-and-run}
-
-First, [install Geth](https://geth.ethereum.org/docs/install-and-build/installing-geth).
-
-After installing Geth, you can run an Ethereum node in "light" mode by running the following command in a Terminal window:
-
-```bash
-geth --syncmode light
-```
-
-Once launched, Geth will begin connecting to other nodes on Ethereum - known as "peers". The process of connecting to peers may take a while.
-
-When your Geth node has enough peers, it will import headers from new blocks on the chain.
-
-When new block headers no longer have an "age", Geth will be synced to the chain's head.
-
-## Menghentikan dan memulai kembali node Anda {#stopping-and-restarting-your-node}
-
-You can stop your node at any time by pressing CTRL+C.
-
-When restarting the node, Geth will take a few minutes to download block headers created since the node was last run.
-
-## Enable the HTTP-RPC server {#enable-the-http-rpc-server}
-
-Enabling the HTTP-RPC server lets you connect your Ethereum node to other software like wallets, browser extensions, or custom software libraries.
-
-You can enable the HTTP-RPC server by running the following command when launching Geth:
-
-```bash
-geth --syncmode light --http
-```
-
-Once enabled, run `curl http://127.0.0.1:8545`. This should report no error.
-
-### Allow remote connections {#allow-remote-connections}
-
-To allow remote hosts to connect to your node, launch Geth with the following command:
-
-```
-geth --syncmode light --http --http.addr 0.0.0.0
-```
-
-Note: this assumes that there is no process blocking requests to your localhost, such as a firewall.
-
-## Geth JavaScript console {#geth-javascript-console}
-
-Geth has a built-in JavaScript console and a JavaScript API called [web3js](https://github.com/ethereum/web3.js/) that you can use to interact with your node.
-
-To use the JavaScript console run:
-
-```bash
-geth attach
-```
-
-This console allows direct interaction with Ethereum. For example, running the `eth.blockNumber` command will print the latest known block number.
-
-[Dokumentasi web3js lengkap](http://web3js.readthedocs.io/)
-
-## Mainnet and testnets {#mainnet-and-testnets}
-
-Geth runs your node on [Ethereum Mainnet](/glossary/#mainnet) by default.
-
-It is also possible to use Geth to run a node on one of the [public test networks](/networks/#testnets), by running one of the following commands in Terminal:
-
-```bash
-geth --syncmode light --ropsten
-geth --syncmode light --rinkeby
-geth --syncmode light --goerli
-```
-
-## Di mana data blockchain dan EVM disimpan? {#where-is-the-blockchain-and-evm-data-stored}
-
-Direktori yang digunakan Geth untuk menyimpan data blockchain mentah tergantung pada sistem operasi Anda. Upon running Geth, look for a message that looks like this:
-
-```bash
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-```
-
-Jalur yang mengikuti `“database=”` akan memberi tahu Anda di mana data blockchain disimpan dalam mesin Anda. Jika Anda menjalankan node penuh, direktori ini akan berisi semua data tentang setiap blok yang pernah diserahkan ke blockchain. Karena kita menjalankan node ringan, direktori ini hanya berisi header blok.
-
-Penting untuk ditekankan di sini bahwa, pada tingkat paling bawah, inilah tempat di mana blockchain tinggal. Konten lengkap blockchain dan state EVM disimpan dalam setiap node penuh di jaringan Ethereum, dalam direktori yang tampak sangat mirip dengan direktori di komputer Anda.
-
-## Bacaan lebih lanjut {#further-reading}
-
-- [Pelajari selengkapnya tentang jaringan yang berbeda](/developers/docs/networks/).
-- [Run a full node](/run-a-node/)
diff --git a/public/content/translations/id/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/id/developers/tutorials/uniswap-v2-annotated-code/index.md
index 9bdb7c2d11c..35059ed062b 100644
--- a/public/content/translations/id/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/id/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -743,7 +743,7 @@ Ini adalah fungsi utama dari pabrik, untuk membuat bursa pasangan di antara dua
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Kita menginginkan alamat dari bursa baru yang bersifat deterministik, sehingga dapat dihitung sebelum di luar rantai (dapat bermanfaat untuk [transaksi lapisan ke-2](/developers/docs/layer-2-scaling/)). Untuk melakukan hal tersebut, kita perlu memiliki urutan alamat token yang konsisten, terlepas dari urutan di mana kita menerimanya, sehingga kita memilahnya di sini.
+Kita menginginkan alamat dari bursa baru yang bersifat deterministik, sehingga dapat dihitung sebelum di luar rantai (dapat bermanfaat untuk [transaksi lapisan ke-2](/developers/docs/scaling/)). Untuk melakukan hal tersebut, kita perlu memiliki urutan alamat token yang konsisten, terlepas dari urutan di mana kita menerimanya, sehingga kita memilahnya di sini.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
diff --git a/public/content/translations/id/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/id/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index d519a35b046..653f0ca5d46 100644
--- a/public/content/translations/id/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/id/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -295,4 +295,4 @@ Sumber kode untuk tutorial ini bisa ditemukan [di sini](https://github.com/EthWo
Tutorial yang mungkin juga Anda minati:
-- [Menguji kontrak pintar dengan Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Menguji kontrak pintar dengan Waffle](/developers/tutorials/waffle-test-simple-smart-contract/)
diff --git a/public/content/translations/id/enterprise/index.md b/public/content/translations/id/enterprise/index.md
index 5b0060ce92c..2a2b5928d08 100644
--- a/public/content/translations/id/enterprise/index.md
+++ b/public/content/translations/id/enterprise/index.md
@@ -33,7 +33,7 @@ Banyak bisnis dan konsorsium telah menyebarkan blockchain pribadi yang diizinkan
Perusahaan telah bereksperimen dengan teknologi blockchain sejak sekitar 2016, ketika proyek Hyperledger, Quorum, dan Corda diluncurkan. Fokusnya terutama pada blockchain perusahaan privat yang diizinkan, tapi sejak awal 2019 ada perubahan dalam pemikiran tentang blockchain publik vs privat untuk aplikasi bisnis. Sebuah [survei](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf) yang diadakan oleh Forrester menunjukkan bahwa "Responden survey ... melihat potensi ini, dengan 75% mengatakan bahwa mereka kemungkinan besar akan memanfaatkan blockchain publik di masa depan, dan hampir sepertiga mengatakan mereka sangat mungkin melakukan itu". Paul Brody dari EY telah [membahas](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668) tentang keuntungan membangun pada blockchain publik, yang (bergantung pada aplikasi) bisa mencakup keamanan/kekebalan yang lebih kuat, transparansi, biaya total kepemilikan yang lebih rendah, dan kemampuan untuk bekerja sama dengan semua aplikasi lainnya yang juga ada di Jaringan Utama (efek jaringan). Berbagi kerangka acuan umum antar perusahaan menghindari munculnya sejumlah silo terisolasi yang tidak perlu yang tidak bisa saling berkomunikasi dan berbagi atau sinkron satu sama lain.
-Pengembangan lainnya yang menggeser fokus ke blockchain publik adalah [Lapisan 2](/developers/docs/scaling/layer-2). Lapisan 2 terutama untuk kategori teknologi skalabilitas yang membuat aplikasi throughput tinggi mungkin ada di rantai publik. Tetapi solusi Lapisan 2 juga bisa [mengatasi beberapa tantangan lainnya yang mendorong pengembang perusahaan memilih rantai privat di masa lalu](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
+Pengembangan lainnya yang menggeser fokus ke blockchain publik adalah [Lapisan 2](/developers/docs/scaling/#layer-2-scaling). Lapisan 2 terutama untuk kategori teknologi skalabilitas yang membuat aplikasi throughput tinggi mungkin ada di rantai publik. Tetapi solusi Lapisan 2 juga bisa [mengatasi beberapa tantangan lainnya yang mendorong pengembang perusahaan memilih rantai privat di masa lalu](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
Protokol Baseline adalah salah satu proyek utama yang menentukan satu protokol yang memungkinkan kolaborasi rahasia dan rumit di antara perusahaan tanpa meninggalkan data sensitif apa pun secara on-chain. Proyek ini telah mendapatkan [momentum](https://www.oasis-open.org/2020/08/26/baseline-protocol-achieves-key-milestone-with-release-of-v0-1-implementation-for-enterprise/) signifikan sepanjang 2020.
diff --git a/public/content/translations/id/refi/index.md b/public/content/translations/id/refi/index.md
index 1a733fa04fa..cfe9f4bc43f 100644
--- a/public/content/translations/id/refi/index.md
+++ b/public/content/translations/id/refi/index.md
@@ -18,7 +18,7 @@ summaryPoint3: Alat untuk meningkatkan skala aset manfaat ekologi secara drastis
Sebaliknya, ReFi bertujuan untuk memecahkan masalah lingkungan, komunal, atau sosial dengan menciptakan siklus regeneratif. Sistem ini menciptakan nilai bagi para partisipan-partisipan sekaligus memberi manfaat bagi ekosistem dan masyarakat.
-Salah satu dasar dari ReFi adalah konsep ekonomi regeneratif yang dipelopori oleh John Fullerton dari [Capital Institute](https://capitalinstitute.org). Dia mengusulkan delapan prinsip yang saling berhubungan yang mendasari kesehatan sistemik:
+Salah satu fondasi ReFi adalah konsep ekonomi regeneratif yang dirintis oleh John Fullerton dari Capital Institute. Ia mengusulkan [delapan prinsip saling terkait](https://capitalinstitute.org/8-principles-regenerative-economy/) yang melandasi kesehatan sistemis:
![Delapan prinsip yang saling terhubung](./refi-regenerative-economy-diagram.png)
diff --git a/public/content/translations/id/roadmap/beacon-chain/index.md b/public/content/translations/id/roadmap/beacon-chain/index.md
index 36aba00e25d..899485564bc 100644
--- a/public/content/translations/id/roadmap/beacon-chain/index.md
+++ b/public/content/translations/id/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ Rantai Suar adalah nama yang diberikan kepada buku besar akun yang melakukan dan
Rantai Suar memperkenalkan [bukti taruhan](/developers/docs/consensus-mechanisms/pos/) pada Ethereum. Hal ini membuat Ethereum tetap aman dan membuat validator mendapatkan lebih banyak ETH dalam prosesnya. Dalam praktiknya, penaruhan melibatkan penaruhan ETH untuk mengaktifkan perangkat lunak validator. Sebagai penaruh, Anda menjalankan perangkat lunak yang membuat dan memvalidasi blok baru dalam chain.
-Penaruhan memiliki tujuan yang serupa dengan [penambangan](/developers/docs/mining/), tetapi berbeda dalam banyak hal. Penambangan membutuhkan pengeluaran besar di muka dalam bentuk perangkat keras yang kuat dan konsumsi energi, yang menghasilkan skala ekonomi, dan mendorong sentralisasi. Penambangan juga tidak dilengkapi dengan persyaratan untuk mengunci aset sebagai jaminan, membatasi kemampuan protokol untuk menghukum pelaku kejahatan setelah terjadi serangan.
+Penaruhan memiliki tujuan yang serupa dengan [penambangan](/developers/docs/consensus-mechanisms/pow/mining/), tetapi berbeda dalam banyak hal. Penambangan membutuhkan pengeluaran besar di muka dalam bentuk perangkat keras yang kuat dan konsumsi energi, yang menghasilkan skala ekonomi, dan mendorong sentralisasi. Penambangan juga tidak dilengkapi dengan persyaratan untuk mengunci aset sebagai jaminan, membatasi kemampuan protokol untuk menghukum pelaku kejahatan setelah terjadi serangan.
Transisi ke bukti taruhan membuat Ethereum secara signifikan lebih aman dan terdesentralisasi dibandingkan dengan bukti kerja. Semakin banyak orang yang berpartisipasi dalam jaringan, semakin terdesentralisasi dan aman dari serangan.
diff --git a/public/content/translations/id/roadmap/index.md b/public/content/translations/id/roadmap/index.md
index 91b0879f1dd..1d426ea829b 100644
--- a/public/content/translations/id/roadmap/index.md
+++ b/public/content/translations/id/roadmap/index.md
@@ -3,7 +3,7 @@ title: Peta Perjalanan Ethereum
description: Jalan menuju peningkatan skalabilitas, keamanan, dan keberlanjutan Ethereum.
lang: id
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Peta Perjalanan Ethereum"
summaryPoints:
buttons:
@@ -59,7 +59,7 @@ Ethereum ditingkatkan secara rutin untuk meningkatkan skalabilitas, keamanan, at
-Peta jalan ini sebagian besar adalah hasil kerja bertahun-tahun dari para peneliti dan pengembang - karena protokol ini sangat teknis - tetapi setiap orang yang berminat boleh ikut serta. Ide-ide biasanya dimulai dari diskusi di forum seperti [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) atau server discord Eth R&D. Ide-ide tersebut mungkin tanggapan terhadap kerentanan baru yang ditemukan, saran dari organisasi yang bekerja di lapisan aplikasi (seperti dapps dan bursa pertukaran) atau dari perselisihan yang diketahui oleh pengguna akhir (seperti biaya atau kecepatan transaksi). Ketika sudah matang, ide-ide ini dapat diusulkan sebagai [Proposal Peningkatan Ethereum](https://eips.ethereum.org/). Semua ini dilakukan di ruang publik sehingga setiap anggota komunitas dapat memberi masukan kapan saja.
+Peta jalan ini sebagian besar adalah hasil kerja bertahun-tahun dari para peneliti dan pengembang - karena protokol ini sangat teknis - tetapi setiap orang yang berminat boleh ikut serta. Ide-ide biasanya dimulai dari diskusi di forum seperti [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://ethereum-magicians.org/) atau server discord Eth R&D. Ide-ide tersebut mungkin tanggapan terhadap kerentanan baru yang ditemukan, saran dari organisasi yang bekerja di lapisan aplikasi (seperti dapps dan bursa pertukaran) atau dari perselisihan yang diketahui oleh pengguna akhir (seperti biaya atau kecepatan transaksi). Ketika sudah matang, ide-ide ini dapat diusulkan sebagai [Proposal Peningkatan Ethereum](https://eips.ethereum.org/). Semua ini dilakukan di ruang publik sehingga setiap anggota komunitas dapat memberi masukan kapan saja.
[Selengkapnya tentang tata kelola Ethereum](/governance/)
diff --git a/public/content/translations/id/roadmap/single-slot-finality/index.md b/public/content/translations/id/roadmap/single-slot-finality/index.md
index efce220168a..a14515ebe6c 100644
--- a/public/content/translations/id/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/id/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ Masalah dengan penskalaan agregasi dengan meningkatkan jumlah validator per subn
## Kemajuan saat ini {#current-progress}
-SSF sedang dalam tahap penelitian. Ini tidak diharapkan akan diluncurkan dalam beberapa tahun ke depan, kemungkinan setelah peningkatan besar lainnya seperti [Verkle trees](/roadmap/verkle-trees/) dan [Danksharding](/roadmap/danksharding]).
+SSF sedang dalam tahap penelitian. Ini tidak diharapkan akan diluncurkan dalam beberapa tahun ke depan, kemungkinan setelah peningkatan besar lainnya seperti [Verkle trees](/roadmap/verkle-trees/) dan [Danksharding](/roadmap/danksharding/).
## Bacaan lebih lanjut {#further-reading}
diff --git a/public/content/translations/it/community/code-of-conduct/index.md b/public/content/translations/it/community/code-of-conduct/index.md
index 4e20dda63e7..681da5f76c5 100644
--- a/public/content/translations/it/community/code-of-conduct/index.md
+++ b/public/content/translations/it/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Gli standard di base che ci impegniamo a rispettare negli spazi di
lang: it
---
+# Codice di condotta {#conduct-intro}
+
## Missione {#mission}
Sviluppare e mantenere l'hub più completo ed accessibile di conoscenza Ethereum.
diff --git a/public/content/translations/it/community/events/index.md b/public/content/translations/it/community/events/index.md
index 8c301d3e7ec..d16f6c4ed27 100644
--- a/public/content/translations/it/community/events/index.md
+++ b/public/content/translations/it/community/events/index.md
@@ -5,7 +5,7 @@ lang: it
hideEditButton: true
---
-## Eventi in arrivo {#events}
+# Eventi in arrivo {#events}
**Ogni mese, ci sono importanti eventi Ethereum in tutto il mondo.** Prendi in considerazione di partecipare a un evento vicino a te per incontrare altre persone nella community, conoscere le opportunità di lavoro e sviluppare nuove competenze.
diff --git a/public/content/translations/it/contributing/design/adding-design-resources/index.md b/public/content/translations/it/contributing/design/adding-design-resources/index.md
index a2f7b400f08..f696b61a581 100644
--- a/public/content/translations/it/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/it/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Linee guida e requisiti per assicurare la qualità dei materiali di
lang: it
---
+# Aggiungere risorse di progettazione {#adding-design-resources}
+
Chiunque può suggerire nuovi materiali di progettazione per il [design e l'UX nella pagina Web3](/developers/docs/design-and-ux/).
Si prega di notare che questa pagina si occupa di fornire il valore dell'utente agli aspiranti designer in Web3. La sezione di progettazione non serve per pubblicizzare i tuoi servizi, prodotti o piattaforme.
diff --git a/public/content/translations/it/contributing/design/index.md b/public/content/translations/it/contributing/design/index.md
index 0706c6b385b..0379978bcc1 100644
--- a/public/content/translations/it/contributing/design/index.md
+++ b/public/content/translations/it/contributing/design/index.md
@@ -12,7 +12,7 @@ Infine, questo è un ottimo modo per creare un portafoglio diversificato e sugge
## Come contribuire?
-### Fornire feedback ai primi prototipi di progettazione {#design-critique}
+### Fornire feedback ai primi prototipi di progettazione {#design-critique}
Talvolta, necessitiamo di aiuto nel testare le nostre idee abbozzate. Questo è un ottimo modo per contribuire senza alcuna conoscenza tecnica.
@@ -20,7 +20,7 @@ Talvolta, necessitiamo di aiuto nel testare le nostre idee abbozzate. Questo è
2. Sarai guidato attraverso i design per fornire feedback tramite la funzionalità dei commenti.
3. Il risultato sarà condiviso nel ticket di GitHub e quindi sarà chiuso dal team.
-### Partecipare ai sondaggi di ricerca {#answer-surveys}
+### Partecipare ai sondaggi di ricerca {#answer-surveys}
Fornisci feedback tramite il nostro sito web:
@@ -28,7 +28,7 @@ Fornisci feedback tramite il nostro sito web:
2. Cliccando sul widget del feedback nell'angolo inferiore destro e rispondendo a domande relative a progettazione e contenuti.
3. Concentrati sulle domande in formato libero.
-### Trovare problemi di progettazione sul sito web e segnalarli {#report-design-issues}
+### Trovare problemi di progettazione sul sito web e segnalarli {#report-design-issues}
Ethereum.org è un sito web in rapida crescita, con molte funzionalità e contenuti. Parte dell'UI può facilmente divenire obsoleta o migliorabile. Se riscontri un caso simile, ti preghiamo di segnalarlo, così che ottenga la nostra attenzione.
@@ -36,7 +36,7 @@ Ethereum.org è un sito web in rapida crescita, con molte funzionalità e conten
2. Scatta degli screenshot e annota se vedi qualsiasi problema visivo o dell'UX.
3. Segnala i problemi trovati utilizzando una [segnalazione di bug](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Proponi modifiche al design {#propose-design-changes}
+### Proponi modifiche al design {#propose-design-changes}
Se ti senti a tuo agio nell'affrontare le sfide del design, puoi visitare la bacheca dei nostri ticket di GitHub e filtrare i [problemi di design](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
@@ -45,7 +45,7 @@ Se ti senti a tuo agio nell'affrontare le sfide del design, puoi visitare la bac
3. Proponi la soluzione nel ticket di GitHub corrispondente o [creane uno nuovo](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request).
4. Attendi la revisione del team di progettazione.
-### Creare insieme il sistema di progettazione {#Contribute-to-design-system}
+### Creare insieme il sistema di progettazione {#Contribute-to-design-system}
Il nostro sistema di progettazione rende la progettazione di ethereum.org divertente e facile. Se sei un progettista esperto, puoi aiutarci a preparare molti componenti per il sito web.
@@ -56,7 +56,7 @@ Il nostro sistema di progettazione rende la progettazione di ethereum.org divert
5. Il team di progettazione lo revisionerà.
6. Il team di progettazione incorporerà le modifiche nel file principale e pubblicherà il file per la comunità.
-### Scrivere contenuti correlati alla progettazione sul sito web {#write-design-articles}
+### Scrivere contenuti correlati alla progettazione sul sito web {#write-design-articles}
La comunità di sviluppatori di Ethereum è forte, mentre quella di progettazione è lievemente in ritardo. Se sei un progettista con conoscenze di Web3, ti preghiamo di condividerle con la comunità, in modo che possiamo tutti crescere e migliorarci insieme; abbiamo [una pagina sulla progettazione su Ethereum](/developers/docs/design-and-ux/) a cui puoi contribuire. Inoltre, puoi consultare le nostre [politiche di elencazione](/contributing/design/adding-design-resources).
@@ -66,7 +66,7 @@ La comunità di sviluppatori di Ethereum è forte, mentre quella di progettazion
4. Una volta approvato, scrivi i contenuti.
5. Inviali nel ticket di GH corrispondente.
-### Disegnare nuove illustrazioni {#prepare-illustrations}
+### Disegnare nuove illustrazioni {#prepare-illustrations}
Le visualizzazioni sono tra gli strumenti più potenti per spiegare degli argomenti astratti. L'aggiunta di diagrammi e infografiche ha un enorme potenziale. Dopotutto, un'immagine può dire più di mille parole.
diff --git a/public/content/translations/it/deprecated-software/index.md b/public/content/translations/it/deprecated-software/index.md
deleted file mode 100644
index 32924949333..00000000000
--- a/public/content/translations/it/deprecated-software/index.md
+++ /dev/null
@@ -1,428 +0,0 @@
----
-title: Software obsoleto
-description: Software che è stato abbandonato dai suoi manutentori
-lang: it
-sidebarDepth: 2
----
-
-# Software obsoleto {#summary-deprecated-software}
-
-Questo è un elenco dei progetti e delle risorse chiave relativi ad Ethereum che sono diventati obsoleti o che non sono più mantenuti. È importante mettere in evidenza il lavoro obsoleto così che gli utenti possano trovare alternative valide e per evitare che vengano distribuite versioni malevoli.
-
-Questo elenco è curato dalla nostra comunità. Se c'è qualcosa di mancante o incorretto, si prega di modificare la pagina!
-
-## Proof of Work {#pow}
-
-[Proof of work ](/developers/docs/consensus-mechanisms/pow) è il motore di consenso che è stato implementato in Ethereum fino a settembre 2022. È diventato obsoleto quando Ethereum è passato al meccanismo di consenso basato su [proof-of-stake](/developers/docs/consensus-mechanisms/pos). Questo è stato raggiunto abbandonando le parti del software del client relative al mining in proof-of-work, incluso [Ethhash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethhash) (l'algoritmo di mining) e tutta la logica di consenso e la funzionalità di gossip del blocco che era stata originariamente integrata nei client di esecuzione. I client stessi non sono diventati obsoleti ma lo sono molti dei loro componenti principali. Il concetto di proof-of-work è stato abbandonato come effetto globale della rimozione delle relative componenti del software del client.
-
-## Software {#software}
-
-Questa sezione è dedicata ai software per desktop, per riga di comando o per server che sono diventati obsoleti. I tipi principali sono portafogli, ambienti di sviluppo integrati, linguaggi e client Ethereum. È assolutamente necessario fare attenzione a non installare software obsoleto a meno che non si sia certi che provenga dalla fonte originale, per esempio: un repository contenuto all'interno di https://github.com/ethereum.
-
-### OpenEthereum {#open-ethereum}
-
-Obsoleto dal luglio 2021
-
-**Riepilogo**
-
-OpenEthereum è stata la seconda implementazione principale di Ethereum per numero di nodi. OpenEthereum ha svolto un ruolo importante come infrastruttura chiave per alcuni dei maggiori utenti di Ethereum come Etherscan e Gnosis Safe. La sua capacità di tracciamento lo distinguono dagli altri client, garantendo una sincronizzazione affidabile e veloce per i fornitori di dati.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/openethereum/openethereum)
-
-**Storia**
-
-OpenEthereum è stata costruita da miner, fornitori di servizi e borse che necessitano di una sincronizzazione veloce e un tempo di attività massimo. OpenEthereum ha fornito l'infrastruttura di base essenziale per servizi veloci ed affidabili.
-
-**Alternative**
-
-[Confronta tutte le opzioni del client di esecuzione di Ethereum](/developers/docs/nodes-and-clients/#execution-clients).
-
-### Grid {#grid}
-
-Obsoldeto dal 10 dicembre 2020
-
-**Riepilogo**
-
-Grid era una applicazione desktop basata su JavaScript che permetteva di accedere in modo sicuro ad Ethereum, IPFS e ad altre reti decentralizzate. Ha fornito un'interfaccia intuitiva per aiutare un pubblico meno tecnico ad interagire in modo sicuro con le dapp, aumentando l'accessibilità per tutti.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/grid)
-
-**Storia**
-
-Grid potrebbe essere visto come il successore di Mist, anche essa un'applicazione desktop standalone basata su JavaScript che includeva un nodo Geth. Grid ha rimosso l'aspetto del portafoglio e ha aggiunto un approccio in stile plugin per l'esecuzione di diversi tipi di nodi.
-
-**Alternative**
-
-[DAppNode](https://dappnode.io/) è una piattaforma per distribuire e ospitare dapp, client P2P e nodi blockchain.
-
-### Ethereum Studio {#ethereum-studio}
-
-Obsoleto dal 7 dicembre 2020
-
-**Riepilogo**
-
-Ethereum Studio era un IDE basato sul web che permetteva agli utenti di creare e testare contratti intelligenti, così come di costruire i front-end per essi.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/SuperblocksHQ/ethereum-studio)
-
-**Storia**
-
-Ethereum Studio è stato sviluppato per fornire agli utenti un IDE con una blockchain Ethereum ed un compilatore Solidity integrati. In aggiunta a questo ha fornito la possibilità di modificare il codice in tempo reale e di esportare dapp complete senza bisogno di un terminale.
-
-**Alternative**
-
-[Remix](https://remix.ethereum.org/) è un IDE web alternativo per lo sviluppo in Solidity. Inoltre il [Portale per sviluppatori](/developers/) ha strumenti per lo sviluppo su web e in locale, documentazione e molto altro.
-
-### Portafoglio Meteor Dapp {#meteor-dapp-wallet}
-
-Obsoleto dal 27 marzo 2019
-
-**Riepilogo**
-
-Il portafoglio Meteor Dapp era un componente di Mist, un portafoglio di Ethereum per gestire i conti di Ethereum ed interagire con i contratti intelligenti. Per tanti anni l'interfaccia utente web del portafoglio Mereor Dapp è stata ospitata come sottodominio, "wallet.ethereum.org".
-
-Era incluso anche il contratto multifirma di Mist (codice Solidity), e il portafoglio Meteor Dapp presentava un'interfaccia utente per la sua configurazione e distribuzione.
-
-**Non obsoleto: multifirma di Mist distribuiti**
-
-Il contratto multifirma di Mist - distribuito come bytecode sulla Rete Principale di Ethereum da migliaia di utenti - continua ad essere usato per memorizzare e gestire valore senza incidenti. [Come interagire con un contratto multifirma di Mist](https://support.mycrypto.com/how-to/sending/how-to-interact-with-a-multisig-contract) fornisce una buona panoramica su come usare i contratti intelligenti.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/meteor-dapp-wallet)
-
-**Storia**
-
-Vedi Mist qui sotto.
-
-**Alternative**
-
-Visita la pagina dei [Portafogli di Ethereum](/wallets/) su ethereum.org.
-
-### Mist {#mist}
-
-Obsoleto dal 27 marzo 2019
-
-**Riepilogo**
-
-Mist era un browser specializzato costruito con Electron che permetteva agli utenti di gestire conti di Ethereum e di interagire con dapp ospitate nel web tradizionale.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/mist)
-
-**Storia**
-
-Mist è stato un importante esperimento iniziale perché ha esplorato come gestire le chiavi di Ethereum, ha fatto conoscere agli utenti gli strumenti finanziari, come i contratti multifirma, e ha dimostrato com avrebbe funzionato il Web3. Ha anche mostrato agli utenti innovazioni come i blockies, grafiche carine e memorabili in stile 8-bit che rappresentano le chiavi di Ethereum.
-
-**Alternative**
-
-[MetaMask](https://metamask.io/) è un portafoglio nel browser che permette di gestire le chiavi di Ethereum e di interagire con le dapp. È disponibile come un'estensione per Google Chrome e Firefox ed è incluso nel [Browser Brave](https://brave.com/).
-
-### Mix {#mix}
-
-Obsoleto dall'11 agosto 2016
-
-**Riepilogo**
-
-Mix era un IDE sviluppato in C++ che permetteva agli sviluppatori di costruire e distribuire contratti intelligenti su Ethrerum.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/mix)
-
-**Storia**
-
-Mix è stato la prima delle applicazioni legate ad Ethereum. Guarda questa [presentazione di Gavin Wood al Devcon0](https://www.youtube.com/watch?v=hcP_z_wBlaM).
-
-**Alternative**
-
-[Remix](https://remix.ethereum.org/) è un IDE ospitato su browser per lo sviluppo, il testing e la distribuzione di contratti intelligenti in Solidity. Ha anche una soluzione desktop.
-
-### Minimal {#minimal}
-
-Obsoleto dal 2020.
-
-**Riepilogo**
-
-Minimal era un'implementazione modulare della blockchain di Ethereum scritta in Go.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/umbracle/minimal)
-
-**Storia**
-
-Minimal è stato sostituito da [polgon-sdk](https://github.com/0xPolygon/polygon-edge)
-
-### Hyperledger Burrow {#hyperledger-burrow}
-
-Obsoleto dal 2022.
-
-**Riepilogo**
-
-Hyperledger Burrow era un nodo blockchain autorizzato di contratti intelligenti di Ethereum. Eseguiva il codice dei contratti intelligenti dell'EVM di Ethereum e di WASM su macchine virtuali autorizzate.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/hyperledger/burrow)
-
-### Mana-Ethereum {#mana-ethereum}
-
-**Riepilogo**
-
-Mana-Ethereum era un client Ethereum costruito usando Elixir.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/mana-ethereum/mana)
-
-**Storia**
-
-Il repository GitHub di Mana-Ethereum non è stato esplicitamente archiviato, ma l'ultimo commit è del 2019.
-
-### Aleth (cpp-ethereum) {#aleth}
-
-Obsoleto dal 6 ottobre 2021
-
-**Riepilogo**
-
-Aleth (precedentemente noto come cpp-ethereum) era un client di Ethereum scritto in C++.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/aleth)
-
-**Storia**
-
-Aleth è stato il terzo client più popolare per Ethereum prima di essere abbandonato il 6 ottobre 2021.
-
-**Alternative**
-
-[Geth](https://geth.ethereum.org/) è un noto client Ethereum alternativo.
-
-### Ethereum-H {#ethereum-h}
-
-**Archivi**
-
-Gli archivi di Ethereum-H sono stati rimossi da GitHub.
-
-**Storia**
-
-Ethereum-H era un client Ethereum scritto in Haskell. È stato abbandonato intorno al 2015.
-
-**Alternative**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) e [Erigon](https://github.com/ledgerwatch/erigon) sono valide alternative di client Ethereum - non esiste attualmente un client in Haskell.
-
-### ruby-ethereum {#ruby-ethereum}
-
-**Archivi**
-
-[Repo GitHib di ruby-ethereum](https://github.com/cryptape/ruby-ethereum)
-
-**Storia**
-
-ruby-ethereum era un client Ethereum scritto in Ruby. È stato abbandonato intorno al 2018.
-
-**Alternative**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) e [Erigon](https://github.com/ledgerwatch/erigon) sono valide alternative di client Ethereum. Non esiste più un client in Ruby attivo.
-
-### Parity {#parity}
-
-Obsoleto dal 2 giugno 2020
-
-**Riepilogo**
-
-Parity era un client Ethereum scritto in Rust.
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/openethereum/parity-ethereum)
-
-**Storia**
-
-Essendo uno dei due principali client validi nei primi anni di Ethereum (l'altro era Geth), Parity costituiva una parte fondamentale dell'ecosistema. Durante gli attacchi di Shanghai del 2016, Parity ha permesso alla rete di Ethereum di continuare a operare mentre il funzionamento di client come Geth era stato interrotto dall'attacco, dimostrando l'importanza della diverstià dei client.
-
-**Alternative**
-
-[Erigon](https://github.com/ledgerwatch/erigon) Erigon (precedentemente chiamato Turbo-Geth) è un client Ethereum di nuova generazione sulla frontiera dell'efficienza scritto in Go.
-
-**Nota:** _il progetto successore al client Ethereum Parity era [OpenEthereum](https://github.com/openethereum/openethereum) **che intanto diventato obsoleto.**_
-
-La risorsa ["Avvia il tuo nodo di Ethereum"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) su ethereum.org include una sezione per scaricare, installare ed eseguire un client Ethereum.
-
-### Trinity {#trinity}
-
-Obsoleto dal 1° luglio 2021
-
-**Riepilogo**
-
-Trinity era un client Ethereum basato su python che fungeva da strumento di ricerca e di formazione per la community. Un elevato numero di moduli basati su python legati a Trinity continuano ad essere mantenuti dallo stesso team, incluso [Py-EVM](https://github.com/ethereum/py-evm).
-
-**Archivi**
-
-[Repo Github archiviati](https://github.com/ethereum/trinity)
-
-**Storia**
-
-Trinity è stato il progetto successivo a [pyethereum](https://github.com/ethereum/pyethereum/tree/b704a5c6577863edc539a1ec3d2620a443b950fb), un client Ethereum iniziale basato su python.
-
-**Alternative**
-
-La risorsa ["Avvia il tuo nodo di Ethereum"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) su ethereum.org include una sezione per scaricare, installare ed eseguire un client Ethereum.
-
-Il progetto [EthereumJS](https://github.com/ethereumjs) ha uno scopo di ricerca e formazione simile a Trinity.
-
-## Dapp e Servizi {#dapps-and-services}
-
-Questa sezione riguarda i servizi distribuiti sulla Rete Principale di Ethereum e su altre reti baste sull'EVM. Si tenga presente che le dapp e i servizi qui elencati potrebbero includere applicazioni DeFi che sono state hackerate o che potrebbero soffrire di vulnerabilità di sicurezza dovute alla mancanza di manutenzione, di cambiamenti nel protocollo, ecc.
-
-### Protocollo Cover {#cover-protocol}
-
-Chiuso nell'autunno del 2021
-
-**Riepilogo**
-
-Cover era un protocollo assicurativo Defi che funziona su Ethereum e altre reti basate sull'EVM.
-
-**Archivi**
-
-[Sito Web](https://wayback.archive-it.org/17679/20211004074635/https://www.coverprotocol.com/)
-
-[Articoli Medium](https://wayback.archive-it.org/17679/20211004074633/https://coverprotocol.medium.com/)
-
-[Repo GitHub](https://github.com/CoverProtocol/cover-core-v1)
-
-[Documentazione](https://wayback.archive-it.org/17679/20211004074634/https://docs.coverprotocol.com/)
-
-### The DAO {#the-dao}
-
-Hackerato e chiuso nell'estate del 2016
-
-**Riepilogo**
-
-The DAO era un contratto intelligente, una dapp e un forum per organizzare il finanziamento di progetti. Sfruttando una vulnerabilità, è stato svuotato della maggior parte degli ETH, portando ad una biforcazione dura organizzata dalla community per restituire gli ETH a chi li aveva depositati in The DAO. Il front-end della UX e il forum sono stati dismessi.
-
-**Archivi**
-
-[Archivio internet di "daohub.org" del 14 maggio 2016](https://web.archive.org/web/20160514105232/https://daohub.org/)
-
-**Storia**
-
-Sebbene The DAO sia fallito, il concetto è sopravvissuto. L'innovativo modello tecnico, sociale e di governance di base di The DAO è ampiamente utilizzato nelle community Defi, NFT e di progetti di finanziamento.
-
-["Biforcazione DAO" su ethereum.org](/history/#dao-fork)
-
-[Voce Wikipedia per "The DAO"]()
-
-**Alternative**
-
-["DAO" su ethereum.org](/dao/)
-
-[MolochDAO](https://www.molochdao.com/)
-
-[Gitcoin Grants](https://gitcoin.co/grants/)
-
-### SparkPool {#sparkpool}
-
-Chiuso nell'autunno del 2021
-
-**Riepilogo**
-
-Con sede a Hangzhou, il servizio e la community di SparkPool sono stati uno dei più grandi pool di mining incentrati su Ethereum al mondo.
-
-**Archivi**
-
-**Storia**
-
-Associato alla community EthFans, il servizio è stato lanciato nel 2015. SparkPool è stato smantellato nell'autunno del 2021 a causa di norme giuridiche più rigorose.
-
-**Alternative**
-
-[Ethermine](https://ethermine.org/)
-
-## Documentazione e fonti informative {#documentation-and-information-sources}
-
-Esistono numerose fonti di documentazione, articoli, tutorial e forum che sono stati rimossi o ancora online ma non più mantenuti. Ne abbiamo selezionati alcuni che sono significativi o il cui attuale stato di "obsoleto" potrebbe portare a confusione o tentativi di truffe.
-
-### Legacy Wiki ed eth.wiki {#eth-wiki}
-
-**Riepilogo**
-
-Legacy Wiki ed eth.wiki erano wiki mantenute dalla Ethereum Foundation per la community più ampia. Erano principalmente orientate ad ospitare descrizioni dettagliate degli aspetti chiave della piattaforma Ethereum e al riepilogo delle tabelle di marcia tecniche.
-
-**Archivi**
-
-[Repo Github archiviato per eth.wiki](https://github.com/ethereum/eth-wiki)
-
-[Repo Github archiviato per Legacy Wiki](https://github.com/ethereum/wiki/wiki)
-
-**Storia**
-
-Legacy Wiki era un wiki GitHub ed un primissimo centro di contenuti tecnici (incluso il Whitepaper originale di Ethereum). Nel corso del tempo, gli sviluppatori di Ethereum hanno migrato la loro documentazione, le specifiche e le descrizioni tecniche ad altre piattaforme quali [Leggi la documentazione](https://readthedocs.org/) e i contenuti ospitati su GitHub.
-
-Nel 2019 e nel 2020, eth.wiki è divenuto il successore di Legacy Wiki, ma non si è creata una community duratura di collaboratori.
-
-**Alternative**
-
-Contenuto basato sulla community: [sito web Ethereum.org](/)
-
-I progetti software di Ethereum spesso ospitano la loro documentazione in [Leggi la documentazione](https://readthedocs.org/)
-
-Specifiche tecniche ospitate su GitHub: [EIP](https://github.com/ethereum/EIPs), [Specifiche di esecuzione](https://github.com/ethereum/execution-specs), [Specifiche di consenso](https://github.com/ethereum/consensus-specs)
-
-### forum.ethereum.org {#forum-ethereum-org}
-
-**Riepilogo**
-
-Il Forum della Community di Ethereum era un forum di discussione mantenuto dalla Ethereum Foundation ed ospitato su forum Vanilla. Usava il sottodominio "forum.ethereum.org".
-
-**Archivi**
-
-URL dell'archivio: [https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/](https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/)
-
-**Storia**
-
-Questo Forum è stato il primo forum "ufficiale" di discussione per la community di Ethereum. Insieme a [/r/ethereum](https://reddit.com/r/ethereum) e ad alcuni canali Skype, è stato un importante punto di coordinamento per sviluppatori, progettisti e organizzatori. Nel corso degli anni i partecipanti al Forum si sono spostati ed è divenuto più un posto per la community dei miner.
-
-**Alternative**
-
-[/r/ethereum](https://reddit.com/r/ethereum), e un gran numero di forum di DAO e di server Discord.
-
-## Canali Gitter {#gitter-channels}
-
-### AllCoreDevs {#allcorewdevs-gitter}
-
-**Riepilogo**
-
-AllCoreDevs su Gitter era il principale canale di comunicazione pubblico di coordinamento per gli [sviluppatori del nucleo dei client Ethereum](https://github.com/ethereum/pm/).
-
-**Archivi**
-
-[Canale ethereum/AllCoreDevs su Gitter](https://gitter.im/ethereum/AllCoreDevs)
-
-**Alternative**
-
-Si prega di utilizzare il canale "allcoredevs" sul [server Discord in EthR&D](https://discord.gg/qHv7AjTDuK)
-
-### EthereumJS {#ethereumjs-gitter}
-
-**Riepilogo**
-
-EthereumJS su Gitter era il principale canale di comunicazione pubblico di coordinamento per il [progetto EthereumJS](https://ethereumjs.github.io/).
-
-**Archivi**
-
-[canale ethereum/EthereumJS su Gitter](https://gitter.im/ethereum/ethereumjs)
-
-**Alternative**
-
-Utilizzare il [server Discord di EthereumJS](https://discord.gg/TNwARpR)
diff --git a/public/content/translations/it/developers/docs/apis/json-rpc/index.md b/public/content/translations/it/developers/docs/apis/json-rpc/index.md
index 6a1a398aaa7..e046243bd82 100644
--- a/public/content/translations/it/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/it/developers/docs/apis/json-rpc/index.md
@@ -575,7 +575,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Recuperare un elemento della mappa è più difficile. La posizione di un elemento nella mappa è calcolata con:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Ciò significa che per recuperare l'archiviazione in pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] dobbiamo calcolare la posizione con:
diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
deleted file mode 100644
index acf9c387f9c..00000000000
--- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
+++ /dev/null
@@ -1,334 +0,0 @@
----
-title: Dagger-Hashimoto
-description: Uno sguardo dettagliato all'algoritmo di Dagger-Hashimoto.
-lang: it
----
-
-Dagger-Hashimoto era l'implementazione e specifica di ricerca originale per l'algoritmo di mining di Ethereum. Dagger-Hashimoto è stato sostituito da [Ethash](#ethash). Il mining sarà disattivato completamente dopo [La Fusione](/updates/merge), a partire dalla quale Ethereum sarà invece protetto usando un meccanismo di [proof-of-stake](/developers/docs/consensus-mechanisms/pos).
-
-## Prerequisiti {#prerequisites}
-
-Per meglio comprendere questa pagina, ti consigliamo prima di informarti sul [consenso proof-of-work](/developers/docs/consensus-mechanisms/pow), sul [mining](/developers/docs/consensus-mechanisms/pow/mining) e sugli [algoritmi di mining](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms).
-
-## Dagger-Hashimoto {#dagger-hashimoto}
-
-Dagger-Hashimoto punta a soddisfare due obiettivi:
-
-1. **Resistenza ASIC**: la creazione di hardware specializzato per l'algoritmo dovrebbe apportare un beneficio minimo
-2. **Verificabilità da un client leggero**: un blocco dovrebbe essere efficientemente verificabile da un client leggero.
-
-Con una modifica aggiuntiva, specifichiamo anche come raggiungere un terzo obiettivo se desiderato, ma al costo di una maggiore complessità:
-
-**Archiviazione della catena completa**: il mining dovrebbe richiedere l'archiviazione dello stato completo della blockchain (a causa della struttura irregolare dell'albero di stato di Ethereum, prevediamo la possibilità di alcune potature (pruning), soprattutto dopo alcuni contratti usati spesso, che vogliamo comunque mantenere al minimo).
-
-## Generazione del DAG {#dag-generation}
-
-Il codice per l'algoritmo sarà definito in Python, di seguito. Per prima cosa, diamo `encode_int` per il marshaling in stringhe di interi non firmati con una precisione specificata. È dato anche il suo opposto:
-
-```python
-NUM_BITS = 512
-
-def encode_int(x):
- "Encode an integer x as a string of 64 characters using a big-endian scheme"
- o = ''
- for _ in range(NUM_BITS / 8):
- o = chr(x % 256) + o
- x //= 256
- return o
-
-def decode_int(s):
- "Unencode an integer x from a string using a big-endian scheme"
- x = 0
- for c in s:
- x *= 256
- x += ord(c)
- return x
-```
-
-Poi supponiamo che `sha3` sia una funzione che prende un intero e produce un intero e che `dbl_sha3` sia una funzione double-sha3; se vogliamo convertire questo codice di riferimento in un uso d'implementazione:
-
-```python
-from pyethereum import utils
-def sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(x))
-
-def dbl_sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(utils.sha3(x)))
-```
-
-### Parametri {#parameters}
-
-I parametri usati per l'algoritmo sono:
-
-```python
-SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512
-
-params = {
- "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
- "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536
- # with epochtime=20000 gives 882 MB growth per year
- "cache_size": 2500, # Size of the light client's cache (can be chosen by light
- # client; not part of the algo spec)
- "diff": 2**14, # Difficulty (adjusted during block evaluation)
- "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
- "k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
- "accesses": 200, # Number of dataset accesses during hashimoto
- "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
-}
-```
-
-`P` in questo caso è un numero primo scelto in modo che `log₂(P)` sia solo di poco inferiore a 512, che corrisponde ai 512 bit che abbiamo usato per rappresentare i nostri numeri. Nota che in realtà deve essere memorizzata solo la seconda metà del DAG, quindi il requisito de-facto di RAM parte da 1 GB e cresce di 441 MB l'anno.
-
-### Costruzione del grafico dagger {#dagger-graph-building}
-
-Il primitivo di costruzione del grafico dagger è definito come segue:
-
-```python
-def produce_dag(params, seed, length):
- P = params["P"]
- picker = init = pow(sha3(seed), params["w"], P)
- o = [init]
- for i in range(1, length):
- x = picker = (picker * init) % P
- for _ in range(params["k"]):
- x ^= o[x % i]
- o.append(pow(x, params["w"], P))
- return o
-```
-
-Essenzialmente, avvia un grafico come un singolo nodo, `sha3(seed)` e da lì si inizia ad aggiungere sequenzialmente gli altri nodi, a seconda dei nodi casuali precedenti. Quando viene creato un nuovo nodo, è calcolata una potenza modulare del seed per selezionare casualmente degli indici inferiori a `i` (usando il suddetto `x % i`) e i valori dei nodi a questi indici sono usati all'interno di un calcolo per generare un nuovo valore per `x`, che viene poi passato a una piccola funzione di proof-of-work (basata su XOR) per generare, infine, il valore del grafico all'indice `i`. La logica dietro questa costruzione particolare è forzare l'accesso sequenziale del DAG; il valore successivo del DAG che sarà accessibile non è determinabile finché non sia noto il valore corrente. Infine, l'esponenziazione modulare genera ulteriormente un hashing del risultato.
-
-Questo algoritmo si basa su diversi risultati dalla teoria dei numeri. Vedere l'appendice più avanti per una discussione.
-
-## Valutazione da client leggero {#light-client-evaluation}
-
-Questa costruzione del grafico intende consentire a ogni nodo nel grafico di essere ricostruito calcolando solamente l'albero secondario di un piccolo numero di nodi, in modo da richiedere solo una piccola quantità di memoria ausiliaria. Nota che, con k=1, l'albero secondario è solo una catena di valori che cresce al primo elemento nel DAG.
-
-La funzione di calcolo del client leggero per il DAG funziona così:
-
-```python
-def quick_calc(params, seed, p):
- w, P = params["w"], params["P"]
- cache = {}
-
- def quick_calc_cached(p):
- if p in cache:
- pass
- elif p == 0:
- cache[p] = pow(sha3(seed), w, P)
- else:
- x = pow(sha3(seed), (p + 1) * w, P)
- for _ in range(params["k"]):
- x ^= quick_calc_cached(x % p)
- cache[p] = pow(x, w, P)
- return cache[p]
-
- return quick_calc_cached(p)
-```
-
-essenzialmente, è semplicemente una riscrittura dell'algoritmo di cui sopra, che elimina il ciclo di calcolo dei valori per l'intero DAG e sostituisce la ricerca del nodo precedente con una chiamata ricorsiva o una ricerca della cache. Nota che per `k=1`, la cache non è necessaria, anche se in realtà un'ulteriore ottimizzazione pre-calcola le prime migliaia di valori del DAG e li mantiene come una cache statica per i calcoli; vedi l'appendice per l'implementazione di un codice a riguardo.
-
-## Doppio buffer di DAG {#double-buffer}
-
-In un client completo, è usato un [_doppio buffer_](https://wikipedia.org/wiki/Multiple_buffering) di 2 DAG prodotti dalla suddetta formula. L'idea è che i DAG siano prodotti ogni `epochtime` numero di blocchi, secondo i parametri indicati sopra. Il client non usa l'ultimo DAG prodotto, ma quello precedente. Il beneficio è che consente ai DAG di essere sostituiti nel tempo senza dover prevedere un passaggio in cui i miner devono improvvisamente ricalcolare tutti i dati. In caso contrario vi sarebbe il rischio, a intervalli regolari, di un brusco rallentamento temporaneo nell'elaborazione della catena e l'aumento drastico della centralizzazione. In quei pochi minuti prima che tutti i dati siano ricalcolati sussiste quindi il rischio di un attacco 51%.
-
-L'algoritmo usato per generare la serie di DAG usati per calcolare il lavoro per un blocco è il seguente:
-
-```python
-def get_prevhash(n):
- from pyethereum.blocks import GENESIS_PREVHASH
- from pyethereum import chain_manager
- if num <= 0:
- return hash_to_int(GENESIS_PREVHASH)
- else:
- prevhash = chain_manager.index.get_block_by_number(n - 1)
- return decode_int(prevhash)
-
-def get_seedset(params, block):
- seedset = {}
- seedset["back_number"] = block.number - (block.number % params["epochtime"])
- seedset["back_hash"] = get_prevhash(seedset["back_number"])
- seedset["front_number"] = max(seedset["back_number"] - params["epochtime"], 0)
- seedset["front_hash"] = get_prevhash(seedset["front_number"])
- return seedset
-
-def get_dagsize(params, block):
- return params["n"] + (block.number // params["epochtime"]) * params["n_inc"]
-
-def get_daggerset(params, block):
- dagsz = get_dagsize(params, block)
- seedset = get_seedset(params, block)
- if seedset["front_hash"] <= 0:
- # No back buffer is possible, just make front buffer
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": 0}}
- else:
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": seedset["front_number"]},
- "back": {"dag": produce_dag(params, seedset["back_hash"], dagsz),
- "block_number": seedset["back_number"]}}
-```
-
-## Hashimoto {#hashimoto}
-
-L'idea dietro all'Hashimoto originale è usare la blockchain come dataset, eseguendo un calcolo che selezioni N indici dalla blockchain, raccolga le transazioni a quegli indici, esegua uno XOR di questi dati e restituisca l'hash del risultato. L'algoritmo originale di Thaddeus Dryja, tradotto in Python per coerenza, è il seguente:
-
-```python
-def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
- hash_output_A = sha256(prev_hash + merkle_root + nonce)
- txid_mix = 0
- for i in range(64):
- shifted_A = hash_output_A >> i
- transaction = shifted_A % len(list_of_transactions)
- txid_mix ^= list_of_transactions[transaction] << i
- return txid_max ^ (nonce << 192)
-```
-
-Sfortunatamente, anche se Hashimoto è considerato gravoso per la RAM, si affida a un'aritmetica a 256 bit, che richiede molti calcoli. Per risolvere questo problema, Dagger-Hashimoto usa comunque solo i 64 bit meno significativi, indicizzando il proprio dataset.
-
-```python
-def hashimoto(dag, dagsize, params, header, nonce):
- m = dagsize / 2
- mix = sha3(encode_int(nonce) + header)
- for _ in range(params["accesses"]):
- mix ^= dag[m + (mix % 2**64) % m]
- return dbl_sha3(mix)
-```
-
-L'uso di SHA3 doppi consente una forma di dati zero, una pre-verifica quasi istantanea, che verifica solo che sia stato fornito un valore intermedio corretto. Questo livello esterno di proof-of-work è altamente pro-ASIC e abbastanza debole, ma è pensato per rendere ancora più complicati gli attacchi DDoS, poiché per produrre un blocco che non sarà immediatamente scartato deve essere eseguito un po’ di lavoro. Ecco la versione del client leggero:
-
-```python
-def quick_hashimoto(seed, dagsize, params, header, nonce):
- m = dagsize // 2
- mix = sha3(nonce + header)
- for _ in range(params["accesses"]):
- mix ^= quick_calc(params, seed, m + (mix % 2**64) % m)
- return dbl_sha3(mix)
-```
-
-## Mining e verifica {#mining-and-verifying}
-
-Mettiamo ora tutto insieme nell'algoritmo di mining:
-
-```python
-def mine(daggerset, params, block):
- from random import randint
- nonce = randint(0, 2**64)
- while 1:
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- if result * params["diff"] < 2**256:
- break
- nonce += 1
- if nonce >= 2**64:
- nonce = 0
- return nonce
-```
-
-Ecco l'algoritmo di verifica:
-
-```python
-def verify(daggerset, params, block, nonce):
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-Verifica adatta a un client leggero:
-
-```python
-def light_verify(params, header, nonce):
- seedset = get_seedset(params, block)
- result = quick_hashimoto(seedset["front_hash"], get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-Inoltre, nota che Dagger-Hashimoto impone anche altri requisiti sull'intestazione del blocco:
-
-- Perché la verifica a due livelli funzioni, l'intestazione di un blocco deve avere sia il nonce che il valore medio di pre-sha3
-- Da qualche parte, l'intestazione di un blocco deve memorizzare la sha3 del set di seed corrente
-
-## Letture consigliate {#further-reading}
-
-_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
-
-## Appendice {#appendix}
-
-Come notato sopra, l'RNG usato per la generazione del DAG si affida ad alcuni risultati dalla teoria dei numeri. Per prima cosa, accertiamoci che l'RNG di Lehmer che è la base per la variabile `picker` abbia un periodo ampio. In secondo luogo, mostriamo che `pow(x,3,P)` non mapperà `x` a `1` o `P-1`, a condizione che all’inizio `x ∈ [2,P-2]`. Infine, mostriamo che `pow(x,3,P)` ha un basso tasso di collisione se trattato come funzione di hashing.
-
-### Generatore di numeri casuali di Lehmer {#lehmer-random-number}
-
-Sebbene la funzione `produce_dag` non necessiti di produrre numeri casuali imparziali, un possibile rischio è dato dal fatto che `seed**i % P` prende solo una manciata di valori. Questo potrebbe fornire un vantaggio ai miner che riconoscono lo schema, rispetto a quelli che non lo conoscono.
-
-Per evitarlo, si è fatto ricorso a un risultato dalla teoria dei numeri. Un [_Numero primo sicuro_](https://en.wikipedia.org/wiki/Safe_prime) si definisce come numero primo `P` tale per cui anche `(P-1)/2` è un numero primo. L'_ordine_ di un membro `x` del [gruppo moltiplicativo](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ` è definito come il valore minimo di `m` tale per cui
xᵐ mod P ≡ 1
-Date queste definizioni, abbiamo:
-
-> Osservazione 1. Ipotizziamo che `x` sia un membro del gruppo moltiplicativo `ℤ/Pℤ` per un numero primo sicuro `P`. Se `x mod P ≠ 1 mod P` e `x mod P ≠ P-1 mod P`, allora l'ordine di `x` è `P-1` o `(P-1)/2`.
-
-_Dimostrazione_. Poiché `P` è un numero primo sicuro, allora per il \[Teorema di Lagrange\]\[lagrange\], l'ordine di `x` è `1`, `2`, `(P-1)/2` o `P-1`.
-
-L'ordine di `x` non può essere `1`, poiché secondo il Piccolo teorema di Fermat:
-
-
xP-1 mod P ≡ 1
-
-Quindi, `x`, deve essere un'identità moltiplicativa di `ℤ/nℤ`, che è univoca. Poiché abbiamo presupposto che `x ≠ 1`, ciò è impossibile.
-
-L'ordine di `x` non può essere `2` a meno che `x = P-1`, poiché ciò violerebbe il fatto che `P` sia un numero primo.
-
-Dalla suddetta proposizione possiamo capire che iterando `(picker * init) % P`, avrà una lunghezza del ciclo di almeno `(P-1)/2`. Questo perché abbiamo selezionato `P` come un numero primo sicuro, approssimativamente pari a una potenza superiore di due e che `init` è nell'intervallo `[2,2**256+1]`. Data la magnitudine di `P`, non dovremmo mai aspettarci un ciclo dall'esponenziazione modulare.
-
-Quando assegniamo la prima cella nel DAG (la variabile etichettata come `init`), calcoliamo `pow(sha3(seed) + 2, 3, P)`. A prima vista, questo non garantisce che il risultato sia `1` né `P-1`. Tuttavia, poiché `P-1` è un numero primo sicuro, abbiamo la seguente garanzia aggiuntiva, che è un corollario dell'Osservazione 1:
-
-> Osservazione 2. Ipotizziamo che `x` sia un membro del gruppo moltiplicativo `ℤ/Pℤ` per un numero primo sicuro `P`, e prendiamo `w` come numero naturale. Se `x mod P ≠ 1 mod P` e `x mod P ≠ P-1 mod P`, nonché `w mod P ≠ P-1 mod P` e `w mod P ≠ 0 mod P`, allora `xʷ mod P ≠ 1 mod P` e `xʷ mod P ≠ P-1 mod P`
-
-### Esponenziazione modulare come funzione di hash {#modular-exponentiation}
-
-Per certi valori di `P` e `w`, la funzione `pow(x, w, P)` potrebbe avere molte collisioni. Ad esempio, `pow(x,9,19)` prende solo i valori `{1,18}`.
-
-Dato che `P` è primo, allora è possibile scegliere un'appropriata `w` per una funzione di hashing di esponenziazione modulare usando il seguente risultato:
-
-> Osservazione 3. Prendiamo `P` come numero primo; `w` e `P-1` sono coprimi se e solo se per ogni `a` e `b` in `ℤ/Pℤ`:
->
->
-> `aʷ mod P ≡ bʷ mod P` se e solo se `a mod P ≡ b mod P`
->
-
-Dunque, dato che `P` è primo e `w` è coprimo rispetto a `P-1`, abbiamo che `|{pow(x, w, P) : x ∈ ℤ}| = P`, e questo implica che la funzione di hashing ha la frequenza di collisione minima possibile.
-
-Nel caso speciale in cui `P` sia un numero primo sicuro, come da noi selezionato, allora `P-1` ha solo i fattori 1, 2, `(P-1)/2` e `P-1`. Poiché `P` > 7, sappiamo che 3 è primo rispetto a `P-1`, quindi `w=3` soddisfa la proposizione precedente.
-
-## Algoritmo di valutazione più efficiente basato sulla cache {#cache-based-evaluation}
-
-```python
-def quick_calc(params, seed, p):
- cache = produce_dag(params, seed, params["cache_size"])
- return quick_calc_cached(cache, params, p)
-
-def quick_calc_cached(cache, params, p):
- P = params["P"]
- if p < len(cache):
- return cache[p]
- else:
- x = pow(cache[0], p + 1, P)
- for _ in range(params["k"]):
- x ^= quick_calc_cached(cache, params, x % p)
- return pow(x, params["w"], P)
-
-def quick_hashimoto(seed, dagsize, params, header, nonce):
- cache = produce_dag(params, seed, params["cache_size"])
- return quick_hashimoto_cached(cache, dagsize, params, header, nonce)
-
-def quick_hashimoto_cached(cache, dagsize, params, header, nonce):
- m = dagsize // 2
- mask = 2**64 - 1
- mix = sha3(encode_int(nonce) + header)
- for _ in range(params["accesses"]):
- mix ^= quick_calc_cached(cache, params, m + (mix & mask) % m)
- return dbl_sha3(mix)
-```
diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md
deleted file mode 100644
index f460ab4985b..00000000000
--- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md
+++ /dev/null
@@ -1,1014 +0,0 @@
----
-title: Ethash
-description: Uno sguardo dettagliato all'algoritmo Ethash.
-lang: it
----
-
-
- Ethash era l'algoritmo di mining di proof-of-work di Ethereum. Il proof-of-work è stato ora **interamente disattivato** ed Ethereum è ora protetto usando invece il [proof-of-stake](/developers/docs/consensus-mechanisms/pos). Leggi di più su La Fusione, sul proof-of-stake e sullo staking. Questa pagina è per interesse storico!
-
-
-[Ethash](https://github.com/ethereum/wiki/wiki/Ethash) è una versione modificata dell'algoritmo [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto). Il proof-of-work di Ethash è [a elevato consumo di memoria](https://wikipedia.org/wiki/Memory-hard_function), cosa pensata per rendere l'algoritmo resistente agli ASIC. Gli ASIC di Ethash sono infine stati sviluppati, ma il mining della GPU è stata un'opzione ancora valida fino alla disattivazione del proof-of-work. Ethash è ancora usato per minare altre valute su altre reti di proof-of-work non di Ethereum.
-
-## Come funziona Ethash? {#how-does-ethash-work}
-
-La gravosità sulla memoria è ottenuta con un algoritmo di proof-of-work che richiede la scelta di sotto-serie di una risorsa fissa, dipendente dal nonce e dall'intestazione del blocco. Questa risorsa (di pochi gigabyte di dimensioni) è detta DAG. Il DAG è modificato ogni 30.000 blocchi, una finestra di circa 125 ore detta un'epoca (circa 5,2 giorni) e richiede un po' di tempo per generarsi. Poiché il DAG dipende solo dall'altezza del blocco, può esser pre-generato, ma se non è il client, deve attendere fino alla fine di questo processo per produrre un blocco. Se i client non si pre-generano e salvano anticipatamente nella cache i DAG, la rete potrebbe subire un enorme ritardo dei blocchi a ogni transizione d'epoca. Il DAG non deve necessariamente essere generato per verificare il proof-of-work, perché è essenzialmente possibile eseguire la verifica con poca CPU e poca memoria.
-
-Il percorso generale intrapreso dall'algoritmo è il seguente:
-
-1. Esiste un **seed**, calcolabile per ogni blocco scansionando fino a quel punto le intestazioni dei blocchi.
-2. Dal seed, si può calcolare una **cache pseudo-casuale di 16 MB**. I client leggeri memorizzano la cache.
-3. Dalla cache, possiamo generare un **dataset di 1 GB**, caratterizzato dal fatto che ogni elemento nel dataset dipende solo da una piccola quantità di elementi dalla cache. I client completi e i miner memorizzano il dataset. Il dataset cresce linearmente col tempo.
-4. Durante il mining vengono prese delle fette (slice) casuali del dataset, eseguendone l'hashing. La verifica può essere effettuata con poca memoria usando la cache per rigenerare le parti specifiche del dataset necessarie, così da dover solo memorizzare la cache.
-
-Il grande dataset è aggiornato una volta ogni 30.000 blocchi, in questo modo l'impegno di un miner sarà per lo più quello di leggere il dataset, non effettuare modifiche a esso.
-
-## Definizioni {#definitions}
-
-Adottiamo le seguenti definizioni:
-
-```
-WORD_BYTES = 4 # bytes in word
-DATASET_BYTES_INIT = 2**30 # bytes in dataset at genesis
-DATASET_BYTES_GROWTH = 2**23 # dataset growth per epoch
-CACHE_BYTES_INIT = 2**24 # bytes in cache at genesis
-CACHE_BYTES_GROWTH = 2**17 # cache growth per epoch
-CACHE_MULTIPLIER=1024 # Size of the DAG relative to the cache
-EPOCH_LENGTH = 30000 # blocks per epoch
-MIX_BYTES = 128 # width of mix
-HASH_BYTES = 64 # hash length in bytes
-DATASET_PARENTS = 256 # number of parents of each dataset element
-CACHE_ROUNDS = 3 # number of rounds in cache production
-ACCESSES = 64 # number of accesses in hashimoto loop
-```
-
-### L'uso di "SHA3" {#sha3}
-
-Lo sviluppo di Ethereum è coinciso con lo sviluppo dello standard SHA3 e il processo standard ha effettuato una modifica tardiva al padding dell'algoritmo di hash finalizzato, quindi, gli hash "sha3_256" e "sha3_512" di Ethereum non sono hash dello standard sha3, ma una variante, spesso definita "Keccak-256" e "Keccak-512" in altri contesti. Vedi la discussione, es. [qui](https://github.com/ethereum/EIPs/issues/59), [qui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) o [qui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
-
-Si ricorda che gli hash "sha3" siano presentati nella descrizione dell'algoritmo più avanti.
-
-## Parametri {#parameters}
-
-I parametri della cache e del dataset di Ethash dipendono dal numero del blocco. Le dimensioni della cache e del dataset crescono entrambe linearmente; tuttavia, prendiamo sempre il numero primo maggiore successivo alla soglia di crescita lineare, per ridurre il rischio di regolarità accidentali che determinano un comportamento ciclico.
-
-```python
-def get_cache_size(block_number):
- sz = CACHE_BYTES_INIT + CACHE_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
- sz -= HASH_BYTES
- while not isprime(sz / HASH_BYTES):
- sz -= 2 * HASH_BYTES
- return sz
-
-def get_full_size(block_number):
- sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
- sz -= MIX_BYTES
- while not isprime(sz / MIX_BYTES):
- sz -= 2 * MIX_BYTES
- return sz
-```
-
-Nell'appendice sono presentate tabelle delle dimensioni del dataset e della cache.
-
-## Generazione della cache {#cache-generation}
-
-Specifichiamo ora la funzione per produrre una cache:
-
-```python
-def mkcache(cache_size, seed):
- n = cache_size // HASH_BYTES
-
- # Sequentially produce the initial dataset
- o = [sha3_512(seed)]
- for i in range(1, n):
- o.append(sha3_512(o[-1]))
-
- # Use a low-round version of randmemohash
- for _ in range(CACHE_ROUNDS):
- for i in range(n):
- v = o[i][0] % n
- o[i] = sha3_512(map(xor, o[(i-1+n) % n], o[v]))
-
- return o
-```
-
-Il processo di produzione della cache richiede dapprima il riempimento sequenziale di 32 MB di memoria, poi l'esecuzione di due passaggi dell'algoritmo _RandMemoHash_ di Sergio Demian Lerner da [_Strict Memory Hard Hashing Functions_ (2014)](http://www.hashcash.org/papers/memohash.pdf). L'output è una serie di valori a 64 byte 524288.
-
-## Funzione di aggregazione dei dati {#date-aggregation-function}
-
-Usiamo un algoritmo ispirato dall'[hash FNV](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) in alcuni casi come un sostituto non associativo per XOR. Nota che moltiplichiamo il numero primo con l'intero input a 32 bit, a differenza della specifica FNV-1, che moltiplica invece il numero primo con un byte (ottetto).
-
-```python
-FNV_PRIME = 0x01000193
-
-def fnv(v1, v2):
- return ((v1 * FNV_PRIME) ^ v2) % 2**32
-```
-
-Anche lo yellow paper specifica fnv come v1\*(FNV_PRIME ^ v2), tutte le implementazioni correnti usano attualmente la suddetta definizione.
-
-## Calcolo dell'intero dataset {#full-dataset-calculation}
-
-Ogni elemento da 64 byte nell'intero dataset da 1 GB è calcolato come segue:
-
-```python
-def calc_dataset_item(cache, i):
- n = len(cache)
- r = HASH_BYTES // WORD_BYTES
- # initialize the mix
- mix = copy.copy(cache[i % n])
- mix[0] ^= i
- mix = sha3_512(mix)
- # fnv it with a lot of random cache nodes based on i
- for j in range(DATASET_PARENTS):
- cache_index = fnv(i ^ j, mix[j % r])
- mix = map(fnv, mix, cache[cache_index % n])
- return sha3_512(mix)
-```
-
-Essenzialmente, combiniamo i dati da 256 nodi della cache selezionati pseudo-casualmente e ne eseguiamo l'hash per calcolare il nodo del dataset. L'intero dataset è quindi generato da:
-
-```python
-def calc_dataset(full_size, cache):
- return [calc_dataset_item(cache, i) for i in range(full_size // HASH_BYTES)]
-```
-
-## Ciclo principale {#main-loop}
-
-Ora, specifichiamo il ciclo principale in stile "hashimoto", dove aggreghiamo i dati dal dataset completo per poter produrre il valore finale per un'intestazione e nonce in particolare. Nel codice seguente, `header` rappresenta l'_hash_ SHA3-256 della rappresentazione RLP di un'intestazione del blocco _troncata_, ovvero, di un'intestazione che esclude i campi **mixHash** e **nonce**. Un `nonce` si compone degli otto byte di un intero non firmato da 64 bit, con ordinamento big-endian. Quindi `nonce[::-1]` è la rappresentazione little-endian di otto byte di quel valore:
-
-```python
-def hashimoto(header, nonce, full_size, dataset_lookup):
- n = full_size / HASH_BYTES
- w = MIX_BYTES // WORD_BYTES
- mixhashes = MIX_BYTES / HASH_BYTES
- # combine header+nonce into a 64 byte seed
- s = sha3_512(header + nonce[::-1])
- # start the mix with replicated s
- mix = []
- for _ in range(MIX_BYTES / HASH_BYTES):
- mix.extend(s)
- # mix in random dataset nodes
- for i in range(ACCESSES):
- p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
- newdata = []
- for j in range(MIX_BYTES / HASH_BYTES):
- newdata.extend(dataset_lookup(p + j))
- mix = map(fnv, mix, newdata)
- # compress mix
- cmix = []
- for i in range(0, len(mix), 4):
- cmix.append(fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3]))
- return {
- "mix digest": serialize_hash(cmix),
- "result": serialize_hash(sha3_256(s+cmix))
- }
-
-def hashimoto_light(full_size, cache, header, nonce):
- return hashimoto(header, nonce, full_size, lambda x: calc_dataset_item(cache, x))
-
-def hashimoto_full(full_size, dataset, header, nonce):
- return hashimoto(header, nonce, full_size, lambda x: dataset[x])
-```
-
-Essenzialmente, manteniamo un mix di 128 byte e recuperiamo sequenzialmente e ripetutamente 128 byte dal dataset completo e usiamo la funzione `fnv` per combinarli col mix. Vengono usati 128 byte di accesso sequenziale così che ogni ciclo dell'algoritmo recuperi sempre una pagina intera dalla RAM, minimizzando le ricerche a vuoto nel lookaside buffer che gli ASIC dovrebbero teoricamente poter evitare.
-
-Se l'output di questo algoritmo è inferiore all'obiettivo desiderato, allora il nonce è valido. Nota che l'applicazione aggiuntiva di `sha3_256` alla fine assicura che esista un nonce intermedio, che può essere fornito per provare che almeno una piccola quantità di lavoro è stata eseguita; questa rapida verifica di PoW esterna è utilizzabile per scopi anti-DDoS. Serve anche a fornire la garanzia statistica che il risultato sia un numero a 256 bit imparziale.
-
-## Mining {#mining}
-
-L'algoritmo di mining è definito come segue:
-
-```python
-def mine(full_size, dataset, header, difficulty):
- # zero-pad target to compare with hash on the same digit
- target = zpad(encode_int(2**256 // difficulty), 64)[::-1]
- from random import randint
- nonce = randint(0, 2**64)
- while hashimoto_full(full_size, dataset, header, nonce) > target:
- nonce = (nonce + 1) % 2**64
- return nonce
-```
-
-## Definire l'hash del seed {#seed-hash}
-
-Per poter calcolare l'hash del seed da usare per fare mining su un dato blocco, usiamo il seguente algoritmo:
-
-```python
- def get_seedhash(block):
- s = '\x00' * 32
- for i in range(block.number // EPOCH_LENGTH):
- s = serialize_hash(sha3_256(s))
- return s
-```
-
-Nota che per la fluidità delle attività di mining e verifica, consigliamo di pre-calcolare gli hash dei seed futuri e i dataset in un thread separato.
-
-## Letture consigliate {#further-reading}
-
-_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
-
-## Appendice {#appendix}
-
-Il seguente codice dovrebbe essere anteposto se sei interessato all'esecuzione della suddetta specifica di Python come codice.
-
-```python
-import sha3, copy
-
-# Assumes little endian bit ordering (same as Intel architectures)
-def decode_int(s):
- return int(s[::-1].encode('hex'), 16) if s else 0
-
-def encode_int(s):
- a = "%x" % s
- return '' if s == 0 else ('0' * (len(a) % 2) + a).decode('hex')[::-1]
-
-def zpad(s, length):
- return s + '\x00' * max(0, length - len(s))
-
-def serialize_hash(h):
- return ''.join([zpad(encode_int(x), 4) for x in h])
-
-def deserialize_hash(h):
- return [decode_int(h[i:i+WORD_BYTES]) for i in range(0, len(h), WORD_BYTES)]
-
-def hash_words(h, sz, x):
- if isinstance(x, list):
- x = serialize_hash(x)
- y = h(x)
- return deserialize_hash(y)
-
-def serialize_cache(ds):
- return ''.join([serialize_hash(h) for h in ds])
-
-serialize_dataset = serialize_cache
-
-# sha3 hash function, outputs 64 bytes
-def sha3_512(x):
- return hash_words(lambda v: sha3.sha3_512(v).digest(), 64, x)
-
-def sha3_256(x):
- return hash_words(lambda v: sha3.sha3_256(v).digest(), 32, x)
-
-def xor(a, b):
- return a ^ b
-
-def isprime(x):
- for i in range(2, int(x**0.5)):
- if x % i == 0:
- return False
- return True
-```
-
-### Dimensioni dei dati {#data-sizes}
-
-Le seguenti tabelle di ricerca forniscono approssimativamente 2048 epoche tabulate di dimensioni dei dati e della cache.
-
-```python
-def get_datasize(block_number):
- return data_sizes[block_number // EPOCH_LENGTH]
-
-def get_cachesize(block_number):
- return cache_sizes[block_number // EPOCH_LENGTH]
-
-data_sizes = [
-1073739904, 1082130304, 1090514816, 1098906752, 1107293056,
-1115684224, 1124070016, 1132461952, 1140849536, 1149232768,
-1157627776, 1166013824, 1174404736, 1182786944, 1191180416,
-1199568512, 1207958912, 1216345216, 1224732032, 1233124736,
-1241513344, 1249902464, 1258290304, 1266673792, 1275067264,
-1283453312, 1291844992, 1300234112, 1308619904, 1317010048,
-1325397376, 1333787776, 1342176128, 1350561664, 1358954368,
-1367339392, 1375731584, 1384118144, 1392507008, 1400897408,
-1409284736, 1417673344, 1426062464, 1434451072, 1442839168,
-1451229056, 1459615616, 1468006016, 1476394112, 1484782976,
-1493171584, 1501559168, 1509948032, 1518337664, 1526726528,
-1535114624, 1543503488, 1551892096, 1560278656, 1568669056,
-1577056384, 1585446272, 1593831296, 1602219392, 1610610304,
-1619000192, 1627386752, 1635773824, 1644164224, 1652555648,
-1660943488, 1669332608, 1677721216, 1686109312, 1694497664,
-1702886272, 1711274624, 1719661184, 1728047744, 1736434816,
-1744829056, 1753218944, 1761606272, 1769995904, 1778382464,
-1786772864, 1795157888, 1803550592, 1811937664, 1820327552,
-1828711552, 1837102976, 1845488768, 1853879936, 1862269312,
-1870656896, 1879048064, 1887431552, 1895825024, 1904212096,
-1912601216, 1920988544, 1929379456, 1937765504, 1946156672,
-1954543232, 1962932096, 1971321728, 1979707264, 1988093056,
-1996487552, 2004874624, 2013262208, 2021653888, 2030039936,
-2038430848, 2046819968, 2055208576, 2063596672, 2071981952,
-2080373632, 2088762752, 2097149056, 2105539712, 2113928576,
-2122315136, 2130700672, 2139092608, 2147483264, 2155872128,
-2164257664, 2172642176, 2181035392, 2189426048, 2197814912,
-2206203008, 2214587264, 2222979712, 2231367808, 2239758208,
-2248145024, 2256527744, 2264922752, 2273312128, 2281701248,
-2290086272, 2298476672, 2306867072, 2315251072, 2323639168,
-2332032128, 2340420224, 2348808064, 2357196416, 2365580416,
-2373966976, 2382363008, 2390748544, 2399139968, 2407530368,
-2415918976, 2424307328, 2432695424, 2441084288, 2449472384,
-2457861248, 2466247808, 2474637184, 2483026816, 2491414144,
-2499803776, 2508191872, 2516582272, 2524970368, 2533359232,
-2541743488, 2550134144, 2558525056, 2566913408, 2575301504,
-2583686528, 2592073856, 2600467328, 2608856192, 2617240448,
-2625631616, 2634022016, 2642407552, 2650796416, 2659188352,
-2667574912, 2675965312, 2684352896, 2692738688, 2701130624,
-2709518464, 2717907328, 2726293376, 2734685056, 2743073152,
-2751462016, 2759851648, 2768232832, 2776625536, 2785017728,
-2793401984, 2801794432, 2810182016, 2818571648, 2826959488,
-2835349376, 2843734144, 2852121472, 2860514432, 2868900992,
-2877286784, 2885676928, 2894069632, 2902451584, 2910843008,
-2919234688, 2927622784, 2936011648, 2944400768, 2952789376,
-2961177728, 2969565568, 2977951616, 2986338944, 2994731392,
-3003120256, 3011508352, 3019895936, 3028287104, 3036675968,
-3045063808, 3053452928, 3061837696, 3070228352, 3078615424,
-3087003776, 3095394944, 3103782272, 3112173184, 3120562048,
-3128944768, 3137339264, 3145725056, 3154109312, 3162505088,
-3170893184, 3179280256, 3187669376, 3196056704, 3204445568,
-3212836736, 3221224064, 3229612928, 3238002304, 3246391168,
-3254778496, 3263165824, 3271556224, 3279944576, 3288332416,
-3296719232, 3305110912, 3313500032, 3321887104, 3330273152,
-3338658944, 3347053184, 3355440512, 3363827072, 3372220288,
-3380608384, 3388997504, 3397384576, 3405774208, 3414163072,
-3422551936, 3430937984, 3439328384, 3447714176, 3456104576,
-3464493952, 3472883584, 3481268864, 3489655168, 3498048896,
-3506434432, 3514826368, 3523213952, 3531603584, 3539987072,
-3548380288, 3556763264, 3565157248, 3573545344, 3581934464,
-3590324096, 3598712704, 3607098752, 3615488384, 3623877248,
-3632265856, 3640646528, 3649043584, 3657430144, 3665821568,
-3674207872, 3682597504, 3690984832, 3699367808, 3707764352,
-3716152448, 3724541056, 3732925568, 3741318016, 3749706368,
-3758091136, 3766481536, 3774872704, 3783260032, 3791650432,
-3800036224, 3808427648, 3816815488, 3825204608, 3833592704,
-3841981568, 3850370432, 3858755968, 3867147904, 3875536256,
-3883920512, 3892313728, 3900702592, 3909087872, 3917478784,
-3925868416, 3934256512, 3942645376, 3951032192, 3959422336,
-3967809152, 3976200064, 3984588416, 3992974976, 4001363584,
-4009751168, 4018141312, 4026530432, 4034911616, 4043308928,
-4051695488, 4060084352, 4068472448, 4076862848, 4085249408,
-4093640576, 4102028416, 4110413696, 4118805632, 4127194496,
-4135583104, 4143971968, 4152360832, 4160746112, 4169135744,
-4177525888, 4185912704, 4194303616, 4202691968, 4211076736,
-4219463552, 4227855488, 4236246656, 4244633728, 4253022848,
-4261412224, 4269799808, 4278184832, 4286578048, 4294962304,
-4303349632, 4311743104, 4320130432, 4328521088, 4336909184,
-4345295488, 4353687424, 4362073472, 4370458496, 4378852736,
-4387238528, 4395630208, 4404019072, 4412407424, 4420790656,
-4429182848, 4437571456, 4445962112, 4454344064, 4462738048,
-4471119232, 4479516544, 4487904128, 4496289664, 4504682368,
-4513068416, 4521459584, 4529846144, 4538232704, 4546619776,
-4555010176, 4563402112, 4571790208, 4580174464, 4588567936,
-4596957056, 4605344896, 4613734016, 4622119808, 4630511488,
-4638898816, 4647287936, 4655675264, 4664065664, 4672451968,
-4680842624, 4689231488, 4697620352, 4706007424, 4714397056,
-4722786176, 4731173248, 4739562368, 4747951744, 4756340608,
-4764727936, 4773114496, 4781504384, 4789894784, 4798283648,
-4806667648, 4815059584, 4823449472, 4831835776, 4840226176,
-4848612224, 4857003392, 4865391488, 4873780096, 4882169728,
-4890557312, 4898946944, 4907333248, 4915722368, 4924110976,
-4932499328, 4940889728, 4949276032, 4957666432, 4966054784,
-4974438016, 4982831488, 4991221376, 4999607168, 5007998848,
-5016386432, 5024763776, 5033164672, 5041544576, 5049941888,
-5058329728, 5066717056, 5075107456, 5083494272, 5091883904,
-5100273536, 5108662144, 5117048192, 5125436032, 5133827456,
-5142215296, 5150605184, 5158993024, 5167382144, 5175769472,
-5184157568, 5192543872, 5200936064, 5209324928, 5217711232,
-5226102656, 5234490496, 5242877312, 5251263872, 5259654016,
-5268040832, 5276434304, 5284819328, 5293209728, 5301598592,
-5309986688, 5318374784, 5326764416, 5335151488, 5343542144,
-5351929472, 5360319872, 5368706944, 5377096576, 5385484928,
-5393871232, 5402263424, 5410650496, 5419040384, 5427426944,
-5435816576, 5444205952, 5452594816, 5460981376, 5469367936,
-5477760896, 5486148736, 5494536832, 5502925952, 5511315328,
-5519703424, 5528089984, 5536481152, 5544869504, 5553256064,
-5561645696, 5570032768, 5578423936, 5586811264, 5595193216,
-5603585408, 5611972736, 5620366208, 5628750464, 5637143936,
-5645528192, 5653921408, 5662310272, 5670694784, 5679082624,
-5687474048, 5695864448, 5704251008, 5712641408, 5721030272,
-5729416832, 5737806208, 5746194304, 5754583936, 5762969984,
-5771358592, 5779748224, 5788137856, 5796527488, 5804911232,
-5813300608, 5821692544, 5830082176, 5838468992, 5846855552,
-5855247488, 5863636096, 5872024448, 5880411008, 5888799872,
-5897186432, 5905576832, 5913966976, 5922352768, 5930744704,
-5939132288, 5947522432, 5955911296, 5964299392, 5972688256,
-5981074304, 5989465472, 5997851008, 6006241408, 6014627968,
-6023015552, 6031408256, 6039796096, 6048185216, 6056574848,
-6064963456, 6073351808, 6081736064, 6090128768, 6098517632,
-6106906496, 6115289216, 6123680896, 6132070016, 6140459648,
-6148849024, 6157237376, 6165624704, 6174009728, 6182403712,
-6190792064, 6199176064, 6207569792, 6215952256, 6224345216,
-6232732544, 6241124224, 6249510272, 6257899136, 6266287744,
-6274676864, 6283065728, 6291454336, 6299843456, 6308232064,
-6316620928, 6325006208, 6333395584, 6341784704, 6350174848,
-6358562176, 6366951296, 6375337856, 6383729536, 6392119168,
-6400504192, 6408895616, 6417283456, 6425673344, 6434059136,
-6442444672, 6450837376, 6459223424, 6467613056, 6476004224,
-6484393088, 6492781952, 6501170048, 6509555072, 6517947008,
-6526336384, 6534725504, 6543112832, 6551500672, 6559888768,
-6568278656, 6576662912, 6585055616, 6593443456, 6601834112,
-6610219648, 6618610304, 6626999168, 6635385472, 6643777408,
-6652164224, 6660552832, 6668941952, 6677330048, 6685719424,
-6694107776, 6702493568, 6710882176, 6719274112, 6727662976,
-6736052096, 6744437632, 6752825984, 6761213824, 6769604224,
-6777993856, 6786383488, 6794770816, 6803158144, 6811549312,
-6819937664, 6828326528, 6836706176, 6845101696, 6853491328,
-6861880448, 6870269312, 6878655104, 6887046272, 6895433344,
-6903822208, 6912212864, 6920596864, 6928988288, 6937377152,
-6945764992, 6954149248, 6962544256, 6970928768, 6979317376,
-6987709312, 6996093824, 7004487296, 7012875392, 7021258624,
-7029652352, 7038038912, 7046427776, 7054818944, 7063207808,
-7071595136, 7079980928, 7088372608, 7096759424, 7105149824,
-7113536896, 7121928064, 7130315392, 7138699648, 7147092352,
-7155479168, 7163865728, 7172249984, 7180648064, 7189036672,
-7197424768, 7205810816, 7214196608, 7222589824, 7230975104,
-7239367552, 7247755904, 7256145536, 7264533376, 7272921472,
-7281308032, 7289694848, 7298088832, 7306471808, 7314864512,
-7323253888, 7331643008, 7340029568, 7348419712, 7356808832,
-7365196672, 7373585792, 7381973888, 7390362752, 7398750592,
-7407138944, 7415528576, 7423915648, 7432302208, 7440690304,
-7449080192, 7457472128, 7465860992, 7474249088, 7482635648,
-7491023744, 7499412608, 7507803008, 7516192384, 7524579968,
-7532967296, 7541358464, 7549745792, 7558134656, 7566524032,
-7574912896, 7583300992, 7591690112, 7600075136, 7608466816,
-7616854912, 7625244544, 7633629824, 7642020992, 7650410368,
-7658794112, 7667187328, 7675574912, 7683961984, 7692349568,
-7700739712, 7709130368, 7717519232, 7725905536, 7734295424,
-7742683264, 7751069056, 7759457408, 7767849088, 7776238208,
-7784626816, 7793014912, 7801405312, 7809792128, 7818179968,
-7826571136, 7834957184, 7843347328, 7851732352, 7860124544,
-7868512384, 7876902016, 7885287808, 7893679744, 7902067072,
-7910455936, 7918844288, 7927230848, 7935622784, 7944009344,
-7952400256, 7960786048, 7969176704, 7977565312, 7985953408,
-7994339968, 8002730368, 8011119488, 8019508096, 8027896192,
-8036285056, 8044674688, 8053062272, 8061448832, 8069838464,
-8078227328, 8086616704, 8095006592, 8103393664, 8111783552,
-8120171392, 8128560256, 8136949376, 8145336704, 8153726848,
-8162114944, 8170503296, 8178891904, 8187280768, 8195669632,
-8204058496, 8212444544, 8220834176, 8229222272, 8237612672,
-8246000768, 8254389376, 8262775168, 8271167104, 8279553664,
-8287944064, 8296333184, 8304715136, 8313108352, 8321497984,
-8329885568, 8338274432, 8346663296, 8355052928, 8363441536,
-8371828352, 8380217984, 8388606592, 8396996224, 8405384576,
-8413772672, 8422161536, 8430549376, 8438939008, 8447326592,
-8455715456, 8464104832, 8472492928, 8480882048, 8489270656,
-8497659776, 8506045312, 8514434944, 8522823808, 8531208832,
-8539602304, 8547990656, 8556378752, 8564768384, 8573154176,
-8581542784, 8589933952, 8598322816, 8606705024, 8615099264,
-8623487872, 8631876992, 8640264064, 8648653952, 8657040256,
-8665430656, 8673820544, 8682209152, 8690592128, 8698977152,
-8707374464, 8715763328, 8724151424, 8732540032, 8740928384,
-8749315712, 8757704576, 8766089344, 8774480768, 8782871936,
-8791260032, 8799645824, 8808034432, 8816426368, 8824812928,
-8833199488, 8841591424, 8849976448, 8858366336, 8866757248,
-8875147136, 8883532928, 8891923328, 8900306816, 8908700288,
-8917088384, 8925478784, 8933867392, 8942250368, 8950644608,
-8959032704, 8967420544, 8975809664, 8984197504, 8992584064,
-9000976256, 9009362048, 9017752448, 9026141312, 9034530688,
-9042917504, 9051307904, 9059694208, 9068084864, 9076471424,
-9084861824, 9093250688, 9101638528, 9110027648, 9118416512,
-9126803584, 9135188096, 9143581312, 9151969664, 9160356224,
-9168747136, 9177134464, 9185525632, 9193910144, 9202302848,
-9210690688, 9219079552, 9227465344, 9235854464, 9244244864,
-9252633472, 9261021824, 9269411456, 9277799296, 9286188928,
-9294574208, 9302965888, 9311351936, 9319740032, 9328131968,
-9336516736, 9344907392, 9353296768, 9361685888, 9370074752,
-9378463616, 9386849408, 9395239808, 9403629184, 9412016512,
-9420405376, 9428795008, 9437181568, 9445570688, 9453960832,
-9462346624, 9470738048, 9479121536, 9487515008, 9495903616,
-9504289664, 9512678528, 9521067904, 9529456256, 9537843584,
-9546233728, 9554621312, 9563011456, 9571398784, 9579788672,
-9588178304, 9596567168, 9604954496, 9613343104, 9621732992,
-9630121856, 9638508416, 9646898816, 9655283584, 9663675776,
-9672061312, 9680449664, 9688840064, 9697230464, 9705617536,
-9714003584, 9722393984, 9730772608, 9739172224, 9747561088,
-9755945344, 9764338816, 9772726144, 9781116544, 9789503872,
-9797892992, 9806282624, 9814670464, 9823056512, 9831439232,
-9839833984, 9848224384, 9856613504, 9865000576, 9873391232,
-9881772416, 9890162816, 9898556288, 9906940544, 9915333248,
-9923721088, 9932108672, 9940496512, 9948888448, 9957276544,
-9965666176, 9974048384, 9982441088, 9990830464, 9999219584,
-10007602816, 10015996544, 10024385152, 10032774016, 10041163648,
-10049548928, 10057940096, 10066329472, 10074717824, 10083105152,
-10091495296, 10099878784, 10108272256, 10116660608, 10125049216,
-10133437312, 10141825664, 10150213504, 10158601088, 10166991232,
-10175378816, 10183766144, 10192157312, 10200545408, 10208935552,
-10217322112, 10225712768, 10234099328, 10242489472, 10250876032,
-10259264896, 10267656064, 10276042624, 10284429184, 10292820352,
-10301209472, 10309598848, 10317987712, 10326375296, 10334763392,
-10343153536, 10351541632, 10359930752, 10368318592, 10376707456,
-10385096576, 10393484672, 10401867136, 10410262144, 10418647424,
-10427039104, 10435425664, 10443810176, 10452203648, 10460589952,
-10468982144, 10477369472, 10485759104, 10494147712, 10502533504,
-10510923392, 10519313536, 10527702656, 10536091264, 10544478592,
-10552867712, 10561255808, 10569642368, 10578032768, 10586423168,
-10594805632, 10603200128, 10611588992, 10619976064, 10628361344,
-10636754048, 10645143424, 10653531776, 10661920384, 10670307968,
-10678696832, 10687086464, 10695475072, 10703863168, 10712246144,
-10720639616, 10729026688, 10737414784, 10745806208, 10754190976,
-10762581376, 10770971264, 10779356288, 10787747456, 10796135552,
-10804525184, 10812915584, 10821301888, 10829692288, 10838078336,
-10846469248, 10854858368, 10863247232, 10871631488, 10880023424,
-10888412032, 10896799616, 10905188992, 10913574016, 10921964672,
-10930352768, 10938742912, 10947132544, 10955518592, 10963909504,
-10972298368, 10980687488, 10989074816, 10997462912, 11005851776,
-11014241152, 11022627712, 11031017344, 11039403904, 11047793024,
-11056184704, 11064570752, 11072960896, 11081343872, 11089737856,
-11098128256, 11106514816, 11114904448, 11123293568, 11131680128,
-11140065152, 11148458368, 11156845696, 11165236864, 11173624192,
-11182013824, 11190402688, 11198790784, 11207179136, 11215568768,
-11223957376, 11232345728, 11240734592, 11249122688, 11257511296,
-11265899648, 11274285952, 11282675584, 11291065472, 11299452544,
-11307842432, 11316231296, 11324616832, 11333009024, 11341395584,
-11349782656, 11358172288, 11366560384, 11374950016, 11383339648,
-11391721856, 11400117376, 11408504192, 11416893568, 11425283456,
-11433671552, 11442061184, 11450444672, 11458837888, 11467226752,
-11475611776, 11484003968, 11492392064, 11500780672, 11509169024,
-11517550976, 11525944448, 11534335616, 11542724224, 11551111808,
-11559500672, 11567890304, 11576277376, 11584667008, 11593056128,
-11601443456, 11609830016, 11618221952, 11626607488, 11634995072,
-11643387776, 11651775104, 11660161664, 11668552576, 11676940928,
-11685330304, 11693718656, 11702106496, 11710496128, 11718882688,
-11727273088, 11735660416, 11744050048, 11752437376, 11760824704,
-11769216128, 11777604736, 11785991296, 11794381952, 11802770048,
-11811157888, 11819548544, 11827932544, 11836324736, 11844713344,
-11853100928, 11861486464, 11869879936, 11878268032, 11886656896,
-11895044992, 11903433088, 11911822976, 11920210816, 11928600448,
-11936987264, 11945375872, 11953761152, 11962151296, 11970543488,
-11978928512, 11987320448, 11995708288, 12004095104, 12012486272,
-12020875136, 12029255552, 12037652096, 12046039168, 12054429568,
-12062813824, 12071206528, 12079594624, 12087983744, 12096371072,
-12104759936, 12113147264, 12121534592, 12129924992, 12138314624,
-12146703232, 12155091584, 12163481216, 12171864704, 12180255872,
-12188643968, 12197034112, 12205424512, 12213811328, 12222199424,
-12230590336, 12238977664, 12247365248, 12255755392, 12264143488,
-12272531584, 12280920448, 12289309568, 12297694592, 12306086528,
-12314475392, 12322865024, 12331253632, 12339640448, 12348029312,
-12356418944, 12364805248, 12373196672, 12381580928, 12389969024,
-12398357632, 12406750592, 12415138432, 12423527552, 12431916416,
-12440304512, 12448692352, 12457081216, 12465467776, 12473859968,
-12482245504, 12490636672, 12499025536, 12507411584, 12515801728,
-12524190592, 12532577152, 12540966272, 12549354368, 12557743232,
-12566129536, 12574523264, 12582911872, 12591299456, 12599688064,
-12608074624, 12616463488, 12624845696, 12633239936, 12641631616,
-12650019968, 12658407296, 12666795136, 12675183232, 12683574656,
-12691960192, 12700350592, 12708740224, 12717128576, 12725515904,
-12733906816, 12742295168, 12750680192, 12759071872, 12767460736,
-12775848832, 12784236928, 12792626816, 12801014656, 12809404288,
-12817789312, 12826181504, 12834568832, 12842954624, 12851345792,
-12859732352, 12868122496, 12876512128, 12884901248, 12893289088,
-12901672832, 12910067584, 12918455168, 12926842496, 12935232896,
-12943620736, 12952009856, 12960396928, 12968786816, 12977176192,
-12985563776, 12993951104, 13002341504, 13010730368, 13019115392,
-13027506304, 13035895168, 13044272512, 13052673152, 13061062528,
-13069446272, 13077838976, 13086227072, 13094613632, 13103000192,
-13111393664, 13119782528, 13128157568, 13136559232, 13144945024,
-13153329536, 13161724288, 13170111872, 13178502784, 13186884736,
-13195279744, 13203667072, 13212057472, 13220445824, 13228832128,
-13237221248, 13245610624, 13254000512, 13262388352, 13270777472,
-13279166336, 13287553408, 13295943296, 13304331904, 13312719488,
-13321108096, 13329494656, 13337885824, 13346274944, 13354663808,
-13363051136, 13371439232, 13379825024, 13388210816, 13396605056,
-13404995456, 13413380224, 13421771392, 13430159744, 13438546048,
-13446937216, 13455326848, 13463708288, 13472103808, 13480492672,
-13488875648, 13497269888, 13505657728, 13514045312, 13522435712,
-13530824576, 13539210112, 13547599232, 13555989376, 13564379008,
-13572766336, 13581154432, 13589544832, 13597932928, 13606320512,
-13614710656, 13623097472, 13631477632, 13639874944, 13648264064,
-13656652928, 13665041792, 13673430656, 13681818496, 13690207616,
-13698595712, 13706982272, 13715373184, 13723762048, 13732150144,
-13740536704, 13748926592, 13757316224, 13765700992, 13774090112,
-13782477952, 13790869376, 13799259008, 13807647872, 13816036736,
-13824425344, 13832814208, 13841202304, 13849591424, 13857978752,
-13866368896, 13874754688, 13883145344, 13891533184, 13899919232,
-13908311168, 13916692096, 13925085056, 13933473152, 13941866368,
-13950253696, 13958643584, 13967032192, 13975417216, 13983807616,
-13992197504, 14000582272, 14008973696, 14017363072, 14025752192,
-14034137984, 14042528384, 14050918016, 14059301504, 14067691648,
-14076083584, 14084470144, 14092852352, 14101249664, 14109635968,
-14118024832, 14126407552, 14134804352, 14143188608, 14151577984,
-14159968384, 14168357248, 14176741504, 14185127296, 14193521024,
-14201911424, 14210301824, 14218685056, 14227067264, 14235467392,
-14243855488, 14252243072, 14260630144, 14269021568, 14277409408,
-14285799296, 14294187904, 14302571392, 14310961792, 14319353728,
-14327738752, 14336130944, 14344518784, 14352906368, 14361296512,
-14369685376, 14378071424, 14386462592, 14394848128, 14403230848,
-14411627392, 14420013952, 14428402304, 14436793472, 14445181568,
-14453569664, 14461959808, 14470347904, 14478737024, 14487122816,
-14495511424, 14503901824, 14512291712, 14520677504, 14529064832,
-14537456768, 14545845632, 14554234496, 14562618496, 14571011456,
-14579398784, 14587789184, 14596172672, 14604564608, 14612953984,
-14621341312, 14629724288, 14638120832, 14646503296, 14654897536,
-14663284864, 14671675264, 14680061056, 14688447616, 14696835968,
-14705228416, 14713616768, 14722003328, 14730392192, 14738784128,
-14747172736, 14755561088, 14763947648, 14772336512, 14780725376,
-14789110144, 14797499776, 14805892736, 14814276992, 14822670208,
-14831056256, 14839444352, 14847836032, 14856222848, 14864612992,
-14872997504, 14881388672, 14889775744, 14898165376, 14906553472,
-14914944896, 14923329664, 14931721856, 14940109696, 14948497024,
-14956887424, 14965276544, 14973663616, 14982053248, 14990439808,
-14998830976, 15007216768, 15015605888, 15023995264, 15032385152,
-15040768384, 15049154944, 15057549184, 15065939072, 15074328448,
-15082715008, 15091104128, 15099493504, 15107879296, 15116269184,
-15124659584, 15133042304, 15141431936, 15149824384, 15158214272,
-15166602368, 15174991232, 15183378304, 15191760512, 15200154496,
-15208542592, 15216931712, 15225323392, 15233708416, 15242098048,
-15250489216, 15258875264, 15267265408, 15275654528, 15284043136,
-15292431488, 15300819584, 15309208192, 15317596544, 15325986176,
-15334374784, 15342763648, 15351151744, 15359540608, 15367929728,
-15376318336, 15384706432, 15393092992, 15401481856, 15409869952,
-15418258816, 15426649984, 15435037568, 15443425664, 15451815296,
-15460203392, 15468589184, 15476979328, 15485369216, 15493755776,
-15502146944, 15510534272, 15518924416, 15527311232, 15535699072,
-15544089472, 15552478336, 15560866688, 15569254528, 15577642624,
-15586031488, 15594419072, 15602809472, 15611199104, 15619586432,
-15627975296, 15636364928, 15644753792, 15653141888, 15661529216,
-15669918848, 15678305152, 15686696576, 15695083136, 15703474048,
-15711861632, 15720251264, 15728636288, 15737027456, 15745417088,
-15753804928, 15762194048, 15770582656, 15778971008, 15787358336,
-15795747712, 15804132224, 15812523392, 15820909696, 15829300096,
-15837691264, 15846071936, 15854466944, 15862855808, 15871244672,
-15879634816, 15888020608, 15896409728, 15904799104, 15913185152,
-15921577088, 15929966464, 15938354816, 15946743424, 15955129472,
-15963519872, 15971907968, 15980296064, 15988684928, 15997073024,
-16005460864, 16013851264, 16022241152, 16030629248, 16039012736,
-16047406976, 16055794816, 16064181376, 16072571264, 16080957824,
-16089346688, 16097737856, 16106125184, 16114514816, 16122904192,
-16131292544, 16139678848, 16148066944, 16156453504, 16164839552,
-16173236096, 16181623424, 16190012032, 16198401152, 16206790528,
-16215177344, 16223567744, 16231956352, 16240344704, 16248731008,
-16257117824, 16265504384, 16273898624, 16282281856, 16290668672,
-16299064192, 16307449216, 16315842176, 16324230016, 16332613504,
-16341006464, 16349394304, 16357783168, 16366172288, 16374561664,
-16382951296, 16391337856, 16399726208, 16408116352, 16416505472,
-16424892032, 16433282176, 16441668224, 16450058624, 16458448768,
-16466836864, 16475224448, 16483613056, 16492001408, 16500391808,
-16508779648, 16517166976, 16525555328, 16533944192, 16542330752,
-16550719616, 16559110528, 16567497088, 16575888512, 16584274816,
-16592665472, 16601051008, 16609442944, 16617832064, 16626218624,
-16634607488, 16642996096, 16651385728, 16659773824, 16668163712,
-16676552576, 16684938112, 16693328768, 16701718144, 16710095488,
-16718492288, 16726883968, 16735272832, 16743661184, 16752049792,
-16760436608, 16768827008, 16777214336, 16785599104, 16793992832,
-16802381696, 16810768768, 16819151744, 16827542656, 16835934848,
-16844323712, 16852711552, 16861101952, 16869489536, 16877876864,
-16886265728, 16894653056, 16903044736, 16911431296, 16919821696,
-16928207488, 16936592768, 16944987776, 16953375616, 16961763968,
-16970152832, 16978540928, 16986929536, 16995319168, 17003704448,
-17012096896, 17020481152, 17028870784, 17037262208, 17045649536,
-17054039936, 17062426496, 17070814336, 17079205504, 17087592064,
-17095978112, 17104369024, 17112759424, 17121147776, 17129536384,
-17137926016, 17146314368, 17154700928, 17163089792, 17171480192,
-17179864192, 17188256896, 17196644992, 17205033856, 17213423488,
-17221811072, 17230198912, 17238588032, 17246976896, 17255360384,
-17263754624, 17272143232, 17280530048, 17288918912, 17297309312,
-17305696384, 17314085504, 17322475136, 17330863744, 17339252096,
-17347640192, 17356026496, 17364413824, 17372796544, 17381190016,
-17389583488, 17397972608, 17406360704, 17414748544, 17423135872,
-17431527296, 17439915904, 17448303232, 17456691584, 17465081728,
-17473468288, 17481857408, 17490247552, 17498635904, 17507022464,
-17515409024, 17523801728, 17532189824, 17540577664, 17548966016,
-17557353344, 17565741184, 17574131584, 17582519168, 17590907008,
-17599296128, 17607687808, 17616076672, 17624455808, 17632852352,
-17641238656, 17649630848, 17658018944, 17666403968, 17674794112,
-17683178368, 17691573376, 17699962496, 17708350592, 17716739968,
-17725126528, 17733517184, 17741898112, 17750293888, 17758673024,
-17767070336, 17775458432, 17783848832, 17792236928, 17800625536,
-17809012352, 17817402752, 17825785984, 17834178944, 17842563968,
-17850955648, 17859344512, 17867732864, 17876119424, 17884511872,
-17892900224, 17901287296, 17909677696, 17918058112, 17926451072,
-17934843776, 17943230848, 17951609216, 17960008576, 17968397696,
-17976784256, 17985175424, 17993564032, 18001952128, 18010339712,
-18018728576, 18027116672, 18035503232, 18043894144, 18052283264,
-18060672128, 18069056384, 18077449856, 18085837184, 18094225792,
-18102613376, 18111004544, 18119388544, 18127781248, 18136170368,
-18144558976, 18152947328, 18161336192, 18169724288, 18178108544,
-18186498944, 18194886784, 18203275648, 18211666048, 18220048768,
-18228444544, 18236833408, 18245220736]
-
-cache_sizes = [
-16776896, 16907456, 17039296, 17170112, 17301056, 17432512, 17563072,
-17693888, 17824192, 17955904, 18087488, 18218176, 18349504, 18481088,
-18611392, 18742336, 18874304, 19004224, 19135936, 19267264, 19398208,
-19529408, 19660096, 19791424, 19922752, 20053952, 20184896, 20315968,
-20446912, 20576576, 20709184, 20840384, 20971072, 21102272, 21233216,
-21364544, 21494848, 21626816, 21757376, 21887552, 22019392, 22151104,
-22281536, 22412224, 22543936, 22675264, 22806464, 22935872, 23068096,
-23198272, 23330752, 23459008, 23592512, 23723968, 23854912, 23986112,
-24116672, 24247616, 24378688, 24509504, 24640832, 24772544, 24903488,
-25034432, 25165376, 25296704, 25427392, 25558592, 25690048, 25820096,
-25951936, 26081728, 26214208, 26345024, 26476096, 26606656, 26737472,
-26869184, 26998208, 27131584, 27262528, 27393728, 27523904, 27655744,
-27786688, 27917888, 28049344, 28179904, 28311488, 28441792, 28573504,
-28700864, 28835648, 28966208, 29096768, 29228608, 29359808, 29490752,
-29621824, 29752256, 29882816, 30014912, 30144448, 30273728, 30406976,
-30538432, 30670784, 30799936, 30932672, 31063744, 31195072, 31325248,
-31456192, 31588288, 31719232, 31850432, 31981504, 32110784, 32243392,
-32372672, 32505664, 32636608, 32767808, 32897344, 33029824, 33160768,
-33289664, 33423296, 33554368, 33683648, 33816512, 33947456, 34076992,
-34208704, 34340032, 34471744, 34600256, 34734016, 34864576, 34993984,
-35127104, 35258176, 35386688, 35518528, 35650624, 35782336, 35910976,
-36044608, 36175808, 36305728, 36436672, 36568384, 36699968, 36830656,
-36961984, 37093312, 37223488, 37355072, 37486528, 37617472, 37747904,
-37879232, 38009792, 38141888, 38272448, 38403392, 38535104, 38660672,
-38795584, 38925632, 39059264, 39190336, 39320768, 39452096, 39581632,
-39713984, 39844928, 39974848, 40107968, 40238144, 40367168, 40500032,
-40631744, 40762816, 40894144, 41023552, 41155904, 41286208, 41418304,
-41547712, 41680448, 41811904, 41942848, 42073792, 42204992, 42334912,
-42467008, 42597824, 42729152, 42860096, 42991552, 43122368, 43253696,
-43382848, 43515712, 43646912, 43777088, 43907648, 44039104, 44170432,
-44302144, 44433344, 44564288, 44694976, 44825152, 44956864, 45088448,
-45219008, 45350464, 45481024, 45612608, 45744064, 45874496, 46006208,
-46136768, 46267712, 46399424, 46529344, 46660672, 46791488, 46923328,
-47053504, 47185856, 47316928, 47447872, 47579072, 47710144, 47839936,
-47971648, 48103232, 48234176, 48365248, 48496192, 48627136, 48757312,
-48889664, 49020736, 49149248, 49283008, 49413824, 49545152, 49675712,
-49807168, 49938368, 50069056, 50200256, 50331584, 50462656, 50593472,
-50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848,
-51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968,
-52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576,
-53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744,
-54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248,
-55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856,
-56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488,
-57146816, 57278272, 57409216, 57540416, 57671104, 57802432, 57933632,
-58064576, 58195264, 58326976, 58457408, 58588864, 58720192, 58849984,
-58981696, 59113024, 59243456, 59375552, 59506624, 59637568, 59768512,
-59897792, 60030016, 60161984, 60293056, 60423872, 60554432, 60683968,
-60817216, 60948032, 61079488, 61209664, 61341376, 61471936, 61602752,
-61733696, 61865792, 61996736, 62127808, 62259136, 62389568, 62520512,
-62651584, 62781632, 62910784, 63045056, 63176128, 63307072, 63438656,
-63569216, 63700928, 63831616, 63960896, 64093888, 64225088, 64355392,
-64486976, 64617664, 64748608, 64879424, 65009216, 65142464, 65273792,
-65402816, 65535424, 65666752, 65797696, 65927744, 66060224, 66191296,
-66321344, 66453056, 66584384, 66715328, 66846656, 66977728, 67108672,
-67239104, 67370432, 67501888, 67631296, 67763776, 67895104, 68026304,
-68157248, 68287936, 68419264, 68548288, 68681408, 68811968, 68942912,
-69074624, 69205568, 69337024, 69467584, 69599168, 69729472, 69861184,
-69989824, 70122944, 70253888, 70385344, 70515904, 70647232, 70778816,
-70907968, 71040832, 71171648, 71303104, 71432512, 71564992, 71695168,
-71826368, 71958464, 72089536, 72219712, 72350144, 72482624, 72613568,
-72744512, 72875584, 73006144, 73138112, 73268672, 73400128, 73530944,
-73662272, 73793344, 73924544, 74055104, 74185792, 74316992, 74448832,
-74579392, 74710976, 74841664, 74972864, 75102784, 75233344, 75364544,
-75497024, 75627584, 75759296, 75890624, 76021696, 76152256, 76283072,
-76414144, 76545856, 76676672, 76806976, 76937792, 77070016, 77200832,
-77331392, 77462464, 77593664, 77725376, 77856448, 77987776, 78118336,
-78249664, 78380992, 78511424, 78642496, 78773056, 78905152, 79033664,
-79166656, 79297472, 79429568, 79560512, 79690816, 79822784, 79953472,
-80084672, 80214208, 80346944, 80477632, 80608576, 80740288, 80870848,
-81002048, 81133504, 81264448, 81395648, 81525952, 81657536, 81786304,
-81919808, 82050112, 82181312, 82311616, 82443968, 82573376, 82705984,
-82835776, 82967744, 83096768, 83230528, 83359552, 83491264, 83622464,
-83753536, 83886016, 84015296, 84147776, 84277184, 84409792, 84540608,
-84672064, 84803008, 84934336, 85065152, 85193792, 85326784, 85458496,
-85589312, 85721024, 85851968, 85982656, 86112448, 86244416, 86370112,
-86506688, 86637632, 86769344, 86900672, 87031744, 87162304, 87293632,
-87424576, 87555392, 87687104, 87816896, 87947968, 88079168, 88211264,
-88341824, 88473152, 88603712, 88735424, 88862912, 88996672, 89128384,
-89259712, 89390272, 89521984, 89652544, 89783872, 89914816, 90045376,
-90177088, 90307904, 90438848, 90569152, 90700096, 90832832, 90963776,
-91093696, 91223744, 91356992, 91486784, 91618496, 91749824, 91880384,
-92012224, 92143552, 92273344, 92405696, 92536768, 92666432, 92798912,
-92926016, 93060544, 93192128, 93322816, 93453632, 93583936, 93715136,
-93845056, 93977792, 94109504, 94240448, 94371776, 94501184, 94632896,
-94764224, 94895552, 95023424, 95158208, 95287744, 95420224, 95550016,
-95681216, 95811904, 95943872, 96075328, 96203584, 96337856, 96468544,
-96599744, 96731072, 96860992, 96992576, 97124288, 97254848, 97385536,
-97517248, 97647808, 97779392, 97910464, 98041408, 98172608, 98303168,
-98434496, 98565568, 98696768, 98827328, 98958784, 99089728, 99220928,
-99352384, 99482816, 99614272, 99745472, 99876416, 100007104,
-100138048, 100267072, 100401088, 100529984, 100662592, 100791872,
-100925248, 101056064, 101187392, 101317952, 101449408, 101580608,
-101711296, 101841728, 101973824, 102104896, 102235712, 102366016,
-102498112, 102628672, 102760384, 102890432, 103021888, 103153472,
-103284032, 103415744, 103545152, 103677248, 103808576, 103939648,
-104070976, 104201792, 104332736, 104462528, 104594752, 104725952,
-104854592, 104988608, 105118912, 105247808, 105381184, 105511232,
-105643072, 105774784, 105903296, 106037056, 106167872, 106298944,
-106429504, 106561472, 106691392, 106822592, 106954304, 107085376,
-107216576, 107346368, 107478464, 107609792, 107739712, 107872192,
-108003136, 108131392, 108265408, 108396224, 108527168, 108657344,
-108789568, 108920384, 109049792, 109182272, 109312576, 109444928,
-109572928, 109706944, 109837888, 109969088, 110099648, 110230976,
-110362432, 110492992, 110624704, 110755264, 110886208, 111017408,
-111148864, 111279296, 111410752, 111541952, 111673024, 111803456,
-111933632, 112066496, 112196416, 112328512, 112457792, 112590784,
-112715968, 112852672, 112983616, 113114944, 113244224, 113376448,
-113505472, 113639104, 113770304, 113901376, 114031552, 114163264,
-114294592, 114425536, 114556864, 114687424, 114818624, 114948544,
-115080512, 115212224, 115343296, 115473472, 115605184, 115736128,
-115867072, 115997248, 116128576, 116260288, 116391488, 116522944,
-116652992, 116784704, 116915648, 117046208, 117178304, 117308608,
-117440192, 117569728, 117701824, 117833024, 117964096, 118094656,
-118225984, 118357312, 118489024, 118617536, 118749632, 118882112,
-119012416, 119144384, 119275328, 119406016, 119537344, 119668672,
-119798464, 119928896, 120061376, 120192832, 120321728, 120454336,
-120584512, 120716608, 120848192, 120979136, 121109056, 121241408,
-121372352, 121502912, 121634752, 121764416, 121895744, 122027072,
-122157632, 122289088, 122421184, 122550592, 122682944, 122813888,
-122945344, 123075776, 123207488, 123338048, 123468736, 123600704,
-123731264, 123861952, 123993664, 124124608, 124256192, 124386368,
-124518208, 124649024, 124778048, 124911296, 125041088, 125173696,
-125303744, 125432896, 125566912, 125696576, 125829056, 125958592,
-126090304, 126221248, 126352832, 126483776, 126615232, 126746432,
-126876608, 127008704, 127139392, 127270336, 127401152, 127532224,
-127663552, 127794752, 127925696, 128055232, 128188096, 128319424,
-128449856, 128581312, 128712256, 128843584, 128973632, 129103808,
-129236288, 129365696, 129498944, 129629888, 129760832, 129892288,
-130023104, 130154048, 130283968, 130416448, 130547008, 130678336,
-130807616, 130939456, 131071552, 131202112, 131331776, 131464384,
-131594048, 131727296, 131858368, 131987392, 132120256, 132250816,
-132382528, 132513728, 132644672, 132774976, 132905792, 133038016,
-133168832, 133299392, 133429312, 133562048, 133692992, 133823296,
-133954624, 134086336, 134217152, 134348608, 134479808, 134607296,
-134741056, 134872384, 135002944, 135134144, 135265472, 135396544,
-135527872, 135659072, 135787712, 135921472, 136052416, 136182848,
-136313792, 136444864, 136576448, 136707904, 136837952, 136970048,
-137099584, 137232064, 137363392, 137494208, 137625536, 137755712,
-137887424, 138018368, 138149824, 138280256, 138411584, 138539584,
-138672832, 138804928, 138936128, 139066688, 139196864, 139328704,
-139460032, 139590208, 139721024, 139852864, 139984576, 140115776,
-140245696, 140376512, 140508352, 140640064, 140769856, 140902336,
-141032768, 141162688, 141294016, 141426496, 141556544, 141687488,
-141819584, 141949888, 142080448, 142212544, 142342336, 142474432,
-142606144, 142736192, 142868288, 142997824, 143129408, 143258944,
-143392448, 143523136, 143653696, 143785024, 143916992, 144045632,
-144177856, 144309184, 144440768, 144570688, 144701888, 144832448,
-144965056, 145096384, 145227584, 145358656, 145489856, 145620928,
-145751488, 145883072, 146011456, 146144704, 146275264, 146407232,
-146538176, 146668736, 146800448, 146931392, 147062336, 147193664,
-147324224, 147455936, 147586624, 147717056, 147848768, 147979456,
-148110784, 148242368, 148373312, 148503232, 148635584, 148766144,
-148897088, 149028416, 149159488, 149290688, 149420224, 149551552,
-149683136, 149814976, 149943616, 150076352, 150208064, 150338624,
-150470464, 150600256, 150732224, 150862784, 150993088, 151125952,
-151254976, 151388096, 151519168, 151649728, 151778752, 151911104,
-152042944, 152174144, 152304704, 152435648, 152567488, 152698816,
-152828992, 152960576, 153091648, 153222976, 153353792, 153484096,
-153616192, 153747008, 153878336, 154008256, 154139968, 154270912,
-154402624, 154533824, 154663616, 154795712, 154926272, 155057984,
-155188928, 155319872, 155450816, 155580608, 155712064, 155843392,
-155971136, 156106688, 156237376, 156367424, 156499264, 156630976,
-156761536, 156892352, 157024064, 157155008, 157284416, 157415872,
-157545536, 157677248, 157810496, 157938112, 158071744, 158203328,
-158334656, 158464832, 158596288, 158727616, 158858048, 158988992,
-159121216, 159252416, 159381568, 159513152, 159645632, 159776192,
-159906496, 160038464, 160169536, 160300352, 160430656, 160563008,
-160693952, 160822208, 160956352, 161086784, 161217344, 161349184,
-161480512, 161611456, 161742272, 161873216, 162002752, 162135872,
-162266432, 162397888, 162529216, 162660032, 162790976, 162922048,
-163052096, 163184576, 163314752, 163446592, 163577408, 163707968,
-163839296, 163969984, 164100928, 164233024, 164364224, 164494912,
-164625856, 164756672, 164887616, 165019072, 165150016, 165280064,
-165412672, 165543104, 165674944, 165805888, 165936832, 166067648,
-166198336, 166330048, 166461248, 166591552, 166722496, 166854208,
-166985408, 167116736, 167246656, 167378368, 167508416, 167641024,
-167771584, 167903168, 168034112, 168164032, 168295744, 168427456,
-168557632, 168688448, 168819136, 168951616, 169082176, 169213504,
-169344832, 169475648, 169605952, 169738048, 169866304, 169999552,
-170131264, 170262464, 170393536, 170524352, 170655424, 170782016,
-170917696, 171048896, 171179072, 171310784, 171439936, 171573184,
-171702976, 171835072, 171966272, 172097216, 172228288, 172359232,
-172489664, 172621376, 172747712, 172883264, 173014208, 173144512,
-173275072, 173407424, 173539136, 173669696, 173800768, 173931712,
-174063424, 174193472, 174325696, 174455744, 174586816, 174718912,
-174849728, 174977728, 175109696, 175242688, 175374272, 175504832,
-175636288, 175765696, 175898432, 176028992, 176159936, 176291264,
-176422592, 176552512, 176684864, 176815424, 176946496, 177076544,
-177209152, 177340096, 177470528, 177600704, 177731648, 177864256,
-177994816, 178126528, 178257472, 178387648, 178518464, 178650176,
-178781888, 178912064, 179044288, 179174848, 179305024, 179436736,
-179568448, 179698496, 179830208, 179960512, 180092608, 180223808,
-180354752, 180485696, 180617152, 180748096, 180877504, 181009984,
-181139264, 181272512, 181402688, 181532608, 181663168, 181795136,
-181926592, 182057536, 182190016, 182320192, 182451904, 182582336,
-182713792, 182843072, 182976064, 183107264, 183237056, 183368384,
-183494848, 183631424, 183762752, 183893824, 184024768, 184154816,
-184286656, 184417984, 184548928, 184680128, 184810816, 184941248,
-185072704, 185203904, 185335616, 185465408, 185596352, 185727296,
-185859904, 185989696, 186121664, 186252992, 186383552, 186514112,
-186645952, 186777152, 186907328, 187037504, 187170112, 187301824,
-187429184, 187562048, 187693504, 187825472, 187957184, 188087104,
-188218304, 188349376, 188481344, 188609728, 188743616, 188874304,
-189005248, 189136448, 189265088, 189396544, 189528128, 189660992,
-189791936, 189923264, 190054208, 190182848, 190315072, 190447424,
-190577984, 190709312, 190840768, 190971328, 191102656, 191233472,
-191364032, 191495872, 191626816, 191758016, 191888192, 192020288,
-192148928, 192282176, 192413504, 192542528, 192674752, 192805952,
-192937792, 193068608, 193198912, 193330496, 193462208, 193592384,
-193723456, 193854272, 193985984, 194116672, 194247232, 194379712,
-194508352, 194641856, 194772544, 194900672, 195035072, 195166016,
-195296704, 195428032, 195558592, 195690304, 195818176, 195952576,
-196083392, 196214336, 196345792, 196476736, 196607552, 196739008,
-196869952, 197000768, 197130688, 197262784, 197394368, 197523904,
-197656384, 197787584, 197916608, 198049472, 198180544, 198310208,
-198442432, 198573632, 198705088, 198834368, 198967232, 199097792,
-199228352, 199360192, 199491392, 199621696, 199751744, 199883968,
-200014016, 200146624, 200276672, 200408128, 200540096, 200671168,
-200801984, 200933312, 201062464, 201194944, 201326144, 201457472,
-201588544, 201719744, 201850816, 201981632, 202111552, 202244032,
-202374464, 202505152, 202636352, 202767808, 202898368, 203030336,
-203159872, 203292608, 203423296, 203553472, 203685824, 203816896,
-203947712, 204078272, 204208192, 204341056, 204472256, 204603328,
-204733888, 204864448, 204996544, 205125568, 205258304, 205388864,
-205517632, 205650112, 205782208, 205913536, 206044736, 206176192,
-206307008, 206434496, 206569024, 206700224, 206831168, 206961856,
-207093056, 207223616, 207355328, 207486784, 207616832, 207749056,
-207879104, 208010048, 208141888, 208273216, 208404032, 208534336,
-208666048, 208796864, 208927424, 209059264, 209189824, 209321792,
-209451584, 209582656, 209715136, 209845568, 209976896, 210106432,
-210239296, 210370112, 210501568, 210630976, 210763712, 210894272,
-211024832, 211156672, 211287616, 211418176, 211549376, 211679296,
-211812032, 211942592, 212074432, 212204864, 212334016, 212467648,
-212597824, 212727616, 212860352, 212991424, 213120832, 213253952,
-213385024, 213515584, 213645632, 213777728, 213909184, 214040128,
-214170688, 214302656, 214433728, 214564544, 214695232, 214826048,
-214956992, 215089088, 215219776, 215350592, 215482304, 215613248,
-215743552, 215874752, 216005312, 216137024, 216267328, 216399296,
-216530752, 216661696, 216790592, 216923968, 217054528, 217183168,
-217316672, 217448128, 217579072, 217709504, 217838912, 217972672,
-218102848, 218233024, 218364736, 218496832, 218627776, 218759104,
-218888896, 219021248, 219151936, 219281728, 219413056, 219545024,
-219675968, 219807296, 219938624, 220069312, 220200128, 220331456,
-220461632, 220592704, 220725184, 220855744, 220987072, 221117888,
-221249216, 221378368, 221510336, 221642048, 221772736, 221904832,
-222031808, 222166976, 222297536, 222428992, 222559936, 222690368,
-222820672, 222953152, 223083968, 223213376, 223345984, 223476928,
-223608512, 223738688, 223869376, 224001472, 224132672, 224262848,
-224394944, 224524864, 224657344, 224788288, 224919488, 225050432,
-225181504, 225312704, 225443776, 225574592, 225704768, 225834176,
-225966784, 226097216, 226229824, 226360384, 226491712, 226623424,
-226754368, 226885312, 227015104, 227147456, 227278528, 227409472,
-227539904, 227669696, 227802944, 227932352, 228065216, 228196288,
-228326464, 228457792, 228588736, 228720064, 228850112, 228981056,
-229113152, 229243328, 229375936, 229505344, 229636928, 229769152,
-229894976, 230030272, 230162368, 230292416, 230424512, 230553152,
-230684864, 230816704, 230948416, 231079616, 231210944, 231342016,
-231472448, 231603776, 231733952, 231866176, 231996736, 232127296,
-232259392, 232388672, 232521664, 232652608, 232782272, 232914496,
-233043904, 233175616, 233306816, 233438528, 233569984, 233699776,
-233830592, 233962688, 234092224, 234221888, 234353984, 234485312,
-234618304, 234749888, 234880832, 235011776, 235142464, 235274048,
-235403456, 235535936, 235667392, 235797568, 235928768, 236057152,
-236190272, 236322752, 236453312, 236583616, 236715712, 236846528,
-236976448, 237108544, 237239104, 237371072, 237501632, 237630784,
-237764416, 237895232, 238026688, 238157632, 238286912, 238419392,
-238548032, 238681024, 238812608, 238941632, 239075008, 239206336,
-239335232, 239466944, 239599168, 239730496, 239861312, 239992384,
-240122816, 240254656, 240385856, 240516928, 240647872, 240779072,
-240909632, 241040704, 241171904, 241302848, 241433408, 241565248,
-241696192, 241825984, 241958848, 242088256, 242220224, 242352064,
-242481856, 242611648, 242744896, 242876224, 243005632, 243138496,
-243268672, 243400384, 243531712, 243662656, 243793856, 243924544,
-244054592, 244187072, 244316608, 244448704, 244580032, 244710976,
-244841536, 244972864, 245104448, 245233984, 245365312, 245497792,
-245628736, 245759936, 245889856, 246021056, 246152512, 246284224,
-246415168, 246545344, 246675904, 246808384, 246939584, 247070144,
-247199552, 247331648, 247463872, 247593536, 247726016, 247857088,
-247987648, 248116928, 248249536, 248380736, 248512064, 248643008,
-248773312, 248901056, 249036608, 249167552, 249298624, 249429184,
-249560512, 249692096, 249822784, 249954112, 250085312, 250215488,
-250345792, 250478528, 250608704, 250739264, 250870976, 251002816,
-251133632, 251263552, 251395136, 251523904, 251657792, 251789248,
-251919424, 252051392, 252182464, 252313408, 252444224, 252575552,
-252706624, 252836032, 252968512, 253099712, 253227584, 253361728,
-253493056, 253623488, 253754432, 253885504, 254017216, 254148032,
-254279488, 254410432, 254541376, 254672576, 254803264, 254933824,
-255065792, 255196736, 255326528, 255458752, 255589952, 255721408,
-255851072, 255983296, 256114624, 256244416, 256374208, 256507712,
-256636096, 256768832, 256900544, 257031616, 257162176, 257294272,
-257424448, 257555776, 257686976, 257818432, 257949632, 258079552,
-258211136, 258342464, 258473408, 258603712, 258734656, 258867008,
-258996544, 259127744, 259260224, 259391296, 259522112, 259651904,
-259784384, 259915328, 260045888, 260175424, 260308544, 260438336,
-260570944, 260700992, 260832448, 260963776, 261092672, 261226304,
-261356864, 261487936, 261619648, 261750592, 261879872, 262011968,
-262143424, 262274752, 262404416, 262537024, 262667968, 262799296,
-262928704, 263061184, 263191744, 263322944, 263454656, 263585216,
-263716672, 263847872, 263978944, 264108608, 264241088, 264371648,
-264501184, 264632768, 264764096, 264895936, 265024576, 265158464,
-265287488, 265418432, 265550528, 265681216, 265813312, 265943488,
-266075968, 266206144, 266337728, 266468032, 266600384, 266731072,
-266862272, 266993344, 267124288, 267255616, 267386432, 267516992,
-267648704, 267777728, 267910592, 268040512, 268172096, 268302784,
-268435264, 268566208, 268696256, 268828096, 268959296, 269090368,
-269221312, 269352256, 269482688, 269614784, 269745856, 269876416,
-270007616, 270139328, 270270272, 270401216, 270531904, 270663616,
-270791744, 270924736, 271056832, 271186112, 271317184, 271449536,
-271580992, 271711936, 271843136, 271973056, 272105408, 272236352,
-272367296, 272498368, 272629568, 272759488, 272891456, 273022784,
-273153856, 273284672, 273415616, 273547072, 273677632, 273808448,
-273937088, 274071488, 274200896, 274332992, 274463296, 274595392,
-274726208, 274857536, 274988992, 275118656, 275250496, 275382208,
-275513024, 275643968, 275775296, 275906368, 276037184, 276167872,
-276297664, 276429376, 276560576, 276692672, 276822976, 276955072,
-277085632, 277216832, 277347008, 277478848, 277609664, 277740992,
-277868608, 278002624, 278134336, 278265536, 278395328, 278526784,
-278657728, 278789824, 278921152, 279052096, 279182912, 279313088,
-279443776, 279576256, 279706048, 279838528, 279969728, 280099648,
-280230976, 280361408, 280493632, 280622528, 280755392, 280887104,
-281018176, 281147968, 281278912, 281411392, 281542592, 281673152,
-281803712, 281935552, 282066496, 282197312, 282329024, 282458816,
-282590272, 282720832, 282853184, 282983744, 283115072, 283246144,
-283377344, 283508416, 283639744, 283770304, 283901504, 284032576,
-284163136, 284294848, 284426176, 284556992, 284687296, 284819264,
-284950208, 285081536]
-```
diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md
deleted file mode 100644
index 14365daef39..00000000000
--- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Algoritmi di mining
-description: Uno sguardo dettagliato agli algoritmi usati per il mining di Ethereum.
-lang: it
----
-
-
-
-Il proof-of-work non è più alla base del meccanismo di consenso di Ethereum, a significare che il mining è stato disattivato. Invece, Ethereum, è protetto dai validatori che mettono ETH in staking. Puoi iniziare oggi a mettere i tuoi ETH in staking. Leggi di più su [La Fusione](/roadmap/merge/), il [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) e lo [staking](/staking/). Questa pagina è per solo interesse storico.
-
-
-
-Il mining di Ethereum usava un algoritmo noto come Ethash. L'idea fondamentale dell'algoritmo è che un miner prova a trovare l'input di un nonce usando il calcolo di forza bruta, così che l'hash risultante sia inferiore a una soglia determinata dalla difficoltà calcolata. Questo livello di difficoltà può esser regolato dinamicamente, consentendo alla produzione dei blocchi di verificarsi a un intervallo regolare.
-
-## Prerequisiti {#prerequisites}
-
-Per comprendere meglio questa pagina, ti consigliamo prima di leggere sul [consenso proof-of-work](/developers/docs/consensus-mechanisms/pow) e sul [mining](/developers/docs/consensus-mechanisms/pow/mining).
-
-## Dagger Hashimoto {#dagger-hashimoto}
-
-Dagger Hashimoto era un algoritmo di ricerca precursore del mining di Ethereum, sostituito da Ethash. Era un amalgama di due algoritmi differenti: Dagger e Hashimoto. È sempre e solo stato un'implementazione di ricerca e fu superato da Ethash prima del lancio della Rete Principale di Ethereum.
-
-[Dagger](http://www.hashcash.org/papers/dagger.html) prevede la generazione di un [Grafico Aciclico Diretto](https://en.wikipedia.org/wiki/Directed_acyclic_graph), porzioni casuali del quale ricevono un hashing insieme. Il principio fondamentale è che ogni nonce richiede solo una piccola porzione di un grande albero di dati totali. Ricalcolare l'albero secondario per ogni nonce è proibitivo per il mining, da cui l'esigenza di memorizzare l'albero, invece, va bene per verificare un singolo nonce. Dagger è stato progettato per essere un'alternativa agli algoritmi esistenti come Scrypt, che sono gravosi per la memoria (memory-hard) ma difficili da verificare all'aumentare dell'uso della memoria verso livelli veramente sicuri. Dagger era però vulnerabile all'accelerazione dell'hardware con memoria condiviso ed è stato abbandonato a favore di altre vie di ricerca.
-
-[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) è un algoritmo che aggiunge resistenza ASIC, essendo vincolato da aspetti I/O (cioè le letture di memoria rappresentano il fattore limitante nel processo di mining). La teoria è che vi sia più disponibilità di RAM che di calcolo: sono già stati usati miliardi di dollari in ricerca per l'ottimizzazione della RAM per diversi scenari d'uso, che spesso coinvolgono schemi d'accesso semi-casuale (da cui "memoria d'accesso casuale", Random Access Memory). Di conseguenza, è probabile che la RAM esistente sia abbastanza vicina all'ottimale per valutare l'algoritmo. Hashimoto usa la blockchain come una fonte di dati, perché soddisfa simultaneamente i punti (1) e (3) di cui sopra.
-
-Dagger-Hashimoto usava delle versioni modificate degli algoritmi di Dagger e Hashimoto. La differenza tra Dagger Hashimoto e Hashimoto è che, anziché usare la blockchain come una fonte di dati, Dagger Hashimoto usa una serie di dati generata e personalizzata, che si aggiorna a seconda dei dati del blocco ogni N blocchi. La serie di dati è generata usando l'algoritmo di Dagger, che consente di calcolare efficientemente una sotto-serie specifica a ogni nonce per l'algoritmo di verifica del client leggero. La differenza tra Dagger Hashimoto e Dagger è che, a differenza del Dagger originale, il dataset usato per interrogare il blocco è semi-permanente, in quanto viene aggiornato solo occasionalmente (es. una volta a settimana). Questo significa che la porzione dello sforzo per generare il dataset è prossima allo zero, e diventano quindi trascurabili gli argomenti di Sergio Lerner riguardanti le velocizzazioni della memoria condivisa.
-
-Maggiori informazioni su [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto).
-
-## Ethash {#ethash}
-
-Ethash era l'algoritmo di mining che era effettiamente usato sulla vera Rete Principale di Ethereum sotto l'ora deprecata architettura del proof-of-work. Ethash in realtà è un nuovo nome assegnato a una versione specifica di Dagger-Hashimoto dopo un aggiornamento significativo dell'algoritmo, che comunque eredita i principi fondamentali del suo predecessore. La Rete Principale di Ethereum ha sempre e solo usato Ethash; Dagger Hashimoto era una versione R&D dell'algoritmo di mining che fu superata prima che il mining fosse avviato sulla rete principale di Ethereum.
-
-[Maggiori informazioni su Ethash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash).
-
-## Letture consigliate {#further-reading}
-
-_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 04537f99e8d..855eeb4f2ab 100644
--- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: Uno sguardo dettagliato all'algoritmo di Dagger-Hashimoto.
lang: it
---
-Dagger-Hashimoto era l'implementazione e specifica di ricerca originale per l'algoritmo di mining di Ethereum. Dagger-Hashimoto è stato sostituito da [Ethash](#ethash). Il Mining è stata disattivato completamente con[ il Merge](/updates/merge) il 15 settembre 2022. Da allora, Ethereum è stato assicurato utilizzando un meccanismo [proof-of-of-stake](/developers/docs/consensus-mechanisms/pos). Questa pagina è di interesse storico - le informazioni qui non sono più rilevanti per post-Merge Ethereum.
+Dagger-Hashimoto era l'implementazione e specifica di ricerca originale per l'algoritmo di mining di Ethereum. Dagger-Hashimoto è stato sostituito da [Ethash](#ethash). Il Mining è stata disattivato completamente con[ il Merge](/roadmap/merge/) il 15 settembre 2022. Da allora, Ethereum è stato assicurato utilizzando un meccanismo [proof-of-of-stake](/developers/docs/consensus-mechanisms/pos). Questa pagina è di interesse storico - le informazioni qui non sono più rilevanti per post-Merge Ethereum.
## Prerequisiti {#prerequisites}
diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index c49aa95c4a7..f10aea0f6d5 100644
--- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### L'uso di "SHA3" {#sha3}
-Lo sviluppo di Ethereum è coinciso con lo sviluppo dello standard SHA3 e il processo standard ha effettuato una modifica tardiva al padding dell'algoritmo di hash finalizzato, quindi, gli hash "sha3_256" e "sha3_512" di Ethereum non sono hash dello standard sha3, ma una variante, spesso definita "Keccak-256" e "Keccak-512" in altri contesti. Vedi la discussione, es. [qui](https://eips.ethereum.org/EIPS-1803), [qui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) o [qui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+Lo sviluppo di Ethereum è coinciso con lo sviluppo dello standard SHA3 e il processo standard ha effettuato una modifica tardiva al padding dell'algoritmo di hash finalizzato, quindi, gli hash "sha3_256" e "sha3_512" di Ethereum non sono hash dello standard sha3, ma una variante, spesso definita "Keccak-256" e "Keccak-512" in altri contesti. Vedi la discussione, es. [qui](https://eips.ethereum.org/EIPS/eip-1803), [qui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) o [qui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Si ricorda che gli hash "sha3" siano presentati nella descrizione dell'algoritmo più avanti.
diff --git a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md
index e6e69f0248c..81a821658c4 100644
--- a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md
+++ b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md
@@ -32,7 +32,7 @@ Di più sui [contratti intelligenti](/developers/docs/smart-contracts/).
### La macchina virtuale Ethereum {#the-ethereum-virtual-machine}
-Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/en/developers/docs/evm/), che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati.
+Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/developers/docs/evm/), che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati.
È suddivisa in vari pacchetti JavaScript che puoi leggere per comprendere meglio:
diff --git a/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md
index 148bbb485aa..db7c0ea8508 100644
--- a/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md
+++ b/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md
@@ -30,7 +30,7 @@ L'architettura principale del rollup ZK si compone dei seguenti componenti:
2. **Macchina virtuale (VM) off-chain**: benché il protocollo del rollup ZK risieda su Ethereum, l'esecuzione della transazione e l'archiviazione di stato si verificano su una macchina virtuale separata e indipendente dall'[EVM](/developers/docs/evm/). Questa VM off-chain è l'ambiente di esecuzione per le transazioni sul rollup ZK e serve da livello secondario o "livello 2" per il protocollo rollup ZK. Le prove di validità verificate sulla Rete principale di Ethereum garantiscono la correttezza delle transizioni di stato nella VM off-chain.
-I rollup ZK sono "soluzioni di ridimensionamento ibride": protocolli off-chain che operano indipendentemente ma derivano la sicurezza da Ethereum. Nello specifico, la rete di Ethereum impone la validità degli aggiornamenti di stato sul rollup ZK e garantisce la disponibilità dei dati dietro ogni aggiornamento allo stato del rollup. Di conseguenza, i rollup ZK sono considerevolmente più sicuri delle soluzioni di ridimensionamento off-chain, come le [sidechain](/developers/docs/scaling/sidechains/), responsabili delle proprie proprietà di sicurezza, o i [validium](/developers/docs/scaling/validiums/), che pur verificando le transazioni su Ethereum con le prove di validità, memorizzano altrove i dati della transazione.
+I rollup ZK sono "soluzioni di ridimensionamento ibride": protocolli off-chain che operano indipendentemente ma derivano la sicurezza da Ethereum. Nello specifico, la rete di Ethereum impone la validità degli aggiornamenti di stato sul rollup ZK e garantisce la disponibilità dei dati dietro ogni aggiornamento allo stato del rollup. Di conseguenza, i rollup ZK sono considerevolmente più sicuri delle soluzioni di ridimensionamento off-chain, come le [sidechain](/developers/docs/scaling/sidechains/), responsabili delle proprie proprietà di sicurezza, o i [validium](/developers/docs/scaling/validium/), che pur verificando le transazioni su Ethereum con le prove di validità, memorizzano altrove i dati della transazione.
I rollup ZK si affidano al protocollo principale di Ethereum per quanto segue:
diff --git a/public/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md
index 907ccc0df3c..e5bc871f47f 100644
--- a/public/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ Dove `sender` è l'utente che ha innescato il prelievo e scambiato `shares`, pos
## Letture consigliate {#further-reading}
- [EIP-4626: Tokenized vault Standard](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: GitHub Repo](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626: GitHub Repo](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/it/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/it/developers/tutorials/erc20-with-safety-rails/index.md
index d5b3b070e99..3bd263bc34d 100644
--- a/public/content/translations/it/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/translations/it/developers/tutorials/erc20-with-safety-rails/index.md
@@ -24,7 +24,7 @@ Se desideri visualizzare il codice sorgente completo:
## Creare un contratto ERC-20 {#creating-an-erc-20-contract}
-Prima di poter aggiungere la funzionalità della barriera di sicurezza, ci occorre un contratto ERC-20. In questo articolo utilizzeremo [la procedura guidata dei contratti di OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/wizard). Aprila in un altro browser e segui queste istruzioni:
+Prima di poter aggiungere la funzionalità della barriera di sicurezza, ci occorre un contratto ERC-20. In questo articolo utilizzeremo [la procedura guidata dei contratti di OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Aprila in un altro browser e segui queste istruzioni:
1. Seleziona **ERC20**.
2. Inserisci queste impostazioni:
diff --git a/public/content/translations/it/developers/tutorials/run-light-node-geth/index.md b/public/content/translations/it/developers/tutorials/run-light-node-geth/index.md
deleted file mode 100644
index 85baf203afa..00000000000
--- a/public/content/translations/it/developers/tutorials/run-light-node-geth/index.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: Come eseguire un nodo leggero con Geth
-description: Come scaricare, installare ed eseguire un client leggero con Geth.
-authors: "Brian Gu"
-tags:
- - "client"
- - "nodi"
-skill: beginner
-lang: it
-published: 2022-03-04
----
-
-Se ti interessa eseguire un [nodo Ethereum](/developers/docs/nodes-and-clients/), uno dei modi più facili è scaricare, installare ed eseguire Geth. Con Geth, possiamo ottenere un nodo leggero attivo in pochi minuti.
-
-Un client leggero richiede meno di 400MB d'archiviazione, pur consentendo la piena interattività con lo stato di Ethereum. I client leggeri recuperano i dati dai peer remoti, quindi alcune interrogazioni potrebbero richiedere un più di tempo per la risposta rispetto ad altre modalità di sincronizzazione.
-
-Per una spiegazione delle differenze tra le diverse modalità di sincronizzazione, leggi la nostra [documentazione per sviluppatori di nodi e client](/developers/docs/nodes-and-clients/#node-types).
-
-## Installa ed esegui {#install-and-run}
-
-Innanzitutto occorre [installare Geth](https://geth.ethereum.org/docs/install-and-build/installing-geth).
-
-Dopo aver installato Geth, puoi eseguire un nodo di Ethereum in modalità "light" eseguendo il seguente comando in una finestra del Terminale:
-
-```bash
-geth --syncmode light
-```
-
-Una volta avviato, Geth inizia a connettersi ad altri nodi su Ethereum, noti come "peer". Il processo di connessione ai peer potrebbe richiedere un po' di tempo.
-
-Quando il tuo nodo di Geth ha abbastanza peer, importerà le intestazioni dai nuovi blocchi sulla catena.
-
-Quando le intestazioni del nuovo blocco non avranno più una "età", Geth sarà sincronizzato all'inizio della catena.
-
-## Arrestare e riavviare il nodo {#stopping-and-restarting-your-node}
-
-Puoi interrompere il tuo nodo quando vuoi premendo CTRL+C.
-
-Riavviando il nodo, Geth impiegherà qualche minuto per scaricare le intestazioni del blocco create dall'ultima esecuzione del nodo.
-
-## Abilita il server HTTP-RPC {#enable-the-http-rpc-server}
-
-Abilitare il server HTTP-RPC ti consente di connettere il tuo nodo di Ethereum ad altri software come portafogli, estensioni del browser o librerie software personalizzate.
-
-Puoi abilitare il server HTTP-RPC eseguendo il seguente comando al lancio di Geth:
-
-```bash
-geth --syncmode light --http
-```
-
-Una volta abilitato, esegui `curl http://127.0.0.1:8545`. Non dovresti ricevere alcun errore.
-
-### Consenti le connessioni remote {#allow-remote-connections}
-
-Per consentire a host remoti di connettersi al tuo nodo, avvia Geth con il seguente comando:
-
-```
-geth --syncmode light --http --http.addr 0.0.0.0
-```
-
-Nota: questo presuppone che non ci sia alcun processo che blocca le richieste al tuo host locale, come ad esempio un firewall.
-
-## Console JavaScript di Geth {#geth-javascript-console}
-
-Geth ha una console JavaScript integrata e un'APi JavaScript chiamata [web3js](https://github.com/ethereum/web3.js/), che puoi usare per interagire col tuo nodo.
-
-Per usare la console JavaScript, esegui:
-
-```bash
-geth attach
-```
-
-Questa console consente di interagire direttamente con Ethereum. Ad esempio, eseguendo il comando `eth.blockNumber` si otterrà il numero dell'ultimo blocco noto.
-
-[Documentazione completa di web3js](http://web3js.readthedocs.io/)
-
-## Rete principale e reti di prova {#mainnet-and-testnets}
-
-Geth esegue di default il tuo nodo sulla [Rete principale di Ethereum](/glossary/#mainnet/).
-
-Puoi anche usare Geth per eseguire un nodo su una delle [reti di prova pubbliche](/networks/#testnets/), eseguendo uno dei seguenti comandi nel Terminale:
-
-```bash
-geth --syncmode light --ropsten
-geth --syncmode light --rinkeby
-geth --syncmode light --goerli
-```
-
-## Dove sono memorizzati i dati della blockchain e dell'EVM? {#where-is-the-blockchain-and-evm-data-stored}
-
-La directory che Geth usa per memorizzare i dati grezzi della blockchain dipende dal sistema operativo. Dopo aver eseguito Geth, cerca un messaggio simile a questo:
-
-```bash
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-```
-
-Il percorso dopo `"database="` dovrebbe indicare dove sono memorizzati i dati della blockchain sul computer locale. Se esegui un nodo completo, questa directory conterrà tutti i dati su ogni blocco salvato nella blockchain. Poiché noi eseguiamo un nodo leggero, questa directory contiene solo le intestazioni dei blocchi.
-
-Vale la pena ribadire che, al livello più basso, questo percorso è la posizione in cui si trova la blockchain. I contenuti completi della blockchain e dello stato dell'EVM sono memorizzati in ogni nodo completo nella rete di Ethereum, in directory che somigliano molto a quella presente sul tuo computer.
-
-## Letture consigliate {#further-reading}
-
-- [Scopri di più sulle diverse reti](/developers/docs/networks/).
-- [Eseguire un nodo di Ethereum](/run-a-node/)
diff --git a/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md
index 3a19781a424..e7dc3c70025 100644
--- a/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -743,7 +743,7 @@ Questa è la funzione principale della factory, per creare uno scambio in pari t
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Vogliamo che l'indirizzo del nuovo scambio sia deterministico, quindi calcolabile in anticipo al di fuori della catena (questo può essere utile per le [transazioni di livello 2](/developers/docs/layer-2-scaling/)). Per farlo, dobbiamo avere un ordine coerente degli indirizzi del token, indipendentemente dall'ordine in cui li abbiamo ricevuti, quindi li ordiniamo qui.
+Vogliamo che l'indirizzo del nuovo scambio sia deterministico, quindi calcolabile in anticipo al di fuori della catena (questo può essere utile per le [transazioni di livello 2](/developers/docs/scaling/)). Per farlo, dobbiamo avere un ordine coerente degli indirizzi del token, indipendentemente dall'ordine in cui li abbiamo ricevuti, quindi li ordiniamo qui.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
diff --git a/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 01b9867941b..87c55672021 100644
--- a/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -295,4 +295,4 @@ Il codice sorgente di questo tutorial si può trovare [qui](https://github.com/E
Altri tutorial che potrebbero interessarti:
-- [Test di Smart Contract con Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Test di Smart Contract con Waffle](/developers/tutorials/waffle-test-simple-smart-contract/)
diff --git a/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md
index 0b993380cec..0a00b551d84 100644
--- a/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md
+++ b/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -200,4 +200,4 @@ Hai compiuto il tuo primo grande passo verso il test dei contratti intelligenti
- [Testare ERC-20 con Waffle](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
- [Waffle: simulazioni dinamiche e test delle chiamate del contratto](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
-- [Tutorial Waffle Hello world con hardhat ed ethers](/developers/tutorials/waffle-hello-world-with-buidler-tutorial/)
+- [Tutorial Waffle Hello world con hardhat ed ethers](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/)
diff --git a/public/content/translations/it/roadmap/beacon-chain/index.md b/public/content/translations/it/roadmap/beacon-chain/index.md
index 0ea7f8bdd85..70f3ad03bac 100644
--- a/public/content/translations/it/roadmap/beacon-chain/index.md
+++ b/public/content/translations/it/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ Beacon Chain è il nome dato a un libro mastro di conti che hanno condotto e coo
La Beacon Chain ha introdotto la [proof of stake](/developers/docs/consensus-mechanisms/pos/) in Ethereum. Questo mantiene sicura Ethereum e consente ai validatori di guadagnare più ETH nel processo. In pratica, lo staking prevede di puntare ETH per poter attivare il software del validatore. Come staker, esegui il software che crea e convalida i nuovi blocchi nella catena.
-Lo staking serve a uno scopo simile a quello del [mining](/developers/docs/mining/), ma è differente in molti modi. Il mining richiedeva ingenti spese iniziali sotto forma di hardware potente e consumi energetici, risultando in economie di scala e promuovendo la centralizzazione. Il mining, inoltre, non prevedeva alcun requisito di bloccare le risorse come garanzie, limitando la capacità del protocollo di punire gli utenti malevoli dopo un attacco.
+Lo staking serve a uno scopo simile a quello del [mining](/developers/docs/consensus-mechanisms/pow/mining/), ma è differente in molti modi. Il mining richiedeva ingenti spese iniziali sotto forma di hardware potente e consumi energetici, risultando in economie di scala e promuovendo la centralizzazione. Il mining, inoltre, non prevedeva alcun requisito di bloccare le risorse come garanzie, limitando la capacità del protocollo di punire gli utenti malevoli dopo un attacco.
La transizione al proof of stake ha reso Ethereum significativamente più sicura e decentralizzata rispetto al proof of work. Più persone parteciperanno alla rete, più questa diventerà decentralizzata e protetta dagli attacchi.
diff --git a/public/content/translations/it/roadmap/index.md b/public/content/translations/it/roadmap/index.md
index b427fd00185..8d944589f1e 100644
--- a/public/content/translations/it/roadmap/index.md
+++ b/public/content/translations/it/roadmap/index.md
@@ -3,7 +3,7 @@ title: Roadmap di Ethereum
description: Il percorso verso una maggiore scalabilità, sicurezza e sostenibilità per Ethereum.
lang: it
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Roadmap di Ethereum"
summaryPoints:
buttons:
@@ -59,7 +59,7 @@ Ethereum riceve aggiornamenti regolari che migliorano la sua scalabilità, sicur
-La tabella di marcia è principalmente il risultato di anni di lavoro da parte di ricercatori e sviluppatori - perché il protocollo è molto tecnico - ma qualsiasi persona motivata può partecipare. Le idee di solito iniziano come discussioni su un forum come [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) o il server Eth R&D discord. Possono essere risposte a nuove vulnerabilità che vengono scoperte, suggerimenti da parte di organizzazioni che lavorano nel livello dell'applicazione (come dapps e borse) o da attriti conosciuti per gli utenti finali (come costi o velocità di transazione). Quando queste idee maturano, possono essere proposte come [Ethereum Improvement Proposals](https://eips.ethereum.org/). Tutto questo viene fatto in pubblico in modo che chiunque della comunità possa esprimere la propria opinione in qualsiasi momento.
+La tabella di marcia è principalmente il risultato di anni di lavoro da parte di ricercatori e sviluppatori - perché il protocollo è molto tecnico - ma qualsiasi persona motivata può partecipare. Le idee di solito iniziano come discussioni su un forum come [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://ethereum-magicians.org/) o il server Eth R&D discord. Possono essere risposte a nuove vulnerabilità che vengono scoperte, suggerimenti da parte di organizzazioni che lavorano nel livello dell'applicazione (come dapps e borse) o da attriti conosciuti per gli utenti finali (come costi o velocità di transazione). Quando queste idee maturano, possono essere proposte come [Ethereum Improvement Proposals](https://eips.ethereum.org/). Tutto questo viene fatto in pubblico in modo che chiunque della comunità possa esprimere la propria opinione in qualsiasi momento.
[Ulteriori informazioni sulla governance di Ethereum](/governance/)
diff --git a/public/content/translations/it/roadmap/single-slot-finality/index.md b/public/content/translations/it/roadmap/single-slot-finality/index.md
index 68c0b4d9cf8..e6e39ca8373 100644
--- a/public/content/translations/it/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/it/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ Il problema con il ridimensionamento dell'aggregazione, aumentando il numero di
## Stato attuale {#current-progress}
-Lo SSF è nella fase di ricerca. Non dovrebbe essere distribuito per svariati anni, possibilmente dopo altri aggiornamenti sostanziali come gli [alberi di Verkle](/roadmap/verkle-trees/) e il [Danksharding](/roadmap/danksharding]).
+Lo SSF è nella fase di ricerca. Non dovrebbe essere distribuito per svariati anni, possibilmente dopo altri aggiornamenti sostanziali come gli [alberi di Verkle](/roadmap/verkle-trees/) e il [Danksharding](/roadmap/danksharding/).
## Letture consigliate {#further-reading}
diff --git a/public/content/translations/it/zero-knowledge-proofs/index.md b/public/content/translations/it/zero-knowledge-proofs/index.md
index 75822492f72..df8faa39f59 100644
--- a/public/content/translations/it/zero-knowledge-proofs/index.md
+++ b/public/content/translations/it/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Un introduzione "non tecnica" per i principianti sulle prove a cono
lang: it
---
-## Cosa sono le prove a conoscenza zero? {#what-are-zk-proofs}
+# Cosa sono le prove a conoscenza zero? {#what-are-zk-proofs}
Una prova a conoscenza zero è un modo per provare la validità di una dichiarazione senza rivelarla. Il 'dimostratore' è la parte che tenta di provare una rivendicazione, mentre il 'validatore' è responsabile della sua convalida.
diff --git a/public/content/translations/ja/community/events/index.md b/public/content/translations/ja/community/events/index.md
index 1be0a7dc594..abd0ac8cc04 100644
--- a/public/content/translations/ja/community/events/index.md
+++ b/public/content/translations/ja/community/events/index.md
@@ -5,7 +5,7 @@ lang: ja
hideEditButton: true
---
-## 今後のイベント {#events}
+# 今後のイベント {#events}
**毎月、世界各地でメジャーなイーサリアムのイベントが行われています。**お近くで開催されているイベントに参加し、コミュニティの人々と出会い、採用情報や新しいスキルを学んでみませんか?
diff --git a/public/content/translations/ja/developers/docs/apis/json-rpc/index.md b/public/content/translations/ja/developers/docs/apis/json-rpc/index.md
index 8e0b6b46266..3d1e75ee693 100644
--- a/public/content/translations/ja/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/ja/developers/docs/apis/json-rpc/index.md
@@ -620,7 +620,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
ただし、マップの要素の取得は、より複雑になります。 マップの要素の位置は、次のように計算されます。
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
つまり、pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"]のストレージを取得するためには、次のように位置を計算する必要があります。
diff --git a/public/content/translations/ja/developers/docs/bridges/index.md b/public/content/translations/ja/developers/docs/bridges/index.md
index 5869c8e9a05..f5c8777ef55 100644
--- a/public/content/translations/ja/developers/docs/bridges/index.md
+++ b/public/content/translations/ja/developers/docs/bridges/index.md
@@ -4,7 +4,7 @@ description: デベロッパー向けのブリッジ概要
lang: ja
---
-L1 のブロックチェーンおよび L2 の[スケーリング](/developers/docs/scaling/)ソリューションが一般化し、ますます多くの分散型アプリケーションがクロスチェーンで運用されつつある現在、複数のチェーン間における通信および資産移動を実現する機能がネットワークインフラにおける不可欠な要素となっています。 この機能を提供するために、さまざまな種類のブリッジが開発されています。
+L1のブロックチェーンおよびL2の[スケーリング](/developers/docs/scaling/)ソリューションが一般化し、ますます多くの分散型アプリケーションがクロスチェーンで運用されつつある現在、複数のチェーン間における通信および資産移動を実現する機能がネットワークインフラにおける不可欠な要素となっています。 この機能を提供するために、さまざまな種類のブリッジが開発されています。
## ブリッジがなぜ必要か? {#need-for-bridges}
@@ -23,14 +23,14 @@ L1 のブロックチェーンおよび L2 の[スケーリング](/developers/d
デベロッパーは、ブリッジを通して以下を実現できます:
- あらゆる種類のデータ、情報、および資産をチェーンを超えて転送できる。
-- ブリッジが個別のプロトコルで提供可能な機能の設計範囲を拡張するため、新たな機能やユースケースが可能になる。 例えば、当初イーサリアムメインネットでデプロイされたイールドファーミング用のプロトコルは、EVM 互換のすべてのチェーンに流動性プールを提供できる。
-- 様々なブロックチェーンが持つ独自の強みを活用できる機会を提供する。 例えば、複数のロールアップやサイドチェーン上で Dapp をデプロイし、ユーザーがそれらをまたいで利用できるようにすることで、様々な L2 ソリューションが提供する安価な手数料を提供できる。
+- ブリッジが個別のプロトコルで提供可能な機能の設計範囲を拡張するため、新たな機能やユースケースが可能になる。 例えば、当初イーサリアムメインネットでデプロイされたイールドファーミング用のプロトコルは、EVM互換のすべてのチェーンに流動性プールを提供できる。
+- 様々なブロックチェーンが持つ独自の強みを活用できる機会を提供する。 例えば、複数のロールアップやサイドチェーン上でDappをデプロイし、ユーザーがそれらをまたいで利用できるようにすることで、様々なL2ソリューションが提供する安価な手数料を提供できる。
- 様々なブロックチェーンエコシステムに関与しているデベロッパーが連携して、新たなプロダクトを構築できる。
-- 様々なエコシステムから、自社 Dapp にユーザーやコミュニティを呼び込むことができる。
+- 様々なエコシステムから、自社Dappにユーザーやコミュニティを呼び込むことができる。
## ブリッジはどのように機能するのか? {#how-do-bridges-work}
-[ブリッジの設計](https://blog.li.fi/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa)には多くの種類がありますが、特に、クロスチェーンで資産を移転する以下の 3 つの方法が重要です:
+[ブリッジの設計](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/)には多くの種類がありますが、特に、クロスチェーンで資産を移転する以下の3つの方法が重要です。
- **ロックとミント** - ソースチェーン上のアセットをロックした上で、宛先チェーン上でアセットをミントする方式。
- **バーンとミント** - ソースチェーン上のトークンをバーンした上で、宛先チェーン上で新たにトークンをミントする方式。
@@ -40,10 +40,10 @@ L1 のブロックチェーンおよび L2 の[スケーリング](/developers/d
ブリッジは通常、以下のカテゴリーに分類されます:
-- **ネイティブブリッジ** - 通常、特定のブロックチェーンにおいて流動性を自動供給するための構築されたブリッジであり、当該エコシステムに対する資金の転送を容易にするものです。 例えば、[Arbitrum ブリッジ](https://bridge.arbitrum.io/)は、イーサリアムから Arbitrum への資金転送を容易にするために開発されたブリッジです。 この種類のブリッジとしては、Polygon PoS ブリッジや[Optimism ゲートウェイ](https://app.optimism.io/bridge)等があります。
-- **バリデータ/オラクルベースのブリッジ** - クロスチェーン間の転送につき、外部のバリデータ群またはオラクルによる検証に依存するブリッジです。 Multichain や Across が含まれます。
-- **一般的なメッセージの受け渡しを伴うブリッジ** - チェーン間の資産転送につき、メッセージおよび任意のデータと共に実行するもの。 Nomad や LayerZero が含まれます。
-- **流動性ネットワーク** - 主に、アトミック・スワップによるチェーン間の資産転送に焦点をあてたブリッジです。 通常、この種類のブリッジはチェーン間のメッセージの受け渡しには対応しません。 Conext や Hop が含まれます。
+- **ネイティブブリッジ** - 通常、特定のブロックチェーンにおいて流動性を自動供給するための構築されたブリッジであり、当該エコシステムに対する資金の転送を容易にするものです。 例えば、[ Arbitrumブリッジ](https://bridge.arbitrum.io/)は、イーサリアムからArbitrumへの資金転送を容易にするために開発されたブリッジです。 この種類のブリッジとしては、Polygon PoSブリッジや[Optimismゲートウェイ](https://app.optimism.io/bridge)等があります。
+- **バリデータ/オラクルベースのブリッジ** - クロスチェーン間の転送につき、外部のバリデータ群またはオラクルによる検証に依存するブリッジです。 MultichainやAcrossが含まれます。
+- **一般的なメッセージの受け渡しを伴うブリッジ** - チェーン間の資産転送につき、メッセージおよび任意のデータと共に実行するもの。 NomadやLayerZeroが含まれます。
+- **流動性ネットワーク** - 主に、アトミック・スワップによるチェーン間の資産転送に焦点をあてたブリッジです。 通常、この種類のブリッジはチェーン間のメッセージの受け渡しには対応しません。 ConextやHopが含まれます。
## 考慮すべきトレードオフ {#trade-offs}
@@ -51,11 +51,11 @@ L1 のブロックチェーンおよび L2 の[スケーリング](/developers/d
- **セキュリティ** - システムの検証を誰が担うか? 一般に、外部のバリデータによりセキュリティを保証するブリッジは、当該ブロックチェーンのバリデータがローカル/ネイティブにセキュリティを保証する場合よりもセキュリティが低くなります。
- **利便性** - トランザクションの実行にかかる時間と、ユーザーが署名する必要があるトランザクションの数はどの程度か? デベロッパーにとっては、ブリッジを組み込むプロセスの時間や複雑さを検討する必要があります。
-- **接続性** - 様々な宛先チェーン(ロールアップ、サイドチェーン、他の L1 ブロックチェーン等)にどれだけ接続でき、新規ブロックチェーンとの統合がどの程度難しいかについて検討が必要です。
+- **接続性** - 様々な宛先チェーン(ロールアップ、サイドチェーン、他のL1ブロックチェーン等)にどれだけ接続でき、新規ブロックチェーンとの統合がどの程度難しいかについて検討が必要です。
- **複雑なデータの伝達能力** - チェーン間におけるメッセージやより複雑な任意データの転送が可能か、あるいは、チェーン間の資産移転のみに対応しているかが問題になります。
- **コスト効率** - ブリッジによるチェーン間の資産転送において、どの程度コストが発生するかです。 ブリッジは一般に、固定の手数料またはガス代および特定の転送レートの流動性に基づく変動料金を請求します。 さらに、セキュリティを確保するのにどれだけの手数料が必要になるかに基づき、特定のブリッジにおけるコスト効率を評価することが非常に重要です。
-より大まかに見れば、ブリッジはトラステッドとトラストレスの 2 種類に分類できます。
+より大まかに見れば、ブリッジはトラステッドとトラストレスの2種類に分類できます。
- **トラステッド** - トラステッドのブリッジとは、外部による検証に依存するブリッジです。 つまり、チェーン間のデータ送信につき、外部の検証者セット(マルチシグによるフェデレーション、マルチパーティの計算システム、オラクルネットワーク)が介在するブリッジを指します。 これにより、接続性に優れ、完全に汎用化されたメッセージをチェーン間でやりとりすることができます。 さらに、速度やコスト効率の面からも優れている場合が多いです。 ただし、ユーザーはブリッジ自体のセキュリティに依存するため、セキュリティが損なわれる可能性があります。
- **トラストレス** - これらのブリッジは、接続するブロックチェーンならびに転送するメッセージやトークンに対するバリデータに依存しています。 これらのブリッジが「トラストレス」と呼ばれるのは、(ブロックチェーン自体で想定するものを除き)、新たな信頼想定を追加しないためです。 これにより、トラステッドのブリッジと比較してセキュリティが高いと評価されます。
@@ -67,53 +67,53 @@ L1 のブロックチェーンおよび L2 の[スケーリング](/developers/d
## ブリッジに伴うリスク {#risk-with-bridges}
-ブリッジは、[DeFi における最悪のハッキング事例](https://rekt.news/leaderboard/)上位 3 位における原因となっており、現在も開発途上の技術です。 ブリッジの利用は、以下のようなリスクを伴います:
+ブリッジは、[DeFiにおける最悪のハッキング事例](https://rekt.news/leaderboard/)上位3位における原因となっており、現在も開発途上の技術です。 ブリッジの利用は、以下のようなリスクを伴います:
-- **スマートコントラクトのリスク** - 多くのブリッジは監査に合格しているものの、スマートコントラクトに欠陥がひとつでも含まれていれば、資産に対するハッキング攻撃が可能になります(例: [Solana のワームホールブリッジ](https://rekt.news/wormhole-rekt/))。
+- **スマートコントラクトのリスク** - 多くのブリッジは監査に合格しているものの、スマートコントラクトに欠陥がひとつでも含まれていれば、資産に対するハッキング攻撃が可能になります(例: [Solanaのワームホールブリッジ](https://rekt.news/wormhole-rekt/))。
- **システミックな財務リスク** - 多くのブリッジでは、原資産の正規バージョンを新規チェーンでミントするためにラップ資産を用います。 ラップされたトークンが悪用された事例はすでに発生しており、エコシステム全体にシステミックリスクをもたらします。
- **カウンターパーティリスク** - 一部のブリッジでは、複数のバリデータが共謀してユーザーの資金を奪い取ろうと考えることはないという信頼の想定をユーザーに要求する、信頼ベースの設計を採用しています。 ユーザーは、これらのサードパーティアクターを信頼しなければならないため、ラグプル、検閲、およびその他の悪意の行為が発生するリスクにさらされています。
- **未解決の問題** - 現在でもブリッジは開発の初期段階にあるため、様々な市場環境(ネットワーク混雑時や、ネットワーク全体への攻撃やステートのロールバックといった予見できないイベントの発生時)においてブリッジがどのように機能するかについては、未確認の事項が多く残っています。 この不確実性は様々なリスクをもたらすものですが、その影響の度合いはまだ不明です。
-## Dapp でブリッジを利用する方法 {#how-can-dapps-use-bridges}
+## Dappでブリッジを利用する方法 {#how-can-dapps-use-bridges}
-以下では、デベロッパがブリッジを活用して Dapp のクロスチェーン化を検討する際の実践的な応用例について紹介します:
+以下では、デベロッパがブリッジを活用してDappのクロスチェーン化を検討する際の実践的な応用例について紹介します:
### ブリッジとの統合 {#integrating-bridges}
-開発中の Dapp をブリッジに対応させるには、多くの方法が存在します:
+開発中のDappをブリッジに対応させるには、多くの方法が存在します:
1. **独自のブリッジを構築する** - 安全で信頼性が高いブリッジの開発は、特にトラストレスのアプローチを採用した場合、容易ではありません。 さらに、スケーラビリティや相互運用性に関する豊富な経験や技術的な知識が必要です。 また、ブリッジを管理し、実務上要求される十分な流動性を維持するためには常駐チームが必要です。
-2. **ユーザーが様々なブリッジから選択できるようにする** - 多くの[Dapp](/developers/docs/dapps/)では、ユーザーに対してネイティブトークンでのやりとりを要求しています。 ユーザーが所有するトークンを利用できるようにするために、Dapp のウェブサイトでは様々なブリッジのオプションを提供しています。 しかしこの方法は、自社の Dapp のインターフェイスだけでプロセスを完結できず、他の Dapp やブリッジとのやりとりが必要になるため、その場しのぎの対策と言わざるを得ません。 また、ユーザーのオンボーディングが複雑になり、ミスが発生する可能性も高まります。
+2. **ユーザーが様々なブリッジから選択できるようにする** - 多くの[Dapp](/developers/docs/dapps/)では、ユーザーに対してネイティブトークンでのやりとりを要求しています。 ユーザーが所有するトークンを利用できるようにするために、Dappのウェブサイトでは様々なブリッジのオプションを提供しています。 しかしこの方法は、自社のDappのインターフェイスだけでプロセスを完結できず、他のDappやブリッジとのやりとりが必要になるため、その場しのぎの対策と言わざるを得ません。 また、ユーザーのオンボーディングが複雑になり、ミスが発生する可能性も高まります。
-3. **Dapp 内にブリッジを組み込む** - このアプローチでは、ユーザーは外部のブリッジや DEX インターフェイスとやりとりする必要がなくなります。 このため、ユーザーのオンボーディング体験が向上します。 しかし、このアプローチにも以下のような制限があります:
+3. **Dapp内にブリッジを組み込む** - このアプローチでは、ユーザーは外部のブリッジやDEXインターフェイスとやりとりする必要がなくなります。 このため、ユーザーのオンボーディング体験が向上します。 しかし、このアプローチにも以下のような制限があります:
- ブリッジに対する評価やメンテナンスは、手間や時間がかかる。
- ひとつのブリッジを選択することで、単一障害点や依存関係が発生する。
- - 当該ブリッジの機能により、Dapp のサービスが制限される。
- - ブリッジだけでは対応できない機能が必要になる場合がある。 チェーン間のスワップなどの機能を追加するには、DEX を含める必要があるかもしれない。
+ - 当該ブリッジの機能により、Dappのサービスが制限される。
+ - ブリッジだけでは対応できない機能が必要になる場合がある。 チェーン間のスワップなどの機能を追加するには、DEXを含める必要がある場合がある。
4. **複数のブリッジを組み込む** - このアプローチは、ひとつのブリッジを統合する場合の多くの問題を解消できます。 一方で、複数のブリッジとの統合は多くのリソースを消費し、暗号資産の分野において最も希少性が高いリソースであるデベロッパーにとって、技術面およびコミュニケーション面での負担が増加してしまいます。
-5. **ブリッジアグリゲーターを導入する** - 複数のブリッジにアクセスできる、ブリッジアグリゲーションを活用するのもひとつの方法です。 ブリッジアグリゲーターはすべてのブリッジの強みを継承するため、各ブリッジが提供する機能のみに制限されなくなります。 特に、通常はブリッジアグリゲーターが Dapp とブリッジとの統合を管理するため、Dapp のデベロッパー側はブリッジとの統合における技術的/運用的な側面を管理する作業から解放されます。
+5. **ブリッジアグリゲーターを導入する** - 複数のブリッジにアクセスできる、ブリッジアグリゲーションを活用するのもひとつの方法です。 ブリッジアグリゲーターはすべてのブリッジの強みを継承するため、各ブリッジが提供する機能のみに制限されなくなります。 特に、通常はブリッジアグリゲーターがDappとブリッジとの統合を管理するため、Dappのデベロッパー側はブリッジとの統合における技術的/運用的な側面を管理する作業から解放されます。
ブリッジアグリゲーターは、このような利点を持つ一方で、欠点もあります。 例えば、より多くのブリッジを活用するオプションを提供することは事実ですが、特定のアグリゲーターのプラットフォームが提供するブリッジよりもさらに多くのブリッジが市場で提供されています。 さらに、ブリッジの場合と同じように、ブリッジアグリゲーターもスマートコントラクトやテクノロジーに由来するリスクにさらされています(対応するコントラクトが多くなれば、リスクも拡大します)。
-Dapp にブリッジやブリッジアグリゲーターを組み込む場合、統合の度合いに応じて様々なオプションが考えられます。 例えば、ユーザーにおけるオンボーディング体験の向上を目的とするフロントエンドのみの統合では、ウィジェットを搭載すればよいでしょう。 しかし、ステーキングやイールドファーミング等のより複雑なチェーン間のやりとりを実現するには、SDK や API を統合する必要があります。
+Dappにブリッジやブリッジアグリゲーターを組み込む場合、統合の度合いに応じて様々なオプションが考えられます。 例えば、ユーザーにおけるオンボーディング体験の向上を目的とするフロントエンドのみの統合では、ウィジェットを搭載すればよいでしょう。 しかし、ステーキングやイールドファーミング等のより複雑なチェーン間のやりとりを実現するには、SDKやAPIを統合する必要があります。
-### 複数のチェーン上で Dapp をデプロイする {#deploying-a-dapp-on-multiple-chains}
+### 複数のチェーン上でDappをデプロイする {#deploying-a-dapp-on-multiple-chains}
-複数のブロックチェーン上で Dapp をデプロイするには、[Alchemy](https://www.alchemy.com/)、[Hardhat](https://hardhat.org/)、あるいは[Truffle](https://trufflesuite.com/), [Moralis](https://moralis.io/)などの開発プラットフォームを利用することができます。 一般にこれらのプラットフォームには、Dapp のクロスチェーン化を実現するコンポーザブルなプラグインが含まれています。 例えば、 [hardhat-deploy plugin](https://github.com/wighawag/hardhat-deploy)で提供される決定論的なデプロイ用プロキシを活用することができます。
+複数のブロックチェーン上でDappをデプロイするには、[Alchemy](https://www.alchemy.com/)、[Hardhat](https://hardhat.org/)、あるいは[Truffle](https://trufflesuite.com/), [Moralis](https://moralis.io/)などの開発プラットフォームを利用することができます。 一般にこれらのプラットフォームには、Dappのクロスチェーン化を実現するコンポーザブルなプラグインが含まれています。 例えば、 [hardhat-deploy plugin](https://github.com/wighawag/hardhat-deploy)で提供される決定論的なデプロイ用プロキシを活用することができます。
#### 例:
-- [クロスチェーン対応の Dapp を開発する方法](https://moralis.io/how-to-build-cross-chain-dapps/)
-- [クロスチェーン対応の NFT マーケットプレイスを開発する方法](https://youtu.be/WZWCzsB1xUE)
-- [Moralis: クロスチェーン対応の DApps を開発する](https://www.youtube.com/watch?v=ehv70kE1QYo)
+- [クロスチェーン対応のDappを開発する方法](https://moralis.io/how-to-build-cross-chain-dapps/)
+- [クロスチェーン対応のNFTマーケットプレイスを開発する方法](https://youtu.be/WZWCzsB1xUE)
+- [Moralis: クロスチェーン対応のDAppsを開発する](https://www.youtube.com/watch?v=ehv70kE1QYo)
### コントラクトにおけるチェーン間のやりとりを監視する {#monitoring-contract-activity-across-chains}
-コントラクトにおけるチェーン間のやりとりを監視するには、サブグラフや、Tenderly 等の開発プラットフォームを用いて、スマートコントラクトの状態をリアルタイムで観察することができます。 これらのプラットフォームにはさらに、[コントラクトが発行したイベント](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events)をチェックするなど、チェーン間のやりとりを対象としてより充実したデータ監視機能を実現できるツールが含まれています。
+コントラクトにおけるチェーン間のやりとりを監視するには、サブグラフや、Tenderly等の開発プラットフォームを用いて、スマートコントラクトの状態をリアルタイムで観察することができます。 これらのプラットフォームにはさらに、[コントラクトが発行したイベント](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events)をチェックするなど、チェーン間のやりとりを対象としてより充実したデータ監視機能を実現できるツールが含まれています。
#### ツール
@@ -123,10 +123,10 @@ Dapp にブリッジやブリッジアグリゲーターを組み込む場合、
## さらに学びたい方へ {#further-reading}
- [ブロックチェーンにおけるブリッジ](/bridges/) - ethereum.org
-- [ブロックチェーンにおけるブリッジ: クリプトネットワークのネットワーク構築](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 2021 年 9 月 8 日、ドミトリー・ベレンゾン作成。
-- [相互運用性のトリレンマ](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) 2021 年 10 月 1 日、アルジュン・ブプタニ作成。
-- [クラスタ: 信頼ベースおよび信頼最小化のブリッジは、マルチチェーン環境をどのように変化させるか](https://blog.celestia.org/clusters/) 2021 年 10 月 4 日、ムスタファ・アル=バッサム作成。
-- [LI.FI: ブリッジの信頼依存度は様々に異なる](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) 2022 年 4 月 28 日 、アルジュン・チャンド作成。
+- [ブロックチェーンにおけるブリッジ: クリプトネットワークのネットワーク構築](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 2021年9月8日、ドミトリー・ベレンゾン作成。
+- [相互運用性のトリレンマ](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) 2021年10月1日、アルジュン・ブプタニ作成。
+- [クラスタ: 信頼ベースおよび信頼最小化のブリッジは、マルチチェーン環境をどのように変化させるか](https://blog.celestia.org/clusters/) 2021年10月4日、ムスタファ・アル=バッサム作成。
+- [LI.FI: ブリッジの信頼依存度は様々に異なる](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) 2022年4月28日 、アルジュン・チャンド作成。
ブリッジについてさらに理解を深めたい方は、 [ジェイムズ・プレストウィッチ](https://twitter.com/_prestwich)による洞察溢れる講演をご覧ください:
diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
deleted file mode 100644
index 9d2b83b8b13..00000000000
--- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
+++ /dev/null
@@ -1,334 +0,0 @@
----
-title: ダガーハシモト
-description: ダガーハシモト・アルゴリズムの詳細
-lang: ja
----
-
-ダガーハシモト(Dagger-Hashimoto)は、イーサリアムのマイニングアルゴリズムの最初の研究実装と仕様でした。 その後、ダガーハシモトから[Ethash](#ethash)に置き換えられました。 マイニングは、2022 年 9 月 15 日の[マージ](/updates/merge)で完全に廃止されました。 それ以降、イーサリアムには [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos)のメカニズムが使われています。 このページについては過去の流れを理解する目的でご覧ください。この情報は、マージ後のイーサリアムには該当しません。
-
-## 前提知識 {#prerequisites}
-
-このページをより理解するために、まず[プルーフ・オブ・ワーク・コンセンサス](/developers/docs/consensus-mechanisms/pow)、[マイニング](/developers/docs/consensus-mechanisms/pow/mining)、[マイニングアルゴリズム](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms)を読むことをお勧めします。
-
-## ダガーハシモト {#dagger-hashimoto}
-
-ダガーハシモトは、次の 2 つの目的を達成することを目指しています。
-
-1. **ASIC 耐性**: アルゴリズム専用ハードウェアの製作によって得られる利益を、最小限にすること。
-2. **ライトクライアントの検証可能性**: ライトクライアントがブロックを効率的に検証可能であること。
-
-追加の修正により、ご希望に応じて、3 つ目の目標を達成する方法も記載しますが、複雑になります。
-
-**フルチェーンストレージ**: マイニングでは、完全なブロックチェーンの状態の保管を必要にすること(イーサリアムのステートツリーの不規則な構造により、特によく使われるいくつかのコントラクトは、ある程度のプルーニングが可能だと予想されます。しかし、これを最小限に抑えたいと考えています)。
-
-## 有向非巡回グラフ(DAG)の生成 {#dag-generation}
-
-Python を使って、このアルゴリズムのコードを以下に定義します。 最初に、指定された精度の符号なし整数型を、マーシャリングして文字列にするため `encode_int`を用意します。 変換された値を戻す関数もまた用意します。
-
-```python
-NUM_BITS = 512
-
-def encode_int(x):
- "Encode an integer x as a string of 64 characters using a big-endian scheme"
- o = ''
- for _ in range(NUM_BITS / 8):
- o = chr(x % 256) + o
- x //= 256
- return o
-
-def decode_int(s):
- "Unencode an integer x from a string using a big-endian scheme"
- x = 0
- for c in s:
- x *= 256
- x += ord(c)
- return x
-```
-
-次に`sha3`は、整数を引数に取り、整数を出力する関数とします。`dbl_sha3`は、倍精度浮動小数点数型の sha3 関数とします。このレファレンスのコードを、実装する場合は次のように使います。
-
-```python
-from pyethereum import utils
-def sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(x))
-
-def dbl_sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(utils.sha3(x)))
-```
-
-### パラメータ {#parameters}
-
-アルゴリズムに使用されるパラメータは次のとおりです。
-
-```python
-SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512
-
-params = {
- "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
- "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536
- # with epochtime=20000 gives 882 MB growth per year
- "cache_size": 2500, # Size of the light client's cache (can be chosen by light
- # client; not part of the algo spec)
- "diff": 2**14, # Difficulty (adjusted during block evaluation)
- "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
- "k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
- "accesses": 200, # Number of dataset accesses during hashimoto
- "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
-}
-```
-
-この場合、`P`は、`log₂(P)`によって 512 よりわずかに小さくなるように選ばれた素数です。これは、数値を表すために使用している 512 ビットに対応します。 実際に格納される必要があるのは、DAG の後半部分です。事実上の RAM 要件は、1GB から始まり毎年 441MB ずつ増加します。
-
-### ダガーグラフの構築 {#dagger-graph-building}
-
-原始的なダガーグラフの構築は、以下のように定義できます。
-
-```python
-def produce_dag(params, seed, length):
- P = params["P"]
- picker = init = pow(sha3(seed), params["w"], P)
- o = [init]
- for i in range(1, length):
- x = picker = (picker * init) % P
- for _ in range(params["k"]):
- x ^= o[x % i]
- o.append(pow(x, params["w"], P))
- return o
-```
-
-基本的には、単一ノードである`sha3(seed)`として、グラフをスタートします。そこから、ランダムな前のノードに基づいて、他のノードを順次追加し始めます。 新しいノードが作成されると、シードの冪剰余が計算され、`i`より小さいいくつかのインデックスがランダムに選択されます (上記の`x % i`を使用) 。それらのインデックスのノードの値は、計算で使用され、`x`の新しい値を生成します。この値は、 (排他的論理和に基づいた) 小さなプルール・オブ・ワーク関数に送られ、最終的にはインデックス`i`のブラフの値を生成します。 この特有の設計の背後にある理論的根拠は、DAG のシーケンシャルアクセスを強制することです。アクセスされる DAG の次の値は、現在の値が判明するまで決定できません。 最後に、冪剰余で結果をさらにハッシュ化します。
-
-このアルゴリズムは、数論から得られたいくつかの結果に依存しています。 考察については、ページ下部にある付録を参照してください。
-
-## ライトクライアントの評価 {#light-client-evaluation}
-
-上記のグラフ構造は、少数のノードのみのサブツリーを計算してグラフの各ノードを再構築できるようすることを目的にしています。また、少量の補助メモリのみを必要とします。 k=1 の場合、サブツリーは、DAG の最初の要素までのチェーンの値にすぎないことに注意してください。
-
-ライトクライアントの DAG 計算関数は、次のように動作します。
-
-```python
-def quick_calc(params, seed, p):
- w, P = params["w"], params["P"]
- cache = {}
-
- def quick_calc_cached(p):
- if p in cache:
- pass
- elif p == 0:
- cache[p] = pow(sha3(seed), w, P)
- else:
- x = pow(sha3(seed), (p + 1) * w, P)
- for _ in range(params["k"]):
- x ^= quick_calc_cached(x % p)
- cache[p] = pow(x, w, P)
- return cache[p]
-
- return quick_calc_cached(p)
-```
-
-基本的に、上記のアルゴリズムを単純に書き直し、DAG 全体の値を計算するループが除かれ、以前のノード検索から、再帰呼び出しまたはキャッシュ検索に置き換えられています。 `k=1`の場合、キャッシュは不要となることに注意してください。しかし、さらなる最適化において、DAG の最初の数千の値が事前に計算され、計算用の静的キャッシュとして保持されます。これのコード実装は、付録を参照してください。
-
-## 有向非巡回グラフ(DAG)のダブルバッファ {#double-buffer}
-
-フルクライアントでは、上記の式で生成した 2 つの DAG の[_ダブルバッファ_](https://wikipedia.org/wiki/Multiple_buffering)が使われます。 このアイデアは、DAG が上記のパラメータに従い、ブロックの`epochtime`数ごとに生成されるというものです。 クライアントは、最新の生成された DAG を使うのではなく、1 つ前の DAG を使います。 この利点としては、マイナーが突然すべてのデータを再計算するステップを取り入れる必要がなく、DAG を時間の経過とともに置き換えられることです。 そうでなければ、チェーンを処理する一定間隔で突然一時的に遅くなり、集中化が劇的に増加する可能性があります。 これにより、すべてのデータが再計算される前の数分間以内に、51%攻撃のリスクが発生します。
-
-ブロックのワークを計算するために使われる DAG セットを生成するために使用するアルゴリズムは、次のようになります。
-
-```python
-def get_prevhash(n):
- from pyethereum.blocks import GENESIS_PREVHASH
- from pyethereum import chain_manager
- if num <= 0:
- return hash_to_int(GENESIS_PREVHASH)
- else:
- prevhash = chain_manager.index.get_block_by_number(n - 1)
- return decode_int(prevhash)
-
-def get_seedset(params, block):
- seedset = {}
- seedset["back_number"] = block.number - (block.number % params["epochtime"])
- seedset["back_hash"] = get_prevhash(seedset["back_number"])
- seedset["front_number"] = max(seedset["back_number"] - params["epochtime"], 0)
- seedset["front_hash"] = get_prevhash(seedset["front_number"])
- return seedset
-
-def get_dagsize(params, block):
- return params["n"] + (block.number // params["epochtime"]) * params["n_inc"]
-
-def get_daggerset(params, block):
- dagsz = get_dagsize(params, block)
- seedset = get_seedset(params, block)
- if seedset["front_hash"] <= 0:
- # No back buffer is possible, just make front buffer
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": 0}}
- else:
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": seedset["front_number"]},
- "back": {"dag": produce_dag(params, seedset["back_hash"], dagsz),
- "block_number": seedset["back_number"]}}
-```
-
-## ハシモト {#hashimoto}
-
-オリジナルのハシモトの背景にあるアイデアは、ブロックチェーンをデータセットとして使用することです。ブロックチェーンから N 個のインデックスを選択して計算を実行し、これらのインデックスでトランザクションを収集し、このデータの排他的論理和(XOR)を実行して、結果のハッシュ値を返します。 Thaddeus Dryja のオリジナルのアルゴリズムは、次のように一貫性のために Python でも書かれています。
-
-```python
-def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
- hash_output_A = sha256(prev_hash + merkle_root + nonce)
- txid_mix = 0
- for i in range(64):
- shifted_A = hash_output_A >> i
- transaction = shifted_A % len(list_of_transactions)
- txid_mix ^= list_of_transactions[transaction] << i
- return txid_max ^ (nonce << 192)
-```
-
-残念ながら、ハシモトは RAM の消費が多いとみなされています。256 ビット演算に依存しており、計算にかなりのオーバーヘッドがあります。 しかし、ダガーハシモトでは、この問題に対処するため、最下位 64 ビットのみを使用してデータセットのインデックスを作成します。
-
-```python
-def hashimoto(dag, dagsize, params, header, nonce):
- m = dagsize / 2
- mix = sha3(encode_int(nonce) + header)
- for _ in range(params["accesses"]):
- mix ^= dag[m + (mix % 2**64) % m]
- return dbl_sha3(mix)
-```
-
-倍精度浮動小数点数型(double) SHA3 を使用して、ゼロデータ形式、ほぼ即時の事前検証、提供された正しい中間値のみの検証などが可能です。 このプルーフ・オブ・ワークの外側のレイヤーは、ASIC と相性が非常に良く、かなり脆弱になってます。しかし、すぐに拒否されないブロックを生成するには、少量のワークをしなければならないため、DDoS 攻撃をさらに困難にします。 以下は、ライトクライアントのバージョンです。
-
-```python
-def quick_hashimoto(seed, dagsize, params, header, nonce):
- m = dagsize // 2
- mix = sha3(nonce + header)
- for _ in range(params["accesses"]):
- mix ^= quick_calc(params, seed, m + (mix % 2**64) % m)
- return dbl_sha3(mix)
-```
-
-## マイニングと検証 {#mining-and-verifying}
-
-それでは、すべてをマイニングアルゴリズムにまとめてみましょう。
-
-```python
-def mine(daggerset, params, block):
- from random import randint
- nonce = randint(0, 2**64)
- while 1:
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- if result * params["diff"] < 2**256:
- break
- nonce += 1
- if nonce >= 2**64:
- nonce = 0
- return nonce
-```
-
-以下は、検証アルゴリズムです。
-
-```python
-def verify(daggerset, params, block, nonce):
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-以下は、ライトクライアントフレンドリーな検証です。
-
-```python
-def light_verify(params, header, nonce):
- seedset = get_seedset(params, block)
- result = quick_hashimoto(seedset["front_hash"], get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-また、ダガーハシモトは、ブロックヘッダに次の追加の要件を課していることに注意してください。
-
-- 2 層検証が機能するためには、ブロックヘッダーに、ノンス (nonce)と、前に sha3 だった中間値の両方が含まれている必要がある。
-- ブロックヘッダーのどこかに、現在のシードセットの sha3 が格納されている必要がある。
-
-## 参考文献 {#further-reading}
-
-_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
-
-## 付録 {#appendix}
-
-前述のように、DAG の生成で使われる乱数発生器(RNG)は、数論から得られた次の結果に依存しています。 最初に`picker`変数のもととなるレーマー乱数発生器の周期が広いことを断言しておきます。 次に、`pow(x,3,P)`は、 `x ∈ [2,P-2]`を開始条件として、`x`を`1`または`P-1`にマップしないことを示します。 最後に、 `pow(x,3,P)`を、ハッシュ関数として扱うと、衝突率が低くなることを示します。
-
-### レーマー 乱数発生器 {#lehmer-random-number}
-
-`produce_dag`関数は、無作為の乱数を生成する必要がない一方で、潜在的な脅威として`seed**i % P`が一握りの値しか取れません。 このため、このパターンを認識しているマイナーは、そうでないマイナーに比べて有利になる可能性があります。
-
-これを避けるために、数論による結果を使う必要があります。 [_安全素数_](https://en.wikipedia.org/wiki/Safe_prime)とは、 `(P-1)/2`も素数であるような素数`P`と定義されています。 [乗法群](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n)のメンバー `x`の*次数* `ℤ/nℤ`は、次の公式にある小さい字の`m`で定義されています。
xᵐ mod P ≡ 1
-これらの定義から、次のようになります。
-
-> 見解 1. `x`を安全素数`P`の乗法群`ℤ/Pℤ`のメンバーとします。 `x mod P ≠ 1 mod P`かつ`x mod P ≠ P-1 mod P`の場合は、`x`の次数は、`P-1`または`(P-1)/2`となります。
-
-_証明_. `P`は安全素数なので、\[ラグランジュの定理\]\[lagrange\]により、`x`の次数は`1`、`2`、`(P-1)/2`、または`P-1`のいずれかになります。
-
-`x`の次数は`1`になることはできません。フェルマーの小定理により、次を満たすためです。
-
-
xP-1 mod P ≡ 1
-
-したがって、`x`は`ℤ/nℤ`の乗法的単位元でなければならず、一意です。 前提で`x≠1`としたので、これはありえません。
-
-`x = P-1`でない限り、`x`の次数を`2`にすることはできません。これは、`P`が素数であることに違反するためです。
-
-上記の命題から、`(picker * init) % P`の繰り返しは、少なくとも`(P-1)/2`の周期になることがわかります。 これは、`P`を 2 以上の累乗にほぼ等しい安全素数として選択し、`init`が`[2,2**256+1]`の間隔にあるためです。 `P`の大きさを考えると、冪剰余から周期を予想することはできません。
-
-DAG の最初のセルを割り当てるとき (`init`というラベルの付いた変数) 、`pow(sha3(seed) + 2, 3, P)`を計算します。 一見すると、これは結果が`1`でも`P-1`でもないことを保証しません。 しかし、`P-1`は、安全素数であるため、見解 1 の帰結となる次の追加の保証があります。
-
-> 見解 2. `x`を安全素数`P`の乗法群`ℤ/Pℤ`のメンバーとし、`w`を自然数とします。 `x mod P ≠ 1 mod P`かつ`x mod P ≠ P-1 mod P`および`w mod P ≠ P-1 mod P`かつ`w mod P ≠ 0 mod P`の場合、`xʷ mod P ≠ 1 mod P`かつ`xʷ mod P ≠ P-1 mod P`
-
-### ハッシュ関数としての冪乗余 {#modular-exponentiation}
-
-`P`と`w`の特定の値に対して、関数`pow(x,w,P)`は、多くの衝突を起こす可能性があります。 たとえば、`pow(x,9,19) `は値`{1,18}`のみを取ります。
-
-`P`が素数であるとすると、累積余剰ハッシュ関数の適切な`w`は、次の結果を使用して選択できます。
-
-> 見解 3. `P`を素数とし、`ℤ/Pℤ`のすべての`a`かつ`b`において、そのときに限り`w`かつ`P-1`が互いに素であることが成り立ち、これは次のようになります。
->
->
-> `a mod P ≡ b mod P` のとき、そのときに限り `aʷ mod P ≡ bʷ mod P`
->
@@ -24,15 +24,15 @@ template: roadmap
### プロトダンクシャーディング {#proto-danksharding}
-ロールアップのデータは、イーサリアム上に永続的に保存されるため、コストがかかります。 ユーザーは、ロールアップで支払うトランザクションコストの 90%以上を、データストレージに費やしています。 トランザクションコストを削減するため、新たに「ブロブ」と呼ばれる一時ストレージ領域にデータを移動できるようになりました。 ブロブは、永続的でないため、比較的コストが安くなっており、不要になるとイーサリアムから削除されます。 ロールアップデータの長期保存は、ロールアップオペレータ、取引所、インデックスサービスなど、それを必要とする人々の役割となります。 イーサリアムへのブロブトランザクションの追加は、「プロトダンクシャーディング」と呼ばれるアップグレードの一部であり、 2023 年後半の比較的早い時期にリリースされる予定です。
+ロールアップのデータは、イーサリアム上に永続的に保存されるため、コストがかかります。 ユーザーは、ロールアップで支払うトランザクションコストの90%以上を、データストレージに費やしています。 トランザクションコストを削減するため、新たに「ブロブ」と呼ばれる一時ストレージ領域にデータを移動できるようになりました。 ブロブは、永続的でないため、比較的コストが安くなっており、不要になるとイーサリアムから削除されます。 ロールアップデータの長期保存は、ロールアップオペレータ、取引所、インデックスサービスなど、それを必要とする人々の役割となります。 イーサリアムへのブロブトランザクションの追加は、「プロトダンクシャーディング」と呼ばれるアップグレードの一部であり、 2023年後半の比較的早い時期にリリースされる予定です。
-プロトダンクシャーディングによって、イーサリアムプロトコルにブロブトランザクションが組み込まれると、イーサリアムのブロックにたくさんのブロブを追加できるようになります。 これにより、イーサリアムのスループットが大幅に向上し(100 倍以上)、トランザクションのコストも下げることができます。
+プロトダンクシャーディングによって、イーサリアムプロトコルにブロブトランザクションが組み込まれると、イーサリアムのブロックにたくさんのブロブを追加できるようになります。 これにより、イーサリアムのスループットが大幅に向上し(100倍以上)、トランザクションのコストも下げることができます。
### ダークシャーディング {#danksharding}
-ブロブデータ拡張の第 2 段階は、大変複雑です。理由は、ロールアップデータがネットワーク上で利用可能であることを確認する新しい方法が必要だからです。また、バリデータの役割を分離して、ブロック構築とブロック提案に分けることも必要です。 さらに、バリデータがブロブデータの小さなサブセットを検証したことを暗号的に証明する方法も必要になります。
+ブロブデータ拡張の第2段階は、大変複雑です。理由は、ロールアップデータがネットワーク上で利用可能であることを確認する新しい方法が必要だからです。また、バリデータの役割を分離して、ブロック構築とブロック提案に分けることも必要です。 さらに、バリデータがブロブデータの小さなサブセットを検証したことを暗号的に証明する方法も必要になります。
-この 2 番目のステップは、[「ダンクシャーディング」](/roadmap/danksharding/)と呼ばれます。 完全に実装されるまでには、数年かかると予想されています。 ダンクシャーディングは、[ブロック構築とブロック提案を分離する](/roadmap/pbs)などの他の開発に依存しています。また、データが利用可能であることを効率的に確認するために、[データ可用性サンプリング(DAS)](/developers/docs/data-availability)と呼ばれる、数キロバイトのデータをランダムにサンプリングする新しいネットワーク設計も採用しています。
+この2番目のステップは、[「ダンクシャーディング」](/roadmap/danksharding/)と呼ばれます。 完全に実装されるまでには、数年かかると予想されています。 ダンクシャーディングは、[ブロック構築とブロック提案を分離する](/roadmap/pbs)などの他の開発に依存しています。また、データが利用可能であることを効率的に確認するために、[データ可用性サンプリング(DAS)](/developers/docs/data-availability)と呼ばれる、数キロバイトのデータをランダムにサンプリングする新しいネットワーク設計も採用しています。
ダンクシャーディングの詳細
diff --git a/public/content/translations/ja/roadmap/secret-leader-election/index.md b/public/content/translations/ja/roadmap/secret-leader-election/index.md
index 76c494e099f..85e4c933f25 100644
--- a/public/content/translations/ja/roadmap/secret-leader-election/index.md
+++ b/public/content/translations/ja/roadmap/secret-leader-election/index.md
@@ -10,34 +10,34 @@ summaryPoints:
# シークレットリーダー選出 {#single-secret-leader-election}
-現在の[プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos)ベースのコンセンサスメカニズムでは、今後のブロック提案者のリストが公開され、彼らの IP アドレスをマッピングすることが可能です。 そのため、攻撃者は、ブロックを提案する予定のバリデータを特定し、そのバリデータに対してサービス拒否(DOS)攻撃を仕掛けることで、時間通りにブロックの提案を行わせないように妨害することができます。
+現在の[プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos)ベースのコンセンサスメカニズムでは、今後のブロック提案者のリストが公開され、彼らのIPアドレスをマッピングすることが可能です。 そのため、攻撃者は、ブロックを提案する予定のバリデータを特定し、そのバリデータに対してサービス拒否(DOS)攻撃を仕掛けることで、時間通りにブロックの提案を行わせないように妨害することができます。
-この状況は、攻撃者にとって利益を得る機会になる可能性があります。 例えば、スロット`n+1`に選ばれたブロック提案者が、スロット`n`の提案者に対して DoS 攻撃を行うことで、ブロックを提案する機会を奪うことができます。 これにより、攻撃側のブロック提案者は、両方のスロットの MEV を抽出したり、2 つのブロックに分かれるはずだったすべてのトランザクションを 1 つのブロックにまとめたりすることで、関連するすべての手数料を独占できます。 この攻撃は、高度な方法を使って DOS 攻撃から防御することができる技術力の高い機関のバリデータよりも、一般的な家庭のバリデータに対して悪影響を与える可能性が高く、結果的にバリデータの集中化につながる可能性があります。
+この状況は、攻撃者にとって利益を得る機会になる可能性があります。 例えば、スロット`n+1`に選ばれたブロック提案者が、スロット`n`の提案者に対してDoS攻撃を行うことで、ブロックを提案する機会を奪うことができます。 これにより、攻撃側のブロック提案者は、両方のスロットのMEVを抽出したり、2つのブロックに分かれるはずだったすべてのトランザクションを1つのブロックにまとめたりすることで、関連するすべての手数料を独占できます。 この攻撃は、高度な方法を使ってDOS攻撃から防御することができる技術力の高い機関のバリデータよりも、一般的な家庭のバリデータに対して悪影響を与える可能性が高く、結果的にバリデータの集中化につながる可能性があります。
-この問題には、いくつかの解決策があります。 1 つは、[分散バリデータ技術](https://github.com/ethereum/distributed-validator-specs)です。これは、バリデータの実行に必要なさまざまなタスクを、冗長性のある複数のマシンに分散する技術です。これにより、攻撃者が特定のスロットでブロックの提案を妨害するのが難しくなります。 しかし、最も有効な解決策は、**シークレット・シングル・リーダー選出(SSLE)** です。
+この問題には、いくつかの解決策があります。 1つは、[分散バリデータ技術](https://github.com/ethereum/distributed-validator-specs)です。これは、バリデータの実行に必要なさまざまなタスクを、冗長性のある複数のマシンに分散する技術です。これにより、攻撃者が特定のスロットでブロックの提案を妨害するのが難しくなります。 しかし、最も有効な解決策は、**シークレット・シングル・リーダー選出(SSLE)** です。
## シークレット・シングル・リーダー選出 {#secret-leader-election}
-SSLE(シークレット・シングル・リーダー選出)では、選出されたバリデータのみが自分が選ばれたことを知ることができるように、高度な暗号化が使用されます。 これは、各バリデータが秘密に対するコミットメントを送信することで機能します。このコミットメントは、バリデータ全員で共有します。 コミットメントは、シャッフル、再構成され、誰もコミットメントをバリデータにマッピングすることはできませんが、各バリデータは自分に属するコミットメントを把握しています。 その後、ランダムに 1 つのコミットメントが選ばれます。 バリデータが自身のコミットメントが選ばれたことを確認すると、そのバリデータがブロックを提案する番になります。
+SSLE(シークレット・シングル・リーダー選出)では、選出されたバリデータのみが自分が選ばれたことを知ることができるように、高度な暗号化が使用されます。 これは、各バリデータが秘密に対するコミットメントを送信することで機能します。このコミットメントは、バリデータ全員で共有します。 コミットメントは、シャッフル、再構成され、誰もコミットメントをバリデータにマッピングすることはできませんが、各バリデータは自分に属するコミットメントを把握しています。 その後、ランダムに1つのコミットメントが選ばれます。 バリデータが自身のコミットメントが選ばれたことを確認すると、そのバリデータがブロックを提案する番になります。
このアイデアを実装した主要なものとして、[ウィスク](https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763)と呼ばれるものがあります。 ウィスクは、次のように機能します。
1. バリデータは共有シークレットにコミットします。 このコミットメントスキームでは、バリデータのアイデンティティにバインドできるように設計されています。また、第三者がこのバインドをリバースエンジニアリングして、特定のコミットメントを特定のバリデータに関連づけることができないようにランダム化することもできます。
-2. エポックの開始時に、RANDAO を用いて 16,384 のバリデータからランダムなバリデータセットが選択され、コミットメントがサンプリングされます。
-3. 次の 8182 スロット(1 日分)の間に、ブロック提案者は独自のプライベートエントロピーを使用して、コミットメントのサブセットをシャッフルし、ランダム化します。
-4. シャッフルが終了したら、RANDAO を使用して、コミットメントを順番に並べたリストを作成します。 このリストは、イーサリアムスロットにマッピングされます。
+2. エポックの開始時に、RANDAOを用いて16,384のバリデータからランダムなバリデータセットが選択され、コミットメントがサンプリングされます。
+3. 次の8182スロット(1日分)の間に、ブロック提案者は独自のプライベートエントロピーを使用して、コミットメントのサブセットをシャッフルし、ランダム化します。
+4. シャッフルが終了したら、RANDAOを使用して、コミットメントを順番に並べたリストを作成します。 このリストは、イーサリアムスロットにマッピングされます。
5. バリデータは、自身のコミットメントが特定のスロットに紐づいていることを確認し、そのスロットになったらブロックを提案します。
6. この手順を繰り返し行うことで、スロットに対するコミットメントの割り当ては、常に現在のスロットよりもはるかに先に進んでいきます。
-これにより、攻撃者は、次のブロックを提案する特定のバリデータが事前にわからないので、DOS 攻撃ができなくなります。
+これにより、攻撃者は、次のブロックを提案する特定のバリデータが事前にわからないので、DOS攻撃ができなくなります。
## シークレット・非シングル・リーダー選出(SnSLE) {#secret-non-single-leader-election}
-プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、シークレット・非シングル・リーダー選出(SnSLE)と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われている RANDAO 関数を活用すれば、簡単に実現できます。 RANDAO を使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLE において、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも 1 人の提案者が各スロットで有効なハッシュを生成する確率は 99.3%になります。
+プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、**シークレット・非シングル・リーダー選出(SnSLE)**と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われているRANDAO関数を活用すれば、簡単に実現できます。 RANDAOを使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLEにおいて、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも1人の提案者が各スロットで有効なハッシュを生成する確率は99.3%になります。
## 現在の進行状況 {#current-progress}
-SSLE と SnSLE はまだ研究段階にあるため、 仕様が決まっていません。 また、SSLE と SnSLE は競合しているので、両方が実装されるということはありません。 この提案をリリースするには、さらに研究開発を行い、プロトタイピングを作成した上で、公開テストネットで実装する必要があります。
+SSLEとSnSLEはまだ研究段階にあるため、 仕様が決まっていません。 また、SSLEとSnSLEは競合しているので、両方が実装されるということはありません。 この提案をリリースするには、さらに研究開発を行い、プロトタイピングを作成した上で、公開テストネットで実装する必要があります。
## 参考文献 {#further-reading}
diff --git a/public/content/translations/ja/roadmap/security/index.md b/public/content/translations/ja/roadmap/security/index.md
index 3c525979778..981c6e3c9a0 100644
--- a/public/content/translations/ja/roadmap/security/index.md
+++ b/public/content/translations/ja/roadmap/security/index.md
@@ -13,25 +13,25 @@ template: roadmap
## ステーキングの引き出し {#staking-withdrawals}
-イーサリアムのプルーフ・オブ・ワークからプルーフ・オブ・ステークへのアップグレードは、イーサリアムの先駆者たちが自分のイーサ(ETH)をデポジットコントラクトに「ステーキング」することで始まりました。 このステーキングに使われる ETH は、ネットワークの保護に使われます。 ただし、この ETH は、現時点ではロックされており、ユーザーに返すことはできません。 プルーフ・オブ・ステークのアップグレードでは、ステーキングした ETH の引き出しが可能になります。 これは、プルーフ・オブ・ステークのプロトコルが完全に機能するために重要な要素であり、ステーカーが ETH 報酬を自由に使えるようになることで、イーサリアムのセキュリティにも有益です。 なぜなら、ステーキングに流動性を求めるユーザーが、リキッドステーキングデリバティブ(LSD)に頼る必要がなくなるからです。LSD は、イーサリアムを集中化させる力になる可能性があります。 このアップグレードは、2023 年 4 月 12 日に完了する予定です。
+イーサリアムのプルーフ・オブ・ワークからプルーフ・オブ・ステークへのアップグレードは、イーサリアムの先駆者たちが自分のイーサ(ETH)をデポジットコントラクトに「ステーキング」することで始まりました。 このステーキングに使われるETHは、ネットワークの保護に使われます。 ただし、このETHは、現時点ではロックされており、ユーザーに返すことはできません。 プルーフ・オブ・ステークのアップグレードでは、ステーキングしたETHの引き出しが可能になります。 これは、プルーフ・オブ・ステークのプロトコルが完全に機能するために重要な要素であり、ステーカーがETH報酬を自由に使えるようになることで、イーサリアムのセキュリティにも有益です。 なぜなら、ステーキングに流動性を求めるユーザーが、リキッドステーキングデリバティブ(LSD)に頼る必要がなくなるからです。LSDは、イーサリアムを集中化させる力になる可能性があります。 このアップグレードは、2023年4月12日に完了する予定です。
引き出しについての詳細
## 攻撃からの防御 {#defending-against-attacks}
-引き出しが可能になった後にも、イーサリアムの[プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)のプロトコルにはいくつかの改善点があります。 1 つは、[ビューマージ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739)と呼ばれる、より安全なフォーク選択アルゴリズムです。 これにより、高度なタイプの攻撃をさらに防ぐことができます。
+引き出しが可能になった後にも、イーサリアムの[プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)のプロトコルにはいくつかの改善点があります。 1つは、[ビューマージ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739)と呼ばれる、より安全なフォーク選択アルゴリズムです。 これにより、高度なタイプの攻撃をさらに防ぐことができます。
-イーサリアムがブロックを確定させるまでの時間を短縮することで、ユーザーがより快適に利用できるようになります。また、攻撃者が、高度な「再編成」攻撃を行って直近のブロックの再シャッフルを試みることで、利益を得たり、特定のトランザクションを検閲しようとするのを防ぐことができます。 [**シングルスロット・ファイナリティ(SSF)**](/roadmap/single-slot-finality/)は、トランザクションが確定に至るまでの遅延時間を短縮する方法です。 現行のシステムでは、15 分以内に生成されたブロックは、理論上攻撃者が他のバリデータにブロックの再構成を誘導できます。 SSF では、この脆弱性が解消されます。 個人からアプリや取引所まで、全てのユーザーは、トランザクションが取り消されないという保証を迅速に受けられます。ネットワークでは、SSF によりあらゆる種類の攻撃を遮断することができます。
+イーサリアムがブロックを確定させるまでの時間を短縮することで、ユーザーがより快適に利用できるようになります。また、攻撃者が、高度な「再編成」攻撃を行って直近のブロックの再シャッフルを試みることで、利益を得たり、特定のトランザクションを検閲しようとするのを防ぐことができます。 [**シングルスロット・ファイナリティ(SSF)**](/roadmap/single-slot-finality/)は、トランザクションが確定に至るまでの遅延時間を短縮する方法です。 現行のシステムでは、15分以内に生成されたブロックは、理論上攻撃者が他のバリデータにブロックの再構成を誘導できます。 SSFでは、この脆弱性が解消されます。 個人からアプリや取引所まで、全てのユーザーは、トランザクションが取り消されないという保証を迅速に受けられます。ネットワークでは、SSFによりあらゆる種類の攻撃を遮断することができます。
シングルスロット・ファイナリティの詳細
## 検閲からの防御 {#defending-against-censorship}
-分散化は、個人や少数のグループのバリデータが、過剰な影響力を持ってしまうことを防ぐ効果があります。 新たなステーキングの技術は、イーサリアムのバリデータを可能な限り分散化した状態に保ち、ハードウェア、ソフトウェア、ネットワークの障害から保護します。 この新たなステーキングの技術では、複数のノード間でバリデータの責任を共有するソフトウェアも対象になっています。 これを、**分散バリデータ技術(DVT)**と呼びます。 DVT により、複数のコンピュータが共同で検証を行うことで、冗長性とフォールトトレランスが向上します。そのため、ステーキングプールでは、DVT の使用が推奨されています。 DVT では、バリデータ鍵を複数のシステムに分割します。これにより、1 つのオペレータが複数のバリデータを実行できなくなり、 不正なオペレータによるイーサリアムへ攻撃が困難になります。 つまり、バリデータを個人ではなく、*コミュニティ*全体で実行することで、セキュリティを高めるというアイデアです。
+分散化は、個人や少数のグループのバリデータが、過剰な影響力を持ってしまうことを防ぐ効果があります。 新たなステーキングの技術は、イーサリアムのバリデータを可能な限り分散化した状態に保ち、ハードウェア、ソフトウェア、ネットワークの障害から保護します。 この新たなステーキングの技術では、複数のノード間でバリデータの責任を共有するソフトウェアも対象になっています。 これを、**分散バリデータ技術(DVT)**と呼びます。 DVTにより、複数のコンピュータが共同で検証を行うことで、冗長性とフォールトトレランスが向上します。そのため、ステーキングプールでは、DVTの使用が推奨されています。 DVTでは、バリデータ鍵を複数のシステムに分割します。これにより、1つのオペレータが複数のバリデータを実行できなくなり、 不正なオペレータによるイーサリアムへ攻撃が困難になります。 つまり、バリデータを個人ではなく、_コミュニティ_全体で実行することで、セキュリティを高めるというアイデアです。
分散バリデータ技術の詳細
-**プロポーザー/ビルダーセパレーション(PBS)**の実装により、イーサリアムの検閲耐性が大幅に向上します。 PBS では、ブロックの作成とイーサリアムネットワーク全体へのブロードキャストを別々のバリデータが担います。 これにより、利益を最大化している専門家のブロック構築アルゴリズムによる利益の偏りを防ぎ、ネットワーク全体でより公平な利益分配を実現します。また、時間の経過とともに、最もパフォーマンスの高い機関投資家に**ステークが集中化することを防ぐ**ことができます。 ブロック提案者は、ブロックビルダーの市場から提供されたブロックの中から、最も収益性の高いものを選択できます。 しかし、検閲を行うためには、収益性の低いブロックを選択なければならない状況が頻繁に発生します。これは、**ネットワーク上の残りのバリデータにとっても利益が低く、経済的に不合理**な行為です。
+**プロポーザー/ビルダーセパレーション(PBS)**の実装により、イーサリアムの検閲耐性が大幅に向上します。 PBSでは、ブロックの作成とイーサリアムネットワーク全体へのブロードキャストを別々のバリデータが担います。 これにより、利益を最大化している専門家のブロック構築アルゴリズムによる利益の偏りを防ぎ、ネットワーク全体でより公平な利益分配を実現します。また、時間の経過とともに、最もパフォーマンスの高い機関投資家に**ステークが集中化することを防ぐ**ことができます。 ブロック提案者は、ブロックビルダーの市場から提供されたブロックの中から、最も収益性の高いものを選択できます。 しかし、検閲を行うためには、収益性の低いブロックを選択なければならない状況が頻繁に発生します。これは、**ネットワーク上の残りのバリデータにとっても利益が低く、経済的に不合理**な行為です。
イーサリアムの検閲耐性をさらに向上させるために、暗号化されたトランザクションや包含リストなどのアドオンが検討されています。 これらのアドオンを使うと、ブロックの構築者や提案者は、ブロックに含まれる実際のトランザクションを把握できなくなります。
@@ -39,10 +39,10 @@ template: roadmap
## バリデータの保護 {#protecting-validators}
-高度な攻撃者は、次に担当するバリデータを特定して、ブロックの提案を阻止するためにスパムを送信してくる可能性があります。これは**サービス拒否(DoS)攻撃**と呼ばれるものです。 [**シークレットリーダー選出(SLE)**](/roadmap/secret-leader-election)が実装されれば、ブロック提案者を事前に知ることができなくなるため、このタイプの攻撃から保護することができます。 SLE は、候補のブロック提案者を表す暗号コミットメントのセットを、継続的にシャッフルして順番を決め、その順番でバリデータを選択します。この方法により、バリデータは自分の順番を事前に知ることができます。
+高度な攻撃者は、次に担当するバリデータを特定して、ブロックの提案を阻止するためにスパムを送信してくる可能性があります。これは**サービス拒否(DoS)攻撃**と呼ばれるものです。 [**シークレットリーダー選出(SLE)**](/roadmap/secret-leader-election)が実装されれば、ブロック提案者を事前に知ることができなくなるため、このタイプの攻撃から保護することができます。 SLEは、候補のブロック提案者を表す暗号コミットメントのセットを、継続的にシャッフルして順番を決め、その順番でバリデータを選択します。この方法により、バリデータは自分の順番を事前に知ることができます。
シークレットリーダー選出の詳細
## 現在の進行状況 {#current-progress}
-ロードマップ上のセキュリティアップグレードの研究は進んでいますが、実装にはまだ時間がかかりそうです。 ビューマージ、PBS、SSF、SLE における次のステップは、仕様を決定し、プロトタイプの構築を開始することです。
+ロードマップ上のセキュリティアップグレードの研究は進んでいますが、実装にはまだ時間がかかりそうです。 ビューマージ、PBS、SSF、SLEにおける次のステップは、仕様を決定し、プロトタイプの構築を開始することです。
diff --git a/public/content/translations/ja/roadmap/single-slot-finality/index.md b/public/content/translations/ja/roadmap/single-slot-finality/index.md
index ba528957ef4..789329f292f 100644
--- a/public/content/translations/ja/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/ja/roadmap/single-slot-finality/index.md
@@ -6,61 +6,61 @@ lang: ja
# シングルスロット・ファイナリティ {#single-slot-finality}
-イーサリアムのブロックが確定するまで、約 15 分かかります。 しかし、イーサリアムのコンセンサスメカニズムでブロックをより効率的に検証することで、ファイナリティまでの時間を大幅に短縮することができます。 15 分間待つ必要はなく、同じスロット内でブロックが提案され、確定することができます。 このコンセプトは、**シングルスロット・ファイナリティ(SSF)**と呼ばれます。
+イーサリアムのブロックが確定するまで、約15分かかります。 しかし、イーサリアムのコンセンサスメカニズムでブロックをより効率的に検証することで、ファイナリティまでの時間を大幅に短縮することができます。 15分間待つ必要はなく、同じスロット内でブロックが提案され、確定することができます。 このコンセプトは、**シングルスロット・ファイナリティ(SSF)**と呼ばれます。
## ファイナリティとは {#what-is-finality}
-ファイナリティとは、イーサリアムの新しいコンセンサスメカニズムであるプルーフ・オブ・ステークにおいて、ステークされた ETH 全体の少なくとも 33%をバーンしない限り、ブロックを変更したり、ブロックチェーンから削除したりできないことを保証する仕組みです。 これは、「暗号経済」を利用したセキュリティです。チェーンの順序や内容を変更する際に非常に高いコストがかかるため、合理的な経済主体がチェーンを変更しようとする試みを防ぐことができます。
+ファイナリティとは、イーサリアムの新しいコンセンサスメカニズムであるプルーフ・オブ・ステークにおいて、ステークされたETH全体の少なくとも33%をバーンしない限り、ブロックを変更したり、ブロックチェーンから削除したりできないことを保証する仕組みです。 これは、「暗号経済」を利用したセキュリティです。チェーンの順序や内容を変更する際に非常に高いコストがかかるため、合理的な経済主体がチェーンを変更しようとする試みを防ぐことができます。
## ファイナリティを短縮する理由 {#why-aim-for-quicker-finality}
-現在のファイナリティに至るまでの時間は、長すぎることが判明しています。 ほとんどのユーザーは、ファイナリティに至るまで 15 分待つことも嫌がります。高いトランザクションスループットを必要とするアプリや取引所でも、トランザクションが永続的になったことを確認するために、長い間待たなければならなりません。 ブロックの提案とファイナリティの間に遅延があると、攻撃者が特定のブロックを検閲したり、MEV を抽出したりするなど、ショートレンジの再編成の機会が生じてしまいます。 ブロックを段階的にアップグレードするメカニズムも非常に複雑で、セキュリティの脆弱性を解消するために何度もパッチが当てられており、イーサリアムのコードベースの中でちょっとしたバグが入りやすい部分の 1 つです。 これらの問題は、ファイナリティに至るまでの時間を単一のスロットに短縮することで、すべて解決できます。
+現在のファイナリティに至るまでの時間は、長すぎることが判明しています。 ほとんどのユーザーは、ファイナリティに至るまで15分待つことも嫌がります。高いトランザクションスループットを必要とするアプリや取引所でも、トランザクションが永続的になったことを確認するために、長い間待たなければならなりません。 ブロックの提案とファイナリティの間に遅延があると、攻撃者が特定のブロックを検閲したり、MEVを抽出したりするなど、ショートレンジの再編成の機会が生じてしまいます。 ブロックを段階的にアップグレードするメカニズムも非常に複雑で、セキュリティの脆弱性を解消するために何度もパッチが当てられており、イーサリアムのコードベースの中でちょっとしたバグが入りやすい部分の1つです。 これらの問題は、ファイナリティに至るまでの時間を単一のスロットに短縮することで、すべて解決できます。
## 分散化・時間・オーバーヘッドのトレードオフ {#the-decentralization-time-overhead-tradeoff}
-ファイナリティ保証は、新しいブロックの即時のプロパティではありません。 新しいブロックがファイナライズされるまでには時間がかかります。 時間がかかる理由は、ネットワーク上でステーキングされた ETH の合計の 3 分の 2 以上に相当するバリデータが、ブロックをファイナライズするために投票(「証明」)する必要があるからです。 ネットワーク上の各バリデータノードは、他のノードから送られるアテステーションを処理して、ブロックが 3 分の 2 のしきい値に達したかどうかを確認する必要があります。
+ファイナリティ保証は、新しいブロックの即時のプロパティではありません。 新しいブロックがファイナライズされるまでには時間がかかります。 時間がかかる理由は、ネットワーク上でステーキングされたETHの合計の3分の2以上に相当するバリデータが、ブロックをファイナライズするために投票(「証明」)する必要があるからです。 ネットワーク上の各バリデータノードは、他のノードから送られるアテステーションを処理して、ブロックが3分の2のしきい値に達したかどうかを確認する必要があります。
ファイナライズに達するまでの時間が短くなるほど、アテステーションの処理を速く実行する必要があるため、各ノードでより高いコンピューティングパワーが必要になります。 また、ネットワーク上のバリデータノードの数が増えるほど、各ブロックごとに処理するアテステーションが増えるため、必要な処理能力も増加します。 より高い処理能力が必要になると、バリデータノードを実行するために必要なハードウェアの費用が高くなるため、参加できる人が減ってしまいます。 一方、ブロックの間隔を長くすると、各ノードで必要なコンピューティングパワーは減りますが、アテステーションの処理が遅くなるため、ファイナリティに至るまでの時間が長くなります。
-したがって、オーバーヘッド(コンピューティングパワー)、分散化(チェーンの検証に参加できるノードの数)、ファイナリティまでの時間の間にトレードオフがあります。 理想的なシステムでは、最小のコンピューティングパワー、最大の分散化、ファイナリティに達する最短の時間というように、3 つのパラメータを最適なバランスで実現することが重要です。
+したがって、オーバーヘッド(コンピューティングパワー)、分散化(チェーンの検証に参加できるノードの数)、ファイナリティまでの時間の間にトレードオフがあります。 理想的なシステムでは、最小のコンピューティングパワー、最大の分散化、ファイナリティに達する最短の時間というように、3つのパラメータを最適なバランスで実現することが重要です。
-イーサリアムの現在のコンセンサスメカニズムでは、次のように、これら 3 つのパラメータのバランスを取っています。
+イーサリアムの現在のコンセンサスメカニズムでは、次のように、これら3つのパラメータのバランスを取っています。
-- **最小ステークを 32ETH に設定。** これにより、個々のノードが処理する必要があるバリデータのアテステーションの上限数が設定されます。よって、各ノードの計算要件の上限も設定されます。
-- **ファイナリティまでの時間を約 15 分に設定。** これにより、一般的な家庭用コンピュータで実行されるバリデータが各ブロックのアテステーションを安全に処理するのに十分な時間が与えられます。
+- **最小ステークを32ETHに設定。** これにより、個々のノードが処理する必要があるバリデータのアテステーションの上限数が設定されます。よって、各ノードの計算要件の上限も設定されます。
+- **ファイナリティまでの時間を約15分に設定。** これにより、一般的な家庭用コンピュータで実行されるバリデータが各ブロックのアテステーションを安全に処理するのに十分な時間が与えられます。
-現在の仕組みでは、ファイナリティまでの時間を短くするには、ネットワーク上のバリデータの数を減らすか、各ノードのハードウェア要件を増やす必要があります。 ただし、各ノードのオーバーヘッドを増加させることなく、より多くのアテステーションをカウントできるように処理方法を改善することができます。 これにより、2 つのエポックにまたがることなく、単一スロット内でファイナリティを決定できるようになります。
+現在の仕組みでは、ファイナリティまでの時間を短くするには、ネットワーク上のバリデータの数を減らすか、各ノードのハードウェア要件を増やす必要があります。 ただし、各ノードのオーバーヘッドを増加させることなく、より多くのアテステーションをカウントできるように処理方法を改善することができます。 これにより、2つのエポックにまたがることなく、単一スロット内でファイナリティを決定できるようになります。
-## SSF への道筋 {#routes-to-ssf}
+## SSFへの道筋 {#routes-to-ssf}
-現在のコンセンサスメカニズムでは、委員会と呼ばれているものが複数のバリデータからのアテステーションをまとめて、ブロックを検証するために各バリデータが処理しなければならないメッセージの数を減らしています。 各バリデータは、各エポック(32 スロット)で証明する機会がありますが、各スロットでは、バリデータのサブセットのみが証明を行います。このサブセットを「委員会」と呼びます。 委員会は、複数のバリデータが「アグリゲータ」として選択され、サブネットに分割されることによって選ばれます。 これらのアグリゲータはそれぞれ、サブネット内の他のバリデータから受け取ったすべての署名を、1 つの集約された署名にまとめます。 個々のコントリビューションを最も多いアグリゲータが、その集約された署名をブロック提案者に渡します。ブロック提案者は、その署名を、他の委員会から受け取った集約された署名とともに、ブロックにまとめます。
+現在のコンセンサスメカニズムでは、委員会と呼ばれているものが複数のバリデータからのアテステーションをまとめて、ブロックを検証するために各バリデータが処理しなければならないメッセージの数を減らしています。 各バリデータは、各エポック(32スロット)で証明する機会がありますが、各スロットでは、バリデータのサブセットのみが証明を行います。このサブセットを「委員会」と呼びます。 委員会は、複数のバリデータが「アグリゲータ」として選択され、サブネットに分割されることによって選ばれます。 これらのアグリゲータはそれぞれ、サブネット内の他のバリデータから受け取ったすべての署名を、1つの集約された署名にまとめます。 個々のコントリビューションを最も多いアグリゲータが、その集約された署名をブロック提案者に渡します。ブロック提案者は、その署名を、他の委員会から受け取った集約された署名とともに、ブロックにまとめます。
-このプロセスでは、「32 スロット × 64 の委員会 × 委員会あたり 256 のバリデータ = エポックあたり 524,288 のバリデータ」となり、各バリデータが各エポックで投票する十分な容量を提供します。 執筆時点(2023 年 2 月)では、約 513,000 ものバリデータが存在しています。
+このプロセスでは、「32スロット × 64の委員会 × 委員会あたり256のバリデータ = エポックあたり524,288のバリデータ」となり、各バリデータが各エポックで投票する十分な容量を提供します。 執筆時点(2023年2月)では、約513,000ものバリデータが存在しています。
このスキームにおいて、ブロックに投票するには、すべてのバリデータがエポック全体でアテステーションを分配する必要があります。 しかしながら、各バリデータが各スロットで証明できるように、このメカニズムを改善する実現可能な方法があります。
-イーサリアムのコンセンサスメカニズムが設計された当初、署名集約スキーム(BLS)のスケーラビリティは懸念されていましたが、その後の研究により、BLS は当初考えられていたよりもはるかにスケーラブルであることがわかりました。また、クライアントにおける署名の処理および検証の処理能力も向上したことで、 バリデータから送られる膨大な数のアテステーションの処理が、現実的に 1 つのスロット内で可能になりました。 例えば、100 万のバリデータが各スロットで 2 回投票し、スロットの時間を 16 秒に調節している場合、スロットあたり 100 万のアテステーションを処理するためには、ノードは 1 秒に最低 125,000 もの集約に対して署名を検証する必要があります。 実際には、一般的なコンピュータが 1 つの署名を検証するのに約 500 ナノ秒かかるので、125,000 の署名の検証は約 62.5 ミリ秒で完了します。これは、1 秒のしきい値をはるかに下回っています。
+イーサリアムのコンセンサスメカニズムが設計された当初、署名集約スキーム(BLS)のスケーラビリティは懸念されていましたが、その後の研究により、BLSは当初考えられていたよりもはるかにスケーラブルであることがわかりました。また、クライアントにおける署名の処理および検証の処理能力も向上したことで、 バリデータから送られる膨大な数のアテステーションの処理が、現実的に1つのスロット内で可能になりました。 例えば、100万のバリデータが各スロットで2回投票し、スロットの時間を16秒に調節している場合、スロットあたり100万のアテステーションを処理するためには、ノードは1秒に最低125,000もの集約に対して署名を検証する必要があります。 実際には、一般的なコンピュータが1つの署名を検証するのに約500ナノ秒かかるので、125,000の署名の検証は約62.5ミリ秒で完了します。これは、1秒のしきい値をはるかに下回っています。
-スーパー委員会を設けることで、効率性がさらに向上する可能性があります。具体的には、125,000 ものバリデータをスロットごとにランダムに選択するなどです。 このバリデータのサブセットのみがブロックに対して投票できるため、ブロックがファイナライズされるかどうかを決定できるのです。 このアイデアが受け入れられるかどうかは、イーサリアムへの攻撃の成功に必要なコストを、コミュニティがどの程度高く設定するかにかかっています。 現在の仕様では、ステーキングされた総イーサの 3 分の 2 が必要ですが、このアイデアでは、*スーパー委員会*内でステーキングされたイーサの 3 分の 2 を使って不正なブロックをファイナライズさせる可能性があるためです。 これはまだ研究中の分野ですが、そもそもスーパー委員会を必要とするほどの大きなバリデータセットの場合、そのサブ委員会のいずれかを攻撃するコストが非常に高くなると考えられます(例: ETH 建ての攻撃コストは、`2/3 * 125,000 * 32 = ~2.6 million ETH`になります)。 攻撃のコストは、バリデータセットのサイズを増やすことで調整可能です(例: 攻撃のコストを 100 万 ETH、400 万 ETH、1000 万 ETH などにするために、バリデータのサイズを調整する等) 。 コミュニティの[事前調査](https://youtu.be/ojBgyFl6-v4?t=755)によると、100 万から 200 万イーサが許容可能な攻撃コストです。この場合、スーパー委員会ごとのバリデータ数は、約 65,536 ~ 97,152 になります。
+スーパー委員会を設けることで、効率性がさらに向上する可能性があります。具体的には、125,000ものバリデータをスロットごとにランダムに選択するなどです。 このバリデータのサブセットのみがブロックに対して投票できるため、ブロックがファイナライズされるかどうかを決定できるのです。 このアイデアが受け入れられるかどうかは、イーサリアムへの攻撃の成功に必要なコストを、コミュニティがどの程度高く設定するかにかかっています。 現在の仕様では、ステーキングされた総イーサの3分の2が必要ですが、このアイデアでは、_スーパー委員会_内でステーキングされたイーサの3分の2を使って不正なブロックをファイナライズさせる可能性があるためです。 これはまだ研究中の分野ですが、そもそもスーパー委員会を必要とするほどの大きなバリデータセットの場合、そのサブ委員会のいずれかを攻撃するコストが非常に高くなると考えられます(例: ETH建ての攻撃コストは、`2/3 * 125,000 * 32 = ~2.6 million ETH`になります)。 攻撃のコストは、バリデータセットのサイズを増やすことで調整可能です(例: 攻撃のコストを100万ETH、400万ETH、1000万ETHなどにするために、バリデータのサイズを調整する等) 。 コミュニティの[事前調査](https://youtu.be/ojBgyFl6-v4?t=755)によると、100万から200万イーサが許容可能な攻撃コストです。この場合、スーパー委員会ごとのバリデータ数は、約65,536~97,152になります。
-しかし、検証自体はボトルネックではありません。バリデータノードにとって実際に問題となるのは、署名の集約です。 署名の集約をスケールするには、各サブネットのバリデータの数を増やす、サブネットの数を増やす、集約レイヤーを追加する(つまり、委員会の委員会を実装する)などの方法が考えられます。 解決策の 1 つとして、専門のアグリゲーターを許可する方法があります。これは、プロポーザー/ビルダーセパレーション(PBS)とダンクシャーディングの環境下で、ブロック構築とロールアップデータのコミットメント生成を専門のブロックビルダーにアウトソーシングするのと似た方法です。
+しかし、検証自体はボトルネックではありません。バリデータノードにとって実際に問題となるのは、署名の集約です。 署名の集約をスケールするには、各サブネットのバリデータの数を増やす、サブネットの数を増やす、集約レイヤーを追加する(つまり、委員会の委員会を実装する)などの方法が考えられます。 解決策の1つとして、専門のアグリゲーターを許可する方法があります。これは、プロポーザー/ビルダーセパレーション(PBS)とダンクシャーディングの環境下で、ブロック構築とロールアップデータのコミットメント生成を専門のブロックビルダーにアウトソーシングするのと似た方法です。
-## SSF におけるフォーク選択ルールの役割 {#role-of-the-fork-choice-rule}
+## SSFにおけるフォーク選択ルールの役割 {#role-of-the-fork-choice-rule}
-現在のコンセンサスメカニズムでは、ファイナリティガジェット(バリデータの 3 分の 2 がチェーンを証明したかどうかを判断するアルゴリズム)とフォーク選択ルール(複数のチェーンが存在する場合に、どのチェーンが正しいかを判断するアルゴリズム)が密接に連携して動作しています。 フォーク選択アルゴリズムでは、 最後にファイナライズしたブロック*以降*のブロックのみが対象と見なされます。 SSF では、ブロックが提案されると同時に、そのスロットのファイナリティが発生します。そのため、フォーク選択ルールが適用されるブロックがありません。 つまり、SSF では、フォーク選択アルゴリズム*または*ファイナリティガジェットの*いずれか*が常に有効です。 ファイナリティガジェットは、3 分の 2 のバリデータがオンラインで、ブロックが正しいことが証明された場合に、そのブロックを確定します。 ブロックが 3 分の 2 のしきい値を超えることができない場合は、フォーク選択ルールが作動して、どのチェーンに従うかを決定します。 多少のニュアンスが追加されるものの、バリデータの 3 分の 1 以上がオフラインになった場合でも、チェーンを回復する非アクティブリークメカニズムを維持する機会も生まれます。
+現在のコンセンサスメカニズムでは、ファイナリティガジェット(バリデータの3分の2がチェーンを証明したかどうかを判断するアルゴリズム)とフォーク選択ルール(複数のチェーンが存在する場合に、どのチェーンが正しいかを判断するアルゴリズム)が密接に連携して動作しています。 フォーク選択アルゴリズムでは、 最後にファイナライズしたブロック_以降_のブロックのみが対象と見なされます。 SSFでは、ブロックが提案されると同時に、そのスロットのファイナリティが発生します。そのため、フォーク選択ルールが適用されるブロックがありません。 つまり、SSFでは、フォーク選択アルゴリズム_または_ファイナリティガジェットの_いずれか_が常に有効です。 ファイナリティガジェットは、3分の2のバリデータがオンラインで、ブロックが正しいことが証明された場合に、そのブロックを確定します。 ブロックが3分の2のしきい値を超えることができない場合は、フォーク選択ルールが作動して、どのチェーンに従うかを決定します。 多少のニュアンスが追加されるものの、バリデータの3分の1以上がオフラインになった場合でも、チェーンを回復する非アクティブリークメカニズムを維持する機会も生まれます。
## 未解決の問題 {#outstanding-issues}
-サブネットごとのバリデータ数を増やすことで集約をスケーリングする際の問題は、ピアツーピアネットワークの負荷が増大することです。 また、集約レイヤーを追加すると、エンジニアリングが非常に複雑になり、レイテンシーが増加します(つまり、ブロック提案者が全てのサブネットアグリゲーターからのメッセージを受信するまでに時間がかかる可能性があります)。 BLS 署名集約を使用しても、ネットワーク上にアクティブなバリデータが多数存在する場合、各スロット内で処理できる数を超えてしまう可能性があります。その場合の対応方法は明らかになっていません。 1 つの解決策として考えられるのは、全バリデータが各スロットで証明を行い、SSF において委員会を廃止し、有効残高の 32ETH 上限を撤廃することです。つまり、複数のバリデータを管理するオペレータは、ステークを統合して実行回数を減らし、バリデータノードはバリデータセット全体を構成することで処理するメッセージの数を減らすことができます。 大規模なステーカーがバリデータを統合することに同意することで、この問題は解決します。 また、バリデータの数やステーキングされた ETH の量に一定の上限を設けることも可能ですが、 その場合は、参加を許可するバリデータを選ぶ何らかのメカニズムが必要になるため、望ましくない二次的な影響が生じる可能性があります。
+サブネットごとのバリデータ数を増やすことで集約をスケーリングする際の問題は、ピアツーピアネットワークの負荷が増大することです。 また、集約レイヤーを追加すると、エンジニアリングが非常に複雑になり、レイテンシーが増加します(つまり、ブロック提案者が全てのサブネットアグリゲーターからのメッセージを受信するまでに時間がかかる可能性があります)。 BLS署名集約を使用しても、ネットワーク上にアクティブなバリデータが多数存在する場合、各スロット内で処理できる数を超えてしまう可能性があります。その場合の対応方法は明らかになっていません。 1つの解決策として考えられるのは、全バリデータが各スロットで証明を行い、SSFにおいて委員会を廃止し、有効残高の32ETH上限を撤廃することです。つまり、複数のバリデータを管理するオペレータは、ステークを統合して実行回数を減らし、バリデータノードはバリデータセット全体を構成することで処理するメッセージの数を減らすことができます。 大規模なステーカーがバリデータを統合することに同意することで、この問題は解決します。 また、バリデータの数やステーキングされたETHの量に一定の上限を設けることも可能ですが、 その場合は、参加を許可するバリデータを選ぶ何らかのメカニズムが必要になるため、望ましくない二次的な影響が生じる可能性があります。
## 現在の進行状況 {#current-progress}
-SSF はまだ研究段階です。 [バークルツリー](/roadmap/verkle-trees/)や[ダンクシャーディング](/roadmap/danksharding])などの他の大きなアップグレードが完了してから、数年後になるかもしれません。
+SSFはまだ研究段階です。 [バークルツリー](/roadmap/verkle-trees/)や[ダンクシャーディング](/roadmap/danksharding/)などの他の大きなアップグレードが完了してから、数年後になるかもしれません。
## 参考文献 {#further-reading}
-- [ヴィタリックによる EDCON 2022 での SSF の説明](https://www.youtube.com/watch?v=nPgUKNPWXNI)
+- [ヴィタリックによるEDCON 2022でのSSFの説明](https://www.youtube.com/watch?v=nPgUKNPWXNI)
- [ヴィタリックのノート: シングルスロット・ファイナリティへの道](https://notes.ethereum.org/@vbuterin/single_slot_finality)
diff --git a/public/content/translations/ja/roadmap/statelessness/index.md b/public/content/translations/ja/roadmap/statelessness/index.md
index 182b724204a..d95b07803fc 100644
--- a/public/content/translations/ja/roadmap/statelessness/index.md
+++ b/public/content/translations/ja/roadmap/statelessness/index.md
@@ -8,7 +8,7 @@ lang: ja
真に分散化するためには、一般的なハードウェアでイーサリアムノードを実行できることが重要です。 なぜなら、ユーザーがノードを実行することで、サードパーティにデータを供給してもらうのではなく、自身で暗号チェックを行って情報を検証できるからです。 また、ノードを実行することで、仲介者を介することなく、イーサリアムのピアツーピアネットワークに直接トランザクションを送信できます。 これらの利点を享受できるのが高価なハードウェアを使用するユーザーだけだと、分散化は実現できません。 そのため、ノードは、携帯電話やマイクロコンピュータ、家庭用コンピュータでも問題なく動作できるように、処理要件やメモリ要件を極力抑えて実行する必要があります。
-現在のイーサリアムでは、ノードへのユニバーサルアクセスを妨げている主な障壁は、高いディスク容量要件です。 これは主に、イーサリアムの状態データの大部分を保存する必要があることに起因しています。 状態データには、新しいブロックとトランザクションを正しく処理するために必要となる重要な情報が含まれています。 この記事の執筆時点では、イーサリアムのフルノードを実行するには、2TB の高速 SSD が推奨されています。 古いデータをプルーニングしないノードの場合、ストレージ容量は週に約 14GB ずつ増加していきます。誕生以降のすべてのデータを保存するアーカイブノードでは、現在 12TB 近くの容量が必要です(この記事は 2023 年 2 月に執筆されました)。
+現在のイーサリアムでは、ノードへのユニバーサルアクセスを妨げている主な障壁は、高いディスク容量要件です。 これは主に、イーサリアムの状態データの大部分を保存する必要があることに起因しています。 状態データには、新しいブロックとトランザクションを正しく処理するために必要となる重要な情報が含まれています。 この記事の執筆時点では、イーサリアムのフルノードを実行するには、2TBの高速SSDが推奨されています。 古いデータをプルーニングしないノードの場合、ストレージ容量は週に約14GBずつ増加していきます。誕生以降のすべてのデータを保存するアーカイブノードでは、現在12TB近くの容量が必要です(この記事は2023年2月に執筆されました)。
古いデータは安価なハードドライブで保存できますが、新しいこれから受信するブロックを処理するには遅すぎます。 イーサリアムの状態は「無限」に増えるため、現在のクライアントのストレージ設計を維持したまま、データをより安価で保存できるようにしても、問題の根本的な解決にはなりません。つまり、ストレージ要件は今後も増加する可能性があり、技術的な改善は常に求められます。また、状態の肥大化に追いつくためにも、継続的な努力が必要です。 そのため、クライアントは、ローカルデータベースによるデータの検索に依存しない、ブロックとトランザクションを検証する新しい方法を見つける必要があります。
@@ -16,7 +16,7 @@ lang: ja
各ノードが保存する必要があるデータ量を削減するには、以下の方法があります。それぞれ異なる範囲でイーサリアムのコアプロトコルを更新する必要があります。
-- **履歴の有効期限**: イーサリアムクライアントの状態データを処理する方法自体は変更しませんが、ノードが X ブロックよりも古い状態データを破棄できるようにします。
+- **履歴の有効期限**: イーサリアムクライアントの状態データを処理する方法自体は変更しませんが、ノードがXブロックよりも古い状態データを破棄できるようにします。
- **状態の有効期限**: 頻繁に使用されない状態データを非アクティブにすることができます。 非アクティブなデータは、復元されない限りクライアントによって無視されます。
- **弱いステートレス**: ブロック作成者のみが、すべての状態データにアクセスする必要があり、他のノードはローカル状態データベースがなくても、ブロックを検証できます。
- **強いステートレス**: すべての状態データにアクセスするノードが不要になります。
@@ -25,13 +25,13 @@ lang: ja
### 履歴の有効期限 {#history-expiry}
-履歴の有効期限とは、クライアントが必要性の低い古いデータを削除することです。少量の履歴データは少量しか保存しないため、新しいデータが到着すると古いデータを削除します。 クライアントが履歴データを必要とする理由は、2 つあります。1 つはデータの同期、もう 1 つはデータのリクエストの処理です。 もともとクライアントでは、始まりのブロックから同期することで、連続する各ブロックがチェーンの先頭に至るまで正しく追加されていることを検証する必要がありました。 しかし、現在のクライアントでは、「弱い主観性チェックポイント」と呼ばれる方法を使って、チェーンの先頭にたどり着くまでの時間を短縮しています。 これらのチェックポイントは、イーサリアムの始まりではなく、現在に近い始まりのブロックを基準にしているため、信頼できる開始点となります。 つまり、最新の弱い主観性チェックポイントより前のすべての情報は、 クライアントがチェーンの先頭へ同期する機能に影響を与えることなく削除できるということです。 現在のクライアントは、ローカルデータベースから履歴データを取得することで、(JSON-RPC 経由で届く)履歴データのリクエストを処理しています。 ただし、履歴の有効期限が切れると、リクエストされたデータが削除されている場合は、履歴データを取得できません。 この履歴データを提供するには、いくつかの革新的なソリューションが必要です。
+履歴の有効期限とは、クライアントが必要性の低い古いデータを削除することです。少量の履歴データは少量しか保存しないため、新しいデータが到着すると古いデータを削除します。 クライアントが履歴データを必要とする理由は、2つあります。1つはデータの同期、もう1つはデータのリクエストの処理です。 もともとクライアントでは、始まりのブロックから同期することで、連続する各ブロックがチェーンの先頭に至るまで正しく追加されていることを検証する必要がありました。 しかし、現在のクライアントでは、「弱い主観性チェックポイント」と呼ばれる方法を使って、チェーンの先頭にたどり着くまでの時間を短縮しています。 これらのチェックポイントは、イーサリアムの始まりではなく、現在に近い始まりのブロックを基準にしているため、信頼できる開始点となります。 つまり、最新の弱い主観性チェックポイントより前のすべての情報は、 クライアントがチェーンの先頭へ同期する機能に影響を与えることなく削除できるということです。 現在のクライアントは、ローカルデータベースから履歴データを取得することで、(JSON-RPC経由で届く)履歴データのリクエストを処理しています。 ただし、履歴の有効期限が切れると、リクエストされたデータが削除されている場合は、履歴データを取得できません。 この履歴データを提供するには、いくつかの革新的なソリューションが必要です。
-履歴データを取得する方法の 1 つは、クライアントがポータルネットワークなどのソリューションを介して、ピアから履歴データをリクエストすることです。 ポータルネットワークは、まだ開発中ではありますが、履歴データを提供するピアツーピアネットワークです。各ノードは、イーサリアムの履歴の一部を保存し、履歴全体がネットワーク全体に分散されるようにします。 履歴データのリクエストは、関連するデータを保存しているピアを探し出し、そのピアからデータを取得することで処理されます。 また、履歴データへのアクセスを必要とするのは、通常アプリであるため、アプリがデータを保存する役割を担うかもしれません。 イーサリアム空間には、履歴のアーカイブを維持したいという利他的なアクターが十分に存在する可能性があります。 履歴データストレージを管理するための DAO が立ち上がる可能性もあります。あるいは、これらすべての選択肢を組み合わせた理想的な方法があるかもしれません。 これらのプロバイダは、トレント、FTP、Filecoin、IPFS など、様々な方法でデータを提供することが考えられます。
+履歴データを取得する方法の1つは、クライアントがポータルネットワークなどのソリューションを介して、ピアから履歴データをリクエストすることです。 ポータルネットワークは、まだ開発中ではありますが、履歴データを提供するピアツーピアネットワークです。各ノードは、イーサリアムの履歴の一部を保存し、履歴全体がネットワーク全体に分散されるようにします。 履歴データのリクエストは、関連するデータを保存しているピアを探し出し、そのピアからデータを取得することで処理されます。 また、履歴データへのアクセスを必要とするのは、通常アプリであるため、アプリがデータを保存する役割を担うかもしれません。 イーサリアム空間には、履歴のアーカイブを維持したいという利他的なアクターが十分に存在する可能性があります。 履歴データストレージを管理するためのDAOが立ち上がる可能性もあります。あるいは、これらすべての選択肢を組み合わせた理想的な方法があるかもしれません。 これらのプロバイダは、トレント、FTP、Filecoin、IPFSなど、様々な方法でデータを提供することが考えられます。
履歴の有効期限を実装することについては、多少の議論があります。イーサリアムはこれまで、履歴データが常に利用可能であることを暗黙的に保証してきました。 そのため、誕生からのフル同期は、過去のデータの再構築にスナップショットを利用する場合でも、標準として常に可能になっています。 履歴の有効期限があることで、イーサリアムコアプロトコルは履歴データの保証責任を放棄します。 こうして、過去データを提供するのが中央集権的な組織になってしまうと、新たな検閲リスクが生じる可能性があります。
-EIP-4444 は、現在も活発な議論が行われており、まだリリースする準備はできていません。 EIP-4444 の課題は、技術的なものではなく、そのほとんどがコミュニティ管理に関するものであることが興味深い点です。 この機能をリリースするには、単なる合意だけでなく、信頼できるエンティティによる履歴データの保存および提供の約束を含めたコミュニティの賛同が必要になります。
+EIP-4444は、現在も活発な議論が行われており、まだリリースする準備はできていません。 EIP-4444の課題は、技術的なものではなく、そのほとんどがコミュニティ管理に関するものであることが興味深い点です。 この機能をリリースするには、単なる合意だけでなく、信頼できるエンティティによる履歴データの保存および提供の約束を含めたコミュニティの賛同が必要になります。
このアップグレードは、イーサリアムノードにおける状態データの扱いを大きく変えるものではありません。あくまでも、履歴データへのアクセス方法を変更するだけです。
@@ -44,7 +44,7 @@ EIP-4444 は、現在も活発な議論が行われており、まだリリー
レンタル料による有効期限の場合、データベースをアクティブ状態に維持するためには、アカウントに直接貸し出すことが考えられます。 時間による有効期限の場合、最後のアカウント操作から有効期限をカウントダウンによるものか、すべてのアカウントの定期的な有効期限切れによるものか、いずれの可能性も考えられます また、時間ベースのモデルとレンタル料ベースのモデルの両方の要素を組み合わせたメカニズムも考えられます。例えば、各アカウントは、時間ベースの有効期限が切れる前に少額の料金を支払いをすることで、アクティブな状態を維持できる等です。 状態の有効期限が切れても、非アクティブな状態は**削除されない**ことに注意してください。アクティブな状態とは別に保存されます。 また、非アクティブな状態をアクティブに戻すこともできます。
-この機能を実現するには、約 1 年間の状態ツリーが必要です。 新たな期間が開始するたびに、新たな状態ツリーが作成されます。 現在の状態ツリーのみ変更でき、以前のものは変更できません。 イーサリアムノードでは、現在の状態ツリーと次の最新の状態ツリーのみを保持する予定です。 そのためには、アドレスにその存在期間をタイムスタンプする方法が必要になります。 [いくつかの方法](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607)が考えられますが、有力な方法としては、追加情報を格納できるように[アドレスを長くするよう](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485)要求することです。これにより、アドレスが長くなるほど安全性が高まるという利点も追加されます。 このロードマップアイテムは、[アドレス空間拡張](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485)と呼ばれます。
+この機能を実現するには、約1年間の状態ツリーが必要です。 新たな期間が開始するたびに、新たな状態ツリーが作成されます。 現在の状態ツリーのみ変更でき、以前のものは変更できません。 イーサリアムノードでは、現在の状態ツリーと次の最新の状態ツリーのみを保持する予定です。 そのためには、アドレスにその存在期間をタイムスタンプする方法が必要になります。 [いくつかの方法](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607)が考えられますが、有力な方法としては、追加情報を格納できるように[アドレスを長くするよう](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485)要求することです。これにより、アドレスが長くなるほど安全性が高まるという利点も追加されます。 このロードマップアイテムは、[アドレス空間拡張](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485)と呼ばれます。
履歴の有効期限と同様に、状態の有効期限では、ユーザーは古い状態データを自分で保存する必要がなくなります。代わりに、中央集権型のプロバイダー、利他的なコミュニティのメンバー、またはポータルネットワークなどのより革新的な分散型ソリューションなど、他のエンティティが保存の責任を担います。
@@ -52,7 +52,7 @@ EIP-4444 は、現在も活発な議論が行われており、まだリリー
## ステートレス {#statelessness}
-「状態」の概念がなくなるわけではなく、イーサリアムノードが状態データを処理する方法が変更されるものであるため、ステートレスという名称は少し不適切かもしれません。 ステートレスには、弱いステートレスと強いステートレスの 2 種類があります。 弱いステートレスでは、状態ストレージの役割を少数のノードに負わせることで、ほとんどのノードをステートレスにすることができます。 強いステートレスでは、すべてのノードが完全な状態データを保存する必要がなくなります。 弱いステートレスと強いステートレスのどちらも、通常のバリデータに次の利点をもたらします。
+「状態」の概念がなくなるわけではなく、イーサリアムノードが状態データを処理する方法が変更されるものであるため、ステートレスという名称は少し不適切かもしれません。 ステートレスには、弱いステートレスと強いステートレスの2種類があります。 弱いステートレスでは、状態ストレージの役割を少数のノードに負わせることで、ほとんどのノードをステートレスにすることができます。 強いステートレスでは、すべてのノードが完全な状態データを保存する必要がなくなります。 弱いステートレスと強いステートレスのどちらも、通常のバリデータに次の利点をもたらします。
- ほぼ瞬時に同期できる
- ブロックを順不同で検証できる
@@ -66,7 +66,7 @@ EIP-4444 は、現在も活発な議論が行われており、まだリリー
**弱いステートレスでは、ブロックの提案には、完全な状態データへのアクセスが必要になりますが、ブロックの検証では状態データは不要です。**
-これを実現するには、イーサリアムクライアントに[バークルツリー](/roadmap/verkle-trees)が実装されている必要があります。 バークルツリーは、イーサリアムの状態データを保存するための次世代のデータ構造です。ローカルデータベースでブロックを検証する代わりに、データに対して小さな固定サイズの「ウィットネス」をピア間で受け渡し、ブロックを検証します。 [プロポーザー/ビルダーセパレーション](/roadmap/pbs/)も必要です。これにより、ブロックビルダーは、完全な状態データへのアクセスが必要なため、より強力なハードウェアを備えた専門のノードになります。
+これを実現するには、イーサリアムクライアントに[バークルツリー](/roadmap/verkle-trees/)が実装されている必要があります。 バークルツリーは、イーサリアムの状態データを保存するための次世代のデータ構造です。ローカルデータベースでブロックを検証する代わりに、データに対して小さな固定サイズの「ウィットネス」をピア間で受け渡し、ブロックを検証します。 [プロポーザー/ビルダーセパレーション](/roadmap/pbs/)も必要です。これにより、ブロックビルダーは、完全な状態データへのアクセスが必要なため、より強力なハードウェアを備えた専門のノードになります。
@@ -81,7 +81,7 @@ EIP-4444 は、現在も活発な議論が行われており、まだリリー
### 強いステートレス {#strong-statelessness}
-強いステートレスでは、ブロックに状態データを保存する必要がなくなります。 代わりに、集約されたウィットネスとともにトランザクションが送信されます。 ブロック生成者は、関連するアカウントのウィットネスを生成するために必要な状態のみを保存します。 状態に対する責任はほとんどユーザーが負い、ユーザーはどのアカウントとストレージ鍵とやり取りしているかを宣言するために、ウィットネスと「アクセスリスト」を送信します。
+強いステートレスでは、ブロックに状態データを保存する必要がなくなります。 代わりに、集約されたウィットネスとともにトランザクションが送信されます。 ブロック生成者は、関連するアカウントのウィットネスを生成するために必要な状態のみを保存します。 状態に対する責任はほとんどユーザーが負い、ユーザーはどのアカウントとストレージ鍵とやり取りしているかを宣言するために、ウィットネスと「アクセスリスト」を送信します。 これにより、ノードが非常に軽量になりますが、スマートコントラクトとのトランザクションがより困難になるなどのトレードオフがあります。
強いステートレスは、研究者によって調査されていますが、現時点では、イーサリアムのロードマップには含まれていません。イーサリアムのスケーリングには、弱いステートレスが十分に機能すると考えられているためです。
@@ -91,12 +91,12 @@ EIP-4444 は、現在も活発な議論が行われており、まだリリー
## 参考文献 {#further-reading}
-- [ヴィタリックによるステートレスに関する AMA](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/)
+- [ヴィタリックによるステートレスに関するAMA](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/)
- [状態サイズの管理理論](https://hackmd.io/@vbuterin/state_size_management)
- [Resurrection-conflict-minimized 状態境界](https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739)
- [ステートレスと状態の有効期限への工程](https://hackmd.io/@vbuterin/state_expiry_paths)
-- [EIP-4444 の仕様](https://eips.ethereum.org/EIPS/eip-4444)
-- [アレックス・ストークス(Alex Stokes)EIP-4444 の概要を説明するビデオ](https://youtu.be/SfDC_qUZaos)
+- [EIP-4444の仕様](https://eips.ethereum.org/EIPS/eip-4444)
+- [アレックス・ストークス(Alex Stokes)EIP-4444の概要を説明するビデオ](https://youtu.be/SfDC_qUZaos)
- [ステートレスにすることが重要な理由](https://dankradfeist.de/ethereum/2021/02/14/why-stateless.html)
- [ステートレスクライアントのオリジナルコンセプトに関するノート](https://ethresear.ch/t/the-stateless-client-concept/172)
- [状態の有効期限の詳細](https://hackmd.io/@vbuterin/state_size_management#A-more-moderate-solution-state-expiry)
diff --git a/public/content/translations/ja/roadmap/user-experience/index.md b/public/content/translations/ja/roadmap/user-experience/index.md
index de914192e35..e9cf4e03df0 100644
--- a/public/content/translations/ja/roadmap/user-experience/index.md
+++ b/public/content/translations/ja/roadmap/user-experience/index.md
@@ -7,11 +7,11 @@ alt: "イーサリアムロードマップ"
template: roadmap
---
-イーサリアムを簡単に使用するためには、鍵やウォレットの管理からトランザクションの開始まで、さまざまな手順が必要です。 一般への普及を促進するには、これらの手順を簡略化して、イーサリアムを大幅に使いやすくする必要があります。また、Web2 アプリのようなスムーズなユーザーエクスペリエンスを提供することで、パーミッションレスで検閲耐性のあるアクセスを体験できるようにしなければなりません。
+イーサリアムを簡単に使用するためには、鍵やウォレットの管理からトランザクションの開始まで、さまざまな手順が必要です。 一般への普及を促進するには、これらの手順を簡略化して、イーサリアムを大幅に使いやすくする必要があります。また、Web2アプリのようなスムーズなユーザーエクスペリエンスを提供することで、パーミッションレスで検閲耐性のあるアクセスを体験できるようにしなければなりません。
## シードフレーズを超えて {#no-more-seed-phrases}
-イーサリアムのアカウントは、 「公開鍵」でアカウントを特定し、「秘密鍵」でメッセージに署名します。この鍵のペアを利用して、イーサリアムのアカウントは保護されています。 秘密鍵は、マスターパスワードのようなものです。この鍵があれば、イーサリアムアカウントに完全にアクセスすることができます。 イーサリアムのアカウントの操作は、銀行や Web2 アプリのように、ユーザーに代わって口座を管理する仕組みとは異なるため、戸惑う人もいるでしょう。 集中化されているサードパーティに依存することなくイーサリアムを一般に普及させるには、ユーザーが公開鍵と秘密鍵による暗号化や鍵管理を理解しなくても、自分の資産を保管し、自分のデータを管理できる簡単でスムーズな方法が必要です。
+イーサリアムのアカウントは、 「公開鍵」でアカウントを特定し、「秘密鍵」でメッセージに署名します。この鍵のペアを利用して、イーサリアムのアカウントは保護されています。 秘密鍵は、マスターパスワードのようなものです。この鍵があれば、イーサリアムアカウントに完全にアクセスすることができます。 イーサリアムのアカウントの操作は、銀行やWeb2アプリのように、ユーザーに代わって口座を管理する仕組みとは異なるため、戸惑う人もいるでしょう。 集中化されているサードパーティに依存することなくイーサリアムを一般に普及させるには、ユーザーが公開鍵と秘密鍵による暗号化や鍵管理を理解しなくても、自分の資産を保管し、自分のデータを管理できる簡単でスムーズな方法が必要です。
これに対する解決策は、スマートコントラクトウォレットを使用してイーサリアムとやり取りすることです。 スマートコントラクトウォレットは、鍵の紛失や盗難に備えたアカウント保護、より優れた不正行為の検出や防御、新しい機能の追加など、さまざまなメリットをもたらします。 スマートコントラクトウォレットはすでに存在していますが、まだ使いにくいため、イーサリアムプロトコルがそれらをより便利に使えるようにサポートする必要があります。 この追加サポートは、アカウント抽象化と呼ばれています。
@@ -25,11 +25,11 @@ template: roadmap
バークルツリーについての詳細
-これらのアップグレードにより、ノードの実行に対する障壁が事実上無くなります。 ユーザーは、コンピューターや携帯電話のディスク容量や CPU を気にせずに、イーサリアムに安全かつパーミッションレスにアクセスできるようになります。また、アプリを使用するときに、データやネットワークへのアクセスでサードパーティに依存する必要がなくなります。
+これらのアップグレードにより、ノードの実行に対する障壁が事実上無くなります。 ユーザーは、コンピューターや携帯電話のディスク容量やCPUを気にせずに、イーサリアムに安全かつパーミッションレスにアクセスできるようになります。また、アプリを使用するときに、データやネットワークへのアクセスでサードパーティに依存する必要がなくなります。
## 現在の進行状況 {#current-progress}
-スマートコントラクトウォレットはすでに利用可能ですが、それらをできるだけ分散化してパーミッションレスにするには、さらなるアップグレードが必要です。 EIP-4337 は、イーサリアムのプロトコルへを変更せずに導入できる成熟した提案です。 EIP-4337 で必要となる主要なスマートコントラクトは、2023 年 3 月にデプロイされました。
+スマートコントラクトウォレットはすでに利用可能ですが、それらをできるだけ分散化してパーミッションレスにするには、さらなるアップグレードが必要です。 EIP-4337は、イーサリアムのプロトコルへを変更せずに導入できる成熟した提案です。 EIP-4337で必要となる主要なスマートコントラクトは、2023年3月にデプロイされました。
完全なステートレスはまだ研究段階にあり、実装されるのは数年先になると考えられます。 データ有効期限を含む完全にステートレスになる工程には、いくつかのマイルストーンがあり、そのうちのいくつかは、近い将来に実装される可能性がありますが、 [バークルツリー](/roadmap/verkle-trees/)や[プロポーザー/ビルダーセパレーション](/roadmap/pbs/)などの他の工程が先に完了している必要があります。
diff --git a/public/content/translations/ja/roadmap/verkle-trees/index.md b/public/content/translations/ja/roadmap/verkle-trees/index.md
index 906ba2033af..997a7471f16 100644
--- a/public/content/translations/ja/roadmap/verkle-trees/index.md
+++ b/public/content/translations/ja/roadmap/verkle-trees/index.md
@@ -13,33 +13,33 @@ summaryPoints:
## ステートレス {#statelessness}
-バークルツリーは、ステートレスなイーサリアムクライアントの実現に欠かせない重要なステップです。 ステートレスクライアントは、受信したブロックを検証するために、状態データベース全体を格納する必要がありません。 クライアントがローカルに保存しているイーサリアムの状態のコピーを使用してブロックを検証する代わりに、ブロックに含まれる状態データの「ウィットネス」を使用します。 この「ウィットネス」は、特定の一連のトランザクションを実行するために必要な状態データの個々の部分を集めたもので、データ全体の一部であることを示す暗号学的証明になります。 このウィットネスを、状態データベースの*代わりに*使用します。 ネットワーク全体に安全にブロードキャストするには、バリデータが 12 秒のスロット内に処理できる必要があります。そのためには、ウィットネスが非常に小さくなければなりません。 しかし、現在の状態データの構造では、ウィットネスが大きすぎるため、適していません。 バークルツリーは、小さなウィットネスを可能にすることで、この問題を解決します。これにより、ステートレスクライアントを実現するための、1 つの大きな障害を克服することができます。
+バークルツリーは、ステートレスなイーサリアムクライアントの実現に欠かせない重要なステップです。 ステートレスクライアントは、受信したブロックを検証するために、状態データベース全体を格納する必要がありません。 クライアントがローカルに保存しているイーサリアムの状態のコピーを使用してブロックを検証する代わりに、ブロックに含まれる状態データの「ウィットネス」を使用します。 この「ウィットネス」は、特定の一連のトランザクションを実行するために必要な状態データの個々の部分を集めたもので、データ全体の一部であることを示す暗号学的証明になります。 このウィットネスを、状態データベースの_代わりに_使用します。 ネットワーク全体に安全にブロードキャストするには、バリデータが12秒のスロット内に処理できる必要があります。そのためには、ウィットネスが非常に小さくなければなりません。 しかし、現在の状態データの構造では、ウィットネスが大きすぎるため、適していません。 バークルツリーは、小さなウィットネスを可能にすることで、この問題を解決します。これにより、ステートレスクライアントを実現するための、1つの大きな障害を克服することができます。
-イーサリアムクライアントは現在、状態データを保存するためにパトリシア・マークル・ツリーと呼ばれるデータ構造を使用しています。 個々のアカウントに関する情報はツリー上のリーフとして保存され、そのリーフのペアが 1 つのハッシュになるまで繰り返しハッシュ化されます。 この最後のハッシュは、「ルート」と呼ばれます。 イーサリアムクライアントは、ブロック内のすべてのトランザクションを実行し、ローカルにある状態ツリーを更新することで、ブロックを検証します。 ローカルにあるツリーのルートが、ブロック提案者によって提供されたルートと同じであれば、ブロックは有効であると判断されます。なぜなら、ブロック提案者と検証ノードが異なる計算を実行した場合、ルートハッシュが完全に違うものになるためです。 問題は、ブロックチェーンを検証するために、各クライアントがブロックの先頭までの状態ツリー全体と複数の履歴ブロックを保持する必要があることです(Geth のデフォルト設定では、ヘッドから遡って 128 ブロックの状態データを保持します)。 現在の状態では、クライアントは大容量のディスク領域が必要になり、安価で低電力のハードウェアでフルノードを実行する際の障壁となります。 これに対する解決策は、より効率的な構造(バークルツリー)を持った状態ツリーを更新することです。バークルツリーでは、完全な状態データの代わりに、共有可能なデータである小さな「ウィットネス」を使うことで集約することができます。 状態データをバークルツリーに再フォーマットすることは、ステートレスクライアントへ移行するための足掛かりとなります。
+イーサリアムクライアントは現在、状態データを保存するためにパトリシア・マークル・ツリーと呼ばれるデータ構造を使用しています。 個々のアカウントに関する情報はツリー上のリーフとして保存され、そのリーフのペアが1つのハッシュになるまで繰り返しハッシュ化されます。 この最後のハッシュは、「ルート」と呼ばれます。 イーサリアムクライアントは、ブロック内のすべてのトランザクションを実行し、ローカルにある状態ツリーを更新することで、ブロックを検証します。 ローカルにあるツリーのルートが、ブロック提案者によって提供されたルートと同じであれば、ブロックは有効であると判断されます。なぜなら、ブロック提案者と検証ノードが異なる計算を実行した場合、ルートハッシュが完全に違うものになるためです。 問題は、ブロックチェーンを検証するために、各クライアントがブロックの先頭までの状態ツリー全体と複数の履歴ブロックを保持する必要があることです(Gethのデフォルト設定では、ヘッドから遡って128ブロックの状態データを保持します)。 現在の状態では、クライアントは大容量のディスク領域が必要になり、安価で低電力のハードウェアでフルノードを実行する際の障壁となります。 これに対する解決策は、より効率的な構造(バークルツリー)を持った状態ツリーを更新することです。バークルツリーでは、完全な状態データの代わりに、共有可能なデータである小さな「ウィットネス」を使うことで集約することができます。 状態データをバークルツリーに再フォーマットすることは、ステートレスクライアントへ移行するための足掛かりとなります。
## ウィットネスの説明とその必要性 {#what-is-a-witness}
-ブロックの検証では、ブロックに含まれるトランザクションを再実行し、その変更をイーサリアムの状態ツリーに適用することで、新しいルートハッシュを計算します。 検証されたブロックでは、その計算された状態ルートのハッシュがブロックで提供されたものと一致します。つまり、ブロックの提案者が本当にルートハッシュの計算を行ったことが確認できます。 現状のイーサリアムクライアントで状態を更新するには、状態ツリー全体にアクセスする必要があり、この巨大なデータ構造がローカルに保存されていなければなりません。 ウィットネスは、ブロック内のトランザクションを実行するために必要な状態データのフラグメントのみを含みます。 バリデータは、このフラグメントを使用して、ブロック提案者がブロックトランザクションを正しく実行し、状態が正常に更新されたかどうかを検証できます。 ただし、ウィットネスが各ノードにおいて 12 秒間のスロット内で安全に受信、処理されるためには、イーサリアムネットワーク上のピア間で十分な速度で転送する必要があります。 ウィットネスが大きすぎると、一部のノードにおいて、それをダウンロードしてチェーンを最新の状態を維持するのに時間がかかりすぎる可能性があります。 これでは、高速インターネット接続を持つノードのみがブロックの検証に参加できることになり、中央集権的な影響力を高めてしまいます。 バークルツリーを使用することで、状態をハードウェアドライブに保存する必要がなくなります。 つまり、ブロックを検証するために必要な*すべて*がブロック内に含まれます。 残念ながら、マークルツリーから生成されるウィットネスは大きすぎるため、ステートレスクライアントをサポートできません。
+ブロックの検証では、ブロックに含まれるトランザクションを再実行し、その変更をイーサリアムの状態ツリーに適用することで、新しいルートハッシュを計算します。 検証されたブロックでは、その計算された状態ルートのハッシュがブロックで提供されたものと一致します。つまり、ブロックの提案者が本当にルートハッシュの計算を行ったことが確認できます。 現状のイーサリアムクライアントで状態を更新するには、状態ツリー全体にアクセスする必要があり、この巨大なデータ構造がローカルに保存されていなければなりません。 ウィットネスは、ブロック内のトランザクションを実行するために必要な状態データのフラグメントのみを含みます。 バリデータは、このフラグメントを使用して、ブロック提案者がブロックトランザクションを正しく実行し、状態が正常に更新されたかどうかを検証できます。 ただし、ウィットネスが各ノードにおいて12秒間のスロット内で安全に受信、処理されるためには、イーサリアムネットワーク上のピア間で十分な速度で転送する必要があります。 ウィットネスが大きすぎると、一部のノードにおいて、それをダウンロードしてチェーンを最新の状態を維持するのに時間がかかりすぎる可能性があります。 これでは、高速インターネット接続を持つノードのみがブロックの検証に参加できることになり、中央集権的な影響力を高めてしまいます。 バークルツリーを使用することで、状態をハードウェアドライブに保存する必要がなくなります。 つまり、ブロックを検証するために必要な_すべて_がブロック内に含まれます。 残念ながら、マークルツリーから生成されるウィットネスは大きすぎるため、ステートレスクライアントをサポートできません。
## バークルツリーが小さなウィットネスを可能にする仕組み {#why-do-verkle-trees-enable-smaller-witnesses}
-マークルツリーの構造では、ウィットネスのサイズが非常に大きくなるため、12 秒間のスロット内では、ピア間で安全にブロードキャストすることができません。 これは、ウィットネスがリーフが持つデータからルートハッシュへ接続するパスであるためです。 データを確認するには、各リーフからルートに接続するための全ての中間ハッシュだけでなく、全ての「兄弟」ノードのハッシュを持っている必要があります。 証明内にある各ノードには、ツリーの一段階上へのハッシュを作成するためにハッシュされる兄弟ノードがあります。 これは非常に大きなデータになります。 バークルツリーは、ツリーのリーフとルートの距離を短縮し、ルートハッシュを検証するために兄弟ノードを提供する必要性をなくすことで、ウィットネスのサイズを削減します。 また、ハッシュ形式のベクトルコミットメントの代わりに強力な多項式コミットメント機構を利用することで、スペース効率がさらに向上します。 多項式コミットメントにより、ウィットネスが証明するリーフの数に関係なく、サイズを固定にすることができます。
+マークルツリーの構造では、ウィットネスのサイズが非常に大きくなるため、12秒間のスロット内では、ピア間で安全にブロードキャストすることができません。 これは、ウィットネスがリーフが持つデータからルートハッシュへ接続するパスであるためです。 データを確認するには、各リーフからルートに接続するための全ての中間ハッシュだけでなく、全ての「兄弟」ノードのハッシュを持っている必要があります。 証明内にある各ノードには、ツリーの一段階上へのハッシュを作成するためにハッシュされる兄弟ノードがあります。 これは非常に大きなデータになります。 バークルツリーは、ツリーのリーフとルートの距離を短縮し、ルートハッシュを検証するために兄弟ノードを提供する必要性をなくすことで、ウィットネスのサイズを削減します。 また、ハッシュ形式のベクトルコミットメントの代わりに強力な多項式コミットメント機構を利用することで、スペース効率がさらに向上します。 多項式コミットメントにより、ウィットネスが証明するリーフの数に関係なく、サイズを固定にすることができます。
多項式コミットメントスキームでは、ウィットネスが管理しやすいサイズになり、ピアツーピアネットワーク上で簡単に転送できます。 この仕組みにより、クライアントは、各ブロックの状態変化を最小限のデータで検証することができます。
-ウィットネスのサイズは、含まれるリーフの数によって変わります。 例えば、1000 枚のリーフを扱うウィットネスは、マークルツリーで約 3.5MB(ツリーが 7 レベルと仮定しています)、 バークルツリーでは約 150KB(ツリーが 4 レベルあると仮定します)となり、**約 23 分の 1**に縮小できます。 このウィットネスのサイズ縮小により、ステートレスクライアントでも許容できる大きさになります。 多項式ウィットネスは、使用される個別の多項式コミットメントによって、0.128 ~ 1KB の範囲に収まります。
+ウィットネスのサイズは、含まれるリーフの数によって変わります。 例えば、1000枚のリーフを扱うウィットネスは、マークルツリーで約3.5MB(ツリーが7レベルと仮定しています)、 バークルツリーでは約150KB(ツリーが4レベルあると仮定します)となり、**約23分の1**に縮小できます。 このウィットネスのサイズ縮小により、ステートレスクライアントでも許容できる大きさになります。 多項式ウィットネスは、使用される個別の多項式コミットメントによって、0.128~1KBの範囲に収まります。
## バークルツリーの構造 {#what-is-the-structure-of-a-verkle-tree}
-バークルツリーは、`(key,value)`のペアで構成されたデータ構造です。キーは、31 バイトの*ステム*と 1 バイトの*サフィックス*で構成されています。 これらのキーは、*拡張*ノードと*内部*ノードに編成されます。 拡張ノードは、1 つのステムを表すノードです。256 個の子ノードがあり、それぞれ異なるサフィックスを持っています。 内部ノードも 256 個の子ノードを持っていますが、他の拡張ノードになることもあります。 バークルツリーとマークルツリー構造の主な違いは、バークルツリーの方がはるかにフラットなことです。 つまり、リーフとルートを結ぶ中間ノードが少ないため、証明を生成するために必要なデータが小さくなります。
+バークルツリーは、`(key,value)`のペアで構成されたデータ構造です。キーは、31バイトの_ステム_と1バイトの_サフィックス_で構成されています。 これらのキーは、_拡張_ノードと_内部_ノードに編成されます。 拡張ノードは、1つのステムを表すノードです。256個の子ノードがあり、それぞれ異なるサフィックスを持っています。 内部ノードも256個の子ノードを持っていますが、他の拡張ノードになることもあります。 バークルツリーとマークルツリー構造の主な違いは、バークルツリーの方がはるかにフラットなことです。 つまり、リーフとルートを結ぶ中間ノードが少ないため、証明を生成するために必要なデータが小さくなります。
![](./verkle.png)
@@ -51,15 +51,15 @@ summaryPoints:
[ビバリーヒルズ・バークルテストネットの探索](https://beverlyhills.ethpandaops.io)
-[Guillaume Ballet による Condrieu バークルテストネットの説明をご覧ください](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (Condrieu テストネットはプルーフ・オブ・ワークでしたが、現在は[Kaustinen テストネット](https://kaustinen.ethdevops.io)に置き換えらていることにご注意ください)。
+[Guillaume BalletによるCondrieuバークルテストネットの説明をご覧ください](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (Condrieuテストネットはプルーフ・オブ・ワークでしたが、現在は[Kaustinenテストネット](https://kaustinen.ethdevops.io)に置き換えらていることにご注意ください)。
## 参考文献 {#further-reading}
-- [ダンクラッド・フィーストによる PEEPanEIP でのバークルツリーの説明](https://www.youtube.com/watch?v=RGJOQHzg3UQ)
-- [Guillaume Ballet による ETHGlobal でのバークルツリーの説明](https://www.youtube.com/watch?v=f7bEtX3Z57o)
-- [Devcon6 での Guillaume Ballet による「バークルツリーがイーサリアムを効率的にする仕組み」](https://www.youtube.com/watch?v=Q7rStTKwuYs)
-- [ETHDenver 2020 での Piper Merriam によるステートレスクライアントに関する説明](https://www.youtube.com/watch?v=0yiZJNciIJ4)
+- [ダンクラッド・フィーストによるPEEPanEIPでのバークルツリーの説明](https://www.youtube.com/watch?v=RGJOQHzg3UQ)
+- [Guillaume BalletによるETHGlobalでのバークルツリーの説明](https://www.youtube.com/watch?v=f7bEtX3Z57o)
+- [Devcon6でのGuillaume Balletによる「バークルツリーがイーサリアムを効率的にする仕組み」](https://www.youtube.com/watch?v=Q7rStTKwuYs)
+- [ETHDenver 2020でのPiper Merriamによるステートレスクライアントに関する説明](https://www.youtube.com/watch?v=0yiZJNciIJ4)
- [ゼロ知識ポッドキャストでのダンクラッド・フィーストによるバークルツリーとステートレスに関する説明](https://zeroknowledge.fm/episode-202-stateless-ethereum-verkle-tries-with-dankrad-feist/)
- [ヴィタリック・ブテリンによるバークルツリーの説明](https://vitalik.eth.limo/general/2021/06/18/verkle.html)
- [ダンクラッド・フィーストによるバークルツリーの説明](https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html)
-- [バークルツリーの EIP ドキュメント](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration)
+- [バークルツリーのEIPドキュメント](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration)
diff --git a/public/content/translations/ja/zero-knowledge-proofs/index.md b/public/content/translations/ja/zero-knowledge-proofs/index.md
index cb2f09e84d0..0d68f3767f2 100644
--- a/public/content/translations/ja/zero-knowledge-proofs/index.md
+++ b/public/content/translations/ja/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: 一般向けのゼロ知識証明入門
lang: ja
---
-## ゼロ知識証明とは何か {#what-are-zk-proofs}
+# ゼロ知識証明とは何か {#what-are-zk-proofs}
ゼロ知識証明は、証明したい主張そのものを明らかにすることなく、主張の妥当性を証明する方法です。 主張を証明しようとする側を「証明者」とよび、主張の検証に責任を持つ側を「検証者」とよびます。
diff --git a/public/content/translations/ko/dao/index.md b/public/content/translations/ko/dao/index.md
index 069fe8f2b5b..d7fb0380ed2 100644
--- a/public/content/translations/ko/dao/index.md
+++ b/public/content/translations/ko/dao/index.md
@@ -28,13 +28,13 @@ DAO는 그룹의 승인 없이는 누구도 접근할 수 없는 내장된 자
### 비교 {#dao-comparison}
-| 탈중앙화 자율 조직 | 기존의 조직 |
-| -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
-| 일반적으로 수평적이고, 완전히 민주화되어 있습니다. | 일반적으로 계층적입니다. |
-| 변경 사항을 구현하려면 회원의 투표가 필요합니다. | 구조에 따라 단독 주체가 변경을 요구하거나 투표가 제안될 수 있습니다. |
-| 투표가 집계되고, 결과는 신뢰할 수 있는 중개자 없이 자동으로 구현됩니다. | 투표가 시행되는 경우, 투표는 내부적으로 집계되고 투표 결과는 수동으로 처리해야 합니다. |
-| 제공되는 서비스는 탈중앙화된 방식으로 자동 처리됩니다(예: 자선 기금 분배). | 사람이 직접 처리하거나 중앙에서 제어되는 자동화가 필요하며 조작하기 쉽습니다. |
-| 모든 활동은 투명하고 완전히 공개됩니다. | 활동은 일반적으로 비공개로 이루어지며 공개에 제한적입니다. |
+| 탈중앙화 자율 조직 | 기존의 조직 |
+| ------------------------------------------- | ------------------------------------------------- |
+| 일반적으로 수평적이고, 완전히 민주화되어 있습니다. | 일반적으로 계층적입니다. |
+| 변경 사항을 구현하려면 회원의 투표가 필요합니다. | 구조에 따라 단독 주체가 변경을 요구하거나 투표가 제안될 수 있습니다. |
+| 투표가 집계되고, 결과는 신뢰할 수 있는 중개자 없이 자동으로 구현됩니다. | 투표가 시행되는 경우, 투표는 내부적으로 집계되고 투표 결과는 수동으로 처리해야 합니다. |
+| 제공되는 서비스는 탈중앙화된 방식으로 자동 처리됩니다(예: 자선 기금 분배). | 사람이 직접 처리하거나 중앙에서 제어되는 자동화가 필요하며 조작하기 쉽습니다. |
+| 모든 활동은 투명하고 완전히 공개됩니다. | 활동은 일반적으로 비공개로 이루어지며 공개에 제한적입니다. |
### DAO 예시 {#dao-examples}
diff --git a/public/content/translations/ml/roadmap/beacon-chain/index.md b/public/content/translations/ml/roadmap/beacon-chain/index.md
index 669f4091ab2..86690ec8980 100644
--- a/public/content/translations/ml/roadmap/beacon-chain/index.md
+++ b/public/content/translations/ml/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ summaryPoint3: ബീക്കൺ ചെയിൻ പൊതു യുക്ത
ബീക്കൺ ചെയിൻ Ethereum-ന് [പ്രൂഫ് ഓഫ് സ്റ്റേക്ക്](/developers/docs/consensus-mechanisms/pos/) അവതരിപ്പിച്ചിരിക്കുന്നു. ഇത് Ethereum-ത്തെ സുരക്ഷിതമായി നിലനിർത്തുകയും വാലിഡേറ്റർമാർ പ്രക്രിയയിൽ കൂടുതൽ ETH നേടുകയും ചെയ്യുന്നു. പ്രായോഗികമായി, വാലിഡേറ്റർ സോഫ്റ്റ്വെയർ സജീവമാക്കുന്നതിന് സ്റ്റെയ്ക്കിങിൽ സ്റ്റെയ്ക്കിങ് ETH ഉൾപ്പെടുന്നു. ഒരു സ്റ്റേക്കർ എന്ന നിലയിൽ, ചെയിനിലെ പുതിയ ബ്ലോക്കുകൾ സൃഷ്ടിക്കുകയും സാധൂകരിക്കുകയും ചെയ്യുന്ന സോഫ്റ്റ്വെയർ നിങ്ങൾ പ്രവർത്തിപ്പിക്കും.
-വ്യത്യസ്തമായ രീതികളിൽ [മൈനിംഗ്](/developers/docs/mining/) ഉപയോഗിച്ചിരുന്ന സമാനമായ ഉദ്ദേശ്യമാണ് സ്റ്റേക്കിംഗ് നിർവഹിക്കുന്നത്. ഇക്കണോമീസ് ഓഫ് സ്കെയിലിംഗിന്റെ ഫലമുണ്ടാക്കുകയും കേന്ദ്രീകരണം പ്രോത്സാഹിപ്പിക്കുകയും ചെയ്തുകൊണ്ട് മൈനിംഗ് ശക്തമായ ഹാർഡ്വെയറിന്റെയും ഊർജ്ജ ഉപഭോഗത്തിന്റെയും രൂപത്തിൽ വലിയ മുൻകൂർ അടച്ചുതീർക്കേണ്ട ചെലവുകൾ ആവശ്യപ്പെടുന്നു. ഒരു ആക്രമണത്തിന് ശേഷം മോശം ആക്റ്റർമാരെ ശിക്ഷിക്കുന്നതിനുള്ള പ്രോട്ടോക്കോളിന്റെ കഴിവ് പരിമിതപ്പെടുത്തിക്കൊണ്ട്, ഈടായി ആസ്തികൾ ലോക്ക് ചെയ്യേണ്ട യാതൊരു ആവശ്യവും മൈനിംഗിൽ ഉണ്ടായിരുന്നുമില്ല.
+വ്യത്യസ്തമായ രീതികളിൽ [മൈനിംഗ്](/developers/docs/consensus-mechanisms/pow/mining/) ഉപയോഗിച്ചിരുന്ന സമാനമായ ഉദ്ദേശ്യമാണ് സ്റ്റേക്കിംഗ് നിർവഹിക്കുന്നത്. ഇക്കണോമീസ് ഓഫ് സ്കെയിലിംഗിന്റെ ഫലമുണ്ടാക്കുകയും കേന്ദ്രീകരണം പ്രോത്സാഹിപ്പിക്കുകയും ചെയ്തുകൊണ്ട് മൈനിംഗ് ശക്തമായ ഹാർഡ്വെയറിന്റെയും ഊർജ്ജ ഉപഭോഗത്തിന്റെയും രൂപത്തിൽ വലിയ മുൻകൂർ അടച്ചുതീർക്കേണ്ട ചെലവുകൾ ആവശ്യപ്പെടുന്നു. ഒരു ആക്രമണത്തിന് ശേഷം മോശം ആക്റ്റർമാരെ ശിക്ഷിക്കുന്നതിനുള്ള പ്രോട്ടോക്കോളിന്റെ കഴിവ് പരിമിതപ്പെടുത്തിക്കൊണ്ട്, ഈടായി ആസ്തികൾ ലോക്ക് ചെയ്യേണ്ട യാതൊരു ആവശ്യവും മൈനിംഗിൽ ഉണ്ടായിരുന്നുമില്ല.
പ്രൂഫ് ഓഫ് സ്റ്റേക്കിലേക്കുള്ള മാറ്റം Ethereum-ത്തെ പ്രൂഫ് ഓഫ് വർക്കുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ കൂടുതൽ സുരക്ഷിതവും വികേന്ദ്രീകൃതവുമാക്കി. നെറ്റ്വർക്കിൽ കൂടുതൽ ആളുകൾ പങ്കെടുക്കുമ്പോൾ, അത് കൂടുതൽ വികേന്ദ്രീകൃതവും ആക്രമണങ്ങളിൽ നിന്ന് സുരക്ഷിതവുമാകും.
diff --git a/public/content/translations/ml/roadmap/merge/index.md b/public/content/translations/ml/roadmap/merge/index.md
index af4bd58d1ad..9eed0dffac6 100644
--- a/public/content/translations/ml/roadmap/merge/index.md
+++ b/public/content/translations/ml/roadmap/merge/index.md
@@ -135,7 +135,7 @@ title="തെറ്റിദ്ധാരണ: "ഗ്യാസ് ഫീസ
contentPreview="False. The Merge was a change of consensus mechanism, not an expansion of network capacity, and was never intended to lower gas fees.">
നെറ്റ്വർക്കിന്റെ ശേഷിയുമായി ബന്ധപ്പെട്ട നെറ്റ്വർക്ക് ഡിമാൻഡിന്റെ ഫലമാണ് ഗ്യാസ് ഫീസ്. പൊതു രീതിക്കുള്ള പ്രൂഫ് ഓഫ് സ്റ്റേക്കിലേക്ക് മാറിക്കൊണ്ട് ലയനം പ്രൂഫ് ഓഫ് വർക്കിന്റെ ഉപയോഗം ഒഴിവാക്കി, എന്നാൽ നെറ്റ്വർക്ക് ശേഷിയെയോ ത്രൂപുട്ടിനെയോ നേരിട്ട് സ്വാധീനിക്കുന്ന പാരാമീറ്ററുളെയൊന്നും കാര്യമായി മാറ്റിയില്ല.
-ഒരു [റോളപ്പ്-കേന്ദ്രീകൃത റോഡ്മാപ്പ്](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) ഉപയോഗിച്ച്, [വരി-2](/വരി-2/)-ൽ ഉപയോക്തൃ ആക്റ്റിവിറ്റി അളക്കുന്നതിലാണ് ശ്രമങ്ങൾ കേന്ദ്രീകരിക്കുന്നത്, അതേസമയം റോളപ്പ് ഇടപാടുകൾ വളരെ ചെലവ് കുറഞ്ഞതാക്കാൻ സഹായിക്കുന്നതിന് റോളപ്പ് ഡാറ്റ സംഭരണത്തിനായി ഒപ്റ്റിമൈസ് ചെയ്ത ഒരു സുരക്ഷിത വികേന്ദ്രീകൃത സെറ്റിൽമെന്റ് വരിയായി വരി 1 മെയിൻനെറ്റ് പ്രാപ്തമാക്കുന്നു. ഇത് പൂർത്തീകരിക്കുന്നതിനുള്ള ഒരു നിർണ്ണായക സൂചനയാണ് പ്രൂഫ് ഓഫ് സ്റ്റേക്കിലേക്കുള്ള മാറ്റം. [ഗ്യാസിനെയും ഫീസിനെയും കുറിച്ച് കൂടുതൽ.](/developers/docs/gas/)
+ഒരു [റോളപ്പ്-കേന്ദ്രീകൃത റോഡ്മാപ്പ്](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) ഉപയോഗിച്ച്, [വരി-2](/layer-2/)-ൽ ഉപയോക്തൃ ആക്റ്റിവിറ്റി അളക്കുന്നതിലാണ് ശ്രമങ്ങൾ കേന്ദ്രീകരിക്കുന്നത്, അതേസമയം റോളപ്പ് ഇടപാടുകൾ വളരെ ചെലവ് കുറഞ്ഞതാക്കാൻ സഹായിക്കുന്നതിന് റോളപ്പ് ഡാറ്റ സംഭരണത്തിനായി ഒപ്റ്റിമൈസ് ചെയ്ത ഒരു സുരക്ഷിത വികേന്ദ്രീകൃത സെറ്റിൽമെന്റ് വരിയായി വരി 1 മെയിൻനെറ്റ് പ്രാപ്തമാക്കുന്നു. ഇത് പൂർത്തീകരിക്കുന്നതിനുള്ള ഒരു നിർണ്ണായക സൂചനയാണ് പ്രൂഫ് ഓഫ് സ്റ്റേക്കിലേക്കുള്ള മാറ്റം. [ഗ്യാസിനെയും ഫീസിനെയും കുറിച്ച് കൂടുതൽ.](/developers/docs/gas/)
Als u geïnteresseerd bent om een validator te worden en de Beacon Chain te beveiligen, hier vindt u meer informatie over staken.
diff --git a/public/content/translations/nl/roadmap/merge/index.md b/public/content/translations/nl/roadmap/merge/index.md
index 5ee3d97ff71..67408e0a5a6 100644
--- a/public/content/translations/nl/roadmap/merge/index.md
+++ b/public/content/translations/nl/roadmap/merge/index.md
@@ -17,13 +17,13 @@ summaryPoint4: Vroeger noemden we dit "de docking."
## Wat is de merge? {#what-is-the-docking}
-Het is belangrijk om te onthouden dat aanvankelijk de [Beacon Chain](/roadmap/beacon-chain/) apart werd verzonden van het [hoofdnet](/glossary/#mainnet) - de keten die we vandaag gebruiken. Het Ethereum-hoofdnet blijft beveiligd door [proof-of-work](/ontwikkelaars/docs/consensus-mechanismen/pow/), zelfs terwijl de Beacon Chain parallel draait met [proof-of-stake](/ontwikkelaars/docs/consensus-mechanisms/pos/). De merge is het moment wanneer beide systemen eindelijk samenkomen.
+Het is belangrijk om te onthouden dat aanvankelijk de [Beacon Chain](/roadmap/beacon-chain/) apart werd verzonden van het [hoofdnet](/glossary/#mainnet) - de keten die we vandaag gebruiken. Het Ethereum-hoofdnet blijft beveiligd door [proof-of-work](/developers/docs/consensus-mechanisms/pow/), zelfs terwijl de Beacon Chain parallel draait met [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). De merge is het moment wanneer beide systemen eindelijk samenkomen.
Stel je voor dat Ethereum een ruimteschip is dat nog niet helemaal klaar is voor een interstellaire reis. Met de Beacon Chain heeft de gemeenschap een nieuwe motor en een geharde romp gebouwd. Als het zover is, zal het huidige schip aan dit nieuwe systeem koppelen en samensmelten tot één schip, klaar om serieuze lichtjaren te overbruggen en het heelal in te gaan.
## Samenvoegen met het hoofdnet {#docking-mainnet}
-Als het klaar is, zal het Ethereum-hoofdnet "fuseren" met de Beacon Chain en zijn eigen shard worden die proof-of-stake gebruikt in plaats van [proof-of-work](/ontwikkelaars/docs/consensus-mechanismen/pow/).
+Als het klaar is, zal het Ethereum-hoofdnet "fuseren" met de Beacon Chain en zijn eigen shard worden die proof-of-stake gebruikt in plaats van [proof-of-work](/developers/docs/consensus-mechanisms/pow/).
Het hoofdnet zal de mogelijkheid om slimme contracten uit te voeren in het proof-of-stake systeem brengen, plus de volledige geschiedenis en huidige staat van Ethereum, om ervoor te zorgen dat de overgang soepel verloopt voor alle ETH-houders en -gebruikers.
@@ -41,7 +41,7 @@ Alle Ethereum-upgrades zijn ietwat met elkaar verbonden. Laten we daarom samenva
### De merge en de Beacon Chain {#docking-and-beacon-chain}
-Zodra de merge plaatsvindt, zullen stakers worden toegewezen om het Ethereum-hoofdnet te valideren. [Mining](/ontwikkelaars/docs/consensus-mechanismen/pow/mining/) zal niet langer nodig zijn, dus miners zullen waarschijnlijk hun inkomsten investeren in het staken in het nieuwe proof-of-stake systeem.
+Zodra de merge plaatsvindt, zullen stakers worden toegewezen om het Ethereum-hoofdnet te valideren. [Mining](/developers/docs/consensus-mechanisms/pow/mining/) zal niet langer nodig zijn, dus miners zullen waarschijnlijk hun inkomsten investeren in het staken in het nieuwe proof-of-stake systeem.
De Baken Ketting
diff --git a/public/content/translations/pl/community/code-of-conduct/index.md b/public/content/translations/pl/community/code-of-conduct/index.md
index 8745b2e7fa2..1246d70ab5f 100644
--- a/public/content/translations/pl/community/code-of-conduct/index.md
+++ b/public/content/translations/pl/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Podstawowe standardy, do których dążymy w przestrzeniach ethereu
lang: pl
---
+# Kodeks postępowania {#conduct-intro}
+
## Misja {#mission}
Rozwijanie i utrzymanie najbardziej obszernego i dostępnego centrum wiedzy na temat Ethereum.
diff --git a/public/content/translations/pl/community/events/index.md b/public/content/translations/pl/community/events/index.md
index 6806f66165f..f863402ee8b 100644
--- a/public/content/translations/pl/community/events/index.md
+++ b/public/content/translations/pl/community/events/index.md
@@ -5,7 +5,7 @@ lang: pl
hideEditButton: true
---
-## Nadchodzące wydarzenia {#events}
+# Nadchodzące wydarzenia {#events}
**Co miesiąc, na całym świecie, mają miejsce różne wydarzenia i eventy Ethereum.** Weź pod uwagę możliwość wzięcia udziału w jednym z nich, niedaleko Ciebie, poznaj różne ścieżki kariery i rozwijaj swoje umiejętności.
diff --git a/public/content/translations/pl/community/get-involved/index.md b/public/content/translations/pl/community/get-involved/index.md
index 2fc324eff24..3769f42dad1 100644
--- a/public/content/translations/pl/community/get-involved/index.md
+++ b/public/content/translations/pl/community/get-involved/index.md
@@ -28,7 +28,7 @@ Czy masz doświadczenie w matematyce, kryptografii lub ekonomii? Może zainteres
- Napisz lub zrecenzuj Propozycję Ulepszenia Ethereum
- Napisz EIP
1. Przedstaw swój pomysł na [Ethereum Magicians](https://ethereum-magicians.org)
- 2. Przeczytaj [EIP-1](https://eip.ethereum.org/EIPS/eip-1) — **Tak, jest to _cały_ dokument.**
+ 2. Przeczytaj [EIP-1](https://eips.ethereum.org/EIPS/eip-1) — **Tak, jest to _cały_ dokument.**
3. Postępuj zgodnie z instrukcjami w EIP-1. Odwołaj się do niego podczas pisania wersji wstępnej.
- Dowiedz się jak zostać [edytorem EIP](https://eips.ethereum.org/EIPS/eip-5069)
- Możesz już teraz recenzować EIP! Zobacz [otwarte pull requesty (PR) z tagiem `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Przekaż techniczną opinię na temat linku `discussion-to`.
diff --git a/public/content/translations/pl/community/grants/index.md b/public/content/translations/pl/community/grants/index.md
index bc38982af0d..b21a24d80ce 100644
--- a/public/content/translations/pl/community/grants/index.md
+++ b/public/content/translations/pl/community/grants/index.md
@@ -15,31 +15,27 @@ Ta lista jest tworzona przez naszą społeczność. Jeśli czegoś brakuje lub j
Te programy wspierają rozległy ekosystem Ethereum, oferując granty dla wielu projektów. Obejmują one rozwiązania skalowalności, budowania społeczności, bezpieczeństwa, prywatności i nie tylko. Granty te nie są specyficzne dla żadnej platformy Ethereum i są dobrym miejscem do rozpoczęcia, jeśli nie masz pewności.
- [Program wsparcia ekosystemu prowadzony przez EF](https://esp.ethereum.foundation) — _Finansowanie projektów open source, które przynoszą korzyści Ethereum, ze szczególnym naciskiem na uniwersalne narzędzia, infrastrukturę, badania i dobra publiczne_
-- [Ethereum RFP](https://github.com/ethereum/requests-for-proposals) — _Zapytania o propozycje Fundacji Ethereum prac i projektów w ekosystemie Ethereum_
-- [MetaCartel](https://www.metacartel.org/grants/) — _Rozwój zdecentralizowanych aplikacji, tworzenie DAO_
-- [Moloch DAO](https://www.molochdao.com/) — _Prywatność, skalowanie warstwy 2, bezpieczeństwo klienta i nie tylko_
-- [Open Grants](https://opengrants.com/explore)
-- [Granty DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) — _Arkusz kalkulacyjny Google organizacji oferujących granty_
-- [Crunchbase dla grantów Web3](https://www.cryptoneur.xyz/web3-grants) — _Filtruj i wyszukuj granty według kategorii, przypadku użycia, kwoty i nie tylko. Przyczyń się, aby pomóc innym w znalezieniu odpowiedniego grantu._
-- [Granty Akademickie](https://esp.ethereum.foundation/academic-grants) — _Granty na wsparcie prac akademickich związanych z Ethereum_
+- [MetaCartel](https://www.metacartel.org/grants/) — _rozwój zdecentralizowanych aplikacji, tworzenie DAO_
+- [Moloch DAO](https://www.molochdao.com/) — _prywatność, skalowanie warstwy 2, bezpieczeństwo klienta i nie tylko_
+- [Granty DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) — _arkusz kalkulacyjny Google organizacji oferujących granty_
+- [Crunchbase dla grantów Web3](https://www.cryptoneur.xyz/web3-grants) — _filtruj i wyszukuj granty według kategorii, przypadku użycia, kwoty i nie tylko. Przyczyń się, aby pomóc innym w znalezieniu odpowiedniego grantu._
+- [Granty Akademickie](https://esp.ethereum.foundation/academic-grants) — _granty na wsparcie prac akademickich związanych z Ethereum_
+- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Firma Blockworks opracowała kompleksowy katalog wszystkich dotacji, zapytań ofertowych i nagród za błędy._
## Granty specyficzne dla projektu {#project-specific}
Projekty te stworzyły własne granty dla projektów mających na celu rozwój i eksperymentowanie z własną technologią.
- [Program grantów Aave](https://aavegrants.org/) — _DAO grantów [Aave](https://aave.com/)_
-- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) — _Fundusz ekosystemu [Balancer](https://balancer.fi/)_
+- [Balancer](https://quark-ceres-740.notion.site/Balancer-Grants-938f1b979810427f8d903a904315da41) — _fundusz ekosystemu [Balancer](https://balancer.fi/)_
- [Program grantów Chainlink](https://chain.link/community/grants) — _Granty społeczności [Chainlink](https://chain.link/)_
-- [Program grantów Compound](https://compoundgrants.org/) — _Ekosystem finansowy [Compound](https://compound.finance/)_
- [Program grantów Decetraland](https://governance.decentraland.org/grants/) — _Metaverse DAO [Decentraland](https://decentraland.org/)_
-- [Organizacja grantów ekosystemu Lido (LEGO)](https://lego.lido.fi/) — _Ekosystem finansowy [Lido](https://lido.fi/)_
+- [Organizacja grantów ekosystemu Lido (LEGO)](https://lido.fi/lego) — _ekosystem finansowy [Lido](https://lido.fi/)_
- [Program MetaMask](https://metamaskgrants.org/) — _DAO prowadzonych przez pracowników grantów [MetaMask](https://metamask.io/)_
-- [Program grantów mStable](https://docs.mstable.org/advanced/grants-program) — _Społeczność [mStable](https://mstable.org/)_
-- [Program grantów sieci SKALE](https://skale.space/developers#grants) — _Ekosystem [sieci SKALE](https://skale.space/)_
-- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) — _Ekosystem [The Graph](https://thegraph.com/)_
-- [Program grantów UMA](https://grants.umaproject.org/) — _Wsparcie dla deweloperów [UMA](https://umaproject.org/)_
-- [Program grantów Uniswap](https://www.unigrants.org/) — _Społeczność [Uniswap](https://uniswap.org/)_
-- [Granty Web3](https://web3grants.net) — _Obszerna lista programów grantowych związanych z web3/krypto_
+- [Program grantów sieci SKALE](https://skale.space/developers#grants) — _ekosystem [sieci SKALE](https://skale.space/)_
+- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) — _ekosystem [The Graph](https://thegraph.com/)_
+- [Program grantów Uniswap](https://www.uniswapfoundation.org/apply-for-a-grant) — _społeczność [Uniswap](https://uniswap.org/)_
+- [Granty Web3](https://web3grants.net) — _obszerna lista programów grantowych związanych z web3/krypto_
## Quadratic funding {#quadratic-funding}
diff --git a/public/content/translations/pl/community/language-resources/index.md b/public/content/translations/pl/community/language-resources/index.md
index a4ca3261834..dfd08947fb1 100644
--- a/public/content/translations/pl/community/language-resources/index.md
+++ b/public/content/translations/pl/community/language-resources/index.md
@@ -72,7 +72,7 @@ Jeśli jesteś dwujęzyczny i chcesz pomóc nam dotrzeć do większej liczby os
- [Gwei.cz](https://gwei.cz) — lokalna społeczność skupiona wokół Web3, tworzy treści edukacyjne, organizuje wydarzenia online i stacjonarne
- [Gwei.cz Příručka](https://prirucka.gwei.cz/) — przewodnik Ethereum dla początkujących
- [DAO Příručka](https://dao.gwei.cz/) — przewodnik dla początkujących o DAO
-- [Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) — doskonalenie Ethereum po czesku
+- [Mastering Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) — doskonalenie Ethereum po czesku
### Francuski {#fr}
diff --git a/public/content/translations/pl/community/online/index.md b/public/content/translations/pl/community/online/index.md
index 54dfa383fca..6fb5e38d8db 100644
--- a/public/content/translations/pl/community/online/index.md
+++ b/public/content/translations/pl/community/online/index.md
@@ -24,13 +24,13 @@ Setki tysięcy entuzjastów Ethereum gromadzi się na tych forach internetowych,
Ethereum Cat Herders — społeczność skoncentrowana na oferowaniu wsparcia w zarządzaniu projektami rozwoju EthereumEthereum Hackers — czat Discord prowadzony przez ETHGlobal: społeczność internetowa dla hakerów Ethereum na całym świecieCryptoDevs — społeczność Discord skupiająca się na rozwoju Ethereum
-EthStaker Discord — prowadzone przez społeczność wskazówki, edukacja, wsparcie i zasoby dla obecnych i potencjalnych stakerów
+EthStaker Discord — prowadzone przez społeczność wskazówki, edukacja, wsparcie i zasoby dla obecnych i potencjalnych stakerówZespół strony internetowej ethereum.org — wpadnij i porozmawiaj o tworzeniu i projektowaniu strony internetowej ethereum.org z zespołem i ludźmi ze społecznościMatos Discord — społeczność twórców web3, w której spotykają się budujący, przedstawiciele przemysłu i entuzjaści Ethereum. Jesteśmy pasjonatami rozwoju, projektowania i kultury web3. Przyjdź tworzyć z nami.
-Solidity Gitter — czat dla deweloperów Solidity (Gitter)
+Solidity Gitter — czat dla deweloperów Solidity (Gitter)Solidity Matrix — czat dla rozwoju Solidity (Matrix)
-Ethereum Stack Exchange _— forum pytań i odpowiedzi_
-Peeranha _— zdecentralizowane forum pytań i odpowiedzi_
+Ethereum Stack Exchange *— forum pytań i odpowiedzi*
+Peeranha *— zdecentralizowane forum pytań i odpowiedzi*
## YouTube i Twitter {#youtube-and-twitter}
diff --git a/public/content/translations/pl/community/research/index.md b/public/content/translations/pl/community/research/index.md
index 67909b2f103..c05488d3534 100644
--- a/public/content/translations/pl/community/research/index.md
+++ b/public/content/translations/pl/community/research/index.md
@@ -35,7 +35,7 @@ Badania nad konsensusem są związane z [mechanizmem proof-of-stake Ethereum](/d
- zwiększanie bezpieczeństwa lub wydajności implementacji klienta;
- oraz rozwijanie lekkich klientów.
-Oprócz badań wybiegających w przyszłość, badane są niektóre fundamentalne przeprojektowania protokołu, takie jak nieodwołalność pojedynczego slotu, aby umożliwić znaczące ulepszenia Ethereum. Co więcej, wydajność, bezpieczeństwo i monitorowanie sieci peer-to-peer między klientami konsensusu są również ważnymi tematami badawczymi.
+Oprócz badań wybiegających w przyszłość, badane są niektóre fundamentalne przeprojektowania protokołu, takie jak finalizacja pojedynczego slotu, aby umożliwić znaczące ulepszenia Ethereum. Co więcej, wydajność, bezpieczeństwo i monitorowanie sieci peer-to-peer między klientami konsensusu są również ważnymi tematami badawczymi.
#### Podstawowe informacje {#background-reading}
@@ -48,7 +48,7 @@ Oprócz badań wybiegających w przyszłość, badane są niektóre fundamentaln
- [Konsensus ethresear.ch](https://ethresear.ch/c/consensus/29)
- [Dylemat dostępności/nieodwołalności](https://arxiv.org/abs/2009.04987)
-- [Single slot finality](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259)
+- [Finalizacja pojedynczego slotu](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259)
- [Separacja proponujący-budujący](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance)
### Wykonanie {#execution}
@@ -124,7 +124,7 @@ Jednym ze szczególnych obszarów warstwy 2, który wymaga dalszych badań i roz
- [Wprowadzenie do mostów blockchain](/bridges/)
- [Vitalik o mostach](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
- [Artykuł o mostach blockchain](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8)
-- [Wartość zablokowana w mostach]()
+- [Wartość zablokowana w mostach](https://dune.com/eliasimos/Bridge-Away-(from-Ethereum))
#### Ostatnie badania {#recent-research-3}
@@ -216,7 +216,7 @@ Aby wprowadzić więcej osób do Ethereum, ekosystem musi poprawić UX/UI. Będz
### Ekonomia {#economics}
-Badania ekonomiczne w Ethereum zasadniczo opierają się na dwóch podejściach: walidacji bezpieczeństwa mechanizmów opartych na zachętach ekonomicznych („mikroekonomia”) i analizie przepływów wartości między protokołami, aplikacjami i użytkownikami („makroekonomia”). Istnieją złożone czynniki krypto-ekonomiczne związane z natywnym aktywem Ethereum (Ethereum) i tokenami zbudowanymi na nim (na przykład NFT i tokeny ERC20).
+Badania ekonomiczne w Ethereum zasadniczo opierają się na dwóch podejściach: walidacji bezpieczeństwa mechanizmów opartych na zachętach ekonomicznych („mikroekonomia”) i analizie przepływów wartości między protokołami, aplikacjami i użytkownikami („makroekonomia”). Istnieją złożone czynniki krypto-ekonomiczne związane z natywnym aktywem Ethereum (eter) i tokenami zbudowanymi na nim (na przykład NFT i tokeny ERC20).
#### Podstawowe informacje {#background-reading-9}
@@ -346,7 +346,6 @@ Narzędzia dla deweloperów Ethereum szybko się poprawiają. W tym obszarze wym
- [Frameworki dla deweloperów](/developers/docs/frameworks/)
- [Lista narzędzi deweloperskich konsensusu](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Standardy tokenów](/developers/docs/standards/tokens/)
-- [Biastek: narzędzia Ethereum](https://biastek.com/ethereum-tools/)
- [CryptoDevHub: Narzędzia EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
#### Ostatnie badania {#recent-research-17}
diff --git a/public/content/translations/pl/community/support/index.md b/public/content/translations/pl/community/support/index.md
index 66a749ef960..0ba37c42e93 100644
--- a/public/content/translations/pl/community/support/index.md
+++ b/public/content/translations/pl/community/support/index.md
@@ -39,7 +39,7 @@ Szukasz portfela Ethereum? [ Zapoznaj się z naszą pełną listą portfeli Ethe
Budowanie może być trudne. Oto kilka miejsc skoncentrowanych na rozwoju z doświadczonymi deweloperami Ethereum, którzy chętnie pomogą.
- [Alchemy University](https://university.alchemy.com/#starter_code)
-- [Discord CryptoDevs](https://discord.gg/Z9TA39m8Yu)
+- [Discord CryptoDevs](https://discord.com/invite/5W5tVb3)
- [Ethereum StackExchange](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Web3 University](https://www.web3.university/)
@@ -53,7 +53,7 @@ Czy twoje pytanie dotyczy konkretnego narzędzia, projektu lub biblioteki? Więk
Oto kilka popularnych przykładów:
-- [Solidity](https://gitter.im/ethereum/solidity)
+- [Solidity](https://gitter.im/ethereum/solidity/)
- [ethers.js](https://discord.gg/6jyGVDK6Jx)
- [web3.js](https://discord.gg/GsABYQu4sC)
- [Hardhat](https://discord.gg/xtrMGhmbfZ)
@@ -65,7 +65,7 @@ Oto kilka popularnych przykładów:
Jeśli uruchamiasz węzeł lub walidator, oto kilka społeczności, które pomogą Ci zacząć.
-- [Discord EthStaker](https://discord.io/ethstaker)
+- [Discord EthStaker](https://discord.gg/ethstaker)
- [Reddit EthStaker](https://www.reddit.com/r/ethstaker)
Większość zespołów tworzących klienty Ethereum ma również dedykowane, publiczne przestrzenie, w których można uzyskać wsparcie i zadawać pytania.
diff --git a/public/content/translations/pl/decentralized-identity/index.md b/public/content/translations/pl/decentralized-identity/index.md
index ed2e85ad6a4..3cb7ce04529 100644
--- a/public/content/translations/pl/decentralized-identity/index.md
+++ b/public/content/translations/pl/decentralized-identity/index.md
@@ -6,16 +6,16 @@ template: use-cases
emoji: ":id:"
sidebarDepth: 2
image: /eth-gif-cat.png
-summaryPoint1: W tradycyjnych systemach tożsamościwydawanie, utrzymywanie i kontrola identyfikatorów są scentralizowane.
+summaryPoint1: W tradycyjnych systemach tożsamości wydawanie, utrzymywanie i kontrola Twoich identyfikatorów są scentralizowane.
summaryPoint2: Tożsamość zdecentralizowana usuwa zależność od scentralizowanych podmiotów trzecich.
-summaryPoint3: Dzięki crypto użytkownicy, po raz kolejny, mają teraz narzędzia do wydawania i kontrolowania własnych identyfikatorów i zaświadczeń.
+summaryPoint3: Dzięki technologii kryptograficznej użytkownicy mają ponownie narzędzia do wydawania, przechowywania i kontrolowania własnych identyfikatorów i poświadczeń.
---
Tożsamość stanowi dzisiaj podstawę praktycznie każdego aspektu życia. Korzystając z usług internetowych, otwierając konto bankowe, głosując w wyborach, kupując nieruchomości, zatrudniając się — zawsze musisz udowodnić swoją tożsamość.
Jednak tradycyjne systemy zarządzania tożsamością od dawna polegają na scentralizowanych pośrednikach, którzy wydają, przechowują i kontrolują Twoje identyfikatory oraz [poświadczenia](#what-are-attestations). Oznacza to, że nie możesz kontrolować informacji związanych z tożsamością ani decydować, kto ma dostęp do informacji umożliwiających identyfikację osoby (PII) i jak duży jest ten dostęp.
-Te problemy rozwiązują zdecentralizowane systemy tożsamości oparte na publicznych łańcuchach bloków, takie jak Ethereum. Tożsamość zdecentralizowana umożliwia jednostkom zarządzanie informacjami związanymi z ich tożsamością. Dzięki zdecentralizowanym rozwiązaniom w zakresie tożsamości możesz _samodzielnie_ tworzyć identyfikatory oraz żądać swoich poświadczeń i przechowywać je bez polegania na organach centralnych, takich jak dostawcy usług lub rządy.
+Te problemy rozwiązują zdecentralizowane systemy tożsamości oparte na publicznych blockchainach takich jak Ethereum. Tożsamość zdecentralizowana umożliwia jednostkom zarządzanie informacjami związanymi z ich tożsamością. Dzięki zdecentralizowanym rozwiązaniom w zakresie tożsamości możesz _samodzielnie_ tworzyć identyfikatory oraz żądać swoich poświadczeń i przechowywać je bez polegania na organach centralnych, takich jak dostawcy usług lub rządy.
## Co to jest tożsamość? {#what-is-identity}
@@ -33,7 +33,7 @@ Identyfikator jest informacją, która wskazuje określoną lub określone tożs
Te tradycyjne przykłady identyfikatorów są wydawane, przechowywane i kontrolowane przez jednostki centralne. Potrzebujesz pozwolenia od swojego rządu, aby zmienić swoje imię i nazwisko, a od platformy mediów społecznościowych, aby zmienić swój identyfikator.
-## Co to są atesty? {#what-are-attestations}
+## Co to są poświadczenia? {#what-are-attestations}
Poświadczenie jest oświadczeniem złożonym przez jeden podmiot na temat innego podmiotu. Jeśli mieszkasz w Stanach Zjednoczonych, prawo jazdy wydane przez departament pojazdów mechanicznych (jeden podmiot) potwierdza, że inny podmiot (Ty) jest uprawniony do prowadzenia samochodu.
@@ -161,6 +161,7 @@ Istnieje wiele ambitnych projektów wykorzystujących Ethereum jako podstawę zd
- **[Proof of Humanity (lub PoH)](https://www.proofofhumanity.id)** — _ system weryfikacji tożsamości społecznościowej oparty na Ethereum._
- **[BrightID](https://www.brightid.org/)** — _sieć zdecentralizowanych tożsamości społecznościowych typu open source. Jej celem jest zreformowanie weryfikacji tożsamości poprzez tworzenie i analizę wykresu społecznego._
- **[Proof-of-personhood Passport](https://proofofpersonhood.com/)** — _zdecentralizowany agregator tożsamości cyfrowych._
+- **[walt.id](https://walt.id)** — _zdecentralizowana infrastruktura tożsamości i portfela o otwartym kodzie źródłowym, która umożliwia deweloperom i organizacjom wykorzystanie niezależnej tożsamości i NFT/SBT._
## Dalsza lektura {#further-reading}
@@ -170,6 +171,7 @@ Istnieje wiele ambitnych projektów wykorzystujących Ethereum jako podstawę zd
- [Co to jest Ethereum ERC725? Samodzielne zarządzanie tożsamością w łańcuchu bloków](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
- [Jak łańcuch bloków może rozwiązać problem cyfrowej tożsamości](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
- [Co to jest zdecentralizowana tożsamość i dlaczego warto się nią zajmować?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [Wprowadzenie do zdecentralizowanej tożsamości](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
### Materiały wideo {#videos}
@@ -177,9 +179,11 @@ Istnieje wiele ambitnych projektów wykorzystujących Ethereum jako podstawę zd
- [Logowanie za pomocą Ethereum i zdecentralizowanej tożsamości za pomocą Ceramic, IDX, React i 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _samouczek YouTube pokazujący, jak zbudować system zarządzania tożsamością do tworzenia, odczytywania i aktualizowania profilu użytkownika przy użyciu portfela Ethereum autorstwa Nadera Dabita._
- [BrightID — zdecentralizowana tożsamość w Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _odcinek podcastu Bankless omawiający BrightID, zdecentralizowane rozwiązanie tożsamości dla Ethereum._
- [Internet poza łańcuchem: zdecentralizowana tożsamość i weryfikowalne dane uwierzytelniające](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — prezentacja EthDenver 2022 autorstwa Evina McMullena.
+- [Wyjaśnienie weryfikowalnych danych uwierzytelniających](https://www.youtube.com/watch?v=ce1IdSr-Kig) — film wyjaśniający na YouTube z demonstracją autorstwa Tamino Baumanna
### Społeczności {#communities}
- [Sojusz ERC-725 na GitHub](https://github.com/erc725alliance) — _zwolennicy standardu ERC725 do zarządzania tożsamością w łańcuchu bloków Ethereum._
- [Serwer Discord SpruceID](https://discord.com/invite/Sf9tSFzrnt) — _społeczność dla entuzjastów i programistów pracujących nad logowaniem za pomocą Ethereum._
- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _społeczność programistów uczestniczących w budowaniu struktury weryfikowalnych danych dla aplikacji._
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _społeczność deweloperów i twórców pracujących nad przypadkami użycia zdecentralizowanej tożsamości w różnych branżach_
diff --git a/public/content/translations/pl/defi/index.md b/public/content/translations/pl/defi/index.md
index 3ed5cad1322..b1fe04fde62 100644
--- a/public/content/translations/pl/defi/index.md
+++ b/public/content/translations/pl/defi/index.md
@@ -277,7 +277,7 @@ Zdecentralizowane ubezpieczenia mają na celu obniżenie kosztów ubezpieczenia,
Produkty Ethereum, podobnie jak każde oprogramowanie, mogą zawierać błędy i są narażone na oprogramowanie wykorzystujące luki. Dlatego obecnie wiele dostępnych produktów ubezpieczeniowych koncentruje się na ochronie użytkowników przed utratą środków. Jednak pojawiają się projekty, które zaczynają obejmować swoim zasięgiem wszystko, czym może nas zaskoczyć życie. Dobrym tego przykładem jest program Crop firmy Etherisc, którego celem jest [ochrona drobnych rolników w Kenii przed suszami i powodziami](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). Zdecentralizowane ubezpieczenie może zapewnić tańszą ochronę ubezpieczeniową dla rolników, którzy często nie są uwzględniani przez tradycyjnych ubezpieczycieli.
- Zobacz d-aplikacje ubezpieczeniowe
+ Zobacz zdecentralizowane aplikacje ubezpieczeniowe
diff --git a/public/content/translations/pl/desci/index.md b/public/content/translations/pl/desci/index.md
index 59439376328..d6aac3be9fa 100644
--- a/public/content/translations/pl/desci/index.md
+++ b/public/content/translations/pl/desci/index.md
@@ -18,7 +18,7 @@ Zdecentralizowana nauka (DeSci) jest ruchem, który ma na celu zbudowanie public
DeSci ma na celu stworzenie ekosystemu, w którym naukowcy są zachęcani do otwartego dzielenia się swoimi badaniami i otrzymują uznanie za swoją pracę, jednocześnie umożliwiając każdemu łatwy dostęp do badań i uczestniczenie w nich. DeSci działa w oparciu o ideę, że wiedza naukowa powinna być dostępna dla każdego, a proces badań naukowych powinien być przejrzysty. DeSci tworzy bardziej zdecentralizowany i rozproszony model badań naukowych, dzięki czemu są one bardziej odporne na cenzurę i kontrolę ze strony władz centralnych. DeSci to środowisko, w którym nowe i niekonwencjonalne pomysły mogą się rozwijać poprzez decentralizację dostępu do finansowania, narzędzi naukowych i kanałów komunikacji.
-Zdecentralizowana nauka umożliwia bardziej zróżnicowane źródła finansowania (od [DAO](/dao/), [kwadratowych darowizn](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) do finansowania społecznościowego i innych form), łatwiejszy dostęp do danych i metod, a także poprzez zapewnienie zachęt do odtwarzalności.
+Zdecentralizowana nauka pozwala na bardziej zróżnicowane źródła finansowania (od [DAO](/dao/), [kwadratowych darowizn](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) do finansowania społecznościowego i nie tylko), bardziej dostępne dane i metody oraz poprzez zapewnienie zachęt do odtwarzalności.
### Juan Benet — ruch DeSci
@@ -103,7 +103,7 @@ Przeglądaj projekty i dołącz do społeczności DeSci.
- [OceanDAO: DAO finansuje naukę związaną z danymi](https://oceanprotocol.com/dao)
- [Opscientia: otwarty, zdecentralizowany przepływ prac naukowych](https://opsci.io/research/)
- [LabDAO: projektuj białka in-silico (za pomocą komputera)](https://alphafodl.vercel.app/)
-- [Bio.xyz: zdobądź fundusze na swój biotechnologiczny projekt DAO lub desci](https://www.molecule.to/)
+- [Bio.xyz: zdobądź fundusze na swój biotechnologiczny projekt DAO lub desci](https://www.bio.xyz/)
- [Research Hub: wysyłaj wyniki naukowe i angażuj się w rozmowy z partnerami](https://www.researchhub.com/)
- [VitaDAO: uzyskuj środki finansowe w ramach sponsorowanych umów badawczych na długotrwałe badania](https://www.vitadao.com/)
- [Protokół Fleminga: gospodarka danymi typu open-source, która wspiera wspólne odkrycia biomedyczne](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
diff --git a/public/content/translations/pl/developers/docs/apis/backend/index.md b/public/content/translations/pl/developers/docs/apis/backend/index.md
index f8d2ad39309..3991479a59e 100644
--- a/public/content/translations/pl/developers/docs/apis/backend/index.md
+++ b/public/content/translations/pl/developers/docs/apis/backend/index.md
@@ -12,7 +12,7 @@ Jeśli chcesz użyć określonego języka programowania do połączenia z węzł
## Warunki wstępne {#prerequisites}
-Pomocne może być zrozumienie [stosu Ethereum](/developers/docs/ethereum-stack/) i [klientów Ethereum](/docs/nodes-and-clients/).
+Pomocne może być zrozumienie [stosu Ethereum](/developers/docs/ethereum-stack/) i [klientów Ethereum](/developers/docs/nodes-and-clients/).
## Dlaczego warto użyć biblioteki? {#why-use-a-library}
diff --git a/public/content/translations/pl/developers/docs/index.md b/public/content/translations/pl/developers/docs/index.md
index 9dbce0359ea..6f1ae718c97 100644
--- a/public/content/translations/pl/developers/docs/index.md
+++ b/public/content/translations/pl/developers/docs/index.md
@@ -42,4 +42,4 @@ Jeśli jest to Twoja pierwsza próba rozwoju Ethereum, zalecamy zacząć od pocz
- [Standardy tokenów](/developers/docs/standards/tokens/)
- [Wyrocznie](/developers/docs/oracles/)
-- [Skalowanie](/developers/docs/layer-2-scaling/)
+- [Skalowanie](/developers/docs/scaling/)
diff --git a/public/content/translations/pl/developers/docs/nodes-and-clients/index.md b/public/content/translations/pl/developers/docs/nodes-and-clients/index.md
index 1bb4b2615b9..b28130b5340 100644
--- a/public/content/translations/pl/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/pl/developers/docs/nodes-and-clients/index.md
@@ -225,5 +225,4 @@ W Internecie jest wiele instrukcji i informacji o klientach Ethereum, tutaj jest
## Powiązane samouczki {#related-tutorials}
-- [Uruchamianie węzła za pomocą Geth](/developers/tutorials/run-light-node-geth/) _– Jak pobrać, zainstalować i uruchomić Geth. Omówienie trybów synchronizacji, konsoli JavaScript i więcej._
- [Turn your Raspberry Pi 4 into an Eth 1.0 or Eth 2.0 node just by flashing the MicroSD card – Installation guide](/developers/tutorials/run-node-raspberry-pi/) _– Flash your Raspberry Pi 4, plug in an ethernet cable, connect the SSD disk and power up the device to turn the Raspberry Pi 4 into a full Ethereum 1.0 node or an Ethereum 2.0 node (beacon chain / validator)._
diff --git a/public/content/translations/pl/developers/docs/smart-contracts/languages/index.md b/public/content/translations/pl/developers/docs/smart-contracts/languages/index.md
index 0ef6fd35496..ce2f7cd9621 100644
--- a/public/content/translations/pl/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/pl/developers/docs/smart-contracts/languages/index.md
@@ -209,7 +209,7 @@ Jeśli dopiero zapoznajesz się z Ethereum i nie kodowałeś jeszcze w językach
**Yul+**
- Niskopoziomowe, bardzo wydajne rozszerzenie do Yul.
-- Początkowo zaprojektowany na potrzeby kontraktu typu [optymistyczna wartość zbiorcza](/docs/layer-2-scaling/#rollups-and-sidechains).
+- Początkowo zaprojektowany na potrzeby kontraktu typu [optymistyczna wartość zbiorcza](/developers/docs/scaling/).
- Yul+ można postrzegać jako eksperymentalną propozycję ulepszenia Yul, dodającą do niego nowe funkcje.
### Ważne linki {#important-links-2}
diff --git a/public/content/translations/pl/developers/docs/smart-contracts/testing/index.md b/public/content/translations/pl/developers/docs/smart-contracts/testing/index.md
index 74b9d93cbf0..c7b29760bb1 100644
--- a/public/content/translations/pl/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/pl/developers/docs/smart-contracts/testing/index.md
@@ -37,7 +37,7 @@ incomplete: true
- [Solidity and Truffle Continuous Integration Setup](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– jak skonfigurować Travis lub Circle CI do testowania Truffle wraz z przydatnymi wtyczkami_
- [Narzędzia testowe](/developers/tutorials/guide-to-smart-contract-security-tools/) _– przegląd i porównanie różnych narzędzi testowych_
- [Echidna – narzędzie do testowania inteligentnych kontraktów](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [Manticore – narzędzie do znajdowania błędów w inteligentnych kontraktach](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [Manticore – narzędzie do znajdowania błędów w inteligentnych kontraktach](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [Slither – narzędzie do znajdowania błędów w inteligentnych kontraktach](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [Jak tworzyć kontrakty Solidity pod kątem testowania](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [Jak migrować z Truffle Tests do środowiska testowego OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
diff --git a/public/content/translations/pl/developers/docs/standards/tokens/index.md b/public/content/translations/pl/developers/docs/standards/tokens/index.md
index 1f049eac59c..6f89f69c06e 100644
--- a/public/content/translations/pl/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/pl/developers/docs/standards/tokens/index.md
@@ -29,5 +29,5 @@ _Znasz jakieś zasoby społeczności, które Ci pomogły? Wyedytuj tę stronę
- [Lista kontrolna integracji tokenów](/developers/tutorials/token-integration-checklist/) _– lista kontrolna rzeczy, które należy wziąć pod uwagę podczas interakcji z tokenami._
- [Zrozumienie inteligentnego kontraktu tokena ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– wprowadzenie do wdrożenie pierwszego inteligentnego kontraktu w sieci testowej Ethereum._
-- [Przenoszenie i zatwierdzanie tokenów ERC20 z inteligentnego kontraktu Solidity](/developers/tutorials/transfers-and-approval-of-erc20-tokens-from-a-solidity-smart-contract/) _– jak używać inteligentnego kontraktu do interakcji z tokenem przy użyciu języka Solidity._
+- [Przenoszenie i zatwierdzanie tokenów ERC20 z inteligentnego kontraktu Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– jak używać inteligentnego kontraktu do interakcji z tokenem przy użyciu języka Solidity._
- [Wdrażanie rynku ERC721 [przewodnik]](/developers/tutorials/how-to-implement-an-erc721-market/) _– jak wystawiać tokenizowane przedmioty na sprzedaż na zdecentralizowanej tablicy ogłoszeń._
diff --git a/public/content/translations/pl/developers/tutorials/run-light-node-geth/index.md b/public/content/translations/pl/developers/tutorials/run-light-node-geth/index.md
deleted file mode 100644
index a41cb513594..00000000000
--- a/public/content/translations/pl/developers/tutorials/run-light-node-geth/index.md
+++ /dev/null
@@ -1,167 +0,0 @@
----
-title: Jak uruchomić lekki węzeł za pomocą Geth
-description: Jak pobrać, zainstalować i uruchomić Geth. Obejmuje tryby synchronizacji, konsolę JavaScript i nie tylko
-author: "Brian Gu"
-tags:
- - "klienty"
- - "węzły"
-skill: intermediate
-lang: pl
-published: 2020-06-14
----
-
-Możesz być zainteresowany uruchomieniem [węzła Ethereum](/developers/docs/nodes-and-clients/). Jednym z najprostszych sposobów jest pobieranie, instalowanie i uruchamianie Geth. Dzięki Geth możemy uruchomić lekki węzeł w ciągu kilku minut.
-
-Najpierw musisz [zainstalować Geth](https://geth.ethereum.org/docs/install-and-build/installing-geth).
-
-Po zainstalowaniu Getha uruchomienie pełnego węzła Ethereum jest tak proste, jak pisanie
-
-```bash
-$ geth
-```
-
-w wierszu poleceń (bez znaku dolara). Nie rób tego jeszcze! Po uruchomieniu `geth` Geth:
-
-- Zainicjuje lokalną kopię EVM w stanie pustym
-- Rozpocznie pobieranie wszystkich bloków w historii Ethereum, zaczynając od bloku 0.
-- Powtórzy wszystkie transakcje we wszystkich blokach, aby zaktualizować stan EVM każdą transakcją, aż osiągnie stan bieżący.
-
-Ten proces może trwać od godzin do dni i wymaga kilkuset GB wolnego miejsca. Na razie po prostu uruchomimy lekki węzeł w sieci testowej, aby zapoznać się z tym, jak korzystać z Getha. Aby to zrobić, będziemy musieli przejść przez kilka ważnych opcji i narzędzi wiersza poleceń.
-
-## Główna sieć i testnet {#mainnet-and-testnet}
-
-Domyślnie Geth uruchamia węzeł sieci głównej. Możesz uruchomić `geth --testnet`, aby uruchomić pełny węzeł sieci testowej Ropsten. Możesz uruchomić węzeł w Rinkeby, zamieniając `testnet` na `rinkeby`.
-
-[Dowiedz się więcej o różnych sieciach](/developers/docs/networks/).
-
-## Syncmode {#syncmode}
-
-Geth ma trzy `syncmode`.
-
-```bash
-$ geth --syncmode "full"
-$ geth --syncmode "fast"
-$ geth --syncmode "light"
-```
-
-`"full"` uruchamia pełny węzeł dokładnie tak, jak można się spodziewać — twoja maszyna inicjuje lokalną kopię EVM w jej oryginalnym czystym stanie, pobiera każdy blok od początku łańcucha bloków i wykonuje każdą transakcję w każdym bloku, aktualizując stan EVM, aż osiągnie obecny stan EVM.
-
-`"fast"` pobiera wszystkie bloki, ale także pobiera ostatnią migawkę stanu EVM z peera (obecnie stan 64 bloków EVM w przeszłości), wykonując transakcje tylko w najnowszych blokach do osiąga aktualny stan EVM. Zaletą `"fast"` jest to, że synchronizacja do obecnego stanu zajmuje znacznie mniej czasu; jednak opiera się na pełnym archiwalnym węźle równorzędnym dla migawki stanu, więc nie weryfikuje wszystkiego dla siebie.
-
-Wreszcie, `"light"` uruchamia lekki węzeł, który omówiliśmy powyżej.
-
-Aby wyjaśnić różnice pomiędzy trzema trybami synchronizacji, zobacz tę [odpowiedź giełdy](https://ethereum.stackexchange.com/questions/11297/what-is-geths-light-sync-and-why-is-it-so-fast).
-
-## Dokumentacja i inne opcje wiersza poleceń {#documentation-and-other-command-line-options}
-
-- [Pełna dokumentacja](https://geth.ethereum.org/docs/)
-- [Wszystkie opcje wiersza poleceń](https://geth.ethereum.org/docs/interface/command-line-options)
-
-## Uruchomienie lekkiego węzła {#running-your-light-node}
-
-Uruchomimy lekki węzeł sieci testowej, aby zapoznać się z zarządzaniem węzłem i interakcją z nim. Aby to zrobić, po prostu uruchom
-
-```bash
-$ geth --testnet --syncmode "light"
-```
-
-Poczekaj kilka sekund i miejmy nadzieję, że otrzymasz dane wyjściowe, które wyglądają mniej więcej tak:
-
-```bash
-$ geth --testnet --syncmode "light"
-INFO [11-18|14:04:47] Maximum peer count ETH=0 LES=100 total=25
-INFO [11-18|14:04:47] Starting peer-to-peer node instance=Geth/v1.8.11-stable/darwin-amd64/go1.10.3
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-INFO [11-18|14:04:47] Persisted trie from memory database nodes=355 size=51.89kB time=561.839µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
-INFO [11-18|14:04:47] Initialised chain configuration config="{ChainID: 3 Homestead: 0 DAO: DAOSupport: true EIP150: 0 EIP155: 10 EIP158: 10 Byzantium: 1700000 Constantinople: Engine: ethash}"
-INFO [11-18|14:04:47] Disk storage enabled for ethash caches dir=/Users/bgu/Library/Ethereum/testnet/geth/ethash count=3
-INFO [11-18|14:04:47] Disk storage enabled for ethash DAGs dir=/Users/bgu/.ethash count=2
-INFO [11-18|14:04:47] Added trusted checkpoint chain=ropsten block=3375103 hash=9017ab…249e89
-INFO [11-18|14:04:47] Loaded most recent local header number=0 hash=419410…ca4a2d td=1048576
-INFO [11-18|14:04:47] Starting P2P networking
-INFO [11-18|14:04:49] UDP listener up net=enode://3ef47be442520e4708b5ff25e6e213c496046f443f8393ff5e7ec55f1cf27c374e2e93e78235bde651a5734a012a40eacfc16deab762ee0f380b95d117ac530c@[::]:30303
-WARN [11-18|14:04:49] Light client mode is an experimental feature
-INFO [11-18|14:04:49] RLPx listener up self="enode://3ef47be442520e4708b5ff25e6e213c496046f443f8393ff5e7ec55f1cf27c374e2e93e78235bde651a5734a012a40eacfc16deab762ee0f380b95d117ac530c@[::]:30303?discport=0"
-INFO [11-18|14:04:49] IPC endpoint opened url=/Users/bgu/Library/Ethereum/testnet/geth.ipc
-INFO [11-18|14:04:51] Mapped network port proto=udp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
-INFO [11-18|14:04:51] Mapped network port proto=tcp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
-INFO [11-18|14:08:55] Block synchronisation started
-INFO [11-18|14:08:58] Imported new block headers count=192 elapsed=1.574s number=3375295 hash=62f6b1…95c47f ignored=0
-INFO [11-18|14:08:58] Imported new block headers count=192 elapsed=127.088ms number=3375487 hash=ae759b…453ac5 ignored=0
-INFO [11-18|14:08:59] Imported new block headers count=960 elapsed=582.125ms number=3376447 hash=4cab62…445b82 ignored=0
-INFO [11-18|14:08:59] Imported new block headers count=192 elapsed=169.936ms number=3376639 hash=470614…85ce15 ignored=0
-INFO [11-18|14:08:59] Imported new block headers count=384 elapsed=245.745ms number=3377023 hash=dad8ee…2862d2 ignored=0
-INFO [11-18|14:08:59] Imported new block headers count=192 elapsed=128.514ms number=3377215 hash=ebcd84…ea26cb ignored=0
-INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=125.427ms number=3377407 hash=fca10c…8ed04d ignored=0
-INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=109.536ms number=3377599 hash=9aa141…f34080 ignored=0
-INFO [11-18|14:09:00] Imported new block headers count=192 elapsed=109.849ms number=3377791 hash=499f2d…e0c713 ignored=0
-```
-
-Uwaga: przez kilka minut, a nawet godzin, jeśli masz szczególnego pecha, możesz nie widzieć komunikatów „Block synchronisation started” i następnie „Imported new block headers”. W tym czasie Twój klient próbuje znaleźć równorzędne pełne węzły, które obsłużą klientów typu light. W powyższym przykładzie możemy stwierdzić po znacznikach czasu, że moja maszyna musiała odczekać około czterech minut między rozpoczęciem wyszukiwania równorzędnych węzłów a faktycznym znalezieniem takiego, z którego można pobrać bloki. Jest to obecnie otwarty problem w społeczności Ethereum — jak zachęcić ludzi do uruchamiania pełnych węzłów, które obsługują klientów typu light?
-
-Gdy rozpocznie się synchronizacja bloków, Twoja maszyna będzie potrzebować kilku minut, aby nadrobić zaległości w najnowszych blokach w łańcuchu bloków. W tym momencie twój wynik zacznie wyglądać tak:
-
-```bash
-INFO [11-18|16:06:04.025] Imported new block headers count=2 elapsed=6.253ms number=4456862 hash=ce0a0b…6ab128
-INFO [11-18|16:06:27.819] Imported new block headers count=2 elapsed=5.982ms number=4456864 hash=04a054…b4f661
-INFO [11-18|16:06:34.080] Imported new block headers count=2 elapsed=4.774ms number=4456866 hash=15a43c…efc782
-INFO [11-18|16:06:45.464] Imported new block headers count=2 elapsed=5.213ms number=4456868 hash=eb02d5…227564
-INFO [11-18|16:07:11.630] Imported new block headers count=2 elapsed=5.835ms number=4456870 hash=67daa7…66892d
-```
-
-W tym momencie wiadomości zaczną przychodzić co 10-30 sekund, a wartość `count` będzie składać się z pojedynczych cyfr dla każdej wiadomości.
-
-## Gdzie przechowywane są dane z blockchainu i EVM? {#where-is-the-blockchain-and-evm-data-stored}
-
-Katalog, którego Geth używa do przechowywania nieprzetworzonych danych łańcucha bloków, zależy od systemu operacyjnego. Po uruchomieniu Geth poszukaj wiadomości, która wygląda jak
-
-```bash
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-```
-
-Ścieżka po `„database="` powinna Ci powiedzieć, gdzie dane łańcucha bloków są przechowywane na Twoim komputerze. Jeśli używasz pełnego węzła, ten katalog będzie zawierał wszystkie dane o każdym bloku, który kiedykolwiek został przekazany do łańcucha bloków. Ponieważ mamy lekki węzeł, ten katalog zawiera tylko nagłówki bloków.
-
-Warto w tym miejscu podkreślić, że na najniższym poziomie to właśnie tutaj żyje blockchain. Pełna zawartość łańcucha bloków i stan EVM są przechowywane na każdym pełnym węźle w sieci Ethereum, w katalogach, które wyglądają bardzo podobnie do tego na twoim komputerze.
-
-## Dołączanie do konsoli JavaScript {#attaching-to-the-javascript-console}
-
-Uruchamianie węzła nie jest przydatne, chyba że faktycznie możemy z nim wchodzić w interakcje. Na przykład możemy chcieć rozgłaszać żądania transakcji lub wyszukiwać dane EVM/blockchainu (takie jak saldo konta). Geth ma wbudowaną konsolę JavaScript i interfejs API JavaScript o nazwie [web3js](https://github.com/ethereum/web3.js/), którego możesz użyć do interakcji z węzłem.
-
-Aby użyć konsoli JavaScript:
-
-1. Rozpocznij uruchamianie węzła w oknie terminala (zarówno pełny, jak i lekki węzeł są akceptowane).
-2. Poszukaj wiadomości, która wygląda tak:
-
-```bash
-INFO [11-18|14:04:49] IPC endpoint opened url=/Users/bgu/Library/Ethereum/testnet/geth.ipc
-```
-
-Ten komunikat powinien zostać zarejestrowany przed rozpoczęciem synchronizacji bloku.
-
-3. Ten komunikat wskazuje ścieżkę do punktu końcowego IPC (komunikacja między procesami). Skopiuj tę ścieżkę (w powyższym przykładzie jest to `/Users/bgu/Library/Ethereum/testnet/geth.ipc`).
-4. Otwórz nowe okno lub kartę terminala i uruchom następujące polecenie: `$ geth attach [ścieżka Twojego punktu końcowego IPC]`
-
-To powinno otworzyć konsolę JavaScript. Możemy teraz używać web3js do interakcji z węzłem.
-
-[Pełna dokumentacja web3js](http://web3js.readthedocs.io/)
-
-Oto kilka przydatnych obiektów udostępnianych przez ten interfejs API. Dostęp do nich można uzyskać, wpisując je w konsoli JavaScript.
-
-- `eth.syncing` zwraca obiekt, jeśli twój węzeł rozpoczął, ale nie zakończył synchronizacji bloku, lub wartość `false`, jeśli zakończył synchronizację lub nie został uruchomiony. Jeśli węzeł nadal się synchronizuje, `eth.syncing` poinformuje Cię o ostatnim numerze bloku, którego dane otrzymałeś, a także o całkowitej liczbie bloków w bieżącym łańcuchu bloków.
-- `net.peerCount` zwraca liczbę peerów, z którymi jesteś połączony. Jeśli jest to 0, prawdopodobnie będziesz musiał poczekać kilka minut lub zacząć szukać rozwiązań w Google (może to być zapora sieciowa, problem z siecią lub coś innego).
-- `admin.peers` da Ci listę wszystkich peerów z którymi Twój węzeł jest podłączony. Jeśli to jest puste, twój węzeł nie jest połączony z żadnymi innymi peerami.
-
-Możemy również użyć web3js do inicjowania kont, pisania i wysyłania żądań transakcji do sieci, sprawdzania sald kont i metadanych i nie tylko. Omówimy te operacje w dalszej części; na razie spróbuj uruchomić następujące polecenie, aby sprawdzić saldo jednego z moich kont w sieci testowej Ropsten:
-
-```js
-eth.getBalance('0x85d918c2B7F172d033D190152AEc58709Fb6D048')
-# returns 1059286000000000000 as of 11-18-2018. Ta wartość jest podana w "Wei".
-# Jedno Wei jest nominałem, który jest równoważny 10^-18 ether.
-# Saldo tego konta w ether wynosi około 1,059 eth.
-```
-
-## Zatrzymywanie i ponowne uruchamianie węzła {#stopping-and-restarting-your-node}
-
-Możesz zatrzymać swój węzeł w każdej chwili. Jeśli chcesz zrestartować węzeł, ponowna synchronizacja Geth zajmie kilka sekund lub minut (pobranie bloków i/lub nagłówków bloków od miejsca, w którym zostało przerwane, gdy węzeł ostatnio przestał działać). Jeśli którakolwiek z powyższych instrukcji nie działa, pierwszą rzeczą, którą powinieneś zrobić, to spróbować zrestartować swój węzeł.
-
-Jeśli jesteś zainteresowany uruchomieniem pełnego węzła Ethereum, najlepiej jest to zrobić z dedykowanej maszyny z dobrą łącznością sieciową, a nie z komputera osobistego. Oto przewodnik do uruchomienia węzła z AWS (jest to trochę przestarzałe, a AMI nie są już aktualne lub dostępne, abyś musiał zrobić trochę Googling): [Jak uruchomić węzeł na AWS](https://medium.com/mercuryprotocol/how-to-run-an-ethereum-node-on-aws-a8774ed3acf6)
diff --git a/public/content/translations/pl/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/pl/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 01f72c61d62..f9dbf6311b5 100644
--- a/public/content/translations/pl/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/pl/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -294,4 +294,4 @@ Kod źródłowy dla tego samouczka można znaleźć [tutaj](https://github.com/E
Samouczki mogą być interesujące:
-- [Testowanie inteligentnych kontraktów z Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Testowanie inteligentnych kontraktów z Waffle](/developers/tutorials/waffle-test-simple-smart-contract/)
diff --git a/public/content/translations/pl/enterprise/index.md b/public/content/translations/pl/enterprise/index.md
index 467380b3754..c19d40beff4 100644
--- a/public/content/translations/pl/enterprise/index.md
+++ b/public/content/translations/pl/enterprise/index.md
@@ -24,7 +24,7 @@ Wiele firm i konsorcjów wdrożyło prywatne, autoryzowane łańcuchy bloków dl
### Kluczowe różnice {#key-differences}
- Bezpieczeństwo/niezmienność blockchainu — odporność blockchainu na manipulacje jest określana przez jego algorytm konsensusu. Sieć główna Ethereum jest zabezpieczona przez interakcję tysięcy niezależnych węzłów prowadzonych przez osoby fizyczne i górników na całym świecie. Łańcuchy prywatne zazwyczaj mają niewielką liczbę węzłów, które są kontrolowane przez jedną lub kilka organizacji; te węzły mogą być ściśle kontrolowane, ale przepisanie łańcucha lub dokonanie oszukańczych transakcji wymaga naruszenia tylko kilku z nich.
-- Wydajność — ponieważ prywatne sieci Enterprise Ethereum mogą używać węzłów o wysokiej wydajności ze specjalnymi wymaganiami sprzętowymi i różnymi algorytmami konsensusu, takimi jak proof-of-authority, mogą osiągnąć wyższą przepustowość transakcji w warstwie podstawowej (Warstwa 1). W sieci głównej Ethereum wysoką przepustowość można osiągnąć przy użyciu [rozwiązań skalowania warstwy 2](/developers/docs/layer-2-scaling/).
+- Wydajność — ponieważ prywatne sieci Enterprise Ethereum mogą używać węzłów o wysokiej wydajności ze specjalnymi wymaganiami sprzętowymi i różnymi algorytmami konsensusu, takimi jak proof-of-authority, mogą osiągnąć wyższą przepustowość transakcji w warstwie podstawowej (Warstwa 1). W sieci głównej Ethereum wysoką przepustowość można osiągnąć przy użyciu [rozwiązań skalowania warstwy 2](/developers/docs/scaling/).
- Koszt — koszt obsługi sieci prywatnej odzwierciedla się przede wszystkim w pracy związanej z konfiguracją sieci i zarządzaniem nią oraz serwerami do jej obsługi. Chociaż połączenie z siecią główną Ethereum nie wiąże się z żadnymi kosztami, każda transakcja wiąże się z opłatą za gaz, za którą należy zapłacić Ethereum. Przekaźniki transakcyjne (znane również jako stacje gazu) są opracowywane w celu wyeliminowania potrzeby, aby użytkownicy końcowi, a nawet przedsiębiorstwa, bezpośrednio wykorzystywali Ether w swoich transakcjach. Niektóre [analizy](https://github.com/EYBlockchain/fundamental-cost-of-ownership/blob/master/EY%20Total%20Cost%20of%20Ownership%20for%20Blockchain%20Solutions.pdf) wykazały, że całkowity koszt obsługi aplikacji może być niższy w sieci głównej niż w przypadku uruchomienia prywatnego łancucha.
- Zezwalanie na węzły — tylko autoryzowane węzły mogą dołączać do łańcuchów prywatnych. Każdy może skonfigurować węzeł w sieci głównej Ethereum.
- Prywatność — dostęp do danych zapisanych w prywatnych łańcuchach można kontrolować, ograniczając dostęp do sieci, a także w bardziej szczegółowy sposób za pomocą kontroli dostępu i transakcji prywatnych. Wszystkie dane zapisane w warstwie 1 sieci mainnet są widoczne dla każdego, więc poufne informacje powinny być przechowywane i przesyłane poza łańcuchem lub szyfrowane. Pojawiają się wzorce projektowe, które to ułatwiają (np. Baseline, Aztec), a także rozwiązania warstwy 2, które mogą utrzymywać dane w podziale i poza warstwą 1.
@@ -33,7 +33,7 @@ Wiele firm i konsorcjów wdrożyło prywatne, autoryzowane łańcuchy bloków dl
Przedsiębiorstwa eksperymentują z technologią blockchain od około 2016 roku, kiedy uruchomiono projekty Hyperledger, Quorum i Corda. Skupiono się w dużej mierze na blockchainach przedsiębiorstw posiadających zezwolenie prywatne, Jednakże począwszy od 2019 r. nastąpiła zmiana w myśleniu o publicznych i prywatnych blockchainach dla aplikacji biznesowych. [Ankieta](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf) przeprowadzona przez firmę Forrester ujawniła, że „respondenci ankiety… widzą ten potencjał, przy czym 75% deklaruje, że prawdopodobnie będą korzystać z publicznych blockchainów w przyszłości, a prawie jedna trzecia twierdzi, że jest to bardzo prawdopodobne”. Paul Brody z EY [rozmawiał](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668) o korzyściach z budowania na publicznym blockchainie, które (w zależności od aplikacji) mogą obejmować silniejsze zabezpieczenia/niezmienność, przejrzystość, niższy całkowity koszt posiadania oraz możliwość współdziałania ze wszystkimi innymi aplikacjami, które również znajdują się w sieci głównej (efekty sieciowe). Dzielenie się wspólnymi punktami odniesienia między firmami pozwala uniknąć niepotrzebnego tworzenia wielu odizolowanych silosów, które nie mogą się komunikować i udostępniać lub synchronizować między sobą informacji.
-Kolejnym osiągnięciem, które przenosi nacisk na publiczne blockchainy, jest [Warstwa 2](/developers/docs/layer-2-scaling/). Warstwa 2 to przede wszystkim kategoria technologii skalowalności, która umożliwia stosowanie aplikacji o wysokiej przepustowości w publicznych łańcuchach. Ale rozwiązania warstwy 2 mogą również [ umożliwić uporanie się z innymi problemami, które w przeszłości skłoniły deweloperów przedsiębiorstw do wyboru sieci prywatnych](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
+Kolejnym osiągnięciem, które przenosi nacisk na publiczne blockchainy, jest [Warstwa 2](/developers/docs/scaling/). Warstwa 2 to przede wszystkim kategoria technologii skalowalności, która umożliwia stosowanie aplikacji o wysokiej przepustowości w publicznych łańcuchach. Ale rozwiązania warstwy 2 mogą również [ umożliwić uporanie się z innymi problemami, które w przeszłości skłoniły deweloperów przedsiębiorstw do wyboru sieci prywatnych](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
Baseline Protocol to jeden z kluczowych projektów, który definiuje protokół umożliwiający poufną i złożoną współpracę między przedsiębiorstwami bez pozostawiania żadnych poufnych danych w łańcuchu. W ciągu 2020 r. nabrał istotnego [rozpędu](https://www.oasis-open.org/news/pr/baseline-protocol-achieves-key-milestone-with-release-of-v0-1-implementation-for-enterprise-).
@@ -70,7 +70,7 @@ Różne organizacje podjęły pewne wspólne działania, aby uczynić Ethereum p
### Rozwiązania skalowalne {#scalability-solutions}
-[Warstwa 2](/developers/docs/layer-2-scaling/) to zestaw technologii lub systemów, które działają na wierzchu Ethereum (Warstwa 1), dziedziczą właściwości zabezpieczeń z warstwy 1 i zapewniają większą wydajność przetwarzania transakcji (przepustowość), niższe opłaty transakcyjne (koszty operacyjne) i szybsze potwierdzenia transakcji niż warstwa 1. Rozwiązania skalowania warstwy 2 są zabezpieczone przez warstwę 1, ale umożliwiają aplikacjom łańcucha bloków obsługę znacznie większej liczby użytkowników, działań lub danych, niż może pomieścić warstwa 1. Wiele z nich wykorzystuje najnowsze postępy w kryptografii i dowody zerowej wiedzy (ZK), aby zmaksymalizować wydajność i bezpieczeństwo.
+[Warstwa 2](/developers/docs/scaling/) to zestaw technologii lub systemów, które działają na wierzchu Ethereum (Warstwa 1), dziedziczą właściwości zabezpieczeń z warstwy 1 i zapewniają większą wydajność przetwarzania transakcji (przepustowość), niższe opłaty transakcyjne (koszty operacyjne) i szybsze potwierdzenia transakcji niż warstwa 1. Rozwiązania skalowania warstwy 2 są zabezpieczone przez warstwę 1, ale umożliwiają aplikacjom łańcucha bloków obsługę znacznie większej liczby użytkowników, działań lub danych, niż może pomieścić warstwa 1. Wiele z nich wykorzystuje najnowsze postępy w kryptografii i dowody zerowej wiedzy (ZK), aby zmaksymalizować wydajność i bezpieczeństwo.
Zbudowanie aplikacji na bazie rozwiązania skalowalności warstwy 2 może pomóc [rozwiązuje wiele problemów, które wcześniej skłaniały firmy do budowania na prywatnych blockchainach](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/), zachowując jednak korzyści płynące z budowania na sieci głównej.
diff --git a/public/content/translations/pl/guides/how-to-swap-tokens/index.md b/public/content/translations/pl/guides/how-to-swap-tokens/index.md
index e0c477e148d..ddc39bbab67 100644
--- a/public/content/translations/pl/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/pl/guides/how-to-swap-tokens/index.md
@@ -12,7 +12,7 @@ Wymiana tokenów obejmuje wymianę dwóch różnych aktywów istniejących w sie
**Wymaganie wstępne:**
-- posiadanie portfela kryptowalutowego, możesz postępować zgodnie z tym samouczkiem: [Jak „zarejestrować” konto Ethereum](/guides/how-to-register-an-ethereum-account/)
+- posiadanie portfela kryptowalutowego, możesz postępować zgodnie z tym samouczkiem: [Jak „zarejestrować” konto Ethereum](/guides/how-to-create-an-ethereum-account/)
- dodanie środków do portfela
## 1. Podłącz swój portfel do wybranej przez siebie zdecentralizowanej giełdy (DEX)
diff --git a/public/content/translations/pl/guides/how-to-use-a-bridge/index.md b/public/content/translations/pl/guides/how-to-use-a-bridge/index.md
index 65b310b8af0..3d7375616c4 100644
--- a/public/content/translations/pl/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/pl/guides/how-to-use-a-bridge/index.md
@@ -10,7 +10,7 @@ Jeśli ruch na Ethereum jest duży, może stać się drogi. Jednym z rozwiązań
**Wymaganie wstępne:**
-- posiadanie portfela kryptowalutowego, możesz postępować zgodnie z tym samouczkiem: [Jak „zarejestrować” konto Ethereum](/guides/how-to-register-an-ethereum-account/)
+- posiadanie portfela kryptowalutowego, możesz postępować zgodnie z tym samouczkiem: [Jak „zarejestrować” konto Ethereum](/guides/how-to-create-an-ethereum-account/)
- dodanie środków do portfela
## 1. Określ jaką sieć warstwy 2 chcesz używać
diff --git a/public/content/translations/pl/guides/how-to-use-a-wallet/index.md b/public/content/translations/pl/guides/how-to-use-a-wallet/index.md
index 290d868ace8..408269211fb 100644
--- a/public/content/translations/pl/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/pl/guides/how-to-use-a-wallet/index.md
@@ -51,7 +51,7 @@ Twój adres będzie taki sam we wszystkich projektach Ethereum. Nie musisz rejes
1. Odwiedź stronę internetową dowolnego projektu.
2. Jeśli strona docelowa projektu jest tylko statycznym opisem projektu, powinieneś mieć możliwość kliknięcia przycisku „Otwórz aplikację” w menu, który przeniesie Cię do rzeczywistej aplikacji internetowej.
-3. Gdy będziesz w aplikacji kliknij „Połącz”.
+3. Gdy będziesz w aplikacji, kliknij „Połącz”.
![Przycisk pozwalający użytkownikowi połączyć się ze stroną internetową za pomocą portfela](./connect1.png)
diff --git a/public/content/translations/pl/nft/index.md b/public/content/translations/pl/nft/index.md
index 2258f8e89e1..bff48785784 100644
--- a/public/content/translations/pl/nft/index.md
+++ b/public/content/translations/pl/nft/index.md
@@ -14,15 +14,15 @@ summaryPoint3: Wspierane przez inteligentne kontrakty na blockchainie Ethereum.
## Czym są NFT? {#what-are-nfts}
-NFT to tokeny, które są unikalne. Każdy NFT ma inne właściwości (niezamienne) i można udowodnić, że jest rzadki. Różni się to od tokenów takich jak ERC-20, gdzie każdy token w zestawie jest identyczny i ma te same właściwości („zamienne”). Nie obchodzi cię, który konkretnie banknot masz w portfelu, ponieważ wszystkie są identyczne i warte tyle samo. Jednakże _ma_ znaczenie, który konkretnie NFT posiadasz, ponieważ wszystkie mają indywidualne właściwości, które odróżniają je od innych („niezamienne”).
+NFT to tokeny, które są unikalne. Każdy NFT ma inne właściwości (niezamienne) i można udowodnić, że jest rzadki. Różni się to od tokenów takich jak ETH lub innych tokenów opartych na Ethereum, takich jak USDC, gdzie każdy token jest identyczny i ma te same właściwości („zamienne”). Nie ma znaczenia, który konkretnie banknot (lub ETH) masz w portfelu, ponieważ wszystkie są identyczne i warte tyle samo. Jednakże _ma_ znaczenie, który konkretnie NFT posiadasz, ponieważ wszystkie mają indywidualne właściwości, które odróżniają je od innych („niezamienne”).
-Unikalność każdego NFT umożliwia tokenizację rzeczy takich jak dzieła artystyczne, przedmioty kolekcjonerskie, a nawet nieruchomości, gdzie jeden konkretny unikalny NFT reprezentuje konkretny unikalny prawdziwy lub cyfrowy przedmiot. Własność aktywa zabezpieczona jest przez blockchain Ethereum — nikt nie może zmodyfikować rejestrów własności ani skopiować/wkleić nowego NFT.
+Unikalność każdego NFT umożliwia tokenizację rzeczy takich jak dzieła artystyczne, przedmioty kolekcjonerskie, a nawet nieruchomości, gdzie jeden konkretny unikalny NFT reprezentuje konkretny unikalny prawdziwy lub cyfrowy przedmiot. Własność aktywa jest publicznie weryfikowalna na blockchainie Ethereum.
## Internet rzeczy {#internet-of-assets}
-NFT i Ethereum rozwiązują niektóre z problemów występujących w dzisiejszym internecie. Ponieważ wszystko staje się coraz bardziej cyfrowe, istnieje potrzeba odtworzenia właściwości przedmiotów fizycznych, takich jak rzadkość, unikalność i dowód własności w sposób, który nie jest kontrolowany przez centralną organizację. Na przykład, dzięki NFT możesz posiadać muzykę mp3, która nie jest specyficzna dla konkretnej aplikacji muzycznej jednej firmy, lub możesz mieć nazwę konta w mediach społecznościowych, którą możesz sprzedać lub wymienić, ale nie może ona zostać samowolnie odebrana przez dostawcę platformy.
+NFT i Ethereum rozwiązują niektóre z problemów występujących w dzisiejszym Internecie. Ponieważ wszystko staje się coraz bardziej cyfrowe, istnieje potrzeba odtworzenia właściwości przedmiotów fizycznych, takich jak rzadkość, unikalność i dowód własności w sposób, który nie jest kontrolowany przez centralną organizację. Dzięki NFT możesz na przykład posiadać plik muzyczny mp3 we wszystkich aplikacjach opartych na Ethereum i nie być przywiązanym do konkretnej aplikacji muzycznej danej firmy, takiej jak Spotify lub Apple Music. Możesz posiadać nazwę w mediach społecznościowych, którą możesz sprzedać lub wymienić, ale nie może ona zostać samowolnie odebrana przez dostawcę platformy.
Oto jak wygląda porównanie Internetu NFT z Internetem, z którego korzysta większość z nas...
@@ -30,19 +30,13 @@ Oto jak wygląda porównanie Internetu NFT z Internetem, z którego korzysta wi
| Internet NFT | Internet dzisiaj |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Ty jesteś właścicielem swoich aktywów! Tylko Ty możesz je sprzedać lub wymienić. | Wynajmujesz aktywa od jakiejś organizacji. |
+| Ty jesteś właścicielem swoich aktywów! Tylko Ty możesz je sprzedać lub wymienić. | Wynajmujesz aktywa od jakiejś organizacji i mogą one zostać Ci odebrane. |
| NFT są cyfrowo unikalne, nie istnieją dwa takie same NFT. | Kopia jakiejś jednostki często nie może być odróżniona od oryginału. |
| Własność NFT jest przechowywana w blockchainie tak, aby każdy mógł ją zweryfikować. | Rejestry własności przedmiotów cyfrowych są przechowywane na serwerach kontrolowanych przez instytucje — musisz im wierzyć na słowo. |
| NFT to inteligentne kontrakty na Ethereum. Oznacza to, że można je łatwo wykorzystać w innych inteligentnych kontraktach i aplikacjach na Ethereum! | Firmy posiadające elementy cyfrowe zazwyczaj wymagają własnej infrastruktury typu „ogrodzony ogród” („walled garden”). |
| Twórcy mogą sprzedawać swoje prace w dowolnym miejscu i mają dostęp do globalnego rynku. | Twórcy opierają się na infrastrukturze i systemie dystrybucji platform, z których korzystają. Są one często objęte określonymi warunkami użytkowania i ograniczeniami geograficznymi. |
| Twórcy NFT mogą zachować prawa własności do własnej pracy i zaprogramować tantiemy bezpośrednio w kontrakcie NFT. | Platformy, takie jak serwisy streamingu muzyki, zachowują większość zysków ze sprzedaży. |
-## Jak działają NFT? {#how-nfts-work}
-
-Podobnie jak każdy token wydany na Ethereum, NFT są wydawane przez inteligentny kontrakt. Inteligentny kontrakt jest zgodny z jednym z kilku standardów NFT (najczęściej ERC-721 lub ERC-1155), które określają funkcje, jakie posiada kontrakt. Kontrakt może tworzyć („wybijać”) NFT i przypisywać je do określonego właściciela. Własność jest określona w kontrakcie poprzez mapowanie określonych NFT na określone adresy. NFT ma ID i zazwyczaj powiązane z nim metadane, które sprawiają, że konkretny token jest unikalny.
-
-Kiedy ktoś tworzy lub wybija NFT, tak naprawdę wykonuje funkcję w inteligentnym kontrakcie, która przypisuje określony NFT do jego adresu. Informacja ta jest przechowywana w pamięci kontraktu, która jest częścią blochainu. Twórca kontraktu może zapisać w niej dodatkową logikę, na przykład ograniczając całkowitą ilość lub określając tantiemę, która ma być wypłacana twórcy za każdym razem, gdy token zostanie przeniesiony.
-
## W jakim celu używa się NFT? {#nft-use-cases}
NFT są używane do wielu rzeczy, w tym:
@@ -58,23 +52,37 @@ NFT są używane do wielu rzeczy, w tym:
- zdecentralizowane nazwy domen internetowych
- jako zabezpieczenie w DeFi
-Być może jesteś artystą, który chce udostępniać swoje prace za pomocą NFT, bez utraty kontroli i poświęcania zysków na rzecz pośredników. Możesz utworzyć nowy kontrakt i określić liczbę NFT, ich właściwości oraz link do określonego dzieła sztuki. Jako artysta możesz zaprogramować w inteligentnym kontrakcie tantiemy, które powinny zostać Ci zapłacone (np. przekazać 5% ceny sprzedaży właścicielowi kontraktu za każdym razem, gdy NFT zostanie przeniesione). Zawsze możesz również udowodnić, że NFT został stworzony przez Ciebie, ponieważ jesteś właścicielem portfela, który wdrożył kontrakt. Kupujący mogą łatwo udowodnić, że posiadają autentyczny NFT z Twojej kolekcji, ponieważ ich adres portfela jest powiązany z tokenem w Twoim inteligentnym kontrakcie. Mogą go używać w całym ekosystemie Ethereum, mając pewność co do jego autentyczności.
+Być może jesteś artystą, który chce udostępniać swoje prace za pomocą NFT, bez utraty kontroli i poświęcania zysków na rzecz pośredników. Możesz utworzyć nowy kontrakt i określić liczbę NFT, ich właściwości oraz link do określonego dzieła sztuki. Jako artysta możesz zaprogramować w inteligentnym kontrakcie tantiemy, które powinny zostać Ci zapłacone (np. przekazywać 5% ceny sprzedaży właścicielowi kontraktu za każdym razem, gdy NFT zostanie przeniesione). Zawsze możesz również udowodnić, że NFT został stworzony przez Ciebie, ponieważ jesteś właścicielem portfela, który wdrożył kontrakt. Kupujący mogą łatwo udowodnić, że posiadają autentyczny NFT z Twojej kolekcji, ponieważ ich adres portfela jest powiązany z tokenem w Twoim inteligentnym kontrakcie. Mogą go używać w całym ekosystemie Ethereum, mając pewność co do jego autentyczności.
-To tak jak bilet na wydarzenie sportowe. Podobnie jak organizator wydarzenia może wybrać, ile biletów chce sprzedać, twórca NFT może zdecydować, ile istnieje replik. Czasami są to dokładne repliki, takie jak 5000 takich samych biletów wstępu. Czasami wybijanych jest kilka bardzo podobnych, ale każdy z nich nieco się różni, np. bilet z przypisanym miejscem. Można je kupować i sprzedawać peer-to-peer bez płacenia osobie obsługującej bilety, a kupujący zawsze ma pewność co do autentyczności biletu, sprawdzając adres kontraktu.
+Pomyśl o tym tak jak o bilecie na wydarzenie sportowe. Podobnie jak organizator wydarzenia może wybrać, ile biletów chce sprzedać, twórca NFT może zdecydować, ile istnieje replik. Czasami są to dokładne repliki, takie jak 5000 takich samych biletów wstępu. Czasami wybijanych jest kilka bardzo podobnych, ale każdy z nich nieco się różni, np. bilet z przypisanym miejscem. Można je kupować i sprzedawać peer-to-peer bez płacenia osobie obsługującej bilety, a kupujący zawsze ma pewność co do autentyczności biletu, sprawdzając adres kontraktu.
-Na ethereum.org NFT są używane do pokazania, że ludzie wnieśli swój wkład do naszego repozytorium GitHub lub uczestniczyli w rozmowach, a nawet mamy własną nazwę domeny NFT. Jeśli przyczynisz się do rozwoju ethereum.org, możesz otrzymać NFT w formie POAPu. Niektóre spotkania kryptowalutowe wykorzystywały tokeny POAP jako bilety. [Więcej na temat przyczyniania się do rozwoju Ethereum](/contributing/#poap).
+Na ethereum.org, NFT są używane do pokazania, że ludzie wnieśli znaczący wkład w nasze repozytorium na GitHubie (zaprogramowali stronę, napisali lub zmodyfikowali artykuł...), przetłumaczyli nasze treści lub uczestniczyli w naszych rozmowach ze społecznością, mamy nawet własną nazwę domeny NFT. Jeśli przyczynisz się do rozwoju ethereum.org, możesz otrzymać NFT w formie POAPu. Niektóre spotkania kryptowalutowe wykorzystywały POAPy jako bilety. [Więcej na temat przyczyniania się do rozwoju](/contributing/#poap).
![ethereum.org POAP](./poap.png)
-Ta strona ma alternatywną domenę obsługiwaną przez NFT, **ethereum.eth**. Nasz adres `.org` jest zarządzany centralnie przez DNS, podczas gdy ethereum`.eth` jest zarejestrowany na Ethereum za pośrednictwem Ethereum Name Service (ENS). Jest ona naszą własnością i jest zarządzana przez nas. [Sprawdź nasz wpis do ENS](https://app.ens.domains/name/ethereum.eth)
+Ta strona ma również alternatywną domenę obsługiwaną przez NFT, **ethereum.eth**. Nasz adres `.org` jest zarządzany centralnie przez dostawcę DNS, podczas gdy ethereum`.eth` jest zarejestrowany na Ethereum za pośrednictwem Ethereum Name Service (ENS). Jest ona naszą własnością oraz jest zarządzana przez nas. [Sprawdź nasz rekord ENS](https://app.ens.domains/name/ethereum.eth)
[Więcej o ENS](https://app.ens.domains)
+## Jak działają NFT? {#how-nfts-work}
+
+NFT, podobnie jak inne cyfrowe elementy w blockchainie Ethereum, są tworzone za pomocą specjalnego programu komputerowego opartego na Ethereum, zwanego „inteligentnym kontraktem”. Kontrakty te są zgodne z pewnymi zasadami, takimi jak standardy ERC-721 lub ERC-1155, które określają, co kontrakt może robić.
+
+Inteligentny kontrakt NFT może robić kilka kluczowych czynności:
+
+- **Tworzyć NFT:** może tworzyć nowe NFT.
+- **Przypisywać własność:** utrzymuje kontrolę nad tym, kto jest właścicielem, którego NFT, łącząc je z określonymi adresami Ethereum.
+- **Nadawać każdemu NFT własne ID:** każdy NFT ma numer, który sprawia, że jest unikalny. Ponadto dołączone są do niego zazwyczaj pewne informacje (metadane) opisujące, co reprezentuje NFT.
+
+Kiedy ktoś „tworzy” lub „wybija” NFT, w zasadzie mówi inteligentnemu kontraktowi, aby dał mu prawo własności do konkretnego NFT. Ta informacja jest bezpiecznie i publicznie przechowywana w blockchainie.
+
+Co więcej, twórca kontraktu może dodać dodatkowe zasady. Może ograniczyć liczbę NFT, które mogą zostać utworzone lub zdecydować, że powinien otrzymywać niewielką tantiemę za każdym razem, gdy NFT zmieni właściciela.
+
### Bezpieczeństwo NFT {#nft-security}
-Bezpieczeństwo Ethereum wynika z algorytmu proof-of-stake. System został zaprojektowany w celu ekonomicznego zniechęcenia do złośliwych działań, dzięki czemu Ethereum jest odporne na manipulacje. To właśnie umożliwia działanie NFT. Gdy blok zawierający Twoją transakcję NFT zostanie sfinalizowany, zmiana go kosztowałaby atakującego miliony ETH. Każdy, kto korzysta z oprogramowania Ethereum, byłby w stanie natychmiast wykryć nieuczciwe manipulacje w NFT, a przestępca zostałby ekonomicznie ukarany i wyrzucony.
+Bezpieczeństwo Ethereum wynika z algorytmu proof-of-stake. System ten został zaprojektowany w celu ekonomicznego zniechęcenia do złośliwych działań, dzięki czemu Ethereum jest odporne na manipulacje. To właśnie umożliwia działanie NFT. Gdy blok zawierający Twoją transakcję NFT zostanie sfinalizowany, zmiana go kosztowałaby atakującego miliony ETH. Każdy, kto korzysta z oprogramowania Ethereum, byłby w stanie natychmiast wykryć nieuczciwą manipulację w NFT, a przestępca zostałby ekonomicznie ukarany i wyrzucony.
Kwestie bezpieczeństwa związane z NFT są najczęściej związane z oszustwami typu phishing, lukami w inteligentnych kontraktach lub błędami użytkownika (takimi jak nieumyślne ujawnienie kluczy prywatnych), co sprawia, że dbanie o bezpieczeństwo portfela ma kluczowe znaczenie dla właścicieli NFT.
diff --git a/public/content/translations/pl/refi/index.md b/public/content/translations/pl/refi/index.md
index 384f88abaed..39856041f20 100644
--- a/public/content/translations/pl/refi/index.md
+++ b/public/content/translations/pl/refi/index.md
@@ -18,7 +18,7 @@ summaryPoint3: Narzędzie do drastycznego skalowania aktywów przynoszących kor
Zamiast tego ReFi ma na celu rozwiązywanie problemów środowiskowych, komunalnych lub społecznych poprzez tworzenie cykli regeneracyjnych. Systemy te tworzą wartość dla uczestników, jednocześnie przynosząc korzyści ekosystemom i społecznościom.
-Jednym z fundamentów ReFi jest koncepcja ekonomii regeneracyjnej, której pionierem jest John Fullerton z [Capital Institute](https://capitalinstitute.org). Zaproponował osiem powiązanych ze sobą zasad, które leżą u podstaw zdrowia systemowego:
+Jednym z fundamentów ReFi jest koncepcja ekonomii regeneracyjnej, której pionierem jest John Fullerton z Capital Institute. Zaproponował [osiem powiązanych ze sobą zasad](https://capitalinstitute.org/8-principles-regenerative-economy/), które leżą u podstaw zdrowia systemowego:
![Osiem połączonych ze sobą zasad](refi-regenerative-economy-diagram.png)
diff --git a/public/content/translations/pl/roadmap/beacon-chain/index.md b/public/content/translations/pl/roadmap/beacon-chain/index.md
index 8ced95ba2b5..1233d3115af 100644
--- a/public/content/translations/pl/roadmap/beacon-chain/index.md
+++ b/public/content/translations/pl/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ Wprowadził on mechanizm konsensusu (lub „warstwę konsensusu”), który zaj
Łańcuch śledzący wprowadził do Ethereum mechanizm [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). Zapewnia to bezpieczeństwo Ethereum i daje walidatorom więcej ETH w tym procesie. W praktyce staking polega na stakowaniu ETH w celu aktywowania oprogramowania walidatora. Jako staker używasz oprogramowania, które tworzy i waliduje nowe bloki w łańcuchu.
-Staking służy podobnym celom, co kiedyś [wydobywanie](/developers/docs/mining/), ale różni się pod wieloma względami. Wydobywanie wymagało dużych nakładów początkowych w postaci potężnego sprzętu i zużycia energii, co skutkowało ekonomią skali i sprzyjało centralizacji. Wydobywanie nie wiązało się również z wymogiem blokowania aktywów jako zabezpieczenia, co ograniczało możliwości protokołu w zakresie karania wrogich podmiotów po ataku.
+Staking służy podobnym celom, co kiedyś [wydobywanie](/developers/docs/consensus-mechanisms/pow/mining/), ale różni się pod wieloma względami. Wydobywanie wymagało dużych nakładów początkowych w postaci potężnego sprzętu i zużycia energii, co skutkowało ekonomią skali i sprzyjało centralizacji. Wydobywanie nie wiązało się również z wymogiem blokowania aktywów jako zabezpieczenia, co ograniczało możliwości protokołu w zakresie karania wrogich podmiotów po ataku.
Przejście na proof-of-stake sprawiło, że sieć Ethereum stała się znacznie bezpieczniejsza i zdecentralizowana w porównaniu z proof-of-work. Im więcej osób uczestniczy w sieci, tym staje się ona bardziej zdecentralizowana i lepiej zabezpieczona przed atakami.
diff --git a/public/content/translations/pl/roadmap/merge/index.md b/public/content/translations/pl/roadmap/merge/index.md
index fa1a0f771c9..43d2e4ec6f8 100644
--- a/public/content/translations/pl/roadmap/merge/index.md
+++ b/public/content/translations/pl/roadmap/merge/index.md
@@ -135,7 +135,7 @@ title="Błędne przekonanie: „w wyniku fuzji nie udało się obniżyć opłat
contentPreview="False. The Merge was a change of consensus mechanism, not an expansion of network capacity, and was never intended to lower gas fees.">
Opłaty za gaz są wypadkową zapotrzebowania na sieć i jej przepustowości. W wyniku Połączenia zrezygnowano z mechanizmu proof-of-work, przechodząc na mechanizm konsensusu proof-of-stake, ale nie zmieniono znacząco żadnych parametrów, które bezpośrednio wpływają na przepustowość sieci.
-W ramach [planu działania skoncentrowanego na pakietach zbiorczych](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) wysiłki koncentrują się na zwiększeniu aktywności użytkowników w [warstwie 2](/warstwa-2/), przy jednoczesnym umożliwieniu działania sieci głównej w warstwie 1 jako bezpiecznej, zdecentralizowanej warstwy rozliczenia, zoptymalizowanej do przechowywania danych pakietów zbiorczych, co pomoże uczynić transakcje na pakietach zbiorczych wykładniczo tańszymi. Przejście na proof-of-stake jest kluczowym prekursorem realizacji tego celu. [Więcej o gazie i opłatach](/developers/docs/gas/)
+W ramach [planu działania skoncentrowanego na pakietach zbiorczych](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) wysiłki koncentrują się na zwiększeniu aktywności użytkowników w [warstwie 2](/layer-2/), przy jednoczesnym umożliwieniu działania sieci głównej w warstwie 1 jako bezpiecznej, zdecentralizowanej warstwy rozliczenia, zoptymalizowanej do przechowywania danych pakietów zbiorczych, co pomoże uczynić transakcje na pakietach zbiorczych wykładniczo tańszymi. Przejście na proof-of-stake jest kluczowym prekursorem realizacji tego celu. [Więcej o gazie i opłatach](/developers/docs/gas/)
-Należy pamiętać, że ważne jest, aby wybrać usługę, która poważnie traktuje [różnorodność klientów](/developers/docs/nodes-and-clients/client-diversity/), ponieważ zwiększa to bezpieczeństwo sieci i ogranicza ryzyko. Usługi, które mają dowody na ograniczanie korzystania z większości klientów, są oznaczone „różnorodność klientów wykonawczych” i „różnorodność klientów konsensusu.”
+Należy pamiętać, że ważne jest, aby wybrać usługę, która poważnie traktuje [różnorodność klientów](/developers/docs/nodes-and-clients/client-diversity/), ponieważ zwiększa to bezpieczeństwo sieci i ogranicza ryzyko. Usługi, które mają dowody na ograniczanie korzystania z większości klientów, są oznaczone jako „różnorodność klientów wykonawczych” i „różnorodność klientów konsensusu”.
Masz sugestię dotyczącą narzędzia do stakingu, które pominęliśmy? Zapoznaj się z naszymi [zasadami umieszczania produktów na liście](/contributing/adding-staking-products/), aby sprawdzić, czy są one odpowiednie i przesłać je do recenzji.
## Często zadawane pytania {#faq}
-Zazwyczaj tokeny stakingu ERC-20 są wydawane stakerom, które reprezentują wartość zestakowanego przez nich ETH plus nagrody. Należy pamiętać, że różne pule będą dystrybuować nagrody ze stakowania do swoich użytkowników za pomocą nieco innych metod, ale jest to częste.
+Zazwyczaj tokeny stakingu ERC-20 są wydawane stakerom i reprezentują wartość zestakowanego przez nich ETH plus nagrody. Należy pamiętać, że różne pule będą dystrybuować nagrody ze stakowania do swoich użytkowników za pomocą nieco innych metod, ale jest to częste.
@@ -81,5 +81,6 @@ Niektóre opcje puli są bardziej zdecentralizowane niż inne, jeśli chodzi o w
## Dodatkowo przeczytaj {#further-reading}
+- [Katalog stakingu Ethereum](https://www.staking.directory/) — _Eridian i Spacesider_
- [Staking z Rocket Pool - Przegląd stakingu](https://docs.rocketpool.net/guides/staking/overview.html) — _Dokumenty RocketPool_
- [Staking Ethereum z Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) — _dokumenty pomocy Lido_
diff --git a/public/content/translations/pl/staking/saas/index.md b/public/content/translations/pl/staking/saas/index.md
index 8203a0bb034..9ebd84679ee 100644
--- a/public/content/translations/pl/staking/saas/index.md
+++ b/public/content/translations/pl/staking/saas/index.md
@@ -47,7 +47,7 @@ Poniżej znajduje się paru dostępnych dostawców SaaS. Skorzystaj z powyższyc
-Należy pamiętać o znaczeniu wspierania [różnorodności klientów](/developers/docs/nodes-and-clients/client-diversity/), ponieważ poprawia to bezpieczeństwo sieci i ogranicza ryzyko. Usługi, które mają dowody na ograniczanie korzystania z większości klientów, są oznaczone „różnorodność klientów wykonawczych” i „różnorodność klientów konsensusu.”
+Należy pamiętać o znaczeniu wspierania [różnorodności klientów](/developers/docs/nodes-and-clients/client-diversity/), ponieważ poprawia to bezpieczeństwo sieci i ogranicza ryzyko. Usługi, które mają dowody na ograniczanie korzystania z większości klientów, są oznaczone jako „różnorodność klientów wykonawczych” i „różnorodność klientów konsensusu”.
### Generatory kluczy
@@ -91,4 +91,5 @@ Skontaktuj się z indywidualnym dostawcą SaaS, aby uzyskać więcej informacji
## Dodatkowo przeczytaj {#further-reading}
+- [Katalog stakingu Ethereum](https://www.staking.directory/) — _Eridian i Spacesider_
- [Ocena usług stakingu](https://www.attestant.io/posts/evaluating-staking-services/) — _Jim McDonald 2020 r._
diff --git a/public/content/translations/pl/staking/solo/index.md b/public/content/translations/pl/staking/solo/index.md
index 811d8a2116f..e05f7e76dc2 100644
--- a/public/content/translations/pl/staking/solo/index.md
+++ b/public/content/translations/pl/staking/solo/index.md
@@ -109,7 +109,7 @@ Dostępnych jest wiele opcji ułatwiających konfigurację. Skorzystaj z powyżs
-Należy pamiętać o znaczeniu wybrania [klienta mniejszościowego](/developers/docs/nodes-and-clients/client-diversity/), ponieważ poprawia to bezpieczeństwo sieci i ogranicza ryzyko. Narzędzia, które pozwalają na konfigurację klienta mniejszościowego są oznaczone jako „multi-klient”.
+Należy pamiętać o znaczeniu wybrania [klienta mniejszościowego](/developers/docs/nodes-and-clients/client-diversity/), ponieważ poprawia to bezpieczeństwo sieci i ogranicza ryzyko. Narzędzia, które pozwalają na konfigurację klienta mniejszościowego, są oznaczone jako „multi-klient”.
### Generatory kluczy
@@ -195,6 +195,7 @@ Aby odblokować i otrzymać całe saldo z powrotem, należy również zakończy
## Dalsza lektura {#further-reading}
+- [Katalog stakingu Ethereum](https://www.staking.directory/) — _Eridian i Spacesider_
- [Problem różnorodności klientów Ethereum](https://hackernoon.com/ethereums-client-diversity-problem) — _@emmanuelawosika 2022 r._
- [Wspieranie różnorodności klientów](https://www.attestant.io/posts/helping-client-diversity/) — _Jim McDonald 2022 r._
- [Różnorodność klientów w warstwie konsensusu Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) — _jmcook.eth 2022 r._
diff --git a/public/content/translations/pl/staking/withdrawals/index.md b/public/content/translations/pl/staking/withdrawals/index.md
index e9f76d356ca..626d86b30e4 100644
--- a/public/content/translations/pl/staking/withdrawals/index.md
+++ b/public/content/translations/pl/staking/withdrawals/index.md
@@ -114,12 +114,12 @@ Rozszerzając te obliczenia, możemy oszacować czas potrzebny na przetworzenie
| Liczba wypłat | Czas realizacji |
-| :-----------: | :-------------: |
-| 400,000 | 3,5 dnia |
-| 500,000 | 4,3 dnia |
-| 600,000 | 5,2 dnia |
-| 700,000 | 6,1 dnia |
-| 800,000 | 7,0 dni |
+| :-------------------: | :--------------: |
+| 400,000 | 3,5 dnia |
+| 500,000 | 4,3 dnia |
+| 600,000 | 5,2 dnia |
+| 700,000 | 6,1 dnia |
+| 800,000 | 7,0 dni |
@@ -194,7 +194,7 @@ eventCategory="FAQ"
eventAction="I operate a validator. Where can I find more information on enabling withdrawals?"
eventName="read more">
-Operatorom walidatorów zaleca się odwiedzenie strony wypłaty Staking Launchpad, gdzie można znaleźć więcej szczegółów na temat przygotowania walidatora do wypłat. przygotowane, czas zdarzeń i więcej szczegółów na temat funkcjonowania wypłat.
+Operatorom walidatorów zaleca się odwiedzenie strony wypłaty Staking Launchpad, gdzie można znaleźć więcej szczegółów na temat przygotowania walidatora do wypłat, czasu wydarzeń i więcej szczegółów na temat działania wypłat.
Aby najpierw wypróbować swoją konfigurację w sieci testowej, odwiedź Goerli Testnet Staking Launchpad, aby rozpocząć.
@@ -214,5 +214,5 @@ Nie. Po wyjściu walidatora i wypłaceniu jego pełnego salda wszelkie dodatkowe
- [EIP-4895: Wypłaty z łańcucha śledzącego jako operacje](https://eips.ethereum.org/EIPS/eip-4895)
- [Ethereum Cat Herders — Szanghaj](https://www.ethereumcatherders.com/shanghai_upgrade/index.html)
- [PEEPanEIP #94: Wypłata zestakowanego ETH (testowanie) z Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE)
-- [PEEPanEIP#68: EIP-4895: Łańcuch śledzący wywiera wypłaty jako operacje z Alexem Stokesem](https://www.youtube.com/watch?v=CcL9RJBljUs)
+- [PEEPanEIP#68: EIP-4895: Wypłaty push łańcucha śledzącego jako operacje z Alexem Stokesem](https://www.youtube.com/watch?v=CcL9RJBljUs)
- [Zrozumienie efektywnego bilansu walidatora](https://www.attestant.io/posts/understanding-validator-effective-balance/)
diff --git a/public/content/translations/pl/zero-knowledge-proofs/index.md b/public/content/translations/pl/zero-knowledge-proofs/index.md
index dffae9ed019..895b442e28e 100644
--- a/public/content/translations/pl/zero-knowledge-proofs/index.md
+++ b/public/content/translations/pl/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Nietechniczne wprowadzenie do dowodów wiedzy zerowej dla początku
lang: pl
---
-## Czym są dowody wiedzy zerowej? {#what-are-zk-proofs}
+# Czym są dowody wiedzy zerowej? {#what-are-zk-proofs}
Dowód o wiedzy zerowej to sposób na udowodnienie ważności stwierdzenia bez ujawniania samego stwierdzenia. „Udowadniający” jest stroną próbującą udowodnić twierdzenie, podczas gdy „weryfikator” jest odpowiedzialny za walidację twierdzenia.
diff --git a/public/content/translations/pt-br/about/index.md b/public/content/translations/pt-br/about/index.md
index 7b62188d139..bd53d2f5084 100644
--- a/public/content/translations/pt-br/about/index.md
+++ b/public/content/translations/pt-br/about/index.md
@@ -104,7 +104,7 @@ Nós usamos um conjunto de [princípios de design](/contributing/design-principl
Construímos e lançamos um [sistema de design](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1) para enviar funcionalidades mais rapidamente e permitir que os membros da comunidade participem do design aberto do ethereum.org.
-Quer se envolver?[Acompanhe no Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System), [assuntos no GitHub](https://github.com/ethereum/ethereum-org-website/issues/6284) e junte-se à conversa em nosso [canal #design no Discord](https://discord.gg/ethereum-org).
+Quer se envolver?[Acompanhe no Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System), [assuntos no GitHub](https://github.com/ethereum/ethereum-org-website/issues/6284) e junte-se à conversa em nosso [canal #design no Discord](https://discord.gg/bKycYhVUwV).
## Guia de estilo {#style-guide}
diff --git a/public/content/translations/pt-br/community/code-of-conduct/index.md b/public/content/translations/pt-br/community/code-of-conduct/index.md
index 86f60aaa7f5..3bd57493bab 100644
--- a/public/content/translations/pt-br/community/code-of-conduct/index.md
+++ b/public/content/translations/pt-br/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: As normas básicas que buscamos nos espaços do ethereum.org.
lang: pt-br
---
+# Código de Conduta {#conduct-intro}
+
## Missão {#mission}
Desenvolver e manter o centro de conhecimento mais abrangente e acessível para o Ethereum.
@@ -52,7 +54,7 @@ Exemplos de comportamento inaceitável por parte dos participantes incluem:
- Violência física, ameaça de violência física ou incentivo à violência física de qualquer tipo
- Usar linguagem ou imagens sexualizadas ou impor atenção sexual indesejada
-- Fazer-se passar por outra pessoa ou reivindicar, de forma desonesta, afiliação a alguma pessoa ou organização.
+- Fazer-se passar por outra pessoa ou reivindicar, de forma desonesta, afiliação a alguma pessoa ou organização
- Brincadeiras de mau gosto, comentários ofensivos/pejorativos e ataques pessoais ou políticos
- Assediar outros membros da comunidade em canais públicos ou privados
- Publicar informações privadas de outras pessoas, como endereço físico ou eletrônico, sem permissão explícita
diff --git a/public/content/translations/pt-br/community/events/index.md b/public/content/translations/pt-br/community/events/index.md
index 247e246b4cc..3c9525a51ed 100644
--- a/public/content/translations/pt-br/community/events/index.md
+++ b/public/content/translations/pt-br/community/events/index.md
@@ -5,7 +5,7 @@ lang: pt-br
hideEditButton: true
---
-## Próximos eventos {#events}
+# Próximos eventos {#events}
**Todos os meses há grandes eventos da Ethereum ao redor do mundo.** Considere participar de um perto de você para conhecer pessoas que fazem parte da comunidade, aprender sobre oportunidades de emprego e desenvolver novas habilidades.
diff --git a/public/content/translations/pt-br/community/get-involved/index.md b/public/content/translations/pt-br/community/get-involved/index.md
index ae0f42d6c1b..800711d9be5 100644
--- a/public/content/translations/pt-br/community/get-involved/index.md
+++ b/public/content/translations/pt-br/community/get-involved/index.md
@@ -28,7 +28,7 @@ Você tem formação em matemática, criptografia ou economia? Talvez tenha inte
- Escreva ou avalie uma proposta de melhoria do Ethereum (EIP)
- Escreva uma EIP
1. Envie a sua ideia em [Ethereum Magicians](https://ethereum-magicians.org)
- 2. Leia a [EIP-1](https://eip.ethereum.org/EIPS/eip-1) - **Sim, esse é o documento _na íntegra_.**
+ 2. Leia a [EIP-1](https://eips.ethereum.org/EIPS/eip-1) - **Sim, esse é o documento _na íntegra_.**
3. Siga as orientações estabelecidas na EIP-1. Consulte-a ao redigir a sua versão preliminar.
- Saiba como se tornar um [editor de EIP](https://eips.ethereum.org/EIPS/eip-5069)
- Você pode fazer a revisão por pares de EIPs agora mesmo! Consulte os [PRs abertos com a tag `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Envie feedback técnico por meio do link `discussion-to`.
diff --git a/public/content/translations/pt-br/community/grants/index.md b/public/content/translations/pt-br/community/grants/index.md
index e854cc23703..9c95ed0a19c 100644
--- a/public/content/translations/pt-br/community/grants/index.md
+++ b/public/content/translations/pt-br/community/grants/index.md
@@ -15,31 +15,27 @@ Esta página é administrada por nossa comunidade. Se houver algo faltando ou er
Esses programas abrangem um amplo ecossistema Ethereum ao oferecer recompensas a um grande escopo de projetos. Eles incluem soluções de dimensionamento, formação de comunidades, segurança, privacidade e muito mais. Essas recompensas não são específicas de nenhuma plataforma Ethereum e são um bom lugar para começar se você não tiver certeza.
- [ Programa de suporte ao ecossistema EF](https://esp.ethereum.foundation)-_ Financiar projetos de código aberto que beneficiam o Ethereum, com foco particular em ferramentas universais, infraestrutura, pesquisa e bens públicos _
-- [ Ethereum RFP](https://github.com/ethereum/requests-for-proposals)-_ Solicitações de propostas da Fundação Ethereum para trabalho e projetos no seu ecossistema_
- [MetaCartel](https://www.metacartel.org/grants/) – _Desenvolvimento de Dapp, criação de DAO_
- [Moloch DAO](https://www.molochdao.com/) – _Privacidade, dimensionamento da camada 2, segurança do cliente e mais_
-- [Recompensas abertas](https://opengrants.com/explore)
- [Concessões DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) – _Planilha Google de organizações que oferecem concessões_
-- [Crunchbase para subvenções Web3](https://www.cryptoneur.xyz/web3-grants) – _Filtre e pesquise subvenções por categoria, caso de uso, valor e muito mais. Contribua para ajudar outros a encontrar a subvenção certa._
+- [Crunchbase para concessões Web3](https://www.cryptoneur.xyz/web3-grants) – _Filtre e pesquise subvenções por categoria, caso de uso, valor e muito mais. Contribua para ajudar outros a encontrar a concessão certa._
- [Bolsas acadêmicas](https://esp.ethereum.foundation/academic-grants) – _Bolsas para apoiar o trabalho acadêmico relacionado com o Ethereum_
+- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _A Blockworks compilou um diretório abrangente de todas as recompensas, RFPs e programas de caça a bugs._
## Especificidades do projeto {#project-specific}
Estes projetos criaram seus próprios programas de recompensas destinados a desenvolvimento e experimentação de suas tecnologias.
- [Programa de concessões Aave](https://aavegrants.org/) – _[Aave](https://aave.com/) concede DAO_
-- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _Fundo do ecossistema [Balancer](https://balancer.fi/)_
+- [Balancer](https://quark-ceres-740.notion.site/Balancer-Grants-938f1b979810427f8d903a904315da41) – _Fundo do ecossistema [Balancer](https://balancer.fi/)_
- [Programa de concessões da Chainlink](https://chain.link/community/grants) – _Concessões da comunidade da [Chainlink](https://chain.link/)_
-- [Programa de concessões Compound](https://compoundgrants.org/) – _Ecossistema financeiro [Compound](https://compound.finance/)_
-- [Programa de Recompensas Decentraland](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/)Metaverso DAO_
-- [Organização de concessões do ecossistema Lido (LEGO)](https://lego.lido.fi/) – _Ecossistema financeiro [Lido](https://lido.fi/)_
+- [Programa de recompensas Decentraland](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/)Metaverso DAO_
+- [Lido Ecosystem Grants Organisation (LEGO)](https://lido.fi/lego) – _Ecossistema financeiro [Lido](https://lido.fi/)_
- [Programa MetaMask](https://metamaskgrants.org/) - _[MetaMask](https://metamask.io/) bolsas lideradas por funcionários DAO_
-- [Programa de bolsas mStable](https://docs.mstable.org/advanced/grants-program) – _Comunidade [mStable](https://mstable.org/)_
- [Programa de bolsas da SKALE Network](https://skale.space/developers#grants) - _[Ecossistema da SKALE Network](https://skale.space/)_
- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _Ecossistema [The Graph](https://thegraph.com/)_
-- [Programa de bolsas UMA](https://grants.umaproject.org/): _[suporte ao desenvolvedor](https://umaproject.org/)UMA_
-- [Programa de bolsas da Uniswap](https://www.unigrants.org/) – _Comunidade [Uniswap](https://uniswap.org/)_
-- [Bolsas Web3](https://web3grants.net) – _Uma extensa lista de programas de bolsas relacionados com web3/criptomoedas_
+- [Uniswap Grants Program](https://www.uniswapfoundation.org/apply-for-a-grant) - _[Comunidade da Uniswap](https://uniswap.org/)_
+- [Web3 Grants](https://web3grants.net) – _Uma extensa lista de programas de concessão web3/crypto relacionados_
## Financiamento quadrático {#quadratic-funding}
diff --git a/public/content/translations/pt-br/community/language-resources/index.md b/public/content/translations/pt-br/community/language-resources/index.md
index e67a8b6cec5..dc97cadd3db 100644
--- a/public/content/translations/pt-br/community/language-resources/index.md
+++ b/public/content/translations/pt-br/community/language-resources/index.md
@@ -72,7 +72,7 @@ Se você for bilíngue e deseja nos ajudar a alcançar mais pessoas, também pod
- [Gwei.cz](https://gwei.cz) – Comunidade local em torno da Web3, que cria conteúdo educacional, organiza eventos online e presenciais
- [Gwei.cz Příručka](https://prirucka.gwei.cz/) – Guia Ethereum para iniciantes
- [DAO Příručka](https://dao.gwei.cz/) – Guia do iniciante para DAOs
-- [ Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) – Dominando o Ethereum em Tcheco
+- [ Mastering Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) – Dominando o Ethereum em Tcheco
### Francês {#fr}
diff --git a/public/content/translations/pt-br/community/online/index.md b/public/content/translations/pt-br/community/online/index.md
index 86ecbb5c9d3..f033df02b2d 100644
--- a/public/content/translations/pt-br/community/online/index.md
+++ b/public/content/translations/pt-br/community/online/index.md
@@ -24,13 +24,13 @@ Centenas de milhares de entusiastas do Ethereum se reúnem nestes fóruns na Int
Ethereum Cat Herders –Comunidade orientada em torno da oferta de apoio à gestão de projetos para o desenvolvimento do EthereumEthereum Hackers – Chat no Discord administrado pela ETHGlobal: uma comunidade online para hackers Ethereum em todo o mundoCryptoDevs – Comunidade Discord focada no desenvolvimento do Ethereum
-EthStaker Discord - orientação, educação, apoio e recursos geridos pela comunidade para stakers existentes e potenciais
+EthStaker Discord - orientação, educação, apoio e recursos geridos pela comunidade para stakers existentes e potenciaisEquipe do site Ethereum.org – pare e converse sobre desenvolvimento e design do site ethereum.org com a equipe e pessoas da comunidadeMatos Discord – comunidade de criadores da Web3 na qual construtores, líderes do setor e entusiastas do Ethereum se encontram. Somos apaixonados pelo desenvolvimento, design e cultura Web3. Venha criar conosco.
-Solidity Gitter — chat para desenvolvimento do solidity (Gitter)
+Solidity Gitter — chat para desenvolvimento do solidity (Gitter)Solidity Matrix — chat para desenvolvimento do solidity (Matrix)
-Ethereum Stack Exchange _ — fórum de perguntas e respostas_
-Peeranha _ — fórum descentralizado de perguntas e respostas_
+Ethereum Stack Exchange — fórum de perguntas e respostas
+Peeranha — fórum descentralizado de perguntas e respostas
## YouTube e Twitter {#youtube-and-twitter}
diff --git a/public/content/translations/pt-br/community/research/index.md b/public/content/translations/pt-br/community/research/index.md
index 88436fb1277..04a436a8941 100644
--- a/public/content/translations/pt-br/community/research/index.md
+++ b/public/content/translations/pt-br/community/research/index.md
@@ -124,7 +124,7 @@ Uma área específica da camada 2 que exige mais pesquisa e desenvolvimento são
- [Introdução às pontes de blockchain](/bridges/)
- [Vitalik sobre pontes](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
- [Artigo de pontes de blockchain](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8)
-- [Valor bloqueado em pontes]()
+- [Valor bloqueado em pontes](https://dune.com/eliasimos/Bridge-Away-(from-Ethereum))
#### Pesquisa recente {#recent-research-3}
@@ -152,11 +152,11 @@ A fragmentação do blockchain do Ethereum faz parte do roadmap de desenvolvimen
#### Leitura de apoio {#background-reading-5}
-- [Ethereum na ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)
+- [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)
#### Pesquisa recente {#recent-research-5}
-- [ecsda em FGPAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
+- [ecdsa em FPGAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
## Segurança {#security}
@@ -346,7 +346,6 @@ As ferramentas para desenvolvedores do Ethereum têm melhorado rapidamente. Há
- [Frameworks do desenvolvedor](/developers/docs/frameworks/)
- [Lista de ferramentas do desenvolvedor de consenso](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Padrões de token](/developers/docs/standards/tokens/)
-- [Biastek: ferramentas Ethereum](https://biastek.com/ethereum-tools/)
- [CryptoDevHub: ferramentas EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
#### Pesquisa recente {#recent-research-17}
diff --git a/public/content/translations/pt-br/community/support/index.md b/public/content/translations/pt-br/community/support/index.md
index 32eb46c156d..2e94d7c8c43 100644
--- a/public/content/translations/pt-br/community/support/index.md
+++ b/public/content/translations/pt-br/community/support/index.md
@@ -39,7 +39,7 @@ Procurando uma carteira Ethereum? [Veja a nossa lista completa de carteiras Ethe
Desevolver um dapp pode ser difícil. Aqui estão alguns espaços voltados ao desenvolvimento com desenvolvedores Ethereum experientes dispostos a ajudar.
- [Universidade Alchemy](https://university.alchemy.com/#starter_code)
-- [Discord CryptoDevs](https://discord.gg/Z9TA39m8Yu)
+- [Discord CryptoDevs](https://discord.com/invite/5W5tVb3)
- [Stackexchange do Ethereum](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Universidade Web3](https://www.web3.university/)
@@ -53,7 +53,7 @@ Sua pergunta está relacionada a uma ferramenta, projeto ou biblioteca em partic
Aqui estão alguns exemplos populares:
-- [Solidity](https://gitter.im/ethereum/solidity)
+- [Solidity](https://gitter.im/ethereum/solidity/)
- [ethers.js](https://discord.gg/6jyGVDK6Jx)
- [web3.js](https://discord.gg/GsABYQu4sC)
- [Hardhat](https://discord.gg/xtrMGhmbfZ)
@@ -65,7 +65,7 @@ Aqui estão alguns exemplos populares:
Se você estiver executando um nó ou validador, aqui estão algumas comunidades que se dedicam a ajudá-lo a começar.
-- [Discord EthStaker](https://discord.io/ethstaker)
+- [Discord EthStaker](https://discord.gg/ethstaker)
- [Reddit EthStaker](https://www.reddit.com/r/ethstaker)
A maioria das equipes que estão construindo clientes Ethereum também tem espaços dedicados ao público, onde você pode obter suporte e fazer perguntas.
diff --git a/public/content/translations/pt-br/contributing/adding-desci-projects/index.md b/public/content/translations/pt-br/contributing/adding-desci-projects/index.md
index fb6d6deea0b..07b5b7694f9 100644
--- a/public/content/translations/pt-br/contributing/adding-desci-projects/index.md
+++ b/public/content/translations/pt-br/contributing/adding-desci-projects/index.md
@@ -37,7 +37,7 @@ O Ethereum é fluido por natureza, por isso, suas equipes e produtos vêm e vão
- garantir que todos os projetos listados ainda atendam aos nossos critérios
- verificar se não há produtos sugeridos que atendam mais aos nossos critérios do que os atualmente listados
-O ethereum.org é mantido pela comunidade de código aberto e dependemos da comunidade para ajudar a mantê-lo atualizado. Se você observar alguma informação sobre os projetos listados que precisam ser atualizados, abra um tíquete ou uma solicitação por pull em nosso repositório do GitHub.
+O ethereum.org é mantido pela comunidade de código aberto e dependemos da comunidade para ajudar a mantê-lo atualizado. Se você notar alguma informação sobre projetos listados que precisam ser atualizados, abra um tíquete ou uma solicitação de pull em nosso repositório do GitHub.
## Termos de uso {#terms-of-use}
diff --git a/public/content/translations/pt-br/contributing/adding-developer-tools/index.md b/public/content/translations/pt-br/contributing/adding-developer-tools/index.md
index 9874eefdaef..11139288968 100644
--- a/public/content/translations/pt-br/contributing/adding-developer-tools/index.md
+++ b/public/content/translations/pt-br/contributing/adding-developer-tools/index.md
@@ -54,7 +54,7 @@ A menos que os produtos sejam ordenados especificamente de outra forma, como em
## Adicione sua ferramenta de desenvolvedor {#how-decisions-about-the-site-are-made}
-Se você deseja adicionar uma ferramenta de desenvolvedor ao ethereum.org e ela atender aos critérios, crie um tíquete no GitHub.
+Se você deseja adicionar uma ferramenta de desenvolvedor ao ethereum.org que atende aos critérios, crie um tíquete no GitHub.
Criar tíquete
diff --git a/public/content/translations/pt-br/contributing/adding-exchanges/index.md b/public/content/translations/pt-br/contributing/adding-exchanges/index.md
index d04e1baff27..2ef923a0d70 100644
--- a/public/content/translations/pt-br/contributing/adding-exchanges/index.md
+++ b/public/content/translations/pt-br/contributing/adding-exchanges/index.md
@@ -20,7 +20,7 @@ Devido a esse contexto, precisaremos de algumas informações específicas quand
## Do que precisamos {#what-we-need}
-- As restrições geográficas aplicáveis ao câmbio
+- As restrições geográficas aplicáveis ao câmbio. As restrições geográficas associadas ao câmbio devem ser detalhadas em uma página ou seção dedicada do site da corretora de câmbio.
- As moedas que os usuários podem usar para comprar ETH
- Prova de que a agência de câmbio é uma empresa comercial legítima
- Qualquer informação adicional que você tenha: podem ser informações sobre a empresa, como anos de operação, apoio financeiro, etc.
diff --git a/public/content/translations/pt-br/contributing/adding-glossary-terms/index.md b/public/content/translations/pt-br/contributing/adding-glossary-terms/index.md
index 64eb3ae3f9d..6f5a315b1a9 100644
--- a/public/content/translations/pt-br/contributing/adding-glossary-terms/index.md
+++ b/public/content/translations/pt-br/contributing/adding-glossary-terms/index.md
@@ -23,4 +23,4 @@ Novos termos inseridos no glossário serão avaliados pelos seguintes critérios
## Adicione seu termo {#how-decisions-about-the-site-are-made}
-Se você quiser adicionar um termo ao glossário no ethereum.org e que atenda aos critérios, [ abra um tíquete no GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml).
+Se você quiser adicionar um termo ao glossário no ethereum.org que atenda aos critérios, [abra um tíquete no GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml).
diff --git a/public/content/translations/pt-br/contributing/adding-layer-2s/index.md b/public/content/translations/pt-br/contributing/adding-layer-2s/index.md
index 2f75be526bb..8bd03a8ee16 100644
--- a/public/content/translations/pt-br/contributing/adding-layer-2s/index.md
+++ b/public/content/translations/pt-br/contributing/adding-layer-2s/index.md
@@ -90,7 +90,7 @@ _Não consideramos outras soluções de dimensionamento que não usam o Ethereum
## Adicione sua camada 2 {#add-exchange}
-Se você deseja adicionar a camada 2 ao ethereum.org, crie um tíquete no GitHub.
+Se você quiser adicionar uma camada 2 ao ethereum.org, abra um tíquete no Github.
Crie um ticket
diff --git a/public/content/translations/pt-br/contributing/adding-products/index.md b/public/content/translations/pt-br/contributing/adding-products/index.md
index 61ebb3f3f62..21ecdd5bd30 100644
--- a/public/content/translations/pt-br/contributing/adding-products/index.md
+++ b/public/content/translations/pt-br/contributing/adding-products/index.md
@@ -85,7 +85,7 @@ O Ethereum é fluido por natureza, por isso, suas equipes e produtos vêm e vão
- garantir que todos os dapps listados continuem atendendo a nossos critérios
- verificar se não há produtos sugeridos que atendam mais aos nossos critérios do que os atualmente listados
-Você pode nos ajudar com isso, verificando e nos informando. [Abra um tíquete](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) ou envie um email para[website@ethereum.org](mailto:website@ethereum.org)
+Você pode nos ajudar com isso, verificando e nos informando. [Abra um tíquete](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) ou envie um e-mail para[website@ethereum.org](mailto:website@ethereum.org)
_Estamos também investigando opções de votação para que a comunidade possa indicar suas preferências e destacar os melhores produtos disponíveis para recomendarmos._
@@ -93,7 +93,7 @@ _Estamos também investigando opções de votação para que a comunidade possa
## Adicione seu produto {#add-your-product}
-Se você quiser adicionar um dapp ao ethereum.org e ele atender aos critérios, crie um tíquete no GitHub.
+Se você quiser adicionar um dapp ao ethereum.org e ele atender aos critérios, abra um tíquete no GitHub.
Criar um novo problema
diff --git a/public/content/translations/pt-br/contributing/adding-staking-products/index.md b/public/content/translations/pt-br/contributing/adding-staking-products/index.md
index 3fcf88e2410..393d0e7f9f7 100644
--- a/public/content/translations/pt-br/contributing/adding-staking-products/index.md
+++ b/public/content/translations/pt-br/contributing/adding-staking-products/index.md
@@ -8,7 +8,7 @@ lang: pt-br
Queremos ter certeza de que listamos os melhores recursos possíveis, mantendo os usuários seguros e confiantes.
-Qualquer pessoa é livre para sugerir a adição de participações em produtos ou serviços no ethereum.org. Se houver algum que esquecemos, **[sugira aqui](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml)!**
+Qualquer pessoa é livre para sugerir a adição de participações em produtos ou serviços no ethereum.org. Se houver algum de que esquecemos, **[sugira aqui](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml)!**
Atualmente, listamos participações em produtos e serviços nas seguintes páginas:
@@ -20,7 +20,7 @@ A prova de participação na Beacon Chain está ativa desde 1 de dezembro de 202
## O framework de decisão {#the-decision-framework}
-A decisão de listar um produto no ethereum.org não depende de um único fator. Vários critérios são considerados em conjunto ao decidir listar um produto ou serviço. Quanto esses critérios ou mais forem atendidos, maior será a probabilidade de eles serem listados.
+A decisão de listar um produto no ethereum.org não depende de um único fator. Vários critérios são considerados em conjunto ao decidir listar um produto ou serviço. Quanto mais desses critérios forem atendidos, maior será a probabilidade de eles serem listados.
**Primeiro, de qual categoria de produto ou serviço isso se trata?**
@@ -29,7 +29,7 @@ A decisão de listar um produto no ethereum.org não depende de um único fator.
- Participação como Serviço (SaaS)
- Pool de participação (staking)
-Atualmente, estamos listando apenas produtos ou serviços nessas categorias.
+Atualmente, estamos apenas listando produtos ou serviços nessas categorias.
### Critérios para inclusão {#criteria-for-inclusion}
@@ -50,6 +50,11 @@ As submissões de produtos ou serviços de participação serão avaliadas pelos
- Quais etapas na jornada dos usuários exigem que humanos de confiança tenham as chaves de seus fundos ou distribuam recompensas adequadamente?
- Isso é usado para determinar a pontuação de produtos e serviços "sem confiança".
+**O projeto fornece informação precisa e confiável?**
+
+- É crucial que o website do produto exiba informações atualizadas, precisas e que não induzam a erro, particularmente se ele pertence ao protocolo Ethereum ou outras tecnologias relacionadas.
+- Envios contendo informações incorretas, detalhes desatualizados, afirmações potencialmente confusas sobre o Ethereum ou outros assuntos relevantes não serão listadas, ou serão removidas se já estiverem listadas.
+
**Quais plataformas são suportadas?**
- ou seja, Linux, macOS, Windows, iOS, Android
@@ -63,7 +68,7 @@ Para qualquer sistema personalizado ou contrato inteligente envolvido:
- Projetos de código aberto devem ter um repositório de código-fonte disponível publicamente
- Isso é usado para determinar a pontuação de "código aberto" dos produtos.
-**O produto está fora do desenvolvimento _beta_?**
+**O produto está fora do desenvolvimento de uma versão _beta_?**
- Onde se encontra o produto em seu ciclo de desenvolvimento?
- Os produtos na fase beta não são considerados para inclusão no ethereum.org
@@ -82,14 +87,14 @@ Para qualquer sistema personalizado ou contrato inteligente envolvido:
Para produtos de software relacionados à configuração de nó ou cliente, gerenciamento ou migração:
-**Quais clientes da camada de consenso (por exemplo, Lighthouse, Teku, Nimbus, Prysm) são suportados?**
+**Quais clientes da camada de consenso (como Lighthouse, Teku, Nimbus, Prysm) são suportados?**
- Quais clientes são suportados? O usuário pode escolher?
- Isso é usado para determinar a pontuação dos produtos "multicliente".
#### Participação sobre Serviço {#staking-as-a-service}
-Para [listagens de participação como serviço](/staking/saas/) (ou seja, operação de nó delegado):
+Para [listagens de staking-as-a-service](/staking/saas/) (ou seja, operação de nó delegada):
**Quais são as taxas associadas ao uso do serviço?**
@@ -108,7 +113,7 @@ Para [listagens de participação como serviço](/staking/saas/) (ou seja, opera
**Qual é a diversidade de clientes dos nós que estão sendo operados?**
-- Qual é a porcentagem de chaves do validador sendo executadas por um cliente para constituir a camada de consenso (CL)?
+- Que percentual de chaves validadoras estão sendo rodadas pela por uma maioria de clientes de camada de consenso (CL)?
- Na última edição, o Prysm é o cliente da camada de consenso executado pela maioria dos nós operadores, o que é perigoso para a rede. Se um cliente atualmente estiver usando mais de 33% da rede, solicitamos os dados relacionados a esse uso.
- Isso é usado para determinar a pontuação de “diversidade de clientes” dos produtos.
@@ -123,7 +128,7 @@ Para [serviços de participação (stake) em pool](/staking/pools/):
**Quais são as taxas ou requisitos de participação (stake) envolvidos?**
- Qual é o percentual de recompensas removidas como taxas?
-- Quaisquer requisitos adicionais de participação?
+- Você tem requisitos adicionais de participação (staking)?
**Há um token de liquidez?**
@@ -139,14 +144,14 @@ Para [serviços de participação (stake) em pool](/staking/pools/):
**Qual é a diversidade de clientes dos operadores de nós em pool?**
- Qual é a porcentagem de operadores de nós que usam um cliente da camada de consenso?
-- Na última edição, o Prysm é o cliente da camada de concenso executado pela maioria dos nós operadores, o que é perigoso para a rede. Se qualquer cliente CL está atualmente sendo usado acima de 33% da rede, ele pede os dados relacionados para o uso.
-- Isso é usado para determinar a pontuação de "clientes distintos" dos produtos.
+- Na última edição, o Prysm é o cliente da camada de consenso executado pela maioria dos nós operadores, o que é perigoso para a rede. Se um cliente atualmente estiver usando mais de 33% da rede, solicitamos os dados relacionados a esse uso.
+- Isso é usado para determinar a pontuação de “diversidade de clientes” dos produtos.
### Outros critérios: os bons para ter {#other-criteria}
**Quais interfaces de usuário são suportadas?**
-- Por exemplo, Aplicativos de navegador, desktop, mobile ou CLI
+- ou seja, Aplicativos de navegador, desktop, mobile ou CLI
**Para ferramentas de nós, o software fornece uma maneira fácil de alternar entre clientes?**
@@ -158,13 +163,13 @@ Para [serviços de participação (stake) em pool](/staking/pools/):
## Como exibimos os resultados {#product-ordering}
-Os [critérios de inclusão](#criteria-for-inclusion) acima são usados para calcular a pontuação acumulada para cada produto ou serviço. Isso é usado como meio de classificação e apresentação de produtos que atendem a determinados critérios objetivos. Quanto mais critérios forem fornecidos para essa evidência, maior será a classificação de um produto, com ligações carregadas aleatoriamente.
+Os [critérios de inclusão](#criteria-for-inclusion) acima são usados para calcular a pontuação acumulada para cada produto ou serviço. Isso é usado como meio de classificação e apresentação de produtos que atendem a determinados critérios objetivos. Quanto mais critérios forem fornecidos para essa evidência, maior será a classificação de um produto, com ligações exibidas aleatoriamente durante o carregamento.
Atualmente, a lógica e os valores do código para esses critérios estão contidos [neste componente JavaScript](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350) em nosso repositório.
## Adicione seu produto ou serviço {#add-product}
-Se você quiser adicionar uma participação (stake) de produto ou serviço ao ethereum.org, crie um tíquete no GitHub.
+Se você quiser adicionar uma participação (stake) de produto ou serviço ao ethereum.org, crie um tíquete no Github.
Crie um ticket
diff --git a/public/content/translations/pt-br/contributing/content-resources/index.md b/public/content/translations/pt-br/contributing/content-resources/index.md
index 1cdd883e273..8215db0dd93 100644
--- a/public/content/translations/pt-br/contributing/content-resources/index.md
+++ b/public/content/translations/pt-br/contributing/content-resources/index.md
@@ -25,7 +25,7 @@ Conteúdos de aprendizado serão avaliados pelos seguintes critérios:
## Adicione seu recurso de conteúdo {#add-your-content-resource}
-Se você deseja adicionar uma fonte de conteúdo que atende aos critérios ao ethereum.org, crie um tíquete no GitHub.
+Se você deseja adicionar uma fonte de conteúdo ao ethereum.org que atende aos critérios, abra um tíquete no GitHub.
Criar um novo problema
diff --git a/public/content/translations/pt-br/contributing/design/adding-design-resources/index.md b/public/content/translations/pt-br/contributing/design/adding-design-resources/index.md
new file mode 100644
index 00000000000..95aa42d318c
--- /dev/null
+++ b/public/content/translations/pt-br/contributing/design/adding-design-resources/index.md
@@ -0,0 +1,69 @@
+---
+title: Adicionando recursos de design
+description: Diretrizes e requisitos para garantir a qualidade dos materiais de design no ethereum.org
+lang: pt-br
+---
+
+# Adicionando recursos de design {#adding-design-resources}
+
+Qualquer pessoa pode sugerir novos materiais de design para a página de [Design e UX na web3](/developers/docs/design-and-ux/).
+
+Esteja ciente de que o foco desta página é fornecer valor ao usuário para candidatos a designers web3. A seção de design não está lá para anunciar seus serviços, produtos ou plataformas.
+
+Para garantir que possamos manter um alto padrão de informações e promover visões valiosas, estabelecemos uma política de listagem:
+
+## Estudos de Pesquisa e Painéis {#Research-studies}
+
+1. Metodologia do Som
+
+a. A metodologia deve definir claramente como os dados foram coletados.
+
+b. O número de participantes envolvidos na pesquisa deve ser informado.
+
+c. Os métodos de pesquisa empregados devem ser descritos.
+
+2. Relevância para designers Web3 e casos de uso comuns de design
+
+a. O tópico da pesquisa deve ser relevante para designers web3 e abordar casos de uso comuns de design.
+
+3. Foco no fornecimento de informações
+
+a. O objetivo principal do texto deve ser compartilhar informações em vez de promover um projeto ou empresa específica.
+
+## Artigos {#Articles}
+
+1. Relevância para Designers/Pesquisadores Web3 e Casos de Uso Comuns de Design Web3
+
+a. O tópico do artigo deve ser pertinente para designers e pesquisadores web3, com foco em casos de uso comuns de design web3.
+
+2. Qualidade básica de redação
+
+a. O artigo deve estar livre de erros gramaticais e ortográficos.
+
+b. A ênfase deve ser colocada na entrega de informações e aprendizados fundamentais.
+
+c. A redação deve ser concisa e direta.
+
+3. Objetivo do texto
+
+a. O objetivo principal do artigo deve ser compartilhar informações em vez de promover um determinado projeto ou empresa.
+
+## Comunidades / DAOs {#Communities-and-DAOs}
+
+1. O site deve indicar claramente como participar da Comunidade/DAO
+
+2. Benefícios claros de ser um membro
+
+a. Os benefícios de se tornar um membro devem ser apresentados em destaque.
+
+**Exemplos**: receber comentários sobre o trabalho, acessar oportunidades de trabalho ou recompensas, compartilhar conhecimentos de design e pesquisa.
+
+3. Comunicação ativa e vibrante no Discord
+
+a. A comunidade do Discord deve exibir uma comunicação ativa e engajada.
+
+b. Os moderadores devem se envolver ativamente na manutenção da comunidade e na facilitação de discussões.
+
+c. A comunidade deve demonstrar um histórico de conversas valiosas e produtivas nas últimas duas semanas.
+
+Ao aderir a esses critérios, nosso objetivo é promover um ambiente próspero e de compartilhamento de conhecimento em nossa comunidade. Nós acreditamos que esta política de lista branca vai garantir que nossos usuários tenham acesso a recursos confiáveis, relevantes e perspicazes. Agradecemos sua compreensão e cooperação para manter a qualidade do conteúdo em nossa plataforma.
diff --git a/public/content/translations/pt-br/contributing/design/index.md b/public/content/translations/pt-br/contributing/design/index.md
new file mode 100644
index 00000000000..3ba5470fd51
--- /dev/null
+++ b/public/content/translations/pt-br/contributing/design/index.md
@@ -0,0 +1,77 @@
+---
+title: Contribuição no design
+description: Contribuição no design do ethereum.org
+lang: pt-br
+---
+
+# Contribuição no design do ethereum.org {#design-contributions}
+
+O design é um componente crítico de qualquer projeto e, dedicando seu tempo e habilidades de design ao Ethereum.org, você pode ajudar a melhorar a experiência do usuário para nossos visitantes. Contribuir para um projeto de código aberto oferece uma oportunidade de ganhar experiência relevante e desenvolver suas habilidades em um ambiente colaborativo. Você terá a chance de trabalhar com outros designers, desenvolvedores e membros da comunidade, todos com suas próprias perspectivas e visões.
+
+Por fim, essa é uma ótima maneira de construir um portfólio diversificado e impressionante que mostre suas habilidades de design.
+
+## Como contribuir?
+
+### Forneça feedback sobre os primeiros protótipos de design {#design-critique}
+
+Às vezes, precisamos de ajuda para testar nossas ideias originais. Esta é uma ótima maneira de como contribuir sem nenhum conhecimento técnico.
+
+1. A equipe de design compartilhará um desenho de projeto no [Discord](https://discord.com/invite/CetY6Y4) e no [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+2. Você será guiado pelos projetos para fornecer feedback por meio da função de comentários.
+3. O resultado será compartilhado em problemas do GitHub e depois fechado pela equipe.
+
+### Participe da pesquisa de levantamento {#answer-surveys}
+
+Forneça seus comentários em nosso site:
+
+1. Visitando ethereum.org e lendo as páginas.
+2. Clicando no widget de feedback no canto inferior direito e respondendo a perguntas relacionadas ao design e conteúdo.
+3. Foque nas perguntas de formato livre.
+
+### Encontre problemas relacionados ao design no site e reporte-os {#report-design-issues}
+
+O Ethereum.org é um site de rápido crescimento com muitos recursos e conteúdo. Algumas das interfaces de usuário podem facilmente se tornar obsoletas ou poderiam ser aprimoradas. Se você encontrar qualquer caso parecido, por favor reporte ele para que chame a nossa atenção.
+
+1. Acesse o site e preste atenção em seu design.
+2. Faça capturas de tela e anotações se você notar algum problema visual ou de experiência do usuário.
+3. Reporte os problemas encontrados usando um [formulário de bug](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
+
+### Proponha mudanças de design {#propose-design-changes}
+
+Se você se sente à vontade para enfrentar desafios de design, visite nosso quadro de problemas do GitHub e filtre por [problemas relacionados ao design](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+
+1. Vá ao nosso site e preste atenção em seu design ou acesse nosso repositório GitHub e analise os problemas sinalizados com a [Etiqueta "Design necessário"](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+2. Idealize a solução e desenhe-a. (idealmente usando nosso [sistema de design](https://www.figma.com/community/file/1134414495420383395)).
+3. Proponha a solução no tíquete do GitHub correspondente ou [abra um novo.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
+4. Aguarde a revisão do time de design.
+
+### Construir o Sistema de Design juntos {#Contribute-to-design-system}
+
+Nosso sistema de design torna o projeto ethereum.org divertido e fácil. Se você é um designer experiente, você pode nos ajudar a preparar muitos componentes para o site.
+
+1. Selecione um problema para trabalhar no painel [sobre sistema de design](https://github.com/ethereum/ethereum-org-website/labels/design%20system) no GitHub ou crie um novo.
+2. Peça que o problema selecionado seja atribuído a você.
+3. Comece a projetar o componente solicitado na figma.
+4. Compartilhe-o com a equipe de design no GitHub, assim que você precisar de revisão ou orientação.
+5. A equipe de design revisará.
+6. A equipe de design vai incorporar as mudanças no arquivo principal e publicará o arquivo para a comunidade.
+
+### Escreva o conteúdo relacionado ao design no site {#write-design-articles}
+
+A comunidade de desenvolvedores Ethereum é forte, mas a comunidade de design está ficando um pouco para trás. Se você é um designer com conhecimento em web3, por favor, considere compartilhar seus aprendizados com a comunidade maior, para que todos possamos crescer e melhorar juntos; temos [uma página sobre design para Ethereum](/developers/docs/design-and-ux/) para a qual você pode contribuir. Você também pode verificar nossas [políticas de listagem](/contributing/design/adding-design-resources).
+
+1. Idealize sobre tópicos de design que devem ser cobertos no ethereum.org e seriam benéficos para os designers no espaço.
+2. Vá ao nosso repositório do GitHub e [levante um problema](https://github.com/ethereum/ethereum-org-website/issues/new) propondo um tópico (não escreva o conteúdo ainda).
+3. Aguarde a aprovação do time de design.
+4. Uma vez aprovado, escreva o conteúdo.
+5. Envie-o no problema GH correspondente.
+
+### Desenhe novas ilustrações {#prepare-illustrations}
+
+As visualizações são uma das ferramentas mais poderosas para explicar tópicos abstratos. Há um enorme potencial ao adicionar diagramas e infográficos. Afinal, uma imagem pode dizer mil palavras.
+
+1. Vá ao nosso site e veja as páginas onde alguns novos infográficos poderiam ser adicionados.
+2. Certifique-se de que o estilo da ilustração corresponda aos nossos [recursos](/assets/).
+3. Vá ao nosso repositório GitHub e [levante um problema](https://github.com/ethereum/ethereum-org-website/issues/new) propondo a ilustração.
+4. A equipe de design irá analisá-lo.
+5. Nós criamos um novo problema para pedir a um desenvolvedor que implemente a nova imagem.
diff --git a/public/content/translations/pt-br/contributing/index.md b/public/content/translations/pt-br/contributing/index.md
index 2a9febc4d48..46cb5a86a9c 100644
--- a/public/content/translations/pt-br/contributing/index.md
+++ b/public/content/translations/pt-br/contributing/index.md
@@ -16,10 +16,10 @@ O site ethereum.org, como o Ethereum de forma mais ampla, é um projeto de códi
## Formas de contribuir {#ways-to-contribute}
- [Trabalhe em um tíquete aberto](https://github.com/ethereum/ethereum-org-website/issues) _ — Trabalho pendente identificado_
-- [Participe do programa de tradução](/contributing/translation-program/) _ — Ajude-nos a traduzir o ethereum.org para novos idiomas_
-- [Ajude com o design do site](/contributing/design/) _ — Designers de todos os níveis podem contribuir para melhorar o site_
+- [Participar do programa de tradução](/contributing/translation-program/) _ — Ajude-nos a traduzir o ethereum.org para novos idiomas_
+- [Ajudar com o design do site](/contributing/design/) _ — Designers de todos os níveis podem contribuir para melhorar o site_
- [Adicionar recursos da comunidade](/contributing/content-resources/) _ — Adicione um artigo ou recurso útil a uma página relevante_
-- [Adicione um produto](/contributing/adding-products/) _ — Adicione um dapp ou carteira a uma página relevante_
+- [Adicionar um produto](/contributing/adding-products/) _ — Adicione um dapp ou carteira a uma página relevante_
- [Adicionar ferramentas de desenvolvedor](/contributing/adding-developer-tools/) _ — Adicione uma ferramenta de desenvolvedor a uma página relevante_
- [Adicionar uma troca](/contributing/adding-exchanges/) _ — Adicione um câmbio ao nosso [localizador de câmbios](/get-eth/#country-picker)_
- [Melhorar nossa pesquisa](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) _ — Envie seus comentários sobre nossa pesquisa ou contribua com a sua própria_
@@ -30,6 +30,8 @@ O site ethereum.org, como o Ethereum de forma mais ampla, é um projeto de códi
- [Adicionar um produto ou serviço de staking](/contributing/adding-staking-products/) _ — Adicione um projeto que ajude a facilitar o stake individual, stake combinado ou stake como serviço_
- [Adicionar uma carteira](/contributing/adding-wallets/) _ — Adicione uma carteira à [página de pesquisa de carteiras](/wallets/find-wallet/)_
- [Sugerir um projeto para nossa página DeSci](/contributing/adding-desci-projects/) _ — Adicione um projeto construído no Ethereum que contribua para a ciência descentralizada_
+- [Questionários](/contributing/quizzes/) _- Adicione, atualize e exclua bancos de perguntas do questionário para uma página relevante_
+- [Sugerir um recurso de design](/contributing/design/adding-design-resources/) _- Adicionar, atualizar e excluir recursos úteis de design_
_Alguma dúvida?_ 🤔 Entre em contato no nosso [servidor do Discord](https://discord.gg/ethereum-org)
@@ -49,6 +51,7 @@ Antes de contribuir, certifique-se de está familiarizado com:
- a [visão do ethereum.org](/about/) em evolução
- nossos [princípios de design](/contributing/design-principles/)
- nosso [guia de estilo](/contributing/style-guide/)
+- nosso [código de conduta](/community/code-of-conduct)
## Como são tomadas as decisões sobre o site {#how-decisions-about-the-site-are-made}
@@ -74,13 +77,24 @@ Se a sua contribuição for incluída no ethereum.org, cunharemos um POAP único
### Como solicitar seu POAP {#how-to-claim}
-1. Entre em nosso [servidor do Discord](https://discord.gg/ethereum-org).
+1. Entre em nosso [servidor do Discord](https://discord.gg/premid).
2. Cole o link com sua contribuição no `#🥇| ` [canal poaps](https://discord.com/channels/714888181740339261/804005643211898911).
3. Espere que um membro de nossa equipe envie um link para o seu POAP.
4. Solicite seu POAP!
Você só deve usar carteiras autônomas para reivindicar POAPs. Não use contas de agências de câmbio ou outras contas das quais você não possui as chaves privadas, pois você não poderá acessar ou gerenciar seus POAPs.
+## Resgate seu GitPOAP {#claim-gitpoap}
+
+O GITPOAP também reconhecerá automaticamente sua contribuição fusionada e permitirá que você cunhe um POAP de colaboradores exclusivo e separado na sua própria plataforma!
+
+### Como solicitar seu POAP {#how-to-claim}
+
+1. Visite [GitPOAP](https://www.gitpoap.io).
+2. Conecte-se à sua carteira ou mesmo ao seu e-mail com a opção de entrada.
+3. Procure seu nome de usuário no GitHub, endereço ETH, nomes ENS ou qualquer GitPOAP para verificar se você é elegível.
+4. Se sua conta no GitHub for elegível, você poderá cunhar um GitPOAP!
+
## Colaboradores {#contributors}
diff --git a/public/content/translations/pt-br/contributing/quizzes/index.md b/public/content/translations/pt-br/contributing/quizzes/index.md
new file mode 100644
index 00000000000..02f684c109e
--- /dev/null
+++ b/public/content/translations/pt-br/contributing/quizzes/index.md
@@ -0,0 +1,62 @@
+---
+title: Adicionando um questionário
+description: A política que nós usamos quando adicionando questionários na ethereum.org
+lang: pt-br
+---
+
+# Questionários {#quizzes}
+
+Questionários são uma oportunidade para os usuários testarem se entenderam o conteúdo da página que acabaram de ler. As questões devem ser baseadas somente no conteúdo fornecido na página e não deve perguntar sobre informações que não estejam mencionadas na página.
+
+As questões são estruturadas como a seguir. A questão mostra 1 resposta correta com uma explicação do porquê ela é correta, 3 respostas incorretas com uma explicação do porquê elas são incorretas.
+
+Alguns exemplos de questionários atuais podem ser encontrados aqui:
+
+- [Camada 2](/layer-2)
+- [NFT](/nft/)
+- [O que é o Ethereum?](/what-is-ethereum/)
+- [O que é ETH?](/eth/)
+
+## Adicionando um questionário de aprendizado
+
+Se há uma página que não tem um questionário de aprendizado criado para ela, por favor [abra um issue](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) para ela.
+
+Por favor forneça as seguintes informações:
+
+- A página a qual você quer adicionar um questionário
+- 5 questões com as seguintes informações:
+ - A seção da página em que a questão é baseada
+ - Enunciado da questão
+ - 1 resposta correta com uma explicação da razão pela qual ela é correta
+ - 3 respostas incorretas, cada uma com uma explicação porquê elas são incorretas
+
+## Adicionando uma pergunta ao questionário
+
+Se há uma questão que você quer adicionar para o banco de questões para um questionário, por favor [abra um issue](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) e forneça as seguintes informações:
+
+- A página a qual você quer adicionar uma questão de questionário
+- Para cada questão, forneça as seguintes informações:
+ - A seção da página em que a questão é baseada
+ - Enunciado da questão
+ - 1 resposta correta com uma explicação da razão pela qual ela é correta
+ - 3 respostas incorretas, cada uma com uma explicação porquê elas são incorretas
+
+## Atualizando uma questão de questionário
+
+Se há uma questão que você quer atualizar no banco de questões para um questionário, por favor [abra um issue](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) e forneça as seguintes informações:
+
+- A página à qual você quer atualizar uma questão de questionário
+- Para cada questão sendo atualizada, forneça as seguintes informações:
+ - A seção da página em que a questão é baseada
+ - Enunciado da questão que você quer atualizar
+ - Enunciado da questão atualizado
+ - 1 resposta correta com uma explicação da razão pela qual ela é correta
+ - 3 respostas incorretas, cada uma com uma explicação porquê elas são incorretas
+
+## Removendo uma questão de questionário
+
+Se o conteúdo não existe mais na página de uma questão e ela precisa ser removida, [abra um tíquete](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) para remover a questão e forneça as seguintes informações:
+
+- A página à qual você quer excluir uma questão de questionário
+- A questão que você quer excluir
+- Explicação, se necessário, da razão pela qual a questão deve ser removida
diff --git a/public/content/translations/pt-br/contributing/translation-program/faq/index.md b/public/content/translations/pt-br/contributing/translation-program/faq/index.md
index 23af6adcb01..de0624572e7 100644
--- a/public/content/translations/pt-br/contributing/translation-program/faq/index.md
+++ b/public/content/translations/pt-br/contributing/translation-program/faq/index.md
@@ -110,10 +110,10 @@ O processo de revisão é simples: uma vez que um determinado [lote de conteúdo
Atualmente, todo o conteúdo que não está na língua inglesa é traduzido diretamente do conteúdo em inglês, e qualquer conteúdo que não esteja nesse idioma não pode ser adicionado a outros idiomas.
-Para sugerir um novo conteúdo para o ethereum.org, é possível [registrar uma contribuição](https://github.com/ethereum/ethereum-org-website/issues) no GitHub. Se adicionado, o conteúdo será escrito em inglês e traduzido para outros idiomas usando o Crowdin.
+Para sugerir um novo conteúdo para o ethereum.org, é possível [criar um tíquete](https://github.com/ethereum/ethereum-org-website/issues) no GitHub. Se adicionado, o conteúdo será escrito em inglês e traduzido para outros idiomas usando o Crowdin.
Planejamos adicionar suporte para adições de conteúdos que não estejam em inglês em um futuro próximo.
## Entre em contato conosco {#contact}
-Agradecemos por ter lido todas estas informações. Esperamos que elas tenham incentivado você a participar de nosso programa. Junte-se ao nosso [canal de tradução do Discord](https://discord.gg/ethereum-org) para fazer perguntas e colaborar com outros tradutores, ou entre em contato conosco em translations@ethereum.org!
+Agradecemos por ter lido todas estas informações. Esperamos que elas tenham incentivado você a participar de nosso programa. Junte-se ao nosso [canal de tradução do Discord](https://discord.gg/XVepFu7sqR) para fazer perguntas e colaborar com outros tradutores, ou entre em contato conosco em translations@ethereum.org!
diff --git a/public/content/translations/pt-br/contributing/translation-program/how-to-translate/index.md b/public/content/translations/pt-br/contributing/translation-program/how-to-translate/index.md
index 19a63214c8c..5e4f9bdd65e 100644
--- a/public/content/translations/pt-br/contributing/translation-program/how-to-translate/index.md
+++ b/public/content/translations/pt-br/contributing/translation-program/how-to-translate/index.md
@@ -18,7 +18,7 @@ Para as pessoas que aprendem melhor de forma visual, assistam ao vídeo do Luka
Você precisará fazer login na sua conta do Crowdin ou criar uma conta, caso ainda não tenha. Você só precisa de uma conta de e-mail e senha para se cadastrar.
-
+
Junte-se ao projeto
@@ -38,7 +38,7 @@ Não vê seu idioma na lista? [Abra um tíquete](https://github.com/ethereum/eth
![Arquivos traduzidos e não traduzidos no Crowdin](./crowdin-files.png)
-Uma nota sobre recipientes de conteúdo: utilizamos “recipientes de conteúdos” dentro do Crowdin para ter o conteúdo de prioridade mais alta lançado primeiro. Ao verificar um idioma, por exemplo, [Filipino](https://crowdin.com/project/ethereum-org/fil#) você verá pastas por categoria de conteúdo (“1. Página inicial", "2. Use páginas do Ethereum” etc.).
+Uma nota sobre recipientes de conteúdo: utilizamos “recipientes de conteúdos” dentro do Crowdin para ter o conteúdo de prioridade mais alta lançado primeiro. Ao verificar um idioma, por exemplo, [Filipino](https://crowdin.com/project/ethereum-org/fil#) você verá pastas por categoria de conteúdo (“1. Página inicial", "2. Essenciais", "3. Explorando”, etc.).
Recomendamos que você traduza nesta ordem numérica (1 → 2 → 3 → ⋯) para assegurar que as páginas de maior impacto sejam traduzidas primeiro.
diff --git a/public/content/translations/pt-br/contributing/translation-program/index.md b/public/content/translations/pt-br/contributing/translation-program/index.md
index 849c4771ac5..f7eed7123ba 100644
--- a/public/content/translations/pt-br/contributing/translation-program/index.md
+++ b/public/content/translations/pt-br/contributing/translation-program/index.md
@@ -22,7 +22,7 @@ O Programa de Tradução do ethereum.org está aberto e qualquer um pode contrib
_Junte-se ao [ethereum.org Discord](/discord/) para colaborar com traduções, fazer perguntas, compartilhar comentários e ideias ou juntar-se a um grupo de tradução._
-
+
Comece a traduzir
@@ -36,7 +36,7 @@ Leia mais sobre a [missão e visão](/contributing/translation-program/mission-a
### Nosso progresso até agora {#our-progress}
-- [**Mais de 5.000** tradutores](/contributing/translation-program/contributors/)
+- [**5.100 +** tradutores](/contributing/translation-program/contributors/)
- [**54** idiomas presentes no site](/languages/)
- [**3 milhões** de palavras traduzidas em 2022](/contributing/translation-program/acknowledgements/)
@@ -73,11 +73,11 @@ Se você está contribuindo para o Programa de Tradução ou pensando em se envo
- [Guia do editor online do Crowdin](https://support.crowdin.com/online-editor/) _ — um guia detalhado sobre como usar o editor online do Crowdin e algumas funcionalidades avançadas do Crowdin_
- [Pacotes de conteúdo](/contributing/translation-program/content-buckets/) _ — quais páginas estão incluídas em cada pacote de conteúdo do ethereum.org_
-Para outras ferramentas úteis de tradução, comunidades de tradutores e postagens no blog do Programa de Tradução, visite a [Página de recursos](/contribuindo/tradução-programa/recursos/).
+Para outras ferramentas úteis de tradução, comunidades de tradutores e postagens no blog do Programa de Tradução, visite a [Página de recursos](/contributing/translation-program/resources/).
## Envolva-se {#get-in-touch}
-Você tem alguma dúvida? Ou quer colaborar com nossa equipe e outros tradutores? Publique no canal #translations do nosso [servidor Discord do ethereum.org](https://discord.gg/ethereum-org)
+Você tem alguma dúvida? Ou quer colaborar com nossa equipe e outros tradutores? Publique no canal #translations do nosso [servidor Discord do ethereum.org](https://discord.gg/6WX7E97)
Você também pode entrar em contato conosco por meio do e-mail translations@ethereum.org
diff --git a/public/content/translations/pt-br/contributing/translation-program/resources/index.md b/public/content/translations/pt-br/contributing/translation-program/resources/index.md
index 3ba18e0f13d..ec1dbe736be 100644
--- a/public/content/translations/pt-br/contributing/translation-program/resources/index.md
+++ b/public/content/translations/pt-br/contributing/translation-program/resources/index.md
@@ -38,7 +38,7 @@ Para se manter atualizado sobre os avanços mais recentes do Programa de Traduç
## Horários de trabalho para tradutores {#office-hours}
-Temos horários de plantão para tradutores na segunda quarta-feira de cada mês. Eles são mantidos no canal de voz #horários de plantão no [Discord do ethereum.org](https://discord.gg/geKhWjtF), no qual você também pode encontrar os horários exatos e detalhes adicionais.
+Temos horários de plantão para tradutores na segunda quarta-feira de cada mês. Eles são mantidos no canal de voz #horários de plantão no [Discord do ethereum.org](/discord/), no qual você também pode encontrar os horários exatos e detalhes adicionais.
O horário de plantão permite que nossos tradutores façam perguntas sobre o processo de tradução, forneçam comentários sobre o programa, compartilhem suas ideias ou simplesmente conversem com a equipe principal do ethereum.org. Por último, queremos usar essas chamadas para comunicar desenvolvimentos recentes no Programa de Tradução e compartilhar dicas importantes e instruções com nossos colaboradores.
diff --git a/public/content/translations/pt-br/contributing/translation-program/translators-guide/index.md b/public/content/translations/pt-br/contributing/translation-program/translators-guide/index.md
index 79cfe10415a..05ee871ab02 100644
--- a/public/content/translations/pt-br/contributing/translation-program/translators-guide/index.md
+++ b/public/content/translations/pt-br/contributing/translation-program/translators-guide/index.md
@@ -116,7 +116,7 @@ A melhor maneira de lidar com links é copiá-los diretamente da fonte, clicando
![Exemplo de link.png](./example-of-link.png)
-Os links também aparecem no texto de origem na forma de tags (por exemplo, <0> 0>). Se você passar o mouse por cima da tag, o editor exibirá seu conteúdo completo. Às vezes, essas tags representarão links.
+Links também aparecem no texto fonte na forma de tags (ou seja, <0> 0>). Se você passar o mouse por cima da tag, o editor exibirá seu conteúdo completo. Às vezes, essas tags representarão links.
É muito importante copiar os links da origem e não mudar a sua ordem.
diff --git a/public/content/translations/pt-br/developers/docs/apis/json-rpc/index.md b/public/content/translations/pt-br/developers/docs/apis/json-rpc/index.md
index d5abb70bd72..39825cc7f09 100644
--- a/public/content/translations/pt-br/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/pt-br/developers/docs/apis/json-rpc/index.md
@@ -575,7 +575,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Recuperar um elemento do mapa é mais difícil. A posição de um elemento no mapa é calculada com:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Isso significa que, para recuperar o armazenamento na pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] precisamos calcular a posição com:
diff --git a/public/content/translations/pt-br/developers/docs/blocks/index.md b/public/content/translations/pt-br/developers/docs/blocks/index.md
index 0756285de93..b238868da7e 100644
--- a/public/content/translations/pt-br/developers/docs/blocks/index.md
+++ b/public/content/translations/pt-br/developers/docs/blocks/index.md
@@ -40,7 +40,7 @@ Prova de participação significa o seguinte:
Há muitas informações contidas em um bloco. No nível mais alto, um bloco contém os seguintes campos:
| Campo | Descrição |
-| :--------------- | :--------------------------------------------------------- |
+|:---------------- |:---------------------------------------------------------- |
| `slot` | o slot ao qual o bloco pertence |
| `proposer_index` | a ID do validador que propõe o bloco |
| `parent_root` | o hash do bloco anterior |
@@ -50,7 +50,7 @@ Há muitas informações contidas em um bloco. No nível mais alto, um bloco con
O bloco `body` contém vários campos próprios:
| Campo | Descrição |
-| :------------------- | :------------------------------------------------------------ |
+|:-------------------- |:------------------------------------------------------------- |
| `randao_reveal` | um valor usado para selecionar o proponente do próximo bloco |
| `eth1_data` | informações sobre o contrato de depósito |
| `graffiti` | dados arbitrários usados para marcar blocos |
@@ -65,7 +65,7 @@ O bloco `body` contém vários campos próprios:
O campo `attestations` contém uma lista de todas as atestações no bloco. As atestações têm seu próprio tipo de dados que contém vários dados. Cada atestação contém:
| Campo | Descrição |
-| :----------------- | :---------------------------------------------------------- |
+|:------------------ |:----------------------------------------------------------- |
| `aggregation_bits` | uma lista de quais validadores participaram desta atestação |
| `data` | um contêiner com vários subcampos |
| `signature` | assinatura agregada com todos os validadores de atestação |
@@ -73,7 +73,7 @@ O campo `attestations` contém uma lista de todas as atestações no bloco. As a
O campo `data` no `attestation` contém o seguinte:
| Campo | Descrição |
-| :------------------ | :----------------------------------------------- |
+|:------------------- |:------------------------------------------------ |
| `slot` | o local ao qual a atestação se refere |
| `index` | índices para as atestações dos validadores |
| `beacon_block_root` | o hash raiz do bloco Beacon contendo este objeto |
@@ -85,7 +85,7 @@ A execução das transações no `execution_payload` atualiza o estado global. T
O `execution_payload_header` contém os seguintes campos:
| Campo | Descrição |
-| :------------------ | :----------------------------------------------------------------- |
+|:------------------- |:------------------------------------------------------------------ |
| `parent_hash` | hash do bloco pai |
| `fee_recipient` | endereço da conta para pagar taxas de transação para |
| `state_root` | hash raiz para o estado global após aplicar alterações neste bloco |
@@ -105,7 +105,7 @@ O `execution_payload_header` contém os seguintes campos:
O próprio `execution_payload` contém o seguinte (note que é idêntico ao cabeçalho, exceto que, em vez do hash raiz das transações, ele inclui a lista real de transações e informações de retirada):
| Campo | Descrição |
-| :----------------- | :----------------------------------------------------------------- |
+|:------------------ |:------------------------------------------------------------------ |
| `parent_hash` | hash do bloco pai |
| `fee_recipient` | endereço da conta para pagar taxas de transação para |
| `state_root` | hash raiz para o estado global após aplicar alterações neste bloco |
@@ -125,7 +125,7 @@ O próprio `execution_payload` contém o seguinte (note que é idêntico ao cabe
A lista `withdrawals` contém objetos `withdrawal` estruturados da seguinte forma:
| Campo | Descrição |
-| :--------------- | :---------------------------- |
+|:---------------- |:----------------------------- |
| `endereço` | endereço da conta que retirou |
| `amount` | quantidade retirada |
| `index` | valor do índice da retirada |
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
index 00de9fab23b..52527a8e786 100644
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
+++ b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
@@ -64,6 +64,6 @@ O proponente de blocos recebe pagamento pelo seu trabalho. Há uma `base_reward`
- [Introdução aos blocos](/developers/docs/blocks/)
- [Introdução à prova de participação](/developers/docs/consensus-mechanisms/pos/)
-- [Especificações do consenso do Ethereum](https://www.github.com/ethereum/consensus-specs)
+- [Especificações do consenso do Ethereum](https://github.com/ethereum/consensus-specs)
- [Introdução ao Gasper](/developers/docs/consensus-mechanisms/pos/)
- [Atualizando o Ethereum](https://eth2book.info/)
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
index 876cfe76f66..aa164b42c6c 100644
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
+++ b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
@@ -16,7 +16,7 @@ A prova de participação é um meio de provar que os validadores colocam algo d
## Validadores {#validators}
-Para participar como validador, um usuário deve depositar 32 ETH no contrato de depósito e executar três softwares separados: um cliente de execução, um cliente de consenso e um validador. Ao depositar seu ETH, o usuário entra em uma fila de ativação que limita a taxa de novos validadores que entram na rede. Uma vez ativados, os validadores recebem novos blocos de pares na rede Ethereum. As transações entregues no bloco são reexecutadas para verificar se, as alterações propostas para o estado do Ethereum são válidas e a assinatura do bloco é verificada. O validador então envia um voto (chamado de atestação) a favor desse bloco para toda a rede.
+To participate as a validator, a user must deposit 32 ETH into the deposit contract and run three separate pieces of software: an execution client, a consensus client, and a validator client. Ao depositar seu ETH, o usuário entra em uma fila de ativação que limita a taxa de novos validadores que entram na rede. Uma vez ativados, os validadores recebem novos blocos de pares na rede Ethereum. As transações entregues no bloco são reexecutadas para verificar se, as alterações propostas para o estado do Ethereum são válidas e a assinatura do bloco é verificada. O validador então envia um voto (chamado de atestação) a favor desse bloco para toda a rede.
Enquanto na prova de trabalho, o tempo dos blocos é determinado pela dificuldade de mineração, na prova de participação o tempo é fixo. O tempo na prova de participação do Ethereum é dividido em espaços (12 segundos) e épocas (32 espaços). Um validador é selecionado aleatoriamente para ser um proponente de bloco em cada espaço. Esse validador é responsável por criar um novo bloco e enviá-lo para outros nós da rede. Também em cada slot, um comitê de validadores é escolhido aleatoriamente, cujos votos são utilizados para determinar a validade do bloco proposto. Dividir o validador configurado em comitês é importante para manter a carga de rede gerenciável. Os comitês dividem o conjunto de validadores, de modo que cada validador ativo ateste em cada época, mas não em cada espaço (slot).
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
index 2f33ec4694f..97227170952 100644
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
+++ b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
@@ -68,7 +68,7 @@ Para complicar ainda mais, as transações rejeitadas na bifurcação temporári
## Uso de energia na prova de trabalho {#energy}
-Uma importante crítica à prova de trabalho é a quantidade de energia necessária para manter a rede segura. Para manter a segurança e a descentralização, o Ethereum na prova de trabalho consumia grandes quantidades de energia. Pouco antes de mudar para a prova de participação, os mineradores do Ethereum consumiam coletivamente cerca de 70 TWh/ano (aproximadamente o mesmo que a República Tcheca – de acordo com [digiconomist](https://digiconomist.net) em 18 de julho de 2022).
+Uma importante crítica à prova de trabalho é a quantidade de energia necessária para manter a rede segura. Para manter a segurança e a descentralização, o Ethereum na prova de trabalho consumia grandes quantidades de energia. Pouco antes de mudar para a prova de participação, os mineradores do Ethereum consumiam coletivamente cerca de 70 TWh/ano (aproximadamente o mesmo que a República Tcheca – de acordo com [digiconomist](https://digiconomist.net/) em 18 de julho de 2022).
## Prós e contras {#pros-and-cons}
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
deleted file mode 100644
index 3f5b0428f79..00000000000
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashamoto/index.md
+++ /dev/null
@@ -1,334 +0,0 @@
----
-title: Dagger-Hashimoto
-description: O algoritmo Dagger-Hashimoto em detalhes
-lang: pt-br
----
-
-Dagger-Hashimoto foi a implementação original de pesquisa e especificação para o algoritmo de mineração do Ethereum. Dagger-Hashimoto foi substituído por [Ethash](#ethash). A mineração foi completamente desligada na [Fusão](/updates/merge) no dia 15 de setembro de 2022. Desde então, o Ethereum foi protegido usando um mecanismo [prova de participação](/developers/docs/consensus-mechanisms/pos). Esta página é para fins históricos. As informações aqui não são mais relevantes para o Ethereum posterior à Fusão.
-
-## Pré-Requisitos {#prerequisites}
-
-Para melhor entender esta página, recomendamos que você leia primeiro o[ consenso de prova de trabalho, ](/developers/docs/consensus-mechanisms/pow)[mineração](/developers/docs/consensus-mechanisms/pow/mining) e [algoritmos de mineração](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms).
-
-## Dagger-Hashimoto {#dagger-hashimoto}
-
-Dagger-Hashimoto pretende satisfazer dois objetivos:
-
-1. **Resistência a ASIC**: o benefício de criar hardware especializado para o algoritmo deve ser o menor possível.
-2. **Cliente leve verificável**: um bloco deve ser verificável eficientemente por um cliente leve.
-
-Com uma modificação adicional, também especificamos como atingir um terceiro objetivo se desejado, mas à custa de uma complexidade adicional:
-
-**Armazenamento completo da cadeia**: a mineração deveria exigir o armazenamento do estado completo da blockchain (devido à estrutura irregular da árvore de estado Ethereum, esperamos que haja um pouco de perda, especialmente de alguns contratos muitas vezes usados, mas queremos minimizar isso).
-
-## Geração do DAG {#dag-generation}
-
-O código do algoritmo será definido em Python abaixo. Primeiro, damos `encode_int` para combinar inteiros sem sinal de precisão especificada em strings. Sua inversa também é dada:
-
-```python
-NUM_BITS = 512
-
-def encode_int(x):
- "Encode an integer x as a string of 64 characters using a big-endian scheme"
- o = ''
- for _ in range(NUM_BITS / 8):
- o = chr(x % 256) + o
- x //= 256
- return o
-
-def decode_int(s):
- "Unencode an integer x from a string using a big-endian scheme"
- x = 0
- for c in s:
- x *= 256
- x += ord(c)
- return x
-```
-
-Em seguida assumimos que `sha3` é uma função que recebe um inteiro e retorna um inteiro, e `dbl_sha3` é uma função double-sha3, se converter este código de referência em uma implementação de uso:
-
-```python
-from pyethereum import utils
-def sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(x))
-
-def dbl_sha3(x):
- if isinstance(x, (int, long)):
- x = encode_int(x)
- return decode_int(utils.sha3(utils.sha3(x)))
-```
-
-### Parâmetros {#parameters}
-
-Os parâmetros usados para o algoritmo são:
-
-```python
-SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512
-
-params = {
- "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
- "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536
- # with epochtime=20000 gives 882 MB growth per year
- "cache_size": 2500, # Size of the light client's cache (can be chosen by light
- # client; not part of the algo spec)
- "diff": 2**14, # Difficulty (adjusted during block evaluation)
- "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
- "k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
- "accesses": 200, # Number of dataset accesses during hashimoto
- "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
-}
-```
-
-`P` neste caso é uma primeira escolha tal que `log(P)` é apenas ligeiramente menor que 512, que corresponde aos 512 bits que temos usado para representar nossos números. Observe que apenas a última metade do DAG precisa realmente ser armazenado, assim o requisito de RAM de-facto começa em 1 GB e cresce 441 MB por ano.
-
-### Construção de gráfico Dagger {#dagger-graph-building}
-
-A construção primitiva de gráfico dagger é definida da seguinte forma:
-
-```python
-def produce_dag(params, seed, length):
- P = params["P"]
- picker = init = pow(sha3(seed), params["w"], P)
- o = [init]
- for i in range(1, length):
- x = picker = (picker * init) % P
- for _ in range(params["k"]):
- x ^= o[x % i]
- o.append(pow(x, params["w"], P))
- return o
-```
-
-Essencialmente, ele começa um gráfico como um único nó, `sha3(seed)`, e de lá começa a adicionar sequencialmente outros nós com base em nós aleatórios anteriores. Quando um novo nó é criado, uma potência modular da semente é computada para aleatoriamente selecionar alguns índices menores que `i` (usando `x % i` acima), e os valores dos nós desses índices são usados em um cálculo para gerar um novo valor para `x`, que é então alimentada em uma pequena função de prova de trabalho (baseada em XOR) para finalmente gerar o valor do gráfico no índice `i`. A lógica por trás deste design específico é forçar o acesso sequencial do DAG; o próximo valor do DAG que será acessado não pode ser determinado até que o valor atual seja conhecido. Finalmente, a exponenciação modular faz o hash do resultado ainda mais.
-
-Este algoritmo depende de vários resultados da teoria numérica. Veja o apêndice abaixo para uma discussão.
-
-## Avaliação de cliente leve {#light-client-evaluation}
-
-A construção do gráfico acima pretende permitir que cada nó no gráfico seja reconstruído computando uma subárvore com apenas um pequeno número de nós e exigindo uma pequena quantidade de memória auxiliar. Note que com k=1, a subárvore é apenas uma cadeia de valores que vai subindo até o primeiro elemento do DAG.
-
-A função de computação do cliente leve para o DAG funciona da seguinte forma:
-
-```python
-def quick_calc(params, seed, p):
- w, P = params["w"], params["P"]
- cache = {}
-
- def quick_calc_cached(p):
- if p in cache:
- pass
- elif p == 0:
- cache[p] = pow(sha3(seed), w, P)
- else:
- x = pow(sha3(seed), (p + 1) * w, P)
- for _ in range(params["k"]):
- x ^= quick_calc_cached(x % p)
- cache[p] = pow(x, w, P)
- return cache[p]
-
- return quick_calc_cached(p)
-```
-
-Essencialmente, é simplesmente uma reescrita do algoritmo acima que remove o loop de computação dos valores de todo o DAG e substitui a pesquisa anterior de nó por uma chamada recursiva ou uma pesquisa de cache. Observe que para `k=1` o cache é desnecessário, embora uma otimização maior na verdade pré-calcula os primeiros poucos milhares de valores do DAG e o mantém como um cache estático para computações; ver o apêndice para uma implementação de código disso.
-
-## Buffer duplo de DAGs {#double-buffer}
-
-Em um cliente completo, é usado um [_buffer duplo_](https://wikipedia.org/wiki/Multiple_buffering) de 2 DAGs produzidos pela fórmula acima. A ideia é que DAGs são produzidos a cada `epochtime` número de blocos de acordo com os parâmetros acima. Em vez do cliente usar o último DAG produzido, ele usa o anterior. A vantagem disto é permitir que os DAG sejam substituídos com o passar do tempo, sem necessidade de incorporar um passo em que os mineradores devem, de repente, recriar todos os dados. Caso contrário, existe o potencial para um abrandamento abrupto temporário do processamento da cadeia a intervalos regulares e um aumento dramático da centralização. Assim, existe o risco de ataques de 51% dentro desses poucos minutos antes de todos os dados serem recomputados.
-
-O algoritmo usado para gerar o conjunto de DAGs usados para computar o trabalho de um bloco é o seguinte:
-
-```python
-def get_prevhash(n):
- from pyethereum.blocks import GENESIS_PREVHASH
- from pyethereum import chain_manager
- if num <= 0:
- return hash_to_int(GENESIS_PREVHASH)
- else:
- prevhash = chain_manager.index.get_block_by_number(n - 1)
- return decode_int(prevhash)
-
-def get_seedset(params, block):
- seedset = {}
- seedset["back_number"] = block.number - (block.number % params["epochtime"])
- seedset["back_hash"] = get_prevhash(seedset["back_number"])
- seedset["front_number"] = max(seedset["back_number"] - params["epochtime"], 0)
- seedset["front_hash"] = get_prevhash(seedset["front_number"])
- return seedset
-
-def get_dagsize(params, block):
- return params["n"] + (block.number // params["epochtime"]) * params["n_inc"]
-
-def get_daggerset(params, block):
- dagsz = get_dagsize(params, block)
- seedset = get_seedset(params, block)
- if seedset["front_hash"] <= 0:
- # No back buffer is possible, just make front buffer
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": 0}}
- else:
- return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
- "block_number": seedset["front_number"]},
- "back": {"dag": produce_dag(params, seedset["back_hash"], dagsz),
- "block_number": seedset["back_number"]}}
-```
-
-## Hashimoto {#hashimoto}
-
-A ideia por trás do Hashimoto original é usar a blockchain como um conjunto de dados, executando um cálculo que seleciona N índices da blockchain, reúne as transações nesses índices, executa um XOR desses dados e retorna o hash do resultado. O algoritmo original de Thaddeus Dryja, convertido para Python para consistência, é o seguinte:
-
-```python
-def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
- hash_output_A = sha256(prev_hash + merkle_root + nonce)
- txid_mix = 0
- for i in range(64):
- shifted_A = hash_output_A >> i
- transaction = shifted_A % len(list_of_transactions)
- txid_mix ^= list_of_transactions[transaction] << i
- return txid_max ^ (nonce << 192)
-```
-
-Infelizmente, enquanto Hashimoto é considerado de uso intenso de RAM, ele depende da aritmética de 256 bits, o que tem uma sobrecarga computacional considerável. No entanto, Dagger-Hashimoto usa apenas os 64 bits menos significativos ao indexar seu conjunto de dados para resolver esta questão.
-
-```python
-def hashimoto(dag, dagsize, params, header, nonce):
- m = dagsize / 2
- mix = sha3(encode_int(nonce) + header)
- for _ in range(params["accesses"]):
- mix ^= dag[m + (mix % 2**64) % m]
- return dbl_sha3(mix)
-```
-
-O uso duplo do SHA3 permite uma forma de zero dados, pré-verificação quase instantânea, verificando apenas se foi fornecido um valor intermediário correto. Esta camada exterior de prova de trabalho é altamente favorável a ASIC e razoavelmente fraca, mas existe para tornar a DDoS ainda mais difícil, uma vez que essa pequena quantidade de trabalho tem de ser feita para produzir um bloco que não seja imediatamente rejeitado. Aqui está a versão de cliente leve:
-
-```python
-def quick_hashimoto(seed, dagsize, params, header, nonce):
- m = dagsize // 2
- mix = sha3(nonce + header)
- for _ in range(params["accesses"]):
- mix ^= quick_calc(params, seed, m + (mix % 2**64) % m)
- return dbl_sha3(mix)
-```
-
-## Mineração e verificação {#mining-and-verifying}
-
-Agora, vamos colocar tudo junto no algoritmo de mineração:
-
-```python
-def mine(daggerset, params, block):
- from random import randint
- nonce = randint(0, 2**64)
- while 1:
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- if result * params["diff"] < 2**256:
- break
- nonce += 1
- if nonce >= 2**64:
- nonce = 0
- return nonce
-```
-
-Aqui está o algoritmo de verificação:
-
-```python
-def verify(daggerset, params, block, nonce):
- result = hashimoto(daggerset, get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-Verificação amigável do cliente leve:
-
-```python
-def light_verify(params, header, nonce):
- seedset = get_seedset(params, block)
- result = quick_hashimoto(seedset["front_hash"], get_dagsize(params, block),
- params, decode_int(block.prevhash), nonce)
- return result * params["diff"] < 2**256
-```
-
-Além disso, note que Dagger-Hashimoto impõe requisitos adicionais no cabeçalho do bloco:
-
-- Para que a verificação em duas camadas funcione, um cabeçalho de bloco deve ter ambos o nonce e o valor do meio pre-sha3
-- Um cabeçalho de bloco deve armazenar o sha3 do seedset atual em algum lugar
-
-## Leitura adicional {#further-reading}
-
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
-
-## Apêndice {#appendix}
-
-Como mencionado acima, o RNG usado para geração de DAGs depende de alguns resultados da teoria de números. Primeiro, nós fornecemos garantias de que o Lehmer RNG, que é a base para a variável `picker`, tenha um longo período. Segundo, mostramos que `pow(x,3,P)` não vai correlacionar `x` para `1` ou `P-1` fornecer `x ∈ [2,P-2]` para começar. Finalmente, mostramos que `pow(x,3,P)` tem uma baixa taxa de colisão quando tratado como uma função de hashing.
-
-### Gerador de números aleatórios Lehmer {#lehmer-random-number}
-
-Enquanto a função `produce_dag` não precisa produzir números aleatórios sem viés, uma ameaça potencial é que `seed**i % P` só absorve um punhado de valores. Isto poderia proporcionar uma vantagem aos mineradores reconhecendo o padrão em relação aos que não o fazem.
-
-Para evitar isso, apela-se a um resultado da teoria dos números. Um [_número primo seguro_](https://en.wikipedia.org/wiki/Safe_prime) é definido como sendo um `P` primo tal que `(P-1)/2` também é primo. A _ordem_ de um membro `x` do [grupo multiplicativo](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `Z/nZ` é definido como o mínimo de `m` tal que
xᵐ mod P ≡ 1
-Dadas essas definições, temos:
-
-> Observação 1. Deixe `x` ser um membro do grupo multiplicador `Z/PZ` para um `P` primo seguro. Se `x mod P ≠ 1 mod P` e `x mod P ≠ P-1 mod P`, então a ordem de `x` é `P-1` ou `(P-1)/2`.
-
-_Prova_. Já que `P` é um primo seguro, então pelo \[Teorema de Lagrange\]\[lagrange\] temos que a ordem de `x` é `1`, `2`, `(P-1)/2` ou `P-1`.
-
-A ordem de `x` não pode ser `1`, já que pelo Pequeno Teorema de Fermat, nós temos:
-
-
xP-1 mod P ≡ 1
-
-Daí `x` deve ser uma identidade multiplicadora de `Z/nZ`, que é única. Como partimos do princípio de que `x ≠ 1` por suposição, isso não é possível.
-
-A ordem de `x` não pode ser `2` a menos que `x = P-1`, já que isso violaria o princípio de que `P` é primo.
-
-A partir da proposta acima, podemos reconhecer que a iteração `(picker * init) % P` terá um ciclo de comprimento de pelo menos `(P-1)/2`. Isso acontece porque selecionamos `P` para ser um primo seguro aproximadamente igual a uma potência de dois mais alta, e `init` está no intervalo `[2,2**256+1]`. Dada a magnitude de `P`, nunca devemos esperar um ciclo da exponenciação modular.
-
-Quando estamos atribuindo a primeira célula no DAG (a variável rotulada como `init`), nós computamos `pow (sha3(seed) + 2, 3, P)`. À primeira vista, isso não garante que o resultado não é `1` nem `P-1`. No entanto, como `P-1` é um primo seguro, temos a seguinte garantia adicional, que é uma afirmação deduzida da Observação 1:
-
-> Observação 2. Deixe `x` ser um membro do grupo multiplicador `Z/PZ` para um `P` primo seguro, e deixe `w` ser um número natural. Se `x mod P ≠ 1 mod P` e `x mod P ≠ P-1 mod P`, assim como `w mod P ≠ P-1 mod P` e `w mod P ≠ 0 mod P`, então `xʷ mod P ≠ 1 mod P` e `xʷ mod P ≠ P-1 mod P`
-
-### Exponenciação modular como uma função hash {#modular-exponentiation}
-
-Para certos valores de `P` e `w`, a função `pow(x, w, P)` pode ter muitas colisões. Por exemplo, `pow(x,9,19)` recebe apenas valores `{1,18}`.
-
-Dado que `P` é primo, então um `w` apropriado para uma função hash de exponenciação modular pode ser escolhida usando o seguinte resultado:
-
-> Observação 3. Considere `P` um primo; `w` e `P-1` são relativamente primos, se e somente se para todos `a` e `b` em `Z/PZ`:
->
->
-> `aʷ mod P ≡ bʷ mod P` se e somente se `a mod P ≡ b mod P`
->
-
-Assim, dado que `P` é primo e `w` é relativamente primo de `P-1`, temos que `|{pow(x, w, P) : x ∈ ℤ}| = P`, implicando que a função tem a taxa mínima de colisão possível.
-
-No caso especial que `P` é um primo seguro como selecionamos, então `P-1` só tem fatores 1, 2, `(P-1)/2` e `P-1`. Como `P` > 7, sabemos que 3 é relativamente primo de `P-1`, daí `w=3` satisfaz a proposta acima.
-
-## Algoritmo de avaliação baseado em cache mais eficiente {#cache-based-evaluation}
-
-```python
-def quick_calc(params, seed, p):
- cache = produce_dag(params, seed, params["cache_size"])
- return quick_calc_cached(cache, params, p)
-
-def quick_calc_cached(cache, params, p):
- P = params["P"]
- if p < len(cache):
- return cache[p]
- else:
- x = pow(cache[0], p + 1, P)
- for _ in range(params["k"]):
- x ^= quick_calc_cached(cache, params, x % p)
- return pow(x, params["w"], P)
-
-def quick_hashimoto(seed, dagsize, params, header, nonce):
- cache = produce_dag(params, seed, params["cache_size"])
- return quick_hashimoto_cached(cache, dagsize, params, header, nonce)
-
-def quick_hashimoto_cached(cache, dagsize, params, header, nonce):
- m = dagsize // 2
- mask = 2**64 - 1
- mix = sha3(encode_int(nonce) + header)
- for _ in range(params["accesses"]):
- mix ^= quick_calc_cached(cache, params, m + (mix & mask) % m)
- return dbl_sha3(mix)
-```
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md
deleted file mode 100644
index eab3c19bca5..00000000000
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/index.md
+++ /dev/null
@@ -1,1014 +0,0 @@
----
-title: Ethash
-description: O algoritmo de mineração Ethash em detalhes
-lang: pt-br
----
-
-
- Ethash foi o algoritmo de mineração da prova de trabalho do Ethereum. A prova de trabalho foi agora **totalmente desativada** e o Ethereum agora está protegido usando a prova de participação. Leia mais sobre A Fusão, prova de participação e staking. Esta página é de interesse histórico!
-
-
-[Ethash](https://github.com/ethereum/wiki/wiki/Ethash) é uma versão modificada do algoritmo [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto). A prova de trabalho Ethash faz uso de [muita memória](https://wikipedia.org/wiki/Memory-hard_function), o que foi pensado para tornar o algoritmo ASIC resistente. Os ASICs Ethash foram eventualmente desenvolvidos, mas a mineração de GPU ainda era uma opção viável até que a prova de trabalho fosse desativada. Ethash ainda é usado para minerar outras moedas em outras redes de prova de trabalho não Ethereum.
-
-## Como o Ethash funciona? {#how-does-ethash-work}
-
-Dificuldade de memória é alcançada com um algoritmo de prova de trabalho que requer a escolha de subconjuntos de um recurso fixo dependente do nonce e do cabeçalho do bloco. Este recurso (alguns gigabytes em tamanho) é chamado de DAG. O DAG é alterado a cada 30.000 blocos, uma janela de cerca de 125 horas chamada de período eletrônico (aproximadamente 5,2 dias) e leva um tempo para gerar. Como o DAG depende apenas da altura do bloco, ele pode ser pré-gerado, mas o cliente não precisa esperar até o final deste processo para produzir um bloco. Se os clientes não pré-geraram e armazenaram em cache os DAGs antes, a rede pode sofrer um grande atraso em blocos em cada transição de período eletrônico (epoch). Note que o DAG não precisa ser gerado para verificar a prova de trabalho, permitindo essencialmente a verificação com baixa CPU e pouca memória.
-
-A rota geral que o algoritmo faz é a seguinte:
-
-1. Existe uma **seed** que pode ser calculada para cada bloco escaneando os cabeçalhos dos blocos até esse ponto.
-2. Da seed, pode-se calcular um **cache pseudo-randômico de 16 MB**. Clientes leves armazenam o cache.
-3. A partir do cache, podemos gerar um **conjunto de dados de 1 GB**, com a propriedade que cada item no conjunto de dados depende de apenas um pequeno número de itens do cache. Clientes e mineradores completos armazenam o conjunto de dados. O conjunto de dados cresce linearmente com o tempo.
-4. Mineração envolve pegar fatias aleatórias do conjunto de dados e fazer hashing deles juntos. A verificação pode ser feita com pouca memória usando o cache para regenerar os pedaços específicos do conjunto de dados que você precisa, então você só precisa armazenar o cache.
-
-O grande conjunto de dados é atualizado uma vez a cada 30.000 blocos, então o maior esforço de um minerador é ler o conjunto de dados, e não fazer alterações nele.
-
-## Definições {#definitions}
-
-Nós empregamos as seguintes definições:
-
-```
-WORD_BYTES = 4 # bytes in word
-DATASET_BYTES_INIT = 2**30 # bytes in dataset at genesis
-DATASET_BYTES_GROWTH = 2**23 # dataset growth per epoch
-CACHE_BYTES_INIT = 2**24 # bytes in cache at genesis
-CACHE_BYTES_GROWTH = 2**17 # cache growth per epoch
-CACHE_MULTIPLIER=1024 # Size of the DAG relative to the cache
-EPOCH_LENGTH = 30000 # blocks per epoch
-MIX_BYTES = 128 # width of mix
-HASH_BYTES = 64 # hash length in bytes
-DATASET_PARENTS = 256 # number of parents of each dataset element
-CACHE_ROUNDS = 3 # number of rounds in cache production
-ACCESSES = 64 # number of accesses in hashimoto loop
-```
-
-### O uso de 'SHA3' {#sha3}
-
-O desenvolvimento do Ethereum coincidiu com o desenvolvimento do padrão SHA3, e o processo de padrões fez uma alteração tardia no preenchimento do algoritmo de hash finalizado, para que os hashes "sha3_256" e "sha3_512" do Ethereum não sejam hashes sha3 padrão, mas uma variante muitas vezes referida como "Keccak-256" e "Keccak-512" em outros contextos. Veja a discussão, por exemplo, [aqui](https://eips.ethereum.org/EIPS-1803), [aqui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) ou [aqui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
-
-Tenha isso em mente, já que hashes "sha3" são referidos na descrição do algoritmo abaixo.
-
-## Parâmetros {#parameters}
-
-Os parâmetros do cache Ethash e do conjunto de dados dependem do número do bloco. Tamanho do cache e tamanho do conjunto de dados crescem linearmente; entretanto, sempre tomamos o mais alto prime abaixo do limiar de crescimento linear, a fim de reduzir o risco de regularidades acidentais que conduzem a comportamentos cíclicos.
-
-```python
-def get_cache_size(block_number):
- sz = CACHE_BYTES_INIT + CACHE_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
- sz -= HASH_BYTES
- while not isprime(sz / HASH_BYTES):
- sz -= 2 * HASH_BYTES
- return sz
-
-def get_full_size(block_number):
- sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
- sz -= MIX_BYTES
- while not isprime(sz / MIX_BYTES):
- sz -= 2 * MIX_BYTES
- return sz
-```
-
-Tabelas de conjunto de dados e valores de tamanho do cache são fornecidos no apêndice.
-
-## Geração de cache {#cache-generation}
-
-Agora, especificamos a função para produzir um cache:
-
-```python
-def mkcache(cache_size, seed):
- n = cache_size // HASH_BYTES
-
- # Sequentially produce the initial dataset
- o = [sha3_512(seed)]
- for i in range(1, n):
- o.append(sha3_512(o[-1]))
-
- # Use a low-round version of randmemohash
- for _ in range(CACHE_ROUNDS):
- for i in range(n):
- v = o[i][0] % n
- o[i] = sha3_512(map(xor, o[(i-1+n) % n], o[v]))
-
- return o
-```
-
-O processo de produção de cache envolve primeiro preenchimento sequencial de 32 MB de memória e depois executar duas passagens do algoritmo _RandMemoHash_ de Sergio Demian Lerner de [_Strict Memory Hard Hashing Functions_ (2014)](http://www.hashcash.org/papers/memohash.pdf). A saída é um conjunto de 524288 valores de 64-bytes.
-
-## Função de agregação de dados {#date-aggregation-function}
-
-Usamos um algoritmo inspirado no [FNV hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) em alguns casos como um substituto não associativo para o XOR. Observe que multiplicamos o primo com a entrada completa de 32 bits, em contraste com a especificação FNV-1 que multiplica o primo por um byte (octeto) por sua vez.
-
-```python
-FNV_PRIME = 0x01000193
-
-def fnv(v1, v2):
- return ((v1 * FNV_PRIME) ^ v2) % 2**32
-```
-
-Observe que até mesmo o yellow paper especifica fnv como v1\*(FNV_PRIME ^ v2). Todas as implementações atuais usam consistentemente a definição acima.
-
-## Cálculo completo do conjunto de dados {#full-dataset-calculation}
-
-Cada item de 64 bytes no conjunto de dados completo de 1 GB é calculado da seguinte forma:
-
-```python
-def calc_dataset_item(cache, i):
- n = len(cache)
- r = HASH_BYTES // WORD_BYTES
- # initialize the mix
- mix = copy.copy(cache[i % n])
- mix[0] ^= i
- mix = sha3_512(mix)
- # fnv it with a lot of random cache nodes based on i
- for j in range(DATASET_PARENTS):
- cache_index = fnv(i ^ j, mix[j % r])
- mix = map(fnv, mix, cache[cache_index % n])
- return sha3_512(mix)
-```
-
-Essencialmente, combinamos dados de 256 nós de cache selecionados de maneira pseudo-aleatória e fazemos o hash para calcular o nó do conjunto de dados. Todo o conjunto de dados é então gerado por:
-
-```python
-def calc_dataset(full_size, cache):
- return [calc_dataset_item(cache, i) for i in range(full_size // HASH_BYTES)]
-```
-
-## Loop principal {#main-loop}
-
-Agora, especificamos o loop padrão "hashimoto" principal, onde agregamos dados do conjunto de dados completo para produzir nosso valor final para um cabeçalho em particular ou nonce. No código abaixo, `header` representa o _hash \_SHA3-256 da representação RLP de um cabeçalho de bloco \_truncado_, ou seja, de um cabeçalho excluindo os campos **mixHash** e **nonce**. `nonce` é os oito bytes de um inteiro sem sinal de 64 bits na ordem big-endian. Então `nonce[::-1]` é a representação little-endian de oito bytes desse valor:
-
-```python
-def hashimoto(header, nonce, full_size, dataset_lookup):
- n = full_size / HASH_BYTES
- w = MIX_BYTES // WORD_BYTES
- mixhashes = MIX_BYTES / HASH_BYTES
- # combine header+nonce into a 64 byte seed
- s = sha3_512(header + nonce[::-1])
- # start the mix with replicated s
- mix = []
- for _ in range(MIX_BYTES / HASH_BYTES):
- mix.extend(s)
- # mix in random dataset nodes
- for i in range(ACCESSES):
- p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
- newdata = []
- for j in range(MIX_BYTES / HASH_BYTES):
- newdata.extend(dataset_lookup(p + j))
- mix = map(fnv, mix, newdata)
- # compress mix
- cmix = []
- for i in range(0, len(mix), 4):
- cmix.append(fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3]))
- return {
- "mix digest": serialize_hash(cmix),
- "result": serialize_hash(sha3_256(s+cmix))
- }
-
-def hashimoto_light(full_size, cache, header, nonce):
- return hashimoto(header, nonce, full_size, lambda x: calc_dataset_item(cache, x))
-
-def hashimoto_full(full_size, dataset, header, nonce):
- return hashimoto(header, nonce, full_size, lambda x: dataset[x])
-```
-
-Essencialmente, mantemos um "mix" de 128 bytes de largura, e de maneira sequencial e repetida buscamos 128 bytes do conjunto de dados completo e usamos a função `fnv` para combiná-lo com o mix. 128 bytes de acesso sequencial são usados para que cada rodada do algoritmo sempre busque uma página inteira de RAM, minimizando a possibilidade de que o buffer de pesquisa de tradução perca o que os ASICs teoricamente seriam capazes de evitar.
-
-Se a saída deste algoritmo está abaixo do alvo desejado, então o nonce é válido. Observe que a aplicação extra de `sha3_256` no final garante que existe um nonce intermediário que pode ser fornecido para provar que pelo menos uma pequena quantidade de trabalho foi feita; esta rápida verificação de prova de trabalho pode ser usada para fins anti-DDoS. Serve também para dar garantias estatísticas de que o resultado é um número imparcial de 256 bits.
-
-## Mineração {#mining}
-
-O algoritmo de mineração é definido da seguinte forma:
-
-```python
-def mine(full_size, dataset, header, difficulty):
- # zero-pad target to compare with hash on the same digit
- target = zpad(encode_int(2**256 // difficulty), 64)[::-1]
- from random import randint
- nonce = randint(0, 2**64)
- while hashimoto_full(full_size, dataset, header, nonce) > target:
- nonce = (nonce + 1) % 2**64
- return nonce
-```
-
-## Definição do hash seed {#seed-hash}
-
-Para calcular o hash seed que seria usado para minerar no topo de um determinado bloco, usamos o seguinte algoritmo:
-
-```python
- def get_seedhash(block):
- s = '\x00' * 32
- for i in range(block.number // EPOCH_LENGTH):
- s = serialize_hash(sha3_256(s))
- return s
-```
-
-Observe que, para que a mineração e a verificação aconteçam sem contratempos, recomendamos pré-computar os hashes seed e conjuntos de dados futuros em threads separadas.
-
-## Leitura adicional {#further-reading}
-
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
-
-## Apêndice {#appendix}
-
-O código a seguir deve ser precedido se você estiver interessado em executar a especificação python acima como código.
-
-```python
-import sha3, copy
-
-# Assumes little endian bit ordering (same as Intel architectures)
-def decode_int(s):
- return int(s[::-1].encode('hex'), 16) if s else 0
-
-def encode_int(s):
- a = "%x" % s
- return '' if s == 0 else ('0' * (len(a) % 2) + a).decode('hex')[::-1]
-
-def zpad(s, length):
- return s + '\x00' * max(0, length - len(s))
-
-def serialize_hash(h):
- return ''.join([zpad(encode_int(x), 4) for x in h])
-
-def deserialize_hash(h):
- return [decode_int(h[i:i+WORD_BYTES]) for i in range(0, len(h), WORD_BYTES)]
-
-def hash_words(h, sz, x):
- if isinstance(x, list):
- x = serialize_hash(x)
- y = h(x)
- return deserialize_hash(y)
-
-def serialize_cache(ds):
- return ''.join([serialize_hash(h) for h in ds])
-
-serialize_dataset = serialize_cache
-
-# sha3 hash function, outputs 64 bytes
-def sha3_512(x):
- return hash_words(lambda v: sha3.sha3_512(v).digest(), 64, x)
-
-def sha3_256(x):
- return hash_words(lambda v: sha3.sha3_256(v).digest(), 32, x)
-
-def xor(a, b):
- return a ^ b
-
-def isprime(x):
- for i in range(2, int(x**0.5)):
- if x % i == 0:
- return False
- return True
-```
-
-### Tamanho dos dados {#data-sizes}
-
-As tabelas de pesquisa a seguir fornecem aproximadamente 2.048 períodos eletrônicos (epoch) tabulados de tamanhos de dados e tamanhos de cache.
-
-```python
-def get_datasize(block_number):
- return data_sizes[block_number // EPOCH_LENGTH]
-
-def get_cachesize(block_number):
- return cache_sizes[block_number // EPOCH_LENGTH]
-
-data_sizes = [
-1073739904, 1082130304, 1090514816, 1098906752, 1107293056,
-1115684224, 1124070016, 1132461952, 1140849536, 1149232768,
-1157627776, 1166013824, 1174404736, 1182786944, 1191180416,
-1199568512, 1207958912, 1216345216, 1224732032, 1233124736,
-1241513344, 1249902464, 1258290304, 1266673792, 1275067264,
-1283453312, 1291844992, 1300234112, 1308619904, 1317010048,
-1325397376, 1333787776, 1342176128, 1350561664, 1358954368,
-1367339392, 1375731584, 1384118144, 1392507008, 1400897408,
-1409284736, 1417673344, 1426062464, 1434451072, 1442839168,
-1451229056, 1459615616, 1468006016, 1476394112, 1484782976,
-1493171584, 1501559168, 1509948032, 1518337664, 1526726528,
-1535114624, 1543503488, 1551892096, 1560278656, 1568669056,
-1577056384, 1585446272, 1593831296, 1602219392, 1610610304,
-1619000192, 1627386752, 1635773824, 1644164224, 1652555648,
-1660943488, 1669332608, 1677721216, 1686109312, 1694497664,
-1702886272, 1711274624, 1719661184, 1728047744, 1736434816,
-1744829056, 1753218944, 1761606272, 1769995904, 1778382464,
-1786772864, 1795157888, 1803550592, 1811937664, 1820327552,
-1828711552, 1837102976, 1845488768, 1853879936, 1862269312,
-1870656896, 1879048064, 1887431552, 1895825024, 1904212096,
-1912601216, 1920988544, 1929379456, 1937765504, 1946156672,
-1954543232, 1962932096, 1971321728, 1979707264, 1988093056,
-1996487552, 2004874624, 2013262208, 2021653888, 2030039936,
-2038430848, 2046819968, 2055208576, 2063596672, 2071981952,
-2080373632, 2088762752, 2097149056, 2105539712, 2113928576,
-2122315136, 2130700672, 2139092608, 2147483264, 2155872128,
-2164257664, 2172642176, 2181035392, 2189426048, 2197814912,
-2206203008, 2214587264, 2222979712, 2231367808, 2239758208,
-2248145024, 2256527744, 2264922752, 2273312128, 2281701248,
-2290086272, 2298476672, 2306867072, 2315251072, 2323639168,
-2332032128, 2340420224, 2348808064, 2357196416, 2365580416,
-2373966976, 2382363008, 2390748544, 2399139968, 2407530368,
-2415918976, 2424307328, 2432695424, 2441084288, 2449472384,
-2457861248, 2466247808, 2474637184, 2483026816, 2491414144,
-2499803776, 2508191872, 2516582272, 2524970368, 2533359232,
-2541743488, 2550134144, 2558525056, 2566913408, 2575301504,
-2583686528, 2592073856, 2600467328, 2608856192, 2617240448,
-2625631616, 2634022016, 2642407552, 2650796416, 2659188352,
-2667574912, 2675965312, 2684352896, 2692738688, 2701130624,
-2709518464, 2717907328, 2726293376, 2734685056, 2743073152,
-2751462016, 2759851648, 2768232832, 2776625536, 2785017728,
-2793401984, 2801794432, 2810182016, 2818571648, 2826959488,
-2835349376, 2843734144, 2852121472, 2860514432, 2868900992,
-2877286784, 2885676928, 2894069632, 2902451584, 2910843008,
-2919234688, 2927622784, 2936011648, 2944400768, 2952789376,
-2961177728, 2969565568, 2977951616, 2986338944, 2994731392,
-3003120256, 3011508352, 3019895936, 3028287104, 3036675968,
-3045063808, 3053452928, 3061837696, 3070228352, 3078615424,
-3087003776, 3095394944, 3103782272, 3112173184, 3120562048,
-3128944768, 3137339264, 3145725056, 3154109312, 3162505088,
-3170893184, 3179280256, 3187669376, 3196056704, 3204445568,
-3212836736, 3221224064, 3229612928, 3238002304, 3246391168,
-3254778496, 3263165824, 3271556224, 3279944576, 3288332416,
-3296719232, 3305110912, 3313500032, 3321887104, 3330273152,
-3338658944, 3347053184, 3355440512, 3363827072, 3372220288,
-3380608384, 3388997504, 3397384576, 3405774208, 3414163072,
-3422551936, 3430937984, 3439328384, 3447714176, 3456104576,
-3464493952, 3472883584, 3481268864, 3489655168, 3498048896,
-3506434432, 3514826368, 3523213952, 3531603584, 3539987072,
-3548380288, 3556763264, 3565157248, 3573545344, 3581934464,
-3590324096, 3598712704, 3607098752, 3615488384, 3623877248,
-3632265856, 3640646528, 3649043584, 3657430144, 3665821568,
-3674207872, 3682597504, 3690984832, 3699367808, 3707764352,
-3716152448, 3724541056, 3732925568, 3741318016, 3749706368,
-3758091136, 3766481536, 3774872704, 3783260032, 3791650432,
-3800036224, 3808427648, 3816815488, 3825204608, 3833592704,
-3841981568, 3850370432, 3858755968, 3867147904, 3875536256,
-3883920512, 3892313728, 3900702592, 3909087872, 3917478784,
-3925868416, 3934256512, 3942645376, 3951032192, 3959422336,
-3967809152, 3976200064, 3984588416, 3992974976, 4001363584,
-4009751168, 4018141312, 4026530432, 4034911616, 4043308928,
-4051695488, 4060084352, 4068472448, 4076862848, 4085249408,
-4093640576, 4102028416, 4110413696, 4118805632, 4127194496,
-4135583104, 4143971968, 4152360832, 4160746112, 4169135744,
-4177525888, 4185912704, 4194303616, 4202691968, 4211076736,
-4219463552, 4227855488, 4236246656, 4244633728, 4253022848,
-4261412224, 4269799808, 4278184832, 4286578048, 4294962304,
-4303349632, 4311743104, 4320130432, 4328521088, 4336909184,
-4345295488, 4353687424, 4362073472, 4370458496, 4378852736,
-4387238528, 4395630208, 4404019072, 4412407424, 4420790656,
-4429182848, 4437571456, 4445962112, 4454344064, 4462738048,
-4471119232, 4479516544, 4487904128, 4496289664, 4504682368,
-4513068416, 4521459584, 4529846144, 4538232704, 4546619776,
-4555010176, 4563402112, 4571790208, 4580174464, 4588567936,
-4596957056, 4605344896, 4613734016, 4622119808, 4630511488,
-4638898816, 4647287936, 4655675264, 4664065664, 4672451968,
-4680842624, 4689231488, 4697620352, 4706007424, 4714397056,
-4722786176, 4731173248, 4739562368, 4747951744, 4756340608,
-4764727936, 4773114496, 4781504384, 4789894784, 4798283648,
-4806667648, 4815059584, 4823449472, 4831835776, 4840226176,
-4848612224, 4857003392, 4865391488, 4873780096, 4882169728,
-4890557312, 4898946944, 4907333248, 4915722368, 4924110976,
-4932499328, 4940889728, 4949276032, 4957666432, 4966054784,
-4974438016, 4982831488, 4991221376, 4999607168, 5007998848,
-5016386432, 5024763776, 5033164672, 5041544576, 5049941888,
-5058329728, 5066717056, 5075107456, 5083494272, 5091883904,
-5100273536, 5108662144, 5117048192, 5125436032, 5133827456,
-5142215296, 5150605184, 5158993024, 5167382144, 5175769472,
-5184157568, 5192543872, 5200936064, 5209324928, 5217711232,
-5226102656, 5234490496, 5242877312, 5251263872, 5259654016,
-5268040832, 5276434304, 5284819328, 5293209728, 5301598592,
-5309986688, 5318374784, 5326764416, 5335151488, 5343542144,
-5351929472, 5360319872, 5368706944, 5377096576, 5385484928,
-5393871232, 5402263424, 5410650496, 5419040384, 5427426944,
-5435816576, 5444205952, 5452594816, 5460981376, 5469367936,
-5477760896, 5486148736, 5494536832, 5502925952, 5511315328,
-5519703424, 5528089984, 5536481152, 5544869504, 5553256064,
-5561645696, 5570032768, 5578423936, 5586811264, 5595193216,
-5603585408, 5611972736, 5620366208, 5628750464, 5637143936,
-5645528192, 5653921408, 5662310272, 5670694784, 5679082624,
-5687474048, 5695864448, 5704251008, 5712641408, 5721030272,
-5729416832, 5737806208, 5746194304, 5754583936, 5762969984,
-5771358592, 5779748224, 5788137856, 5796527488, 5804911232,
-5813300608, 5821692544, 5830082176, 5838468992, 5846855552,
-5855247488, 5863636096, 5872024448, 5880411008, 5888799872,
-5897186432, 5905576832, 5913966976, 5922352768, 5930744704,
-5939132288, 5947522432, 5955911296, 5964299392, 5972688256,
-5981074304, 5989465472, 5997851008, 6006241408, 6014627968,
-6023015552, 6031408256, 6039796096, 6048185216, 6056574848,
-6064963456, 6073351808, 6081736064, 6090128768, 6098517632,
-6106906496, 6115289216, 6123680896, 6132070016, 6140459648,
-6148849024, 6157237376, 6165624704, 6174009728, 6182403712,
-6190792064, 6199176064, 6207569792, 6215952256, 6224345216,
-6232732544, 6241124224, 6249510272, 6257899136, 6266287744,
-6274676864, 6283065728, 6291454336, 6299843456, 6308232064,
-6316620928, 6325006208, 6333395584, 6341784704, 6350174848,
-6358562176, 6366951296, 6375337856, 6383729536, 6392119168,
-6400504192, 6408895616, 6417283456, 6425673344, 6434059136,
-6442444672, 6450837376, 6459223424, 6467613056, 6476004224,
-6484393088, 6492781952, 6501170048, 6509555072, 6517947008,
-6526336384, 6534725504, 6543112832, 6551500672, 6559888768,
-6568278656, 6576662912, 6585055616, 6593443456, 6601834112,
-6610219648, 6618610304, 6626999168, 6635385472, 6643777408,
-6652164224, 6660552832, 6668941952, 6677330048, 6685719424,
-6694107776, 6702493568, 6710882176, 6719274112, 6727662976,
-6736052096, 6744437632, 6752825984, 6761213824, 6769604224,
-6777993856, 6786383488, 6794770816, 6803158144, 6811549312,
-6819937664, 6828326528, 6836706176, 6845101696, 6853491328,
-6861880448, 6870269312, 6878655104, 6887046272, 6895433344,
-6903822208, 6912212864, 6920596864, 6928988288, 6937377152,
-6945764992, 6954149248, 6962544256, 6970928768, 6979317376,
-6987709312, 6996093824, 7004487296, 7012875392, 7021258624,
-7029652352, 7038038912, 7046427776, 7054818944, 7063207808,
-7071595136, 7079980928, 7088372608, 7096759424, 7105149824,
-7113536896, 7121928064, 7130315392, 7138699648, 7147092352,
-7155479168, 7163865728, 7172249984, 7180648064, 7189036672,
-7197424768, 7205810816, 7214196608, 7222589824, 7230975104,
-7239367552, 7247755904, 7256145536, 7264533376, 7272921472,
-7281308032, 7289694848, 7298088832, 7306471808, 7314864512,
-7323253888, 7331643008, 7340029568, 7348419712, 7356808832,
-7365196672, 7373585792, 7381973888, 7390362752, 7398750592,
-7407138944, 7415528576, 7423915648, 7432302208, 7440690304,
-7449080192, 7457472128, 7465860992, 7474249088, 7482635648,
-7491023744, 7499412608, 7507803008, 7516192384, 7524579968,
-7532967296, 7541358464, 7549745792, 7558134656, 7566524032,
-7574912896, 7583300992, 7591690112, 7600075136, 7608466816,
-7616854912, 7625244544, 7633629824, 7642020992, 7650410368,
-7658794112, 7667187328, 7675574912, 7683961984, 7692349568,
-7700739712, 7709130368, 7717519232, 7725905536, 7734295424,
-7742683264, 7751069056, 7759457408, 7767849088, 7776238208,
-7784626816, 7793014912, 7801405312, 7809792128, 7818179968,
-7826571136, 7834957184, 7843347328, 7851732352, 7860124544,
-7868512384, 7876902016, 7885287808, 7893679744, 7902067072,
-7910455936, 7918844288, 7927230848, 7935622784, 7944009344,
-7952400256, 7960786048, 7969176704, 7977565312, 7985953408,
-7994339968, 8002730368, 8011119488, 8019508096, 8027896192,
-8036285056, 8044674688, 8053062272, 8061448832, 8069838464,
-8078227328, 8086616704, 8095006592, 8103393664, 8111783552,
-8120171392, 8128560256, 8136949376, 8145336704, 8153726848,
-8162114944, 8170503296, 8178891904, 8187280768, 8195669632,
-8204058496, 8212444544, 8220834176, 8229222272, 8237612672,
-8246000768, 8254389376, 8262775168, 8271167104, 8279553664,
-8287944064, 8296333184, 8304715136, 8313108352, 8321497984,
-8329885568, 8338274432, 8346663296, 8355052928, 8363441536,
-8371828352, 8380217984, 8388606592, 8396996224, 8405384576,
-8413772672, 8422161536, 8430549376, 8438939008, 8447326592,
-8455715456, 8464104832, 8472492928, 8480882048, 8489270656,
-8497659776, 8506045312, 8514434944, 8522823808, 8531208832,
-8539602304, 8547990656, 8556378752, 8564768384, 8573154176,
-8581542784, 8589933952, 8598322816, 8606705024, 8615099264,
-8623487872, 8631876992, 8640264064, 8648653952, 8657040256,
-8665430656, 8673820544, 8682209152, 8690592128, 8698977152,
-8707374464, 8715763328, 8724151424, 8732540032, 8740928384,
-8749315712, 8757704576, 8766089344, 8774480768, 8782871936,
-8791260032, 8799645824, 8808034432, 8816426368, 8824812928,
-8833199488, 8841591424, 8849976448, 8858366336, 8866757248,
-8875147136, 8883532928, 8891923328, 8900306816, 8908700288,
-8917088384, 8925478784, 8933867392, 8942250368, 8950644608,
-8959032704, 8967420544, 8975809664, 8984197504, 8992584064,
-9000976256, 9009362048, 9017752448, 9026141312, 9034530688,
-9042917504, 9051307904, 9059694208, 9068084864, 9076471424,
-9084861824, 9093250688, 9101638528, 9110027648, 9118416512,
-9126803584, 9135188096, 9143581312, 9151969664, 9160356224,
-9168747136, 9177134464, 9185525632, 9193910144, 9202302848,
-9210690688, 9219079552, 9227465344, 9235854464, 9244244864,
-9252633472, 9261021824, 9269411456, 9277799296, 9286188928,
-9294574208, 9302965888, 9311351936, 9319740032, 9328131968,
-9336516736, 9344907392, 9353296768, 9361685888, 9370074752,
-9378463616, 9386849408, 9395239808, 9403629184, 9412016512,
-9420405376, 9428795008, 9437181568, 9445570688, 9453960832,
-9462346624, 9470738048, 9479121536, 9487515008, 9495903616,
-9504289664, 9512678528, 9521067904, 9529456256, 9537843584,
-9546233728, 9554621312, 9563011456, 9571398784, 9579788672,
-9588178304, 9596567168, 9604954496, 9613343104, 9621732992,
-9630121856, 9638508416, 9646898816, 9655283584, 9663675776,
-9672061312, 9680449664, 9688840064, 9697230464, 9705617536,
-9714003584, 9722393984, 9730772608, 9739172224, 9747561088,
-9755945344, 9764338816, 9772726144, 9781116544, 9789503872,
-9797892992, 9806282624, 9814670464, 9823056512, 9831439232,
-9839833984, 9848224384, 9856613504, 9865000576, 9873391232,
-9881772416, 9890162816, 9898556288, 9906940544, 9915333248,
-9923721088, 9932108672, 9940496512, 9948888448, 9957276544,
-9965666176, 9974048384, 9982441088, 9990830464, 9999219584,
-10007602816, 10015996544, 10024385152, 10032774016, 10041163648,
-10049548928, 10057940096, 10066329472, 10074717824, 10083105152,
-10091495296, 10099878784, 10108272256, 10116660608, 10125049216,
-10133437312, 10141825664, 10150213504, 10158601088, 10166991232,
-10175378816, 10183766144, 10192157312, 10200545408, 10208935552,
-10217322112, 10225712768, 10234099328, 10242489472, 10250876032,
-10259264896, 10267656064, 10276042624, 10284429184, 10292820352,
-10301209472, 10309598848, 10317987712, 10326375296, 10334763392,
-10343153536, 10351541632, 10359930752, 10368318592, 10376707456,
-10385096576, 10393484672, 10401867136, 10410262144, 10418647424,
-10427039104, 10435425664, 10443810176, 10452203648, 10460589952,
-10468982144, 10477369472, 10485759104, 10494147712, 10502533504,
-10510923392, 10519313536, 10527702656, 10536091264, 10544478592,
-10552867712, 10561255808, 10569642368, 10578032768, 10586423168,
-10594805632, 10603200128, 10611588992, 10619976064, 10628361344,
-10636754048, 10645143424, 10653531776, 10661920384, 10670307968,
-10678696832, 10687086464, 10695475072, 10703863168, 10712246144,
-10720639616, 10729026688, 10737414784, 10745806208, 10754190976,
-10762581376, 10770971264, 10779356288, 10787747456, 10796135552,
-10804525184, 10812915584, 10821301888, 10829692288, 10838078336,
-10846469248, 10854858368, 10863247232, 10871631488, 10880023424,
-10888412032, 10896799616, 10905188992, 10913574016, 10921964672,
-10930352768, 10938742912, 10947132544, 10955518592, 10963909504,
-10972298368, 10980687488, 10989074816, 10997462912, 11005851776,
-11014241152, 11022627712, 11031017344, 11039403904, 11047793024,
-11056184704, 11064570752, 11072960896, 11081343872, 11089737856,
-11098128256, 11106514816, 11114904448, 11123293568, 11131680128,
-11140065152, 11148458368, 11156845696, 11165236864, 11173624192,
-11182013824, 11190402688, 11198790784, 11207179136, 11215568768,
-11223957376, 11232345728, 11240734592, 11249122688, 11257511296,
-11265899648, 11274285952, 11282675584, 11291065472, 11299452544,
-11307842432, 11316231296, 11324616832, 11333009024, 11341395584,
-11349782656, 11358172288, 11366560384, 11374950016, 11383339648,
-11391721856, 11400117376, 11408504192, 11416893568, 11425283456,
-11433671552, 11442061184, 11450444672, 11458837888, 11467226752,
-11475611776, 11484003968, 11492392064, 11500780672, 11509169024,
-11517550976, 11525944448, 11534335616, 11542724224, 11551111808,
-11559500672, 11567890304, 11576277376, 11584667008, 11593056128,
-11601443456, 11609830016, 11618221952, 11626607488, 11634995072,
-11643387776, 11651775104, 11660161664, 11668552576, 11676940928,
-11685330304, 11693718656, 11702106496, 11710496128, 11718882688,
-11727273088, 11735660416, 11744050048, 11752437376, 11760824704,
-11769216128, 11777604736, 11785991296, 11794381952, 11802770048,
-11811157888, 11819548544, 11827932544, 11836324736, 11844713344,
-11853100928, 11861486464, 11869879936, 11878268032, 11886656896,
-11895044992, 11903433088, 11911822976, 11920210816, 11928600448,
-11936987264, 11945375872, 11953761152, 11962151296, 11970543488,
-11978928512, 11987320448, 11995708288, 12004095104, 12012486272,
-12020875136, 12029255552, 12037652096, 12046039168, 12054429568,
-12062813824, 12071206528, 12079594624, 12087983744, 12096371072,
-12104759936, 12113147264, 12121534592, 12129924992, 12138314624,
-12146703232, 12155091584, 12163481216, 12171864704, 12180255872,
-12188643968, 12197034112, 12205424512, 12213811328, 12222199424,
-12230590336, 12238977664, 12247365248, 12255755392, 12264143488,
-12272531584, 12280920448, 12289309568, 12297694592, 12306086528,
-12314475392, 12322865024, 12331253632, 12339640448, 12348029312,
-12356418944, 12364805248, 12373196672, 12381580928, 12389969024,
-12398357632, 12406750592, 12415138432, 12423527552, 12431916416,
-12440304512, 12448692352, 12457081216, 12465467776, 12473859968,
-12482245504, 12490636672, 12499025536, 12507411584, 12515801728,
-12524190592, 12532577152, 12540966272, 12549354368, 12557743232,
-12566129536, 12574523264, 12582911872, 12591299456, 12599688064,
-12608074624, 12616463488, 12624845696, 12633239936, 12641631616,
-12650019968, 12658407296, 12666795136, 12675183232, 12683574656,
-12691960192, 12700350592, 12708740224, 12717128576, 12725515904,
-12733906816, 12742295168, 12750680192, 12759071872, 12767460736,
-12775848832, 12784236928, 12792626816, 12801014656, 12809404288,
-12817789312, 12826181504, 12834568832, 12842954624, 12851345792,
-12859732352, 12868122496, 12876512128, 12884901248, 12893289088,
-12901672832, 12910067584, 12918455168, 12926842496, 12935232896,
-12943620736, 12952009856, 12960396928, 12968786816, 12977176192,
-12985563776, 12993951104, 13002341504, 13010730368, 13019115392,
-13027506304, 13035895168, 13044272512, 13052673152, 13061062528,
-13069446272, 13077838976, 13086227072, 13094613632, 13103000192,
-13111393664, 13119782528, 13128157568, 13136559232, 13144945024,
-13153329536, 13161724288, 13170111872, 13178502784, 13186884736,
-13195279744, 13203667072, 13212057472, 13220445824, 13228832128,
-13237221248, 13245610624, 13254000512, 13262388352, 13270777472,
-13279166336, 13287553408, 13295943296, 13304331904, 13312719488,
-13321108096, 13329494656, 13337885824, 13346274944, 13354663808,
-13363051136, 13371439232, 13379825024, 13388210816, 13396605056,
-13404995456, 13413380224, 13421771392, 13430159744, 13438546048,
-13446937216, 13455326848, 13463708288, 13472103808, 13480492672,
-13488875648, 13497269888, 13505657728, 13514045312, 13522435712,
-13530824576, 13539210112, 13547599232, 13555989376, 13564379008,
-13572766336, 13581154432, 13589544832, 13597932928, 13606320512,
-13614710656, 13623097472, 13631477632, 13639874944, 13648264064,
-13656652928, 13665041792, 13673430656, 13681818496, 13690207616,
-13698595712, 13706982272, 13715373184, 13723762048, 13732150144,
-13740536704, 13748926592, 13757316224, 13765700992, 13774090112,
-13782477952, 13790869376, 13799259008, 13807647872, 13816036736,
-13824425344, 13832814208, 13841202304, 13849591424, 13857978752,
-13866368896, 13874754688, 13883145344, 13891533184, 13899919232,
-13908311168, 13916692096, 13925085056, 13933473152, 13941866368,
-13950253696, 13958643584, 13967032192, 13975417216, 13983807616,
-13992197504, 14000582272, 14008973696, 14017363072, 14025752192,
-14034137984, 14042528384, 14050918016, 14059301504, 14067691648,
-14076083584, 14084470144, 14092852352, 14101249664, 14109635968,
-14118024832, 14126407552, 14134804352, 14143188608, 14151577984,
-14159968384, 14168357248, 14176741504, 14185127296, 14193521024,
-14201911424, 14210301824, 14218685056, 14227067264, 14235467392,
-14243855488, 14252243072, 14260630144, 14269021568, 14277409408,
-14285799296, 14294187904, 14302571392, 14310961792, 14319353728,
-14327738752, 14336130944, 14344518784, 14352906368, 14361296512,
-14369685376, 14378071424, 14386462592, 14394848128, 14403230848,
-14411627392, 14420013952, 14428402304, 14436793472, 14445181568,
-14453569664, 14461959808, 14470347904, 14478737024, 14487122816,
-14495511424, 14503901824, 14512291712, 14520677504, 14529064832,
-14537456768, 14545845632, 14554234496, 14562618496, 14571011456,
-14579398784, 14587789184, 14596172672, 14604564608, 14612953984,
-14621341312, 14629724288, 14638120832, 14646503296, 14654897536,
-14663284864, 14671675264, 14680061056, 14688447616, 14696835968,
-14705228416, 14713616768, 14722003328, 14730392192, 14738784128,
-14747172736, 14755561088, 14763947648, 14772336512, 14780725376,
-14789110144, 14797499776, 14805892736, 14814276992, 14822670208,
-14831056256, 14839444352, 14847836032, 14856222848, 14864612992,
-14872997504, 14881388672, 14889775744, 14898165376, 14906553472,
-14914944896, 14923329664, 14931721856, 14940109696, 14948497024,
-14956887424, 14965276544, 14973663616, 14982053248, 14990439808,
-14998830976, 15007216768, 15015605888, 15023995264, 15032385152,
-15040768384, 15049154944, 15057549184, 15065939072, 15074328448,
-15082715008, 15091104128, 15099493504, 15107879296, 15116269184,
-15124659584, 15133042304, 15141431936, 15149824384, 15158214272,
-15166602368, 15174991232, 15183378304, 15191760512, 15200154496,
-15208542592, 15216931712, 15225323392, 15233708416, 15242098048,
-15250489216, 15258875264, 15267265408, 15275654528, 15284043136,
-15292431488, 15300819584, 15309208192, 15317596544, 15325986176,
-15334374784, 15342763648, 15351151744, 15359540608, 15367929728,
-15376318336, 15384706432, 15393092992, 15401481856, 15409869952,
-15418258816, 15426649984, 15435037568, 15443425664, 15451815296,
-15460203392, 15468589184, 15476979328, 15485369216, 15493755776,
-15502146944, 15510534272, 15518924416, 15527311232, 15535699072,
-15544089472, 15552478336, 15560866688, 15569254528, 15577642624,
-15586031488, 15594419072, 15602809472, 15611199104, 15619586432,
-15627975296, 15636364928, 15644753792, 15653141888, 15661529216,
-15669918848, 15678305152, 15686696576, 15695083136, 15703474048,
-15711861632, 15720251264, 15728636288, 15737027456, 15745417088,
-15753804928, 15762194048, 15770582656, 15778971008, 15787358336,
-15795747712, 15804132224, 15812523392, 15820909696, 15829300096,
-15837691264, 15846071936, 15854466944, 15862855808, 15871244672,
-15879634816, 15888020608, 15896409728, 15904799104, 15913185152,
-15921577088, 15929966464, 15938354816, 15946743424, 15955129472,
-15963519872, 15971907968, 15980296064, 15988684928, 15997073024,
-16005460864, 16013851264, 16022241152, 16030629248, 16039012736,
-16047406976, 16055794816, 16064181376, 16072571264, 16080957824,
-16089346688, 16097737856, 16106125184, 16114514816, 16122904192,
-16131292544, 16139678848, 16148066944, 16156453504, 16164839552,
-16173236096, 16181623424, 16190012032, 16198401152, 16206790528,
-16215177344, 16223567744, 16231956352, 16240344704, 16248731008,
-16257117824, 16265504384, 16273898624, 16282281856, 16290668672,
-16299064192, 16307449216, 16315842176, 16324230016, 16332613504,
-16341006464, 16349394304, 16357783168, 16366172288, 16374561664,
-16382951296, 16391337856, 16399726208, 16408116352, 16416505472,
-16424892032, 16433282176, 16441668224, 16450058624, 16458448768,
-16466836864, 16475224448, 16483613056, 16492001408, 16500391808,
-16508779648, 16517166976, 16525555328, 16533944192, 16542330752,
-16550719616, 16559110528, 16567497088, 16575888512, 16584274816,
-16592665472, 16601051008, 16609442944, 16617832064, 16626218624,
-16634607488, 16642996096, 16651385728, 16659773824, 16668163712,
-16676552576, 16684938112, 16693328768, 16701718144, 16710095488,
-16718492288, 16726883968, 16735272832, 16743661184, 16752049792,
-16760436608, 16768827008, 16777214336, 16785599104, 16793992832,
-16802381696, 16810768768, 16819151744, 16827542656, 16835934848,
-16844323712, 16852711552, 16861101952, 16869489536, 16877876864,
-16886265728, 16894653056, 16903044736, 16911431296, 16919821696,
-16928207488, 16936592768, 16944987776, 16953375616, 16961763968,
-16970152832, 16978540928, 16986929536, 16995319168, 17003704448,
-17012096896, 17020481152, 17028870784, 17037262208, 17045649536,
-17054039936, 17062426496, 17070814336, 17079205504, 17087592064,
-17095978112, 17104369024, 17112759424, 17121147776, 17129536384,
-17137926016, 17146314368, 17154700928, 17163089792, 17171480192,
-17179864192, 17188256896, 17196644992, 17205033856, 17213423488,
-17221811072, 17230198912, 17238588032, 17246976896, 17255360384,
-17263754624, 17272143232, 17280530048, 17288918912, 17297309312,
-17305696384, 17314085504, 17322475136, 17330863744, 17339252096,
-17347640192, 17356026496, 17364413824, 17372796544, 17381190016,
-17389583488, 17397972608, 17406360704, 17414748544, 17423135872,
-17431527296, 17439915904, 17448303232, 17456691584, 17465081728,
-17473468288, 17481857408, 17490247552, 17498635904, 17507022464,
-17515409024, 17523801728, 17532189824, 17540577664, 17548966016,
-17557353344, 17565741184, 17574131584, 17582519168, 17590907008,
-17599296128, 17607687808, 17616076672, 17624455808, 17632852352,
-17641238656, 17649630848, 17658018944, 17666403968, 17674794112,
-17683178368, 17691573376, 17699962496, 17708350592, 17716739968,
-17725126528, 17733517184, 17741898112, 17750293888, 17758673024,
-17767070336, 17775458432, 17783848832, 17792236928, 17800625536,
-17809012352, 17817402752, 17825785984, 17834178944, 17842563968,
-17850955648, 17859344512, 17867732864, 17876119424, 17884511872,
-17892900224, 17901287296, 17909677696, 17918058112, 17926451072,
-17934843776, 17943230848, 17951609216, 17960008576, 17968397696,
-17976784256, 17985175424, 17993564032, 18001952128, 18010339712,
-18018728576, 18027116672, 18035503232, 18043894144, 18052283264,
-18060672128, 18069056384, 18077449856, 18085837184, 18094225792,
-18102613376, 18111004544, 18119388544, 18127781248, 18136170368,
-18144558976, 18152947328, 18161336192, 18169724288, 18178108544,
-18186498944, 18194886784, 18203275648, 18211666048, 18220048768,
-18228444544, 18236833408, 18245220736]
-
-cache_sizes = [
-16776896, 16907456, 17039296, 17170112, 17301056, 17432512, 17563072,
-17693888, 17824192, 17955904, 18087488, 18218176, 18349504, 18481088,
-18611392, 18742336, 18874304, 19004224, 19135936, 19267264, 19398208,
-19529408, 19660096, 19791424, 19922752, 20053952, 20184896, 20315968,
-20446912, 20576576, 20709184, 20840384, 20971072, 21102272, 21233216,
-21364544, 21494848, 21626816, 21757376, 21887552, 22019392, 22151104,
-22281536, 22412224, 22543936, 22675264, 22806464, 22935872, 23068096,
-23198272, 23330752, 23459008, 23592512, 23723968, 23854912, 23986112,
-24116672, 24247616, 24378688, 24509504, 24640832, 24772544, 24903488,
-25034432, 25165376, 25296704, 25427392, 25558592, 25690048, 25820096,
-25951936, 26081728, 26214208, 26345024, 26476096, 26606656, 26737472,
-26869184, 26998208, 27131584, 27262528, 27393728, 27523904, 27655744,
-27786688, 27917888, 28049344, 28179904, 28311488, 28441792, 28573504,
-28700864, 28835648, 28966208, 29096768, 29228608, 29359808, 29490752,
-29621824, 29752256, 29882816, 30014912, 30144448, 30273728, 30406976,
-30538432, 30670784, 30799936, 30932672, 31063744, 31195072, 31325248,
-31456192, 31588288, 31719232, 31850432, 31981504, 32110784, 32243392,
-32372672, 32505664, 32636608, 32767808, 32897344, 33029824, 33160768,
-33289664, 33423296, 33554368, 33683648, 33816512, 33947456, 34076992,
-34208704, 34340032, 34471744, 34600256, 34734016, 34864576, 34993984,
-35127104, 35258176, 35386688, 35518528, 35650624, 35782336, 35910976,
-36044608, 36175808, 36305728, 36436672, 36568384, 36699968, 36830656,
-36961984, 37093312, 37223488, 37355072, 37486528, 37617472, 37747904,
-37879232, 38009792, 38141888, 38272448, 38403392, 38535104, 38660672,
-38795584, 38925632, 39059264, 39190336, 39320768, 39452096, 39581632,
-39713984, 39844928, 39974848, 40107968, 40238144, 40367168, 40500032,
-40631744, 40762816, 40894144, 41023552, 41155904, 41286208, 41418304,
-41547712, 41680448, 41811904, 41942848, 42073792, 42204992, 42334912,
-42467008, 42597824, 42729152, 42860096, 42991552, 43122368, 43253696,
-43382848, 43515712, 43646912, 43777088, 43907648, 44039104, 44170432,
-44302144, 44433344, 44564288, 44694976, 44825152, 44956864, 45088448,
-45219008, 45350464, 45481024, 45612608, 45744064, 45874496, 46006208,
-46136768, 46267712, 46399424, 46529344, 46660672, 46791488, 46923328,
-47053504, 47185856, 47316928, 47447872, 47579072, 47710144, 47839936,
-47971648, 48103232, 48234176, 48365248, 48496192, 48627136, 48757312,
-48889664, 49020736, 49149248, 49283008, 49413824, 49545152, 49675712,
-49807168, 49938368, 50069056, 50200256, 50331584, 50462656, 50593472,
-50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848,
-51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968,
-52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576,
-53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744,
-54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248,
-55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856,
-56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488,
-57146816, 57278272, 57409216, 57540416, 57671104, 57802432, 57933632,
-58064576, 58195264, 58326976, 58457408, 58588864, 58720192, 58849984,
-58981696, 59113024, 59243456, 59375552, 59506624, 59637568, 59768512,
-59897792, 60030016, 60161984, 60293056, 60423872, 60554432, 60683968,
-60817216, 60948032, 61079488, 61209664, 61341376, 61471936, 61602752,
-61733696, 61865792, 61996736, 62127808, 62259136, 62389568, 62520512,
-62651584, 62781632, 62910784, 63045056, 63176128, 63307072, 63438656,
-63569216, 63700928, 63831616, 63960896, 64093888, 64225088, 64355392,
-64486976, 64617664, 64748608, 64879424, 65009216, 65142464, 65273792,
-65402816, 65535424, 65666752, 65797696, 65927744, 66060224, 66191296,
-66321344, 66453056, 66584384, 66715328, 66846656, 66977728, 67108672,
-67239104, 67370432, 67501888, 67631296, 67763776, 67895104, 68026304,
-68157248, 68287936, 68419264, 68548288, 68681408, 68811968, 68942912,
-69074624, 69205568, 69337024, 69467584, 69599168, 69729472, 69861184,
-69989824, 70122944, 70253888, 70385344, 70515904, 70647232, 70778816,
-70907968, 71040832, 71171648, 71303104, 71432512, 71564992, 71695168,
-71826368, 71958464, 72089536, 72219712, 72350144, 72482624, 72613568,
-72744512, 72875584, 73006144, 73138112, 73268672, 73400128, 73530944,
-73662272, 73793344, 73924544, 74055104, 74185792, 74316992, 74448832,
-74579392, 74710976, 74841664, 74972864, 75102784, 75233344, 75364544,
-75497024, 75627584, 75759296, 75890624, 76021696, 76152256, 76283072,
-76414144, 76545856, 76676672, 76806976, 76937792, 77070016, 77200832,
-77331392, 77462464, 77593664, 77725376, 77856448, 77987776, 78118336,
-78249664, 78380992, 78511424, 78642496, 78773056, 78905152, 79033664,
-79166656, 79297472, 79429568, 79560512, 79690816, 79822784, 79953472,
-80084672, 80214208, 80346944, 80477632, 80608576, 80740288, 80870848,
-81002048, 81133504, 81264448, 81395648, 81525952, 81657536, 81786304,
-81919808, 82050112, 82181312, 82311616, 82443968, 82573376, 82705984,
-82835776, 82967744, 83096768, 83230528, 83359552, 83491264, 83622464,
-83753536, 83886016, 84015296, 84147776, 84277184, 84409792, 84540608,
-84672064, 84803008, 84934336, 85065152, 85193792, 85326784, 85458496,
-85589312, 85721024, 85851968, 85982656, 86112448, 86244416, 86370112,
-86506688, 86637632, 86769344, 86900672, 87031744, 87162304, 87293632,
-87424576, 87555392, 87687104, 87816896, 87947968, 88079168, 88211264,
-88341824, 88473152, 88603712, 88735424, 88862912, 88996672, 89128384,
-89259712, 89390272, 89521984, 89652544, 89783872, 89914816, 90045376,
-90177088, 90307904, 90438848, 90569152, 90700096, 90832832, 90963776,
-91093696, 91223744, 91356992, 91486784, 91618496, 91749824, 91880384,
-92012224, 92143552, 92273344, 92405696, 92536768, 92666432, 92798912,
-92926016, 93060544, 93192128, 93322816, 93453632, 93583936, 93715136,
-93845056, 93977792, 94109504, 94240448, 94371776, 94501184, 94632896,
-94764224, 94895552, 95023424, 95158208, 95287744, 95420224, 95550016,
-95681216, 95811904, 95943872, 96075328, 96203584, 96337856, 96468544,
-96599744, 96731072, 96860992, 96992576, 97124288, 97254848, 97385536,
-97517248, 97647808, 97779392, 97910464, 98041408, 98172608, 98303168,
-98434496, 98565568, 98696768, 98827328, 98958784, 99089728, 99220928,
-99352384, 99482816, 99614272, 99745472, 99876416, 100007104,
-100138048, 100267072, 100401088, 100529984, 100662592, 100791872,
-100925248, 101056064, 101187392, 101317952, 101449408, 101580608,
-101711296, 101841728, 101973824, 102104896, 102235712, 102366016,
-102498112, 102628672, 102760384, 102890432, 103021888, 103153472,
-103284032, 103415744, 103545152, 103677248, 103808576, 103939648,
-104070976, 104201792, 104332736, 104462528, 104594752, 104725952,
-104854592, 104988608, 105118912, 105247808, 105381184, 105511232,
-105643072, 105774784, 105903296, 106037056, 106167872, 106298944,
-106429504, 106561472, 106691392, 106822592, 106954304, 107085376,
-107216576, 107346368, 107478464, 107609792, 107739712, 107872192,
-108003136, 108131392, 108265408, 108396224, 108527168, 108657344,
-108789568, 108920384, 109049792, 109182272, 109312576, 109444928,
-109572928, 109706944, 109837888, 109969088, 110099648, 110230976,
-110362432, 110492992, 110624704, 110755264, 110886208, 111017408,
-111148864, 111279296, 111410752, 111541952, 111673024, 111803456,
-111933632, 112066496, 112196416, 112328512, 112457792, 112590784,
-112715968, 112852672, 112983616, 113114944, 113244224, 113376448,
-113505472, 113639104, 113770304, 113901376, 114031552, 114163264,
-114294592, 114425536, 114556864, 114687424, 114818624, 114948544,
-115080512, 115212224, 115343296, 115473472, 115605184, 115736128,
-115867072, 115997248, 116128576, 116260288, 116391488, 116522944,
-116652992, 116784704, 116915648, 117046208, 117178304, 117308608,
-117440192, 117569728, 117701824, 117833024, 117964096, 118094656,
-118225984, 118357312, 118489024, 118617536, 118749632, 118882112,
-119012416, 119144384, 119275328, 119406016, 119537344, 119668672,
-119798464, 119928896, 120061376, 120192832, 120321728, 120454336,
-120584512, 120716608, 120848192, 120979136, 121109056, 121241408,
-121372352, 121502912, 121634752, 121764416, 121895744, 122027072,
-122157632, 122289088, 122421184, 122550592, 122682944, 122813888,
-122945344, 123075776, 123207488, 123338048, 123468736, 123600704,
-123731264, 123861952, 123993664, 124124608, 124256192, 124386368,
-124518208, 124649024, 124778048, 124911296, 125041088, 125173696,
-125303744, 125432896, 125566912, 125696576, 125829056, 125958592,
-126090304, 126221248, 126352832, 126483776, 126615232, 126746432,
-126876608, 127008704, 127139392, 127270336, 127401152, 127532224,
-127663552, 127794752, 127925696, 128055232, 128188096, 128319424,
-128449856, 128581312, 128712256, 128843584, 128973632, 129103808,
-129236288, 129365696, 129498944, 129629888, 129760832, 129892288,
-130023104, 130154048, 130283968, 130416448, 130547008, 130678336,
-130807616, 130939456, 131071552, 131202112, 131331776, 131464384,
-131594048, 131727296, 131858368, 131987392, 132120256, 132250816,
-132382528, 132513728, 132644672, 132774976, 132905792, 133038016,
-133168832, 133299392, 133429312, 133562048, 133692992, 133823296,
-133954624, 134086336, 134217152, 134348608, 134479808, 134607296,
-134741056, 134872384, 135002944, 135134144, 135265472, 135396544,
-135527872, 135659072, 135787712, 135921472, 136052416, 136182848,
-136313792, 136444864, 136576448, 136707904, 136837952, 136970048,
-137099584, 137232064, 137363392, 137494208, 137625536, 137755712,
-137887424, 138018368, 138149824, 138280256, 138411584, 138539584,
-138672832, 138804928, 138936128, 139066688, 139196864, 139328704,
-139460032, 139590208, 139721024, 139852864, 139984576, 140115776,
-140245696, 140376512, 140508352, 140640064, 140769856, 140902336,
-141032768, 141162688, 141294016, 141426496, 141556544, 141687488,
-141819584, 141949888, 142080448, 142212544, 142342336, 142474432,
-142606144, 142736192, 142868288, 142997824, 143129408, 143258944,
-143392448, 143523136, 143653696, 143785024, 143916992, 144045632,
-144177856, 144309184, 144440768, 144570688, 144701888, 144832448,
-144965056, 145096384, 145227584, 145358656, 145489856, 145620928,
-145751488, 145883072, 146011456, 146144704, 146275264, 146407232,
-146538176, 146668736, 146800448, 146931392, 147062336, 147193664,
-147324224, 147455936, 147586624, 147717056, 147848768, 147979456,
-148110784, 148242368, 148373312, 148503232, 148635584, 148766144,
-148897088, 149028416, 149159488, 149290688, 149420224, 149551552,
-149683136, 149814976, 149943616, 150076352, 150208064, 150338624,
-150470464, 150600256, 150732224, 150862784, 150993088, 151125952,
-151254976, 151388096, 151519168, 151649728, 151778752, 151911104,
-152042944, 152174144, 152304704, 152435648, 152567488, 152698816,
-152828992, 152960576, 153091648, 153222976, 153353792, 153484096,
-153616192, 153747008, 153878336, 154008256, 154139968, 154270912,
-154402624, 154533824, 154663616, 154795712, 154926272, 155057984,
-155188928, 155319872, 155450816, 155580608, 155712064, 155843392,
-155971136, 156106688, 156237376, 156367424, 156499264, 156630976,
-156761536, 156892352, 157024064, 157155008, 157284416, 157415872,
-157545536, 157677248, 157810496, 157938112, 158071744, 158203328,
-158334656, 158464832, 158596288, 158727616, 158858048, 158988992,
-159121216, 159252416, 159381568, 159513152, 159645632, 159776192,
-159906496, 160038464, 160169536, 160300352, 160430656, 160563008,
-160693952, 160822208, 160956352, 161086784, 161217344, 161349184,
-161480512, 161611456, 161742272, 161873216, 162002752, 162135872,
-162266432, 162397888, 162529216, 162660032, 162790976, 162922048,
-163052096, 163184576, 163314752, 163446592, 163577408, 163707968,
-163839296, 163969984, 164100928, 164233024, 164364224, 164494912,
-164625856, 164756672, 164887616, 165019072, 165150016, 165280064,
-165412672, 165543104, 165674944, 165805888, 165936832, 166067648,
-166198336, 166330048, 166461248, 166591552, 166722496, 166854208,
-166985408, 167116736, 167246656, 167378368, 167508416, 167641024,
-167771584, 167903168, 168034112, 168164032, 168295744, 168427456,
-168557632, 168688448, 168819136, 168951616, 169082176, 169213504,
-169344832, 169475648, 169605952, 169738048, 169866304, 169999552,
-170131264, 170262464, 170393536, 170524352, 170655424, 170782016,
-170917696, 171048896, 171179072, 171310784, 171439936, 171573184,
-171702976, 171835072, 171966272, 172097216, 172228288, 172359232,
-172489664, 172621376, 172747712, 172883264, 173014208, 173144512,
-173275072, 173407424, 173539136, 173669696, 173800768, 173931712,
-174063424, 174193472, 174325696, 174455744, 174586816, 174718912,
-174849728, 174977728, 175109696, 175242688, 175374272, 175504832,
-175636288, 175765696, 175898432, 176028992, 176159936, 176291264,
-176422592, 176552512, 176684864, 176815424, 176946496, 177076544,
-177209152, 177340096, 177470528, 177600704, 177731648, 177864256,
-177994816, 178126528, 178257472, 178387648, 178518464, 178650176,
-178781888, 178912064, 179044288, 179174848, 179305024, 179436736,
-179568448, 179698496, 179830208, 179960512, 180092608, 180223808,
-180354752, 180485696, 180617152, 180748096, 180877504, 181009984,
-181139264, 181272512, 181402688, 181532608, 181663168, 181795136,
-181926592, 182057536, 182190016, 182320192, 182451904, 182582336,
-182713792, 182843072, 182976064, 183107264, 183237056, 183368384,
-183494848, 183631424, 183762752, 183893824, 184024768, 184154816,
-184286656, 184417984, 184548928, 184680128, 184810816, 184941248,
-185072704, 185203904, 185335616, 185465408, 185596352, 185727296,
-185859904, 185989696, 186121664, 186252992, 186383552, 186514112,
-186645952, 186777152, 186907328, 187037504, 187170112, 187301824,
-187429184, 187562048, 187693504, 187825472, 187957184, 188087104,
-188218304, 188349376, 188481344, 188609728, 188743616, 188874304,
-189005248, 189136448, 189265088, 189396544, 189528128, 189660992,
-189791936, 189923264, 190054208, 190182848, 190315072, 190447424,
-190577984, 190709312, 190840768, 190971328, 191102656, 191233472,
-191364032, 191495872, 191626816, 191758016, 191888192, 192020288,
-192148928, 192282176, 192413504, 192542528, 192674752, 192805952,
-192937792, 193068608, 193198912, 193330496, 193462208, 193592384,
-193723456, 193854272, 193985984, 194116672, 194247232, 194379712,
-194508352, 194641856, 194772544, 194900672, 195035072, 195166016,
-195296704, 195428032, 195558592, 195690304, 195818176, 195952576,
-196083392, 196214336, 196345792, 196476736, 196607552, 196739008,
-196869952, 197000768, 197130688, 197262784, 197394368, 197523904,
-197656384, 197787584, 197916608, 198049472, 198180544, 198310208,
-198442432, 198573632, 198705088, 198834368, 198967232, 199097792,
-199228352, 199360192, 199491392, 199621696, 199751744, 199883968,
-200014016, 200146624, 200276672, 200408128, 200540096, 200671168,
-200801984, 200933312, 201062464, 201194944, 201326144, 201457472,
-201588544, 201719744, 201850816, 201981632, 202111552, 202244032,
-202374464, 202505152, 202636352, 202767808, 202898368, 203030336,
-203159872, 203292608, 203423296, 203553472, 203685824, 203816896,
-203947712, 204078272, 204208192, 204341056, 204472256, 204603328,
-204733888, 204864448, 204996544, 205125568, 205258304, 205388864,
-205517632, 205650112, 205782208, 205913536, 206044736, 206176192,
-206307008, 206434496, 206569024, 206700224, 206831168, 206961856,
-207093056, 207223616, 207355328, 207486784, 207616832, 207749056,
-207879104, 208010048, 208141888, 208273216, 208404032, 208534336,
-208666048, 208796864, 208927424, 209059264, 209189824, 209321792,
-209451584, 209582656, 209715136, 209845568, 209976896, 210106432,
-210239296, 210370112, 210501568, 210630976, 210763712, 210894272,
-211024832, 211156672, 211287616, 211418176, 211549376, 211679296,
-211812032, 211942592, 212074432, 212204864, 212334016, 212467648,
-212597824, 212727616, 212860352, 212991424, 213120832, 213253952,
-213385024, 213515584, 213645632, 213777728, 213909184, 214040128,
-214170688, 214302656, 214433728, 214564544, 214695232, 214826048,
-214956992, 215089088, 215219776, 215350592, 215482304, 215613248,
-215743552, 215874752, 216005312, 216137024, 216267328, 216399296,
-216530752, 216661696, 216790592, 216923968, 217054528, 217183168,
-217316672, 217448128, 217579072, 217709504, 217838912, 217972672,
-218102848, 218233024, 218364736, 218496832, 218627776, 218759104,
-218888896, 219021248, 219151936, 219281728, 219413056, 219545024,
-219675968, 219807296, 219938624, 220069312, 220200128, 220331456,
-220461632, 220592704, 220725184, 220855744, 220987072, 221117888,
-221249216, 221378368, 221510336, 221642048, 221772736, 221904832,
-222031808, 222166976, 222297536, 222428992, 222559936, 222690368,
-222820672, 222953152, 223083968, 223213376, 223345984, 223476928,
-223608512, 223738688, 223869376, 224001472, 224132672, 224262848,
-224394944, 224524864, 224657344, 224788288, 224919488, 225050432,
-225181504, 225312704, 225443776, 225574592, 225704768, 225834176,
-225966784, 226097216, 226229824, 226360384, 226491712, 226623424,
-226754368, 226885312, 227015104, 227147456, 227278528, 227409472,
-227539904, 227669696, 227802944, 227932352, 228065216, 228196288,
-228326464, 228457792, 228588736, 228720064, 228850112, 228981056,
-229113152, 229243328, 229375936, 229505344, 229636928, 229769152,
-229894976, 230030272, 230162368, 230292416, 230424512, 230553152,
-230684864, 230816704, 230948416, 231079616, 231210944, 231342016,
-231472448, 231603776, 231733952, 231866176, 231996736, 232127296,
-232259392, 232388672, 232521664, 232652608, 232782272, 232914496,
-233043904, 233175616, 233306816, 233438528, 233569984, 233699776,
-233830592, 233962688, 234092224, 234221888, 234353984, 234485312,
-234618304, 234749888, 234880832, 235011776, 235142464, 235274048,
-235403456, 235535936, 235667392, 235797568, 235928768, 236057152,
-236190272, 236322752, 236453312, 236583616, 236715712, 236846528,
-236976448, 237108544, 237239104, 237371072, 237501632, 237630784,
-237764416, 237895232, 238026688, 238157632, 238286912, 238419392,
-238548032, 238681024, 238812608, 238941632, 239075008, 239206336,
-239335232, 239466944, 239599168, 239730496, 239861312, 239992384,
-240122816, 240254656, 240385856, 240516928, 240647872, 240779072,
-240909632, 241040704, 241171904, 241302848, 241433408, 241565248,
-241696192, 241825984, 241958848, 242088256, 242220224, 242352064,
-242481856, 242611648, 242744896, 242876224, 243005632, 243138496,
-243268672, 243400384, 243531712, 243662656, 243793856, 243924544,
-244054592, 244187072, 244316608, 244448704, 244580032, 244710976,
-244841536, 244972864, 245104448, 245233984, 245365312, 245497792,
-245628736, 245759936, 245889856, 246021056, 246152512, 246284224,
-246415168, 246545344, 246675904, 246808384, 246939584, 247070144,
-247199552, 247331648, 247463872, 247593536, 247726016, 247857088,
-247987648, 248116928, 248249536, 248380736, 248512064, 248643008,
-248773312, 248901056, 249036608, 249167552, 249298624, 249429184,
-249560512, 249692096, 249822784, 249954112, 250085312, 250215488,
-250345792, 250478528, 250608704, 250739264, 250870976, 251002816,
-251133632, 251263552, 251395136, 251523904, 251657792, 251789248,
-251919424, 252051392, 252182464, 252313408, 252444224, 252575552,
-252706624, 252836032, 252968512, 253099712, 253227584, 253361728,
-253493056, 253623488, 253754432, 253885504, 254017216, 254148032,
-254279488, 254410432, 254541376, 254672576, 254803264, 254933824,
-255065792, 255196736, 255326528, 255458752, 255589952, 255721408,
-255851072, 255983296, 256114624, 256244416, 256374208, 256507712,
-256636096, 256768832, 256900544, 257031616, 257162176, 257294272,
-257424448, 257555776, 257686976, 257818432, 257949632, 258079552,
-258211136, 258342464, 258473408, 258603712, 258734656, 258867008,
-258996544, 259127744, 259260224, 259391296, 259522112, 259651904,
-259784384, 259915328, 260045888, 260175424, 260308544, 260438336,
-260570944, 260700992, 260832448, 260963776, 261092672, 261226304,
-261356864, 261487936, 261619648, 261750592, 261879872, 262011968,
-262143424, 262274752, 262404416, 262537024, 262667968, 262799296,
-262928704, 263061184, 263191744, 263322944, 263454656, 263585216,
-263716672, 263847872, 263978944, 264108608, 264241088, 264371648,
-264501184, 264632768, 264764096, 264895936, 265024576, 265158464,
-265287488, 265418432, 265550528, 265681216, 265813312, 265943488,
-266075968, 266206144, 266337728, 266468032, 266600384, 266731072,
-266862272, 266993344, 267124288, 267255616, 267386432, 267516992,
-267648704, 267777728, 267910592, 268040512, 268172096, 268302784,
-268435264, 268566208, 268696256, 268828096, 268959296, 269090368,
-269221312, 269352256, 269482688, 269614784, 269745856, 269876416,
-270007616, 270139328, 270270272, 270401216, 270531904, 270663616,
-270791744, 270924736, 271056832, 271186112, 271317184, 271449536,
-271580992, 271711936, 271843136, 271973056, 272105408, 272236352,
-272367296, 272498368, 272629568, 272759488, 272891456, 273022784,
-273153856, 273284672, 273415616, 273547072, 273677632, 273808448,
-273937088, 274071488, 274200896, 274332992, 274463296, 274595392,
-274726208, 274857536, 274988992, 275118656, 275250496, 275382208,
-275513024, 275643968, 275775296, 275906368, 276037184, 276167872,
-276297664, 276429376, 276560576, 276692672, 276822976, 276955072,
-277085632, 277216832, 277347008, 277478848, 277609664, 277740992,
-277868608, 278002624, 278134336, 278265536, 278395328, 278526784,
-278657728, 278789824, 278921152, 279052096, 279182912, 279313088,
-279443776, 279576256, 279706048, 279838528, 279969728, 280099648,
-280230976, 280361408, 280493632, 280622528, 280755392, 280887104,
-281018176, 281147968, 281278912, 281411392, 281542592, 281673152,
-281803712, 281935552, 282066496, 282197312, 282329024, 282458816,
-282590272, 282720832, 282853184, 282983744, 283115072, 283246144,
-283377344, 283508416, 283639744, 283770304, 283901504, 284032576,
-284163136, 284294848, 284426176, 284556992, 284687296, 284819264,
-284950208, 285081536]
-```
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md
deleted file mode 100644
index 9cf602208cf..00000000000
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining-algorithms/index.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Algoritmos de mineração
-description: Os algoritmos usados para mineração Ethereum
-lang: pt-br
----
-
-
-A prova de trabalho não está mais subjacente ao mecanismo de consenso do Ethereum, o que significa que a mineração foi desativada. Em vez disso, o Ethereum é garantido por validadores que apostam em ETH. Você pode começar a fazer o staking do seu ETH hoje. Leia mais sobre A Fusão, prova de participação e participação. Esta página é apenas de interesse histórico.
-
-
-A mineração Ethereum usou um algoritmo conhecido como Ethash. A ideia fundamental do algoritmo é que um minerador tente encontrar uma entrada de nonce usando a computação de força bruta, para que o hash resultante seja menor que um limite determinado pela dificuldade calculada. Esse nível de dificuldade pode ser ajustado dinamicamente, permitindo que a produção de blocos ocorra em intervalos regulares.
-
-## Pré-Requisitos {#prerequisites}
-
-Para entender melhor esta página, recomendamos que você leia primeiro sobre o [consenso da prova de trabalho](/developers/docs/consensus-mechanisms/pow) e a [mineração](/developers/docs/consensus-mechanisms/pow/mining).
-
-## Dagger Hashimoto {#dagger-hashimoto}
-
-Dagger Hashimoto foi um algoritmo de pesquisa precursor para mineração Ethereum que Ethash substituiu. Era uma fusão de dois algoritmos diferentes: Dagger e Hashimoto. Foi apenas uma implementação de pesquisa e foi substituída pelo Ethash no momento em que a rede principal do Ethereum foi lançada.
-
-[Dagger](http://www.hashcash.org/papers/dagger.html) envolve a geração de um [Grafo Acíclico Direcionado](https://en.wikipedia.org/wiki/Directed_acyclic_graph), cujas fatias aleatórias do hash são feitas juntas. O princípio central é que cada nonce requer apenas uma pequena porção de uma grande árvore de dados total. Recomputar a subárvore para cada nonce é proibitivo para a mineração – daí a necessidade de armazenar a árvore – mas tudo bem para uma única verificação de valor do nonce. O Dagger foi projetado para ser uma alternativa aos algoritmos existentes como o Scrypt, que fazem uso intenso de memória, mas que são difíceis de verificar conforme a utilização de memória aumenta para níveis genuinamente seguros. No entanto, Dagger era vulnerável à aceleração de hardware de memória compartilhada e caiu em favor de outras vias de pesquisa.
-
-[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) é um algoritmo que adiciona resistência ASIC ao ser vinculado à E/S (ou seja, leituras de memória são o fator limitante no processo de mineração). A teoria é que a RAM está mais disponível do que a computação; bilhões de dólares em pesquisas já investigaram a otimização de RAM para diferentes casos de uso, o que geralmente envolvem padrões de acesso quase aleatórios (daí “memória de acesso aleatório”). Como resultado, é provável que a memória RAM existente esteja moderadamente próxima do ideal para avaliar o algoritmo. Hashimoto usa a blockchain como fonte de dados, satisfazendo simultaneamente (1) e (3) acima.
-
-Dagger-Hashimoto usou versões modificadas dos algoritmos Dagger e Hashimoto. A diferença entre Dagger Hashimoto e Hashimoto é que, ao invés de usar a blockchain como fonte de dados, o Dagger Hashimoto usa um conjunto de dados gerados de forma personalizada, que atualiza com base nos dados do bloco a cada N blocos. O conjunto de dados é gerado usando o algoritmo Dagger, permitindo calcular com eficiência um subconjunto específico para cada nonce para o algoritmo de verificação de cliente leve. A diferença entre Dagger Hashimoto e Dagger é que, ao contrário do Dagger original, o conjunto de dados usado para consultar o bloco é semipermanente, sendo atualizado apenas em intervalos ocasionais (por exemplo, uma vez por semana). Isso significa que a porção do esforço de geração do conjunto de dados é próxima de zero, de modo que os argumentos de Sergio Lerner a respeito das acelerações de memória compartilhada tornam-se insignificantes.
-
-Mais sobre [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto).
-
-## Ethash {#ethash}
-
-Ethash foi o algoritmo de mineração, que na verdade foi usado na rede principal Ethereum real, sob a agora obsoleta arquitetura de prova de trabalho. Ethash foi efetivamente um novo nome dado a uma versão específica do Dagger-Hashimoto depois que o algoritmo foi significativamente atualizado, enquanto ainda herdava os princípios fundamentais de seu antecessor. A rede principal do Ethereum só usava Ethash. Dagger Hashimoto era uma versão de pesquisa e desenvolvimento do algoritmo de mineração que foi substituído antes do início da mineração na rede principal do Ethereum.
-
-[Mais sobre Ethash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash).
-
-## Leitura adicional {#further-reading}
-
-_Conhece um recurso da comunidade que o ajudou? Edite esta página e adicione-a!_
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 3f5b0428f79..39aabac4433 100644
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: O algoritmo Dagger-Hashimoto em detalhes
lang: pt-br
---
-Dagger-Hashimoto foi a implementação original de pesquisa e especificação para o algoritmo de mineração do Ethereum. Dagger-Hashimoto foi substituído por [Ethash](#ethash). A mineração foi completamente desligada na [Fusão](/updates/merge) no dia 15 de setembro de 2022. Desde então, o Ethereum foi protegido usando um mecanismo [prova de participação](/developers/docs/consensus-mechanisms/pos). Esta página é para fins históricos. As informações aqui não são mais relevantes para o Ethereum posterior à Fusão.
+Dagger-Hashimoto foi a implementação original de pesquisa e especificação para o algoritmo de mineração do Ethereum. Dagger-Hashimoto foi substituído por [Ethash](#ethash). A mineração foi completamente desligada na [Fusão](/roadmap/merge/) no dia 15 de setembro de 2022. Desde então, o Ethereum foi protegido usando um mecanismo [prova de participação](/developers/docs/consensus-mechanisms/pos). Esta página é para fins históricos. As informações aqui não são mais relevantes para o Ethereum posterior à Fusão.
## Pré-Requisitos {#prerequisites}
@@ -294,7 +294,7 @@ Para certos valores de `P` e `w`, a função `pow(x, w, P)` pode ter muitas coli
Dado que `P` é primo, então um `w` apropriado para uma função hash de exponenciação modular pode ser escolhida usando o seguinte resultado:
> Observação 3. Considere `P` um primo; `w` e `P-1` são relativamente primos, se e somente se para todos `a` e `b` em `Z/PZ`:
->
+>
>
> `aʷ mod P ≡ bʷ mod P` se e somente se `a mod P ≡ b mod P`
>
diff --git a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index 8e8381dd4eb..94f1d9d0aa2 100644
--- a/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### O uso de 'SHA3' {#sha3}
-O desenvolvimento do Ethereum coincidiu com o desenvolvimento do padrão SHA3, e o processo de padrões fez uma alteração tardia no preenchimento do algoritmo de hash finalizado, para que os hashes "sha3_256" e "sha3_512" do Ethereum não sejam hashes sha3 padrão, mas uma variante muitas vezes referida como "Keccak-256" e "Keccak-512" em outros contextos. Veja a discussão, por exemplo, [aqui](https://eips.ethereum.org/EIPS-1803), [aqui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) ou [aqui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+O desenvolvimento do Ethereum coincidiu com o desenvolvimento do padrão SHA3, e o processo de padrões fez uma alteração tardia no preenchimento do algoritmo de hash finalizado, para que os hashes "sha3_256" e "sha3_512" do Ethereum não sejam hashes sha3 padrão, mas uma variante muitas vezes referida como "Keccak-256" e "Keccak-512" em outros contextos. Veja a discussão, por exemplo, [aqui](https://eips.ethereum.org/EIPS/eip-1803), [aqui](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) ou [aqui](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Tenha isso em mente, já que hashes "sha3" são referidos na descrição do algoritmo abaixo.
@@ -135,7 +135,7 @@ def calc_dataset(full_size, cache):
## Loop principal {#main-loop}
-Agora, especificamos o loop padrão "hashimoto" principal, onde agregamos dados do conjunto de dados completo para produzir nosso valor final para um cabeçalho em particular ou nonce. No código abaixo, `header` representa o _hash \_SHA3-256 da representação RLP de um cabeçalho de bloco \_truncado_, ou seja, de um cabeçalho excluindo os campos **mixHash** e **nonce**. `nonce` é os oito bytes de um inteiro sem sinal de 64 bits na ordem big-endian. Então `nonce[::-1]` é a representação little-endian de oito bytes desse valor:
+Agora, especificamos o loop padrão "hashimoto" principal, onde agregamos dados do conjunto de dados completo para produzir nosso valor final para um cabeçalho em particular ou nonce. No código abaixo, `header` representa o _hash _SHA3-256 da representação RLP de um cabeçalho de bloco _truncado_, ou seja, de um cabeçalho excluindo os campos **mixHash** e **nonce**. `nonce` é os oito bytes de um inteiro sem sinal de 64 bits na ordem big-endian. Então `nonce[::-1]` é a representação little-endian de oito bytes desse valor:
```python
def hashimoto(header, nonce, full_size, dataset_lookup):
diff --git a/public/content/translations/pt-br/developers/docs/dapps/index.md b/public/content/translations/pt-br/developers/docs/dapps/index.md
index fd44943e0d4..ffa529e600d 100644
--- a/public/content/translations/pt-br/developers/docs/dapps/index.md
+++ b/public/content/translations/pt-br/developers/docs/dapps/index.md
@@ -35,7 +35,7 @@ Um contrato inteligente é um código presente na blockchain Ethereum e funciona
- **Completar a integridade dos dados**: os dados armazenados na blockchain são imutáveis e indiscutíveis, graças aos primitivos criptográficos. Atores mal-intencionados não podem forjar transações ou outros dados que já foram tornados públicos.
- **Computação sem confiança/comportamento verificável** – Contratos inteligentes podem ser analisados e têm garantia de execução de maneiras previsíveis, sem a necessidade de confiar em uma autoridade central. Isso não é verdade nos modelos tradicionais; por exemplo, quando usamos sistemas bancários on-line, temos que confiar que as instituições financeiras não usarão indevidamente nossos dados financeiros, adulterarão registros ou serão hackeadas.
-## Desvantagens do desenvolvimento de dapps {#drawbacks-of-dapp-development}
+## Benefícios do desenvolvimento de dapps {#drawbacks-of-dapp-development}
- **Manutenção**: os dapps podem ser mais difíceis de manter, porque o código e os dados publicados na blockchain são mais difíceis de modificar. É difícil para os desenvolvedores fazerem atualizações em seus dapps (ou nos dados armazenados sob um dapp) uma vez que eles foram implantados, mesmo se bugs ou riscos de segurança forem identificados em uma versão antiga.
- **Impactos no desempenho**: há um grande impacto no desempenho, e o dimensionamento é realmente difícil. Para alcançar o nível de segurança, integridade, transparência e confiabilidade que o Ethereum aspira, cada nó executa e armazena cada transação. Além disso, o consenso de prova de participação também leva tempo.
@@ -54,7 +54,7 @@ Um contrato inteligente é um código presente na blockchain Ethereum e funciona
- [GitHub](https://github.com/austintgriffith/scaffold-eth)
- [Exemplo de dapp](https://punkwallet.io/)
-**Crie um aplicativo Eth*: crie aplicativos com a tecnologia Ethereum apenas com um comando.***
+**Crie um aplicativo Eth_: crie aplicativos com a tecnologia Ethereum apenas com um comando._**
- [GitHub](https://github.com/paulrberg/create-eth-app)
diff --git a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
index 81dea175177..b51e17aa68f 100644
--- a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
+++ b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
@@ -7,7 +7,7 @@ sidebarDepth: 2
Uma árvore Merkle Patricia fornece uma estrutura de dados criptograficamente autenticada que pode ser usada para armazenar todas as ligações `(key, value)`.
-Árvores Merkle Patricia são totalmente determinísticas, o que significa que há a garantia de que árvores com as mesmas ligações `(key, value)` são idênticas – até o último byte. Isto significa que elas têm o mesmo hash raiz, fornecendo a máxima eficiência `o(log(n))` para inserções, buscas e exclusões. Além disso, elas são mais simples de entender e codificar do que alternativas mais complexas baseadas em comparação, como as árvores vermelho-pretas.
+A Merkle Patricia Tries é totalmente determinística, significando que Tries - testes - com a mesma ligação `(key, value)` são com certeza idênticas - até o último byte. Isto significa que elas têm o mesmo hash raiz, fornecendo a máxima eficiência `o(log(n))` para inserções, buscas e exclusões. Além disso, elas são mais simples de entender e codificar do que alternativas mais complexas baseadas em comparação, como as árvores vermelho-pretas.
## Pré-requisitos {#prerequisites}
@@ -25,7 +25,7 @@ Onde `i0 ... in` representa o símbolo do alfabeto (muitas vezes binário ou hex
Digamos que você queria usar uma estrutura de dados da árvore radix para persistir em uma ordem em um conjunto de pares de valor-chave. Para encontrar o valor atualmente relacionado com a chave `dog` na árvore, primeiro você converteria `dog` em letras do alfabeto (dando `64 6f 67`), e então desceria pela árvore seguindo o caminho até encontrar o valor. Ou seja, você começa por procurar o hash raiz em uma base de dados texto chave/valor para encontrar o nó raiz da árvore. Ele é representado como uma matriz de chaves apontando para outros nós. Use o valor no índice `6` como uma chave e procure na base chave/valor para obter o nó um nível abaixo. Em seguida, escolha o índice `4` para procurar o próximo valor, depois escolha o índice `6` e assim por diante. Uma vez tendo seguido o caminho: `root-> 6 -> 4 -> 6 -> 15 -> 6 -> 7`, procure o valor do nó e retorne o resultado.
-Há uma diferença entre buscar algo na árvore e no banco de dados base subjacente (chave/valor). Ambos definem combinações chave/valor, mas o banco de dados subjacente pode realizar uma busca tradicional de uma chave em 1 etapa. Procurar uma chave na árvore requer várias buscas no banco de dados subjacente para obter o valor final descrito acima. Vamos nos referir a este último como um `path` para eliminar ambiguidade.
+Há uma diferença entre buscar algo na árvore e no banco de dados base subjacente (chave/valor). Ambos definem arranjos chave/valor, mas o DB subjacente pode fazer uma tradicional busca de 1 passo pela chave. Procurar uma chave na árvore requer várias buscas no banco de dados subjacente para obter o valor final descrito acima. Vamos nos referir a este último como um `path` para eliminar ambiguidade.
As operações de atualização e exclusão em árvores radix são simples, e podem ser definidas da seguinte forma:
@@ -62,9 +62,9 @@ As operações de atualização e exclusão em árvores radix são simples, e po
return hash(newnode)
```
-Uma árvore Radix "Merkle" é construída ligando os nós usando digests de hash criptográficos gerados deterministicamente. Este endereçamento de conteúdo (em banco de dados de chave/valor `key == keccak256(rlp(value))`) fornece autenticação criptográfica dos dados armazenados. Se o hash raiz de uma determinada árvore for conhecido publicamente, então, qualquer um poderá fornecer uma prova de que a árvore inclui um determinado valor em um caminho específico, fornecendo os hashes de cada nó que se junta a um valor específico para a raiz da árvore.
+Uma árvore Radix "Merkle" é construída ligando os nós usando digests de hash criptográficos gerados deterministicamente. Este endereçamento de conteúdo (no BD chave/valor `key == keccak256(rlp(value))`) fornece uma integridade criptográfica garantida do dado armazenado. Se o hash raiz de um Trie - teste - determinado for conhecido publicamente, então, qualquer um com acesso aos dados da folha subjacente poderá fornecer uma prova de que o Trie - teste - inclui um determinado valor em um caminho específico, fornecendo os hashes de cada nódulo que se junta a um valor específico para a raiz da árvore.
-É impossível para um atacante fornecer uma prova de um par `(path, value)` que não exista, já que o hash raiz é, em última análise, baseado em todos os hashes abaixo dele. Qualquer modificação subjacente alteraria o hash raiz.
+É impossível para um atacante fornecer uma prova de um par `(path, value)` que não exista, já que o hash raiz é, em última análise, baseado em todos os hashes abaixo dele. Qualquer modificação subjacente alteraria o hash raiz. Você pode pensar no hash como uma representação comprimida de informações estruturais sobre os dados, seguros pela proteção pré-imagem da função de hash.
Vamos nos referir a uma unidade atômica de uma árvore de radix (por exemplo, um único caractere hexadecimal, ou número binário de 4 bits) como um "nibble". Ao percorrerem um caminho um nibble de cada vez, conforme descrito acima, os nós podem fazer referência a 16 filhos, no máximo, mas incluir um elemento `value`. Portanto, nós os representamos como uma faixa de comprimento 17. Chamamos esses arrays de 17 elementos de "branch nodes".
@@ -233,6 +233,8 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
```
+Nota: O `storageRoot` para uma conta Ethereum está vazio pelo padrão se ele não for uma conta de contrato.
+
### Árvore de transações {#transaction-trie}
Há uma árvore de transações separada para cada bloco, armazenando novamente pares `(key, value)`. Um caminho aqui é: `rlp(transactionIndex)` que representa a chave que corresponde a um valor determinado por:
diff --git a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/rlp/index.md
index 03b74f18093..af64d513aa2 100644
--- a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/rlp/index.md
+++ b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -35,7 +35,7 @@ A codificação RLP é definida da seguinte forma:
- Para um único byte cujo valor está na faixa `[0x00, 0x7f]` (decimal `[0, 127]`), este byte é a sua própria codificação RLP.
- Caso contrário, se uma string tem de 0 a 55 bytes de comprimento, a codificação RLP consiste em um único byte com valor **0x80** (dec. 128) mais o comprimento da string seguida pela string. O intervalo do primeiro byte é, portanto, `[0x80, 0xb7]` (dec. `[128, 183]`).
- Se uma string tem mais de 55 bytes de comprimento, a codificação RLP consiste em um único byte com valor **0xb7** (dec. 183) mais o comprimento em bytes do comprimento da sequência de caracteres na forma binária, seguido pelo comprimento da string, seguido pela string. Por exemplo, uma string de 1024 bytes de comprimento seria codificada como `\xb9\x04\x00` (dec. `185, 4, 0`) seguida pela string. Aqui, `0xb9` (183 + 2 = 185) como o primeiro byte, seguido pelos 2 bytes `0x0400` (dec. 1024) que denotam o comprimento da string real. O intervalo do primeiro byte é, portanto, `[0x80, 0xb7]` (dec. `[184, 191]`).
-- Se a carga total de uma lista (ou seja, o comprimento combinado de todos os seus itens sendo codificados em RLP) tem 0-55 bytes, a codificação RLP consiste em um único byte com valor **0xc0** mais o comprimento da lista seguida pela concatenação das codificações RLP dos itens. O intervalo do primeiro byte é, portanto, `[0x80, 0xb7]` (dec. `[192, 247]`).
+- Se o total de carga de uma lista (ou seja, o comprimento combinado de totos os seus itens com codificação RLP) tiver 0 a 55 bytes de comprimento, a codificação RLP consiste em um único byte com valor **0xc0** mais o comprimento da carga seguido da concatenação das codificações dos itens. O intervalo do primeiro byte é, portanto, `[0x80, 0xb7]` (dec. `[192, 247]`).
- Se o payload total de uma lista tem mais de 55 bytes de comprimento, a codificação RLP consiste em um único byte com valor **0xf7** mais o comprimento em bytes do payload na forma binária, seguida pelo comprimento do payload, seguido pela concatenação das codificações RLP dos itens. O intervalo do primeiro byte é, portanto, `[0x80, 0xb7]` (dec. `[248, 255]`).
Em código, isto é:
@@ -75,7 +75,7 @@ def to_binary(x):
- o inteiro 0 = `[ 0x80 ]`
- o inteiro codificado 0 ('\\x00') = `[ 0x00 ]`
- o inteiro codificado 15 ('\\x0f') = `[ 0x00 ]`
-- o inteiro codificado 1024 ('\\x04') = `[ 0x82, 0x04, 0x00 ]`
+- o inteiro codificado 1024 ('\\x04') = `[ 0x82, 0x04, 0x00 ]`
- [define a representação teórica](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers) para três, `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc0, 0xc1, 0xc0 ]`
- a string "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]`
@@ -113,7 +113,7 @@ def rlp_decode(input):
output = instantiate_str(substr(input, offset, dataLen))
elif type is list:
output = instantiate_list(substr(input, offset, dataLen))
- output + rlp_decode(substr(input, offset + dataLen))
+ output += rlp_decode(substr(input, offset + dataLen))
return output
def decode_length(input):
diff --git a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/ssz/index.md
index 1f435d3606a..f03378a49e1 100644
--- a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/ssz/index.md
+++ b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/ssz/index.md
@@ -109,7 +109,7 @@ Esse objeto serializado SSZ pode então ser merkleizado, o seja, transformado em
Há também casos em que as folhas da árvore não se distribuem naturalmente, de maneira uniforme, como o fazem no exemplo acima. Por exemplo, a folha 4 pode ser um contêiner com vários elementos que exige "profundidade" adicional para serem adicionados à árvore Merkle, criando uma árvore desnivelada.
-Em vez de nos referirmos a esses elementos da árvore como folha X, nó X etc., podemos dar a eles índices generalizados, começando com raiz = 1 e contando da esquerda para a direita ao longo de cada nível. Este é o índice generalizado explicado acima. Cada elemento na lista serializada tem um índice generalizado igual a `2**depth + idx` onde idx é sua posição indexada em zero no objeto serializado e a profundidade é o número de níveis na árvore Merkle, que pode ser determinado como a raiz quadrada do número de elementos (folhas).
+Em vez de nos referirmos a esses elementos da árvore como folha X, nó X etc., podemos dar a eles índices generalizados, começando com raiz = 1 e contando da esquerda para a direita ao longo de cada nível. Este é o índice generalizado explicado acima. Cada elemento na lista serializada tem um índice genérico igual a `2**profundidade + idx`, onde o idx é a sua posição indexada por zero no objeto serializado e a profundidade é o número de níveis na árvore Merkle, que pode ser determinado como o logaritmo de base dois do número de elementos (folhas).
## Índices generalizados {#generalized-indices}
diff --git a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
index 8de0c5f952a..70b036fdda7 100644
--- a/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
+++ b/public/content/translations/pt-br/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
@@ -123,18 +123,18 @@ Vetor de teste usando AES-128-CTR e Scrypt:
"crypto": {
"cipher": "aes-128-ctr",
"cipherparams": {
- "iv": "83dbcc02d8ccb40e466191a123791e0e"
+ "iv": "740770fce12ce862af21264dab25f1da"
},
- "ciphertext": "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
+ "ciphertext": "dd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2",
"kdf": "scrypt",
"kdfparams": {
"dklen": 32,
"n": 262144,
- "p": 8,
- "r": 1,
- "salt": "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
+ "p": 1,
+ "r": 8,
+ "salt": "25710c2ccd7c610b24d068af83b959b7a0e5f40641f0c82daeb1345766191034"
},
- "mac": "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
+ "mac": "337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c"
},
"id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
"version": 3
@@ -143,7 +143,7 @@ Vetor de teste usando AES-128-CTR e Scrypt:
**Intermédios**:
-`Derived key`: `fac192ceb5fd772906bea3e118a69e8bbb5cc24229e20d8766fd298291bba6bd` `MAC Body`: `bb5cc24229e20d8766fd298291bba6bdd172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c` `MAC`: `2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097` `Cipher key`: `fac192ceb5fd772906bea3e118a69e8b`
+`Derived key`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d` `MAC Body`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2` `MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c` `Cipher key`: `7446f59ecc301d2d79bc3302650d8a5c`
## Alterações da versão 1 {#alterations-from-v2}
diff --git a/public/content/translations/pt-br/developers/docs/evm/index.md b/public/content/translations/pt-br/developers/docs/evm/index.md
index 62409a013f9..4636eaae2ce 100644
--- a/public/content/translations/pt-br/developers/docs/evm/index.md
+++ b/public/content/translations/pt-br/developers/docs/evm/index.md
@@ -10,7 +10,7 @@ O próprio protocolo Ethereum existe apenas com o propósito de manter a operaç
## Pré-requisitos {#prerequisites}
-Alguma familiaridade básica com a terminologia comum em ciência da computação, como [bytes](https://wikipedia.org/wiki/Byte), [memória](https://wikipedia.org/wiki/Computer_memory) e [pilha]() é necessária para entender a EVM. Também recomendamos se familiarizar com conceitos de criptografia/cadeia de blocos, como [funções hash](https://wikipedia.org/wiki/Cryptographic_hash_function) e a [árvore Merkle](https://wikipedia.org/wiki/Merkle_tree).
+Alguma familiaridade básica com a terminologia comum em ciência da computação, como [bytes](https://wikipedia.org/wiki/Byte), [memória](https://wikipedia.org/wiki/Computer_memory) e [pilha](https://wikipedia.org/wiki/Stack_(abstract_data_type)) é necessária para entender a EVM. Também recomendamos se familiarizar com conceitos de criptografia/cadeia de blocos, como [funções hash](https://wikipedia.org/wiki/Cryptographic_hash_function) e a [árvore Merkle](https://wikipedia.org/wiki/Merkle_tree).
## Do livro-razão para a máquina de estado {#from-ledger-to-state-machine}
@@ -64,6 +64,7 @@ Os [clientes de execução Ethereum](/developers/docs/nodes-and-clients/#executi
- [evmone](https://github.com/ethereum/evmone) - _C++_
- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
- [eEVM](https://github.com/microsoft/eevm) - _C++_
+- [revm](https://github.com/bluealloy/revm) - _Rust_
## Leitura adicional {#further-reading}
diff --git a/public/content/translations/pt-br/developers/docs/evm/opcodes/index.md b/public/content/translations/pt-br/developers/docs/evm/opcodes/index.md
index f7fdc77e4bd..de723433193 100644
--- a/public/content/translations/pt-br/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/pt-br/developers/docs/evm/opcodes/index.md
@@ -14,157 +14,157 @@ Para operações com custos de gás dinâmico, consulte [gas.md](https://github.
💡 Dica rápida: Para ver linhas inteiras, use `[shift] + scroll` para rolar horizontalmente na área de trabalho.
-| Pilha | Nome | Gás | Pilha inicial | Pilha resultante | Memória / Armazenamento | Observações |
-| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
-| 00 | STOP | 0 | | | | halt execution |
-| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
-| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
-| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
-| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
-| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
-| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
-| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
-| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
-| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
-| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
-| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
-| 0C-0F | _invalid_ | | | | | |
-| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
-| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
-| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
-| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
-| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
-| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
-| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
-| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
-| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
-| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
-| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
-| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
-| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
-| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
-| 1E-1F | _invalid_ | | | | | |
-| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
-| 21-2F | _invalid_ | | | | | |
-| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
-| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
-| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
-| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
-| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
-| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
-| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
-| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
-| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
-| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
-| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
-| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
-| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
-| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
-| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
-| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
-| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
-| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
-| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
-| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
-| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
-| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
-| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
-| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
-| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
-| 49-4F | _invalid_ | | | | | |
-| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
-| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
-| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
-| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
-| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
-| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
-| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
-| 58 | PC | 2 | `.` | `$pc` | | program counter |
-| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
-| 5A | GAS | 2 | `.` | `gasRemaining` | | |
-| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
-| 5C-5E | _invalid_ | | | | | |
-| 5F | PUSH0 | 2 | `.` | `uint8` | | empurra o valor constante 0 para a pilha |
-| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
-| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
-| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
-| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
-| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
-| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
-| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
-| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
-| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
-| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
-| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
-| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
-| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
-| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
-| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
-| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
-| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
-| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
-| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
-| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
-| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
-| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
-| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
-| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
-| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
-| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
-| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
-| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
-| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
-| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
-| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
-| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
-| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
-| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
-| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
-| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
-| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
-| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
-| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
-| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
-| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
-| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
-| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
-| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
-| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
-| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
-| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
-| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
-| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
-| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
-| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
-| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
-| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
-| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
-| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
-| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
-| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
-| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
-| A5-EF | _invalid_ | | | | | |
-| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
-| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Pilha | Nome | Gás | Pilha inicial | Pilha resultante | Memória / Armazenamento | Observações |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | empurra o valor constante 0 para a pilha |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/pt-br/developers/docs/gas/index.md b/public/content/translations/pt-br/developers/docs/gas/index.md
index 2d3458231d1..dd94bfd39df 100644
--- a/public/content/translations/pt-br/developers/docs/gas/index.md
+++ b/public/content/translations/pt-br/developers/docs/gas/index.md
@@ -24,7 +24,7 @@ Taxas de gas tem que ser pagas na moeda nativa do Ethereum, ether (ETH). Preços
Por exemplo, em vez de dizer que seu gás custa 0.000000001 Ether, pode-se dizer que ele custa 1 Gwei.
-A palavra 'gwei' é uma contração de 'giga-wei', significando 'bilhão de wei'. Um gwei é igual a um bilhão de wei. O próprio Wei (nomeado em homenagem a [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), criador do [B-Money](https://www.investopedia.com/terms/b/bmoney.asp)) é a menor unidade de ETH.
+A palavra 'gwei' é uma contração de 'giga-wei', significando 'bilhão de wei'. Um gwei é igual a um bilhão de wei. O próprio Wei (nomeado em homenagem a [Wei Dai](https://wikipedia.org/wiki/WeiDai), criador do [B-Money](https://www.investopedia.com/terms/b/bmoney.asp)) é a menor unidade de ETH.
## Como são calculadas as taxas de gás? {#how-are-gas-fees-calculated}
@@ -55,7 +55,7 @@ Cada bloco tem uma taxa base que funciona como um preço de reserva. Para ser el
A taxa base é calculada por uma fórmula que compara o tamanho do bloco anterior (a quantidade de gás utilizada para todas as transações) com o tamanho do alvo. A taxa base aumentará em um máximo de 12,5% por bloco se o tamanho do bloco de destino for excedido. Esse crescimento exponencial torna economicamente inviável que o tamanho do bloco permaneça elevado indefinidamente.
| Número do bloco | Gás incluído | Aumento de taxa | Taxa base atual |
-| --------------- | -----------: | --------------: | --------------: |
+| --------------- | ------------:| ---------------:| ---------------:|
| 1 | 15M | 0% | 100 gwei |
| 2 | 30M | 0% | 100 gwei |
| 3 | 30M | 12,5% | 112,5 gwei |
@@ -70,7 +70,7 @@ Conforme a tabela acima, para criar uma transação no bloco número 9, uma cart
Também é importante notar que, é improvável que veremos picos prolongados de blocos completos, devido à velocidade com que a taxa base aumenta antes de um bloco completo.
| Número do bloco | Gás incluído | Aumento da taxa | Taxa base atual |
-| --------------- | -----------: | --------------: | --------------: |
+| --------------- | ------------:| ---------------:| ---------------:|
| 30 | 30M | 12,5% | 2705,6 gwei |
| ... | ... | 12,5% | ... |
| 50 | 30M | 12,5% | 28531,3 gwei |
diff --git a/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
index 312b531d212..3f9220b964a 100644
--- a/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
+++ b/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
@@ -9,7 +9,7 @@ Nós Ethereum precisam se identificar com algumas informações básicas para se
## Pré-Requisitos {#prerequisites}
-É necessário ter algum entendimento sobre a [camada de rede](/developers/docs/networking-layer/) do Ethereum para entender esta página.
+É necessário ter algum entendimento sobre a [camada de rede](/developers/docs/networking-layer/)do Ethereum para entender esta página.
## Multiaddr {#multiaddr}
diff --git a/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md
new file mode 100644
index 00000000000..921bf996809
--- /dev/null
+++ b/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md
@@ -0,0 +1,82 @@
+---
+title: A Rede Portal
+description: Uma visão geral da Rede Portal - uma rede em desenvolvimento para dar suporte a clientes com poucos recursos.
+lang: pt-br
+---
+
+O Ethereum é uma rede composta de computadores que rodam o software Ethereum. Cada um destes computadores é chamado de um 'nódulo'. O software cliente permite a um nódulo enviar e receber dados na rede Ethereum, e verifica os dados contra as regras do protocolo Ethereum. Nódulos mantém um monte de dados históricos no armazenamento dos seus discos e adicionam a eles quando recebem novos pacotes de informações, conhecidos como blocos, de outros nódulos da rede. Isto é necessário para sempre checar que um nódulo tem informação consistente com o resto da rede. Isto significa que rodar um nódulo pode requerer muito espaço em disco. Algumas operações de nódulos podem requerer muita memória RAM também.
+
+Para resolver este problema de armazenamento, nódulos 'leves' tem sido desenvolvidos para requisitar informações de nódulos completos ao invés de armazenar eles mesmos. Entretanto, isto significa o nódulo leve não verifica as informações independentemente; ao invés disso, confia em outro nódulo. Isto também significa que nós completos são necessários para pegar um trabalho extra para servir estes nós leves.
+
+A Rede Portal é um novo desenho de rede para o Ethereum que visa resolver o problema de disponibilidade de dados para nódulos 'leves' sem ter que confiar ou colocar pressão extra nos nódulos completos, compartilhando os dados necessários em pequenos pedaços através da rede.
+
+Mais sobre [nós e clientes](/developers/docs/nodes-and-clients/)
+
+## Por que nós precisamos da Rede Portal {#why-do-we-need-portal-network}
+
+Os nódulos da Ethereum armazenam sua própria cópia total ou parcial do blockchain Ethereum. Esta cópia local é usada para validar transações e garantir que o nódulo está seguindo a cadeia correta. Este dado armazenado localmente permite aos nódulos verificarem de maneira independente que os dados de chegada são válidos e corretos sem precisar acreditar em nenhuma outra entidade.
+
+Esta cópia local do blockchain, além de seu estado associado e do recebimento de dados tomam muito espaço no disco rígido do nódulo. Por exemplo, um disco rígido de 2TB é recomendado para rodar um nó utilizando [Geth](https://geth.ethereum.org) pareado com um cliente de consenso. Usando sincronização instantânea, que armazena apenas dados da cadeia de um conjunto de blocos relativamente recente, Geth tipicamente ocupa cerca de 650GB de espaço em disco, mas cresce cerca de 14GB/semana (você pode podar o nó de volta a 650GB periodicamente).
+
+Isto significa que rodar nódulos pode ser caro, porque uma grande quantidade de espaço em disco tem de ser dedicada ao Ethereum. Há diversas soluções para este problema no roadmap do Ethereum, incluindo [expiração de histórico](/roadmap/statelessness/#history-expiry), [expiração de estado](/roadmap/statelessness/#state-expiry) e [falta de estado](/roadmap/statelessness/). Entretanto, ainda há muito até que eles sejam implementados. Há também [nódulos leves](/developers/docs/nodes-and-clients/light-clients/) que não gravam suas próprias cópias dos dados da cadeia, eles solicitam os dados que eles precisam dos nódulos completos. Entretanto, isso significa que nódulos leves tem que acreditar em nódulos completos para fornecer dados honestos e também estressa os nódulos completos que tem que servir os dados para as necessidades dos nódulos leves.
+
+A Rede Portal visa fornecer uma maneira alternativa para nós leves terem seus dados que sem requerer confiança ou adicionar significantemente ao trabalho que tem de ser feito pelos nós completos. Isto será feito com a introdução de uma nova maneira dos nós Ethereum compartilharem dados através da rede.
+
+## Como a Rede Portal funciona? {#how-does-portal-network-work}
+
+Nós Ethereum tem protocolos estritos que definem como eles se comunicam com os outros. Clientes de execução se comunicam usando um conjunto de sub-protocolos conhecidos como [DevP2P](/developers/docs/networking-layer/#devp2p), enquanto clientes de consenso usam uma pilha diferente de sub-protocolos chamada [libP2P](/developers/docs/networking-layer/#libp2p). Eles definem os tipos de dados que podem ser passados entre nós.
+
+![devP2P e libP2P](portal-network-devp2p-libp2p.png)
+
+Os nós podem também servir dados específicos através da [API JSON-RPC](/developers/docs/apis/json-rpc/), que é como apps e carteiras trocam informações com os nós Ethereum. Entretanto, nenhum destes são protocolos ideias para servir dados para clientes leves.
+
+Clientes leves não podem atualmente requisitar pedaços específicos da cadeia de dados pelo DevP2P ou libP2P, porque estes protocolos são desenhados somente para habilitar sincronização de cadeias e transmissão de blocos e transações. Clientes leves não querem fazer o download desta informação, porque deixariam de ser 'leves'.
+
+A API JSON-RPC não é a escolha ideal para requisições de dados de clientes leves também, porque ela confia na conexão para um nó completo específico ou fornecedor de RPC centralizado que pode servir os dados. Isto significa que clientes leves tem que confiar em um específico nó/provedor ser honesto, e também o nó completo pode ter que manipular muitas requisições de muitos clientes leves, adicionando aos requisitos da sua largura de banda.
+
+A meta da Rede Portal é repensar todo o desenho, construindo especificamente para leveza, fora das limitações de desenho dos clientes Ethereum existentes.
+
+A ideia central da Rede Portal é pegar os melhores bits da pilha da rede atual habilitando informações necessárias pelos clientes leves, como dados históricos e a identidade da cabeça atual da cadeia para ser servida através de um estilo DevP2P peso leve ponto-a-ponto em uma rede descentralizada, usando um [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (similar à Bittorrent).
+
+A ideia é adicionar pequenas partes do histórico de dados total do Ethereum e algumas responsabilidades específicas de nós para cada nó. Então, requisições são servidas procurando os nós que armazenam o dado específico que foi requisitado e recuperando-o deles.
+
+Isto inverte o modelo normal de nós leves encontrando um único nó e requisitando a eles filtrar e servir grandes volumes de dados; ao invés disso, eles rapidamente filtram uma grande rede de nós onde cada um manipula pequenas quantidades de dados.
+
+O objetivo é permitir uma rede descentralizada de clientes Portal peso leve para:
+
+- rastrear a cabeça da cadeia
+- sincronizar dados recentes e históricos da cadeia
+- recuperar os dados de estado
+- transmitir transações
+- executar transações usando a [EVM](/developers/docs/evm/)
+
+Os benefícios deste desenho de rede são:
+
+- reduzir a dependência em fornecedores centralizados
+- reduzir o uso de banda de internet
+- minimizar ou zerar a sincronia
+- ser acessível a dispositivos com restrição de recursos (<1GB RAM, <100MB de disco, 1CPU)
+
+O diagrama abaixo mostra as funções dos clientes existentes que podem ser entregues pela Rede Portal, habilitando ao usuários acessar estas funções em dispositivos com muito poucos recursos.
+
+![tabela rede portal](portal-network-table2.png)
+
+## Diversidade de cliente por padrão {#client-diversity-as-default}
+
+Os desenvolvedores da Rede Portal também fizeram com que o design assumido construísse três clientes separados na Rede Portal desde o primeiro dia.
+
+Os clientes da Rede Portal são:
+
+- [Trin](https://github.com/ethereum/trin): escrito em Rust
+- [Fluffy](https://nimbus.team/docs/fluffy.html): escrito em Nim
+- [Ultralight](https://github.com/ethereumjs/ultralight): escrito em Typescript
+
+Ter várias implementações de clientes independentes melhora a resiliência e descentralização da rede Ethereum.
+
+Se um cliente enfrenta problemas de vulnerabilidades, outros clientes podem continuar a operar tranquilamente, evitando o ponto único de falha. Adicionalmente, diversidade na implementação de clientes fomenta inovação e competição, conduzindo melhorias e reduzindo risco de monocultura dentro do ecossistema.
+
+## Leitura adicional {#futher-reading}
+
+- [A Rede Portal (Piper Merriam na Devcon Bogota)](https://www.youtube.com/watch?v=0stc9jnQLXA).
+- [O desacordo da Rede Portal](https://discord.gg/CFFnmE7Hbs)
+- [O website da Rede Portal](https://www.ethportal.net/)
diff --git a/public/content/translations/pt-br/developers/docs/networks/index.md b/public/content/translations/pt-br/developers/docs/networks/index.md
index ec72e59b0fe..f01cbe3f3da 100644
--- a/public/content/translations/pt-br/developers/docs/networks/index.md
+++ b/public/content/translations/pt-br/developers/docs/networks/index.md
@@ -38,7 +38,7 @@ As duas redes de testes públicas que os desenvolvedores dos clientes estão atu
#### Sepolia {#sepolia}
-\*\*\*\*Sepolia é a rede de teste padrão recomendada para desenvolvimento de aplicativos. A rede Sepolia usa um conjunto de validadores autorizados. É bastante novo, o que significa que seu estado e história são bastante pequenos. Isso significa que a rede é rápida para sincronizar e que a execução de um nó requer menos armazenamento. Isso é útil para usuários que desejam ativar rapidamente um nó e interagir diretamente com a rede.
+****Sepolia é a rede de teste padrão recomendada para desenvolvimento de aplicativos. A rede Sepolia usa um conjunto de validadores autorizados. É bastante novo, o que significa que seu estado e história são bastante pequenos. Isso significa que a rede é rápida para sincronizar e que a execução de um nó requer menos armazenamento. Isso é útil para usuários que desejam ativar rapidamente um nó e interagir diretamente com a rede.
- Conjunto de validadores fechado, controlado pelo cliente & equipes de teste
- Nova rede de teste, menos aplicativos implantados que outras redes de teste
@@ -56,10 +56,11 @@ As duas redes de testes públicas que os desenvolvedores dos clientes estão atu
- [Faucet do QuickNode Sepolia](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [Faucet de PoW](https://sepolia-faucet.pk910.de/)
-- [Faucet da Carteira da Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Faucet da Carteira Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
- [Faucet do Alchemy Sepolia](https://sepoliafaucet.com/)
- [Faucet do Infura Sepolia](https://www.infura.io/faucet)
- [Faucet da Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Faucet da rede de teste | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(suporte a longo prazo)_ {#goerli}
@@ -102,7 +103,7 @@ Uma rede de testes para [Arbitrum](https://arbitrum.io/).
- [Faucet do Chainlink](https://faucets.chain.link/)
-#### Goerli otimista {#optimistic-goerli}
+#### Optimistic Goerli {#optimistic-goerli}
Uma rede de testes para [Optimism](https://www.optimism.io/).
@@ -111,26 +112,34 @@ Uma rede de testes para [Optimism](https://www.optimism.io/).
- [Faucet Paradigm](https://faucet.paradigm.xyz/)
- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Uma rede de teste para [Starknet](https://www.starknet.io).
+
+##### Faucets
+
+- [Faucet da Starknet](https://faucet.goerli.starknet.io)
+
## Redes privadas {#private-networks}
-Uma rede Ethereum é uma rede privada se seus nós não estiverem conectados a uma rede pública (ex: Rede principal e rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
+Uma rede Ethereum é uma rede privada se seus nódulos não estiverem conectados a uma rede pública (ex: Rede principal e rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
### Redes de desenvolvimento {#development-networks}
-Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Tal como você pode criar um servidor local em seu computador para desenvolvimento Web, você pode criar uma instância local de cadeia de blocos para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de testes pública.
+Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Tal como você pode criar um servidor local em seu computador para desenvolvimento Web, você pode criar uma instância local de blockchain para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de testes pública.
Existem projetos e ferramentas dedicadas a ajudá-lo com isso. Saiba mais sobre [redes de desenvolvimento](/developers/docs/development-networks/).
### Redes de consórcio {#consortium-networks}
-O processo de consenso é controlado por um conjunto predefinido de nós confiáveis. Por exemplo, uma rede privada de instituições acadêmicas conhecidas, cada uma administrando um único nó, e os blocos são validados por um limite de signatários dentro da rede.
+O processo de consenso é controlado por um conjunto predefinido de nódulos confiáveis. Por exemplo, uma rede privada de instituições acadêmicas conhecidas, cada uma administrando um único nódulo, e os blocos são validados por um limite de signatários na rede.
Se uma rede pública Ethereum é como a internet pública, uma rede de consórcio é como uma intranet privada.
## Ferramentas relacionadas {#related-tools}
- [Chainlist](https://chainlist.org/) _Lista de redes EVM para conectar carteiras e fornecedores aos identificadores de cadeia e rede apropriados_
-- [/Cadeias baseadas na EVM](https://github.com/ethereum-lists/chains) _repositório do GitHub com metadados de cadeias que alimenta a Chainlist_
+- [/Cadeias baseadas em EVM](https://github.com/ethereum-lists/chains) _Repositório do GitHub com metadados de cadeias que alimenta a Chainlist_
## Leitura adicional {#further-reading}
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
index c9cfe4ef61a..9ec5ad14275 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -70,7 +70,7 @@ Durante a sincronização inicial, os clientes no modo arquivo executarão todas
## Leitura adicional {#further-reading}
-- [Nó completo Ethereum vs Nó de arquivo](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) — _QuickNode, setembro de 2022_
+- [Nó completo Ethereum vs Nó de arquivo](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) — *QuickNode, setembro de 2022*
- [Construindo seu próprio nó de arquivo Ethereum](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) — _Thomas Jay Rush, agosto de 2021_
- [Como configurar Erigon, o RPC do Erigon e TrueBlocks (extração e API) como serviços](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson, atualizado em setembro de 2022_
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
index 18bad4e622a..f5061c43027 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -31,7 +31,7 @@ A diversidade de clientes também oferece resiliência a ataques. Por exemplo, u
Um erro em um cliente de consenso com mais de 33% dos nós Ethereum poderia impedir a finalização da camada de consenso, e isso deixaria os utilizadores em dúvida com respeito à probabilidade de as transações não serem revertidas ou alteradas em algum momento. Isso seria muito problemático para muitos dos aplicativos construídos em cima do Ethereum, particularmente o DeFi.
- Pior ainda, um bug crítico em um cliente com uma maioria de dois terços poderia fazer com que a cadeia se dividisse e finalizasse incorretamente, gerando um grande conjunto de validadores que ficam presos em uma cadeia inválida. Se quiserem voltar a integrar à cadeia correta, esses validadores enfrentam cortes ou uma lenta e cara retirada e reativação voluntária. A magnitude de uma escala de remoção com o número de nós culpáveis com uma maioria de dois terços reduzido ao máximo (32 ETH).
+ Pior ainda, um bug crítico em um cliente com uma maioria de dois terços poderia fazer com que a cadeia se dividisse e finalizasse incorretamente, gerando um grande conjunto de validadores que ficam presos em uma cadeia inválida. Se quiserem voltar a integrar à cadeia correta, esses validadores enfrentam cortes ou uma lenta e cara retirada e reativação voluntária. A magnitude de uma escala de remoção com o número de nós culpáveis com uma maioria de dois terços reduzido ao máximo (32 ETH).
Embora estes sejam cenários improváveis, o ecossistema Ethereum pode mitigar seus riscos nivelando a distribuição de clientes entre os nós ativos. Idealmente, nenhum cliente de consenso chegaria a uma participação de 33% dos nós totais.
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
index 09d985465fe..94a02175359 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
@@ -136,6 +136,7 @@ Essa tabela resume os diferentes clientes. Todos eles passam por [testes de clie
| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Rede principal, Sepolia, Goerli, e outras | Instantâneo (sem servidor), Rápido, Completo | Arquivo, Removido |
| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Rede principal, Sepolia, Goerli, e outras | Instantâneo, Rápido, Completo | Arquivo, Removido |
| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Rede principal, Sepolia, Goerli, e outras | Completo | Arquivo, Removido |
+| [Reth](https://github.com/paradigmxyz/reth) | Rust | Linux, Windows, macOS | Rede principal, Sepolia, Goerli, e outras | Completo | Arquivo, Removido |
Para saber mais sobre redes suportadas, leia sobre as [redes Ethereum](/developers/docs/networks/).
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
index 3d021ef8e24..b1e0b4587b3 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -151,7 +151,7 @@ Aqui estão as páginas de lançamento dos clientes, nas quais você pode encont
##### Clientes de execução
- [Besu](https://github.com/hyperledger/besu/releases)
-- [Erigon](https://github.com/ledgerwatch/erigon#usage) (não fornece um binário pré-compilado, precisa ser compilado)
+- [Erigon](https://github.com/ledgerwatch/erigon/releases)
- [Geth](https://geth.ethereum.org/downloads/)
- [Nethermind](https://downloads.nethermind.io/)
diff --git a/public/content/translations/pt-br/developers/docs/programming-languages/python/index.md b/public/content/translations/pt-br/developers/docs/programming-languages/python/index.md
index 100eaca3bc6..1cf6176d26b 100644
--- a/public/content/translations/pt-br/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/pt-br/developers/docs/programming-languages/python/index.md
@@ -82,7 +82,7 @@ Os seguintes projetos baseados na Ethereum usam ferramentas mencionadas nesta p
## Comunidade de discussão Python {#python-community-contributors}
- [Comunidade Discord Python Ethereum](https://discord.gg/9zk7snTfWe) Para discussões sobre Web3.py e outros frameworks Python
-- [Vyper Discord](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>) Para discussão sobre programação de contrato inteligente com Vyper
+- [Vyper Discord](https://discord.gg/SdvKC79cJk) Para discussão sobre programação de contrato inteligente com Vyper
## Demais listas agregadas {#other-aggregated-lists}
diff --git a/public/content/translations/pt-br/developers/docs/scaling/index.md b/public/content/translations/pt-br/developers/docs/scaling/index.md
index 81d495a35cb..74bad9eac6e 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/index.md
@@ -21,27 +21,25 @@ Você deveria ter um bom entendimento de todos os tópicos fundamentais. Impleme
## Dimensionamento on-chain {#on-chain-scaling}
-Este método de dimensionamento requer alterações no protocolo Ethereum ([rede principal](/glossary/#mainnet) da camada 1). A fragmentação é atualmente o principal objetivo deste método de dimensionamento.
+A escalabilidade em cadeia requer mudanças no protocolo do Ethereum ([Mainnet](/glossary/#mainnet) de camada 1). A solução de fragmentação da blockchain era aguardada há muito tempo para escalar o Ethereum. Isso implicava dividir a blockchain em partes discretas (fragmentos), que seriam verificadas por subconjuntos de validadores. No entanto, a técnica de escalabilidade principal adotada foi a de escalar por rollups de camada 2. Ela é suportada pela adição de uma nova forma mais barata de dados anexados aos blocos Ethereum, que foi especialmente criada para tornar os rollups baratos para os usuários.
### Fragmentação {#sharding}
-A fragmentação é o processo de dividir um banco de dados horizontalmente para repartir a carga de trabalho. No contexto do Ethereum, a fragmentação reduzirá o congestionamento da rede e aumentará o número de transações por segundo graças à geração de novas cadeias conhecidas como "fragmentos". Isso também irá aliviar a carga para cada validador, que não precisará mais processar a totalidade de todas as transações da rede.
-
-Saiba mais sobre [fragmentação](/roadmap/danksharding/).
+Fragmentação é o processo de dividir um banco de dados. Subconjuntos de validadores seriam responsáveis por seus próprios fragmentos, em vez de manter o controle de todo o Ethereum. A fragmentação esteve no [planejamento](/roadmap/) do Ethereum por muito tempo, com a intenção de ser enviada para prova de participação antes do The Merge (A Fusão). No entanto, o rápido desenvolvimento de [rollups de camada 2](#layer-2-scaling) e a invenção do [Danksharding](/roadmap/danksharding) (adicionando blobs de dados do rollup para blocos do Ethereum que podem ser verificados eficientemente pelos validadores) têm levado a comunidade Ethereum a preferir o dimensionamento centrado por rollup em vez do dimensionamento por fragmentação. Isso também ajudará a manter a lógica de consenso do Ethereum mais simples.
## Dimensionamento off-chain {#off-chain-scaling}
-As soluções off-chain são implementadas separadamente da rede principal da camada 1. Ou seja, elas não requerem alterações no protocolo Ethereum Ethereum existente. Algumas soluções, conhecidas como soluções de "camada 2", derivam sua segurança diretamente do consenso da camada 1 do Ethereum, por exemplo, os [optimistic rollups](/developers/docs/scaling/layer-2-rollups/), os [rollups de conhecimento zero](/developers/docs/scaling/zk-rollups/) ou os [canais de estado](/developers/docs/scaling/state-channels/). Outras soluções envolvem a criação de novas cadeias em várias formas que derivam sua segurança separadamente da rede principal, como [sidechains](#sidechains), [validiums](#validium) ou [cadeias Plasma](#plasma). Essas soluções se comunicam com a rede principal, mas derivam sua segurança de forma diferente para obter uma variedade de objetivos.
+As soluções off-chain são implementadas separadamente da rede principal da camada 1. Ou seja, elas não requerem alterações no protocolo Ethereum existente. Algumas soluções, conhecidas como soluções de “camada 2”, obtêm sua segurança diretamente do consenso da camada 1 do Ethereum, por exemplo, os [rollups otimistas](/developers/docs/scaling/layer-2-rollups/), os [rollups de conhecimento zero](/developers/docs/scaling/zk-rollups/) ou os [canais de estado](/developers/docs/scaling/state-channels/). Outras soluções envolvem a criação de novas cadeias em várias formas, que obtêm sua segurança separadamente da Mainnet (Rede principal), como [cadeias laterais](#sidechains), [validiums](#validium) ou [cadeias Plasma](#plasma). Essas soluções se comunicam com a Mainnet (Rede principal), mas obtêm sua segurança de forma diferente para alcançar uma variedade de objetivos.
### Dimensionamento da camada 2 {#layer-2-scaling}
-Esta categoria de soluções off-chain deriva a sua segurança da rede principal do Ethereum.
+Esta categoria de soluções off-chain obtém sua segurança da Mainnet (Rede principal) do Ethereum.
-A camada 2 é um termo coletivo para soluções projetadas para ajudar a dimensionar os aplicativos, manipulando para isso as transações fora da rede principal (camada 1) de Ethereum, tirando proveito do robusto modelo de segurança descentralizada fornecido pela rede principal. A velocidade das transações sofre quando a rede está ocupada, o que pode tornar a experiência do usuário ruim para certos tipos de dapps. E à medida que a rede fica mais movimentada, os preços do gás tendem a aumentar devido a que os remetentes das transações tendem a oferecer mais para processar sua transação antes que as dos outros. E essa conjuntura pode tornar o uso do Ethereum bem mais caro.
+A camada 2 é um termo coletivo de soluções projetadas para ajudar a dimensionar os aplicativos, gerenciando transações fora da rede principal (camada 1) do Ethereum, aproveitando o robusto modelo de segurança descentralizada da Mainnet (Rede principal). A velocidade das transações é reduzida quando a rede está ocupada, o que pode tornar a experiência do usuário ruim para certos tipos de dapps. À medida que a rede fica mais movimentada, os preços do gás aumentam, pois os remetentes de transações tendem a oferecer mais para processar sua transação antes das dos outros. Isso pode tornar o uso do Ethereum bem mais caro.
-A maioria das soluções de camada 2 orbitam ao redor de um servidor, ou cluster de servidores, cada um dos quais pode ser referenciado como um nó, como um validador, como um operador, como um sequenciador de transações, como um produtor de blocos ou como algo semelhante. Dependendo da implementação, esses nós da camada 2 podem ser executados pelos indivíduos, pelas empresas ou pelas entidades que os usam, ou por um operador de terceiros, ou ainda por um grande grupo de indivíduos (da maneira similar à rede principal). Em geral, ao invés de serem enviadas diretamente para a camada 1 (rede principal), as transações são submetidas a esses nós da camada 2. Para algumas soluções, a camada 2 instancia as transações e as agrupa antes de ancorá-las à camada 1. Depois disso, elas são protegidas pela própria camada 1 e não podem ser mais alteradas. Os pormenores de como isso é feito variam significativamente entre diferentes tecnologias de camada 2 e suas diferentes implementações.
+A maioria das soluções de camada 2 são centralizadas em torno de um servidor ou cluster de servidores, cada um dos quais pode ser referenciado como um nó, validador, operador, sequenciador, produtor de bloco, ou um termo semelhante. Dependendo da implementação, esses nós da camada 2 podem ser executados pelos indivíduos, empresas ou entidades que os usam, por um operador de terceiros ou por um grande grupo de indivíduos (semelhante à Mainnet). Em geral, as transações são submetidas a esses nós de camada 2, em vez de serem enviadas diretamente para a camada 1 (Mainnet). Para algumas soluções, a instância da camada 2 agrupa-os em grupos antes de ancorá-los na camada 1, na qual ficam protegidos e não podem ser alterados. Os pormenores de como isso é feito variam significativamente entre diferentes tecnologias de camada 2 e implementações.
-Uma instância específica da camada 2 pode ser aberta e compartilhada por muitos aplicativos, ou pode ser implantada por um projeto e dedicada especificamente a apoiar apenas seu aplicativos.
+Uma instância específica da camada 2 pode ser aberta e compartilhada por muitos aplicativos, ou pode ser implantada por um projeto e dedicada a dar suporte apenas ao seu aplicativo.
#### Por que a camada 2 é necessária? {#why-is-layer-2-needed}
@@ -54,36 +52,36 @@ Uma instância específica da camada 2 pode ser aberta e compartilhada por muito
#### Rollups {#rollups}
-Os rollups levam a execução das transações para fora da camada 1 e, posteriormente, tais dados são reportados para a camada 1, onde o consenso é alcançado. Como os dados de transação estão incluídos nos blocos da camada 1, isso permite que os rollups sejam protegidos pela segurança nativa do Ethereum.
+Os rollups executam a transação fora da camada 1 e, em seguida, os dados são publicados na camada 1, na qual o consenso é alcançado. Como os dados de transação estão incluídos nos blocos da camada 1, isso permite que os rollups fiquem protegidos pela segurança nativa da Ethereum.
-Existem dois tipos de rolllups com diferentes modelos de segurança:
+Existem dois tipos de rollups com diferentes modelos de segurança:
- **Optimistic rollups**: assumem que as transações são válidas por padrão e só executam computação através de uma [**prova de fraude**](/glossary/#fraud-proof), caso alguém levante alguma objeção. [Mais sobre optimistic-rollups](/developers/docs/scaling/optimistic-rollups/).
- **Rollups de conhecimento zero**: executam a computação off-chain e enviam uma [**prova de validade**](/glossary/#validity-proof) para a cadeia. [Mais sobre rollups de conhecimento zero](/developers/docs/scaling/zk-rollups/).
#### Canais de Estado {#channels}
-Os canais de estado utilizam contratos multisig para permitir que os participantes façam transações de forma rápida e livre off-chain, e em seguida, liquidam a finalidade com a rede principal. Isto minimiza o congestionamento, as taxas e os atrasos na rede. Neste momento, existem dois tipos de canais: canais de estado e canais de pagamento.
+Os canais de estado utilizam contratos multisig para permitir que os participantes realizem transações de forma rápida e livre off-chain para, em seguida, liquidar a finalidade com a Mainnet. Isso minimiza o congestionamento, as taxas e os atrasos na rede. Atualmente, existem dois tipos de canais: canais de estado e canais de pagamento.
-Saiba mais sobre [canais de estado](/developers/docs/scaling/state-channels/).
+Aprenda mais sobre [canais de estado](/developers/docs/scaling/state-channels/).
### Correntes paralelas {#sidechains}
-Uma sidechain é uma blockchain independente e compatível com EVM que se executa em paralelo com a rede principal. Essas são compatíveis com Ethereum através de pontes de dois sentidos e são executadas de acordo com as regras de consenso escolhidas e com os parâmetros do bloco.
+Uma sidechain (cadeia paralela) é uma blockchain independente e compatível com EVM que roda em paralelo à Mainnet (Rede principal). As sidechains são compatíveis com o Ethereum através de pontes bidirecionais e são executadas conforme as regras de consenso escolhidas e os parâmetros do bloco.
Saiba mais sobre [Sidechains](/developers/docs/scaling/sidechains/).
### Plasma {#plasma}
-A cadeia Plasma é uma blockchain separada que é ancorada à cadeia principal do Ethereum, e usa provas de fraude (como as [optimistic rollups](/developers/docs/scaling/optimistic-rollups/)) para arbitrar disputas.
+A cadeia plasma é uma blockchain separada que é ancorada à cadeia principal do Ethereum e usa provas de fraude (como os [rollups otimistas](/developers/docs/scaling/optimistic-rollups/)) para arbitrar litígios.
-Saiba mais sobre [Plasma](/developers/docs/scaling/plasma/).
+Aprenda mais sobre o [Plasma](/developers/docs/scaling/plasma/).
### Validium {#validium}
Uma cadeia Validium usa provas de validade como rollups de conhecimento zero, mas os dados não são armazenados na cadeia Ethereum da camada 1 principal. Isso pode levar a 10 mil transações por segundo por cadeia Validium, e várias cadeias podem ser executadas em paralelo.
-Saiba mais sobre [fragmentação](/developers/docs/scaling/validium/).
+Saiba mais sobre o [Validium](/developers/docs/scaling/validium/).
## Por que tantas soluções de dimensionamento são necessárias? {#why-do-we-need-these}
@@ -96,7 +94,7 @@ Saiba mais sobre [fragmentação](/developers/docs/scaling/validium/).
-_Note que a explicação no vídeo usa o termo "Camada 2" para se referir a todas as soluções de escalonamento off-chain enquanto diferenciamos a "Camada 2" como uma solução off-chain que deriva sua segurança através do consenso principal da camada 1._
+_Observe que a explicação no vídeo usa o termo “Camada 2" para se referir a todas as soluções de escalabilidade off-chain, enquanto nós diferenciamos a “Camada 2" como uma solução off-chain que deriva sua segurança a partir do consenso da Mainnet (Rede principal) de camada 1._
@@ -112,4 +110,4 @@ _Note que a explicação no vídeo usa o termo "Camada 2" para se referir a toda
- [Por que os rollups, junto com as fragmentações dos dados, são a única solução sustentável para atingir alto dimensionamento](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
- [Que tipo de camada 3 faz sentido?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html)
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece um recurso da comunidade que te ajudou? Edite essa página e adicione!_
diff --git a/public/content/translations/pt-br/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/pt-br/developers/docs/scaling/optimistic-rollups/index.md
index e1762f53c3a..55b7c4b901a 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/optimistic-rollups/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/optimistic-rollups/index.md
@@ -198,7 +198,7 @@ Os optimistic rollups usam um esquema de taxa de gás, muito parecido com o Ethe
2. **`calldata`**: além da taxa básica de transação, o custo de cada escrita de estado depende do tamanho de `calldata` publicado na L1. Os custos de `calldata` são atualmente regidos por [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), que estipula um custo de 16 gás para bytes diferentes de zero e 4 gás para zero bytes de `calldata`, respectivamente. Para reduzir as taxas do usuário, os operadores de rollup compactam as transações para reduzir o número de bytes `calldata` publicados no Ethereum.
-3. **Taxas do operador L2**: este é o valor pago aos nós de rollup como compensação pelos custos computacionais incorridos no processamento de transações, assim como as taxas do minerador no Ethereum. Os nós de rollup cobram taxas de transação mais baixas, pois os L2s têm capacidades de processamento mais altas e não enfrentam congestionamentos de rede que forçam os mineradores no Ethereum a priorizar transações com taxas mais altas.
+3. **Taxas do operador L2**: Este é o valor pago aos nódulos de rollup como compensação pelos custos computacionais decorrentes do processamento de transações, muito parecido com as taxas de Gas no Ethereum. Os nódulos de rollup cobram taxas de transação mais baixas, já que as L2s têm capacidades de processamento mais altas e não enfrentam os congestionamentos de rede, que forçam os validadores no Ethereum a priorizar transações com taxas mais altas.
Os optimistic rollups aplicam vários mecanismos para reduzir as taxas para os usuários, incluindo transações em lote e compactando `calldata` para reduzir os custos de publicação de dados. Você pode verificar o [rastreador de taxas L2](https://l2fees.info/), para ter uma ideia geral real do custo de uso de optimistic rollups baseados em Ethereum.
@@ -229,7 +229,7 @@ Fazer alguns cálculos aproximados sobre esses números pode ajudar a mostrar as
Esta é uma estimativa bastante otimista, uma vez que as transações de optimistic rollups não podem abranger um bloco inteiro no Ethereum. No entanto, pode dar uma ideia aproximada de quantos ganhos de dimensionamento os optimistic rollups podem proporcionar aos usuários do Ethereum (as implementações atuais oferecem até 2.000 TPS).
-Espera-se que a introdução de [particionamento de dados (sharding)](/roadmap/danksharding/) no Ethereum melhore o dimensionamento do optimistic rollup. Como as transações de rollup devem compartilhar o espaço de blocos (blockspace) com outras transações não-rollup, sua capacidade de processamento é limitada pela taxa de transferência de dados na cadeia principal do Ethereum. O particionamento aumentará o espaço disponível para as cadeias L2, para publicar dados por bloco, aumentando ainda mais a taxa de transferência nos rollups.
+Espera-se que a introdução de [fragmentação (sharding) de dados](/roadmap/danksharding/) no Ethereum melhore o dimensionamento do rollup otimista. Como as transações de rollup devem compartilhar o espaço de blocos (blockspace) com outras transações não-rollup, sua capacidade de processamento é limitada pela taxa de transferência de dados na cadeia principal do Ethereum. Danksharding aumentará o espaço disponível para que cadeias L2 publiquem dados por bloco, usando armazenamento de “blob” impermanente e mais barato em vez de `CALLDATA`, que é permanente e caro.
### Prós e contras dos optimistic rollups {#optimistic-rollups-pros-and-cons}
diff --git a/public/content/translations/pt-br/developers/docs/scaling/plasma/index.md b/public/content/translations/pt-br/developers/docs/scaling/plasma/index.md
index c706aaff4a3..4c6ae6a3d7e 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/plasma/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/plasma/index.md
@@ -150,20 +150,19 @@ Inversamente, as cadeias Plasma derivam sua segurança da rede principal. Isto a
### Plasma vs fragmentação (sharding) {#plasma-vs-sharding}
-Tanto as cadeias Plasma quanto as [cadeias de shard](/roadmap/danksharding/) publicam periodicamente provas criptográficas para a rede principal do Ethereum. No entanto, ambas têm propriedades de segurança diferentes.
+Tanto as cadeias plasma quanto as cadeias de fragmentos periodicamente publicam provas criptográficas na Mainnet (Rede principal) do Ethereum. No entanto, ambas têm propriedades de segurança diferentes.
As cadeias de shard gravam "cabeçalhos de agrupamento" na rede principal contendo informações detalhadas sobre cada shard de dados. Os nós na rede principal verificam e garantem a validade de shards de dados, reduzindo a possibilidade de transições de shards inválidos e protegendo a rede contra atividades maliciosas.
A cadeia Plasma é diferente porque a rede principal só recebe informação mínima sobre o estado das cadeias filhas. Isto significa que rede principal não pode verificar eficazmente as transações realizadas em cadeias filhas, tornando-as menos seguras.
+**Observe** que fragmentar a blockchain Ethereum não está mais no roteiro. Ela foi substituída por escalabilidade via rollups e [Danksharding](/roadmap/danksharding).
+
### Usar a cadeia Plasma {#use-plasma}
Vários projetos fornecem implementações da cadeia Plasma que você pode integrar aos seus dapps:
-- [OMG Network](https://omg.network/)
- [Polygon](https://polygon.technology/) (anteriormente Matic Network)
-- [Gluon](https://gluon.network/)
-- [LeapDAO](https://ipfs.leapdao.org/)
## Leitura adicional {#further-reading}
@@ -173,4 +172,4 @@ Vários projetos fornecem implementações da cadeia Plasma que você pode integ
- [Entenda a cadeia Plasma - parte 1: O básico](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
- [A vida e a morte da cadeia Plasma](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece um recurso da comunidade que te ajudou? Edite essa página e adicione!_
diff --git a/public/content/translations/pt-br/developers/docs/scaling/sidechains/index.md b/public/content/translations/pt-br/developers/docs/scaling/sidechains/index.md
index d1a7e0a8235..bc0367f8c04 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/sidechains/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/sidechains/index.md
@@ -18,7 +18,7 @@ As sidechains são blockchains independentes, com diferentes histórias, roteiro
Uma das qualidades que tornam as sidechains únicas (ou seja, diferentes do Ethereum) é o algoritmo de consenso usado. As sidechains não contam com o Ethereum para consenso e podem escolher protocolos de consenso alternativos que atendam às suas necessidades. Alguns exemplos de algoritmos de consenso usados nas sidechains incluem:
- [Prova de autoridade](https://wikipedia.org/wiki/Proof_of_authority)
-- [Prova de participação delegada](https://en.bitcoinwiki.org/wiki/DPoS)
+- [Prova de participação delegada](https://en.bitcoin.it/wiki/Delegated_proof_of_stake)
- [Tolerância a falhas bizantinas](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained).
Como o Ethereum, as sidechains têm nós de validação que verificam e processam transações, produzem blocos e armazenam o estado da blockchain. Os validadores são também responsáveis por manterem o consenso em toda a rede e protegê-la contra ataques maliciosos.
diff --git a/public/content/translations/pt-br/developers/docs/scaling/validium/index.md b/public/content/translations/pt-br/developers/docs/scaling/validium/index.md
index e5f5882fb8b..b4976043580 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/validium/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/validium/index.md
@@ -121,7 +121,7 @@ Algumas equipes, no entanto, estão tentando otimizar opcodes de EVM existentes
### 1. Armazenamento de dados off-chain {#off-chain-data-storage}
-Projetos de dimensionamento de camada 2, como optimistic rollups e ZK-rollups, negociam o dimensionamento infinito de protocolos de dimensionamento off-chain puros (por exemplo, [Plasma](/developers/docs/scaling/plasma/)) para fins de segurança, publicando alguns dados de transação na L1. Mas isso significa que as propriedades de dimensionamento dos rollups são limitadas pela banda de dados na rede principal do Ethereum (a [fragmentação (sharding) de dados](/roadmap/danksharding/) propõe melhorar a capacidade de armazenamento de dados do Ethereum por este motivo).
+Projetos de dimensionamento de camada 2, como optimistic rollups e ZK-rollups, negociam o dimensionamento infinito de protocolos de dimensionamento off-chain puros (por exemplo, [Plasma](/developers/docs/scaling/plasma/)) para fins de segurança, publicando alguns dados de transação na L1. Mas isso significa que as propriedades de dimensionamento dos rollups são limitadas pela largura de banda na Mainnet (Rede principal) do Ethereum (a [fragmentação (sharding) de dados](/roadmap/danksharding/) propõe melhorar a capacidade de armazenamento de dados do Ethereum por este motivo).
Os validiums alcançam o dimensionamento mantendo todos os dados de transação off-chain e apenas publicando compromissos do estado (e provas de validade) ao transmitir atualizações de estado para a cadeia principal do Ethereum. A existência de provas de validade, no entanto, dá aos validiums garantias de segurança mais elevadas do que outras soluções de dimensionamento off-chain puras, incluindo Plasma e [sidechains](/developers/docs/scaling/sidechains/). Ao reduzir a quantidade de dados que o Ethereum precisa processar antes de validar transações off-chain, os desenhos de validiums estendem muito a taxa de transferência na rede principal.
diff --git a/public/content/translations/pt-br/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/pt-br/developers/docs/scaling/zk-rollups/index.md
index 37733d00f40..d3346d0214c 100644
--- a/public/content/translations/pt-br/developers/docs/scaling/zk-rollups/index.md
+++ b/public/content/translations/pt-br/developers/docs/scaling/zk-rollups/index.md
@@ -1,6 +1,6 @@
---
title: Rollups de conhecimento zero
-description: "Uma introdução aos rollups de zero conhecimento: uma solução de dimensionamento usada pela comunidade Ethereum."
+description: 'Uma introdução aos rollups de zero conhecimento: uma solução de dimensionamento usada pela comunidade Ethereum.'
lang: pt-br
---
@@ -12,7 +12,7 @@ Você deve ler e entender mais sobre em nossa página [Ethereum scaling](/develo
## O que são rollups de conhecimento zero? {#what-are-zk-rollups}
-**Rollups de conhecimento zero (ZK-rollups)** agrupam (ou acumulam) transações em lotes que são executados off-chain. A computação off-chain reduz a quantidade de dados que devem ser publicados na blockchain. Operadores de ZK-rollups submetem um resumo das mudanças necessárias para representar todas as transações em um lote, ao invés de enviar cada transação individualmente. Eles também produzem [provas de validade](/glossary/#validity-proof) para provar a exatidão de suas mudanças. A prova de validade demonstra com certeza criptográfica que as alterações propostas para o estado do Ethereum são verdadeiramente o resultado final da execução de todas as transações do referido lote.
+**Rollups de conhecimento zero (ZK-rollups)** agrupam (ou acumulam) transações em lotes que são executados off-chain. A computação off-chain reduz a quantidade de dados que devem ser publicados na blockchain. Operadores de ZK-rollups submetem um resumo das mudanças necessárias para representar todas as transações em um lote, ao invés de enviar cada transação individualmente. Eles também produzem [provas de validade](/glossary/#validity-proof) para provar a exatidão de suas mudanças.
O estado dos ZK-rollups é mantido por um contrato inteligente implantado na rede Ethereum. Para atualizar este estado, os nós ZK-rollup devem enviar uma prova de validade para verificação. Como mencionado, a prova de validade é uma garantia criptográfica de que a mudança de estado proposta pelo rollup é realmente o resultado da execução de um determinado lote de transações. Isso significa que os ZK-rollups só precisam fornecer provas de validade para finalizar as transações no Ethereum, em vez de publicar todos os dados da transação on-chain, como [optimistic rollups](/developers/docs/scaling/optimistic-rollups/).
@@ -117,7 +117,7 @@ Antes de aceitar transações, o operador realizará as verificações habituais
Uma vez que o nó ZK-rollup tenha transações suficientes, ele as agrega em um lote e compila entradas para o circuito de prova para reunir em uma prova ZK sucinta. Isso pode incluir:
-- Uma árvore de Merkle composta de todas as transações no lote.
+- A Merkle tree root comprising all the transactions in the batch.
- Provas de Merkle de transações para provar a inclusão no lote.
- Provas de Merkle para cada par de destinatário-remetente em transações para provar que essas contas são parte da árvore de estado do rollup.
- Um conjunto de raízes de estado intermediárias, derivadas da atualização da raiz de estado após a aplicação de atualizações de estado para cada transação (ou seja, diminuindo as contas do remetente e aumentando as contas do destinatário).
@@ -232,13 +232,17 @@ Existem várias implementações de ZK-rollups que você pode integrar aos seus
Os projetos que trabalham em zkEVMs incluem:
-- **[ZKSync](https://docs.zksync.io/zkevm/)**: _o ZkSync 2.0 é um ZK-rollup compatível com EVM sendo desenvolvido pelo Matter Labs, com tecnologia de seu próprio zkEVM._
+- **[Applied ZKP](https://github.com/privacy-scaling-explorations/zkevm-specs)** — _Applied ZKP é um projeto financiado pela Ethereum Foundation para desenvolver um ZK-rollup compatível com EVM e um mecanismo para gerar provas de validade para blocos Ethereum._
-- **[Applied ZKP](https://github.com/privacy-scaling-explorations/zkevm-specs)**: _Applied ZKP é um projeto financiado pela Ethereum Foundation para desenvolver um ZK-rollup compatível com EVM e um mecanismo para gerar provas de validade para blocos Ethereum._
+- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** — _é um ZK-Rollup descentralizado na rede principal do Ethereum que trabalha em uma Máquina Virtual Ethereum de conhecimento zero (zkEVM) e executa transações do Ethereum de maneira transparente, incluindo contratos inteligentes com validações de prova de conhecimento._
- **[Scroll](https://scroll.io/blog/zkEVM)**: _Scroll é uma empresa impulsionada pela tecnologia que trabalha no desenvolvimento de uma solução nativa zkEVM de camada 2 para Ethereum._
-- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)**: _é um ZK-Rollup descentralizado na rede principal do Ethereum trabalhando em uma Máquina Virtual Ethereum de conhecimento zero (zkEVM) que executa transações Ethereum de maneira transparente, incluindo contratos inteligentes com validações de prova de conhecimento._
+- **[Taiko](https://taiko.xyz)** - _Taiko é um ZK-rollup descentralizado, equivalente ao Ethereum (um [ZK-EVM do Tipo 1](https://vitalik.ca/general/2022/08/04/zkevm.html))._
+
+- **[ZKSync](https://docs.zksync.io/zkevm/)** - _ZkSync Era is an EVM-compatible ZK Rollup built by Matter Labs, powered by its own zkEVM._
+
+- **[Starknet](https://starkware.co/starknet/)** - _StarkNet is an EVM-compatible layer 2 scaling solution built by StarkWare._
## Leitura adicional sobre leitura de ZK-rollups {#further-reading-on-zk-rollups}
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/compiling/index.md
index f5a47a51143..5fbdb5fe5fe 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/compiling/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/compiling/index.md
@@ -7,7 +7,7 @@ incomplete: true
Você precisa compilar seu contrato para que seu aplicativo web e a máquina virtual Ethereum (EVM) possam entendê-lo.
-## Pré-requisitos {#prerequisites}
+## Pré-requisitos {#prerequisites}
Você pode achar útil ler nossa introdução a [contratos inteligentes](/developers/docs/smart-contracts/) e a [máquina virtual Ethereum](/developers/docs/evm/) antes de ler sobre compilação.
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/composability/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/composability/index.md
index d892a3a401a..b13077b0510 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/composability/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/composability/index.md
@@ -45,13 +45,13 @@ Usaremos um exemplo de negociação de arbitragem para ilustrar os benefícios d
Se um token estiver sendo negociado mais alto na `troca A` do que na `troca B`, você pode aproveitar a diferença de preço para obter lucro. No entanto, você só pode fazer isso se tiver capital suficiente para financiar a transação (ou seja, comprar o token da `troca B` e vendê-lo na `troca A`).
-Em um cenário em que você não tem fundos suficientes para cobrir a negociação, um empréstimo rápido pode ser o ideal. Os [empréstimos relâmpagos](/defi/#flash-loans) são altamente técnicos, mas a ideia básica é que você pode emprestar ativos (sem garantias) e devolvê-los dentro de _uma_ transação.
+Em um cenário em que você não tem fundos suficientes para cobrir a negociação, um empréstimo rápido pode ser o ideal. Os [empréstimos relâmpagos](/defi/#flash-loans) são altamente técnicos, mas a ideia básica é que você pode emprestar ativos (sem garantias) e devolvê-los dentro de *uma* transação.
Voltando ao nosso exemplo inicial, um trader de arbitragem pode fazer um grande empréstimo relâmpago, comprar tokens da `troca B`, vendê-los na `troca A`, pagar o capital + juros, e manter o lucro, dentro da mesma transação. Essa lógica complexa requer a combinação de chamadas para vários contratos, o que não seria possível se os contratos inteligentes não tivessem interoperabilidade.
## Exemplos de composabilidade na Ethereum {#composability-in-ethereum}
-### Troca de tokens {#token-swaps}
+### Trocas de tokens {#token-swaps}
Se você criar um dapp que exige que as transações sejam pagas em ETH, você pode permitir que os usuários paguem em outros tokens ERC-20 integrando a lógica de troca de token. O código converterá automaticamente o token do usuário em ETH antes que o contrato execute a função chamada.
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/deploying/index.md
index ced3ed4ed9c..6b80a29a8b1 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/deploying/index.md
@@ -20,16 +20,14 @@ Finalmente, você precisará compilar seu contrato antes de implantá-lo, então
### O que você precisará {#what-youll-need}
-- bytecode do seu contrato - isto é gerado através da [compilação](/developers/docs/smart-contracts/compiling/).
+- Bytecode do seu contrato - isto é gerado através da [compilação](/developers/docs/smart-contracts/compiling/).
- Ether para gás – você definirá o seu limite de gás como outras transações, então esteja ciente de que a implantação do contrato precisa de muito mais gás do que uma simples transferência de ETH
- um script de implantação ou um plugin
-- acesso a um [nó Ethereum](/developers/docs/nodes-and-clients/), ou executando o seu próprio, conectando a um nó público, ou usando uma chave API usando um [serviço de nó](/developers/docs/nodes-and-clients/nodes-as-a-service/) como [Infura](https://www.infura.io/) ou [Alchemy](https://docs.alchemy.com/).
+- acesso a um [nó Ethereum](/developers/docs/nodes-and-clients/), executando o seu próprio, conectando a um nó público ou por meio de uma chave de API usando um [serviço de nó](/developers/docs/nodes-and-clients/nodes-as-a-service/)
### Como implantar um contrato inteligente {#steps-to-deploy}
-Os passos específicos envolvidos dependerão das ferramentas que você usa. Por exemplo, confira a [documentação de hardware sobre a implantação de seus contratos](https://hardhat.org/guides/deploying.html) ou [documentação do Truffle sobre redes e implantação de aplicativos](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment). Estas são duas das ferramentas mais populares para a implantação de contratos inteligentes, que envolvem a elaboração de um script para manipular as etapas de implementação.
-
-Uma vez implantado, o seu contrato terá um endereço Ethereum, como outras [contas](/developers/docs/accounts/).
+The specific steps involved will depend on the development framework in question. For example, you can check out [Hardhat's documentation on deploying your contracts](https://hardhat.org/guides/deploying.html) or [Foundry's documentation on deploying and verifying a smart contract](https://book.getfoundry.sh/forge/deploying). Once deployed, your contract will have an Ethereum address like other [accounts](/developers/docs/accounts/) and can be verified using [source code verification tools](/developers/docs/smart-contracts/verifying/#source-code-verification-tools).
## Ferramentas relacionadas {#related-tools}
@@ -51,27 +49,26 @@ Uma vez implantado, o seu contrato terá um endereço Ethereum, como outras [con
- [GitHub](https://github.com/nomiclabs/hardhat)
- [Discord](https://discord.com/invite/TETZs2KK4k)
-**Truffle -\*\***_Um ambiente de desenvolvimento, teste de framework, compilação e outras ferramentas._\*\*
+**thirdweb - _Implemente facilmente qualquer contrato em qualquer cadeia compatível com EVM, usando um único comando_**
-- [trufflesuite.com](https://www.trufflesuite.com/)
-- [Documentos em redes e implantação de aplicativos](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment)
-- [GitHub](https://github.com/trufflesuite/truffle)
+- [Documentação](https://portal.thirdweb.com/deploy/)
## Tutoriais relacionados {#related-tutorials}
-- [Implantando o seu primeiro contrato inteligente](/developers/tutorials/deploying-your-first-smart-contract/) _– Uma introdução à implantação do seu primeiro contrato inteligente em uma rede de teste da Ethereum._
-- [Hello World | tutorial para contrato inteligente](/developers/tutorials/hello-world-smart-contract/)_ - Um tutorial fácil de seguir para criar & implantar um contrato inteligente básico na Ethereum._
+- [Implementando o seu primeiro contrato inteligente](/developers/tutorials/deploying-your-first-smart-contract/) _– Uma introdução à implementação do seu primeiro contrato inteligente em uma rede de teste da Ethereum._
+- [Hello World | tutorial para contrato inteligente](/developers/tutorials/hello-world-smart-contract/)_ - Um tutorial fácil de seguir para criar & implementar um contrato inteligente básico na Ethereum._
- [Interaja com outros contratos da Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Como implantar um contrato inteligente a partir de um contrato existente e interagir com ele._
-- [Como diminuir o tamanho de seu contrato](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Como reduzir o tamanho do seu contrato para mantê-lo abaixo do limite e economizar gás_
+- [Como diminuir o tamanho de seu contrato](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Como reduzir o tamanho do seu contrato para mantê-lo abaixo do limite e economizar Gas_
## Leia mais {#further-reading}
- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
- [Implementando seus contratos com Hardhat](https://hardhat.org/guides/deploying.html) - _Nomic Labs_
-_Conhece um recurso da comunidade que o ajudou? Edite esta página e adicione-o!_
+_Conhece um recurso da comunidade que te ajudou? Edite essa página e adicione!_
## Tópicos relacionados {#related-topics}
- [Estruturas de desenvolvimento](/developers/docs/frameworks/)
- [Executando um nó Ethereum](/developers/docs/nodes-and-clients/run-a-node/)
+- [Nódulos como serviço](/developers/docs/nodes-and-clients/nodes-as-a-service)
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/formal-verification/index.md
index 492c21749f5..caf3accc009 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/formal-verification/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/formal-verification/index.md
@@ -212,16 +212,16 @@ Além disso, nem sempre é possível que os verificadores de programa determinem
### Linguagens de especificação para criação de especificações formais {#specification-languages}
-**Act**: \_\*O Act permite a especificação de atualizações de armazenamento, condições de pré/pós e invariáveis do contrato. Seu conjunto de ferramentas também tem backends capazes de comprovar muitas propriedades via Coq, solucionadores SMT, ou hevm.\*\*
+**Act**: _*O Act permite a especificação de atualizações de armazenamento, condições de pré/pós e invariáveis do contrato. Seu conjunto de ferramentas também tem backends capazes de comprovar muitas propriedades via Coq, solucionadores SMT, ou hevm.*_
- [GitHub](https://github.com/ethereum/act)
- [Documentação](https://ethereum.github.io/act/)
-**Scribble** - \_\*Scribble transforma anotações de código na linguagem de especificação Scribble em afirmações concretas que verificam a especificação.\*\*
+**Scribble** - _*Scribble transforma anotações de código na linguagem de especificação Scribble em afirmações concretas que verificam a especificação.*_
- [Documentação](https://docs.scribble.codes/)
-**Dafny** - \_\*Dafny é uma linguagem de programação pronta para verificação que depende de anotações de alto nível para argumentar e comprovar a exatidão do código.\*\*
+**Dafny** - _*Dafny é uma linguagem de programação pronta para verificação que depende de anotações de alto nível para argumentar e comprovar a exatidão do código.*_
- [GitHub](https://github.com/dafny-lang/dafny)
@@ -232,15 +232,15 @@ Além disso, nem sempre é possível que os verificadores de programa determinem
- [Site](https://www.certora.com/)
- [Documentação](https://docs.certora.com/en/latest/index.html)
-**Solidity SMTChecker** - \_\*Solidity’s SMTChecker é um verificador de modelos integrado com base no SMT (Teorias do Módulo de Satisfiabilidade) e na resolução de Horn. Ele confirma se o código-fonte de um contrato corresponde às especificações durante a compilação e procura estaticamente por violações de propriedades de segurança.\*\*
+**Solidity SMTChecker** - _*Solidity’s SMTChecker é um verificador de modelos integrado com base no SMT (Teorias do Módulo de Satisfiabilidade) e na resolução de Horn. Ele confirma se o código-fonte de um contrato corresponde às especificações durante a compilação e procura estaticamente por violações de propriedades de segurança.*_
- [GitHub](https://github.com/ethereum/solidity)
-**solc-verify** - \_\*solc-verify é uma versão estendida do compilador Solidity que pode executar a verificação formal automatizada no código Solidity usando anotações e verificação de programa modular.\*\*
+**solc-verify** - _*solc-verify é uma versão estendida do compilador Solidity que pode executar a verificação formal automatizada no código Solidity usando anotações e verificação de programa modular.*_
- [GitHub](https://github.com/SRI-CSL/solidity)
-**KEVM** - \_\*KEVM é uma semântica formal da Máquina Virtual Ethereum (EVM) escrita no framework K. KEVM é executável e pode comprovar determinadas declarações relacionadas à propriedade usando a lógica de alcançabilidade.\*\*
+**KEVM** - _*KEVM é uma semântica formal da Máquina Virtual Ethereum (EVM) escrita no framework K. KEVM é executável e pode comprovar determinadas declarações relacionadas à propriedade usando a lógica de alcançabilidade.*_
- [GitHub](https://github.com/runtimeverification/evm-semantics)
- [Documentação](https://jellopaper.org/)
@@ -259,12 +259,12 @@ Além disso, nem sempre é possível que os verificadores de programa determinem
### Ferramentas de execução simbólica para detectar padrões vulneráveis em contratos inteligentes {#symbolic-execution-tools}
-**Manticore** - \__Uma ferramenta para analisar a ferramenta de análise de bytecode EVM com base em execução simbólica_.\*
+**Manticore** - _*Uma ferramenta para analisar a ferramenta de análise de bytecode EVM com base em execução simbólica.*_
- [GitHub](https://github.com/trailofbits/manticore)
- [Documentação](https://github.com/trailofbits/manticore/wiki)
-**hevm** - \_\*hevm é um mecanismo de execução simbólico e um verificador de equivalência para bytecode EVM.\*\*
+**hevm** - _*hevm é um mecanismo de execução simbólico e um verificador de equivalência para bytecode EVM.*_
- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm)
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/index.md
index 282d4433f53..c6e5da0801b 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/index.md
@@ -66,7 +66,7 @@ De maneira similar a como uma máquina de venda automática elimina a necessidad
## Sem necessidade de permissão {#permissionless}
-Qualquer um pode escrever um contrato inteligente e implantá-lo na rede. Você só precisa aprender a codificar em uma [linguagem de contrato inteligente](/developers/docs/smart-contracts/languages/) e ter ETH suficiente para implantar seu contrato. A implantação de um contrato inteligente é tecnicamente uma transação, portanto, você precisa pagar [Gas](/developers/docs/gas/) da mesma forma que precisa pagar gás por uma simples transferência de ETH. No entanto, os custos de gás para implantação de contrato são muito mais altos.
+Qualquer um pode escrever um contrato inteligente e implantá-lo na rede. Você só precisa aprender a codificar em uma [linguagem de contrato inteligente](/developers/docs/smart-contracts/languages/) e ter ETH suficiente para implantar seu contrato. A implantação de um contrato inteligente é tecnicamente uma transação, portanto, você precisa pagar o [gás](/developers/docs/gas/) da mesma forma que precisa pagar o Gas por uma simples transferência de ETH. No entanto, os custos de gás para implantação de contrato são muito mais altos.
A Ethereum tem linguagens que o desenvolvedor terá facilidade de usar para escrever contratos inteligentes:
@@ -85,9 +85,9 @@ Saiba mais sobre a [composição do contrato inteligente](/developers/docs/smart
## Limitações {#limitations}
-Os contratos inteligentes, por si só, não conseguem obter informações sobre eventos do "mundo-real" porque não podem enviar solicitações HTTP. Isto é por concepção. A sua concepção é a de que as informações externas podem pôr em causa o consenso, que é importante para a segurança e a descentralização.
+Os contratos inteligentes sozinhos não podem obter informações sobre eventos do "mundo real", porque não podem recuperar dados de fontes off-chain. Isso significa que eles não podem responder a eventos no mundo real. Isto é, por concepção. A sua concepção é a de que as informações externas podem pôr em causa o consenso, que é importante para a segurança e a descentralização.
-Há maneiras de contornar isso usando [oráculos](/developers/docs/oracles/).
+No entanto, é importante que aplicações blockchain possam usar dados off-chain. A solução são os [oráculos](/developers/docs/oracles/), que são instrumentos que ingerem dados off-chain e os disponibilizam para contratos inteligentes.
Outra limitação de contratos inteligentes é o tamanho máximo do contrato. Um contrato inteligente pode ser um máximo de 24KB ou ficará sem gás. Isso pode ser contornado usando [O Padrão de Diamante](https://eips.ethereum.org/EIPS/eip-2535).
@@ -103,13 +103,8 @@ Os contratos multisig (com múltiplas assinaturas) são contas de contrato intel
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [Fórum da Comunidade](https://forum.openzeppelin.com/c/general/16)
-**DappSys -** **_Blocos de código seguros, simples e flexíveis para contratos inteligentes._**
-
-- [Dappsys](https://dappsys.readthedocs.io/)
-- [GitHub](https://github.com/dapphub/dappsys)
-
## Leitura adicional {#further-reading}
-- [Contratos Inteligentes: A Tecnologia Blockchain que substituirá Advogados](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_
-- [Melhores Práticas para Desenvolvimento de Contrato Inteligente](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 10 de Novembro de 2019 - Yos Riady_
-- [Contratos claros - um guia sobre padrões de contrato inteligente & práticas](https://www.wslyvh.com/clean-contracts/) _– Jul 30 2020 - wslyvh_
+- [Coinbase: O que é um contrato inteligente?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
+- [Chainlink: O que é um contrato inteligente?](https://chain.link/education/smart-contracts)
+- [Vídeo: Simplesmente Explicado - Contratos Inteligentes](https://youtu.be/ZE2HxTmxfrI)
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/languages/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/languages/index.md
index 2e1d944815c..5e0177ca32e 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/languages/index.md
@@ -35,7 +35,7 @@ Conhecimento anterior de linguagens de programação, especialmente de JavaScrip
- [Portal da linguagem Solidity](https://soliditylang.org/)
- [Solidity como exemplo](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
- [GitHub](https://github.com/ethereum/solidity/)
-- [Solidity Gitter Chatroom](https://gitter.im/ethereum/solidity) ponte para [Solidity Matrix Chatroom](https://matrix.to/#/#ethereum_solidity:gitter.im)
+- [Solidity Gitter Chatroom](https://gitter.im/ethereum/solidity/) ponte para [Solidity Matrix Chatroom](https://matrix.to/#/#ethereum_solidity:gitter.im)
- [Dicas](https://reference.auditless.com/cheatsheet)
- [Blog da Solidity](https://blog.soliditylang.org/)
- [Solidity Twitter](https://twitter.com/solidity_lang)
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/libraries/index.md
index 2986d153316..a017c2ac84a 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/libraries/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/libraries/index.md
@@ -16,7 +16,7 @@ Geralmente, você pode encontrar dois tipos de blocos de construção em bibliot
### Comportamentos {#behaviors}
-Ao escrever contratos inteligentes, há uma boa chance de você escrever padrões semelhantes repetidamente, como atribuir um endereço de administrador \__ para realizar operações protegidas em um contrato, ou adicionando um botão de emergência \_pause_ em caso de um problema inesperado.
+Ao escrever contratos inteligentes, há uma boa chance de você escrever padrões semelhantes repetidamente, como atribuir um endereço de administrador __ para realizar operações protegidas em um contrato, ou adicionando um botão de emergência _pause_ em caso de um problema inesperado.
As bibliotecas inteligentes de contratos geralmente fornecem implementações reutilizáveis destes comportamentos como [bibliotecas](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) ou via [herança](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) em Solidity.
@@ -102,6 +102,11 @@ Por último, ao decidir se deve incluir uma biblioteca, considere a sua utiliza
- [GitHub](https://github.com/HQ20/contracts)
+**thirdweb Solidity SDK -** **_Fornece as ferramentas necessárias para criar contratos inteligentes e personalizados com eficiência_**
+
+- [Documentação](https://portal.thirdweb.com/solidity/)
+- [GitHub](https://github.com/thirdweb-dev/contracts)
+
## Tutoriais relacionados {#related-tutorials}
- [Considerações de segurança para os desenvolvedores da Ethereum](/developers/docs/smart-contracts/security/) _– Um tutorial sobre considerações de segurança ao criar contratos inteligentes, incluindo o uso da biblioteca._
@@ -109,4 +114,4 @@ Por último, ao decidir se deve incluir uma biblioteca, considere a sua utiliza
## Leitura adicional {#further-reading}
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece um recurso da comunidade que te ajudou? Edite essa página e adicione!_
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/security/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/security/index.md
index daf7a2f23bf..0a1a5d2f798 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/security/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/security/index.md
@@ -470,13 +470,13 @@ Se você planeja consultar um oráculo on-chain para preços de ativos, consider
### Ferramentas para monitorar contratos inteligentes {#smart-contract-monitoring-tools}
-- **[OpenZeppelin Defender Sentinels](https://docs.openzeppelin.com/defender/sentinel)** - _Uma ferramenta para monitorar e responder automaticamente a eventos, funções e parâmetros de transação em seus contratos inteligentes._
+- **[OpenZeppelin Defender Sentinels](https://docs.openzeppelin.com/defender/v1/sentinel)** - _Uma ferramenta para monitorar e responder automaticamente a eventos, funções e parâmetros de transação em seus contratos inteligentes._
- **[Alerta leve e em tempo real](https://tenderly.co/alerting/)** - _Uma ferramenta para receber notificações em tempo real quando eventos incomuns ou inesperados acontecem em seus contratos inteligentes ou carteiras._
### Ferramentas para administração segura de contratos inteligentes {#smart-contract-administration-tools}
-- **[Administrador do OpenZeppelin Defender](https://docs.openzeppelin.com/defender/admin)** - _Interface para gerenciar a administração de contrato inteligente, incluindo controles de acesso, atualizações e pausas._
+- **[Administrador do OpenZeppelin Defender](https://docs.openzeppelin.com/defender/v1/admin)** - _Interface para gerenciar a administração de contrato inteligente, incluindo controles de acesso, atualizações e pausas._
- **[Safe](https://safe.global/)** - _Carteira de contrato inteligente em execução na Ethereum, que requer um número mínimo de pessoas para aprovar uma transação antes que ela possa ocorrer (M-de-N)._
@@ -504,6 +504,8 @@ Se você planeja consultar um oráculo on-chain para preços de ativos, consider
- **[HashEx](https://hashex.org/)** – _O HashEx se dedica a blockchain e auditoria de contrato inteligente para garantir a segurança de criptomoedas, fornecendo serviços como desenvolvimento de contrato inteligente, teste de penetração e consultoria em blockchain._
+- **[Code4rena](https://code4rena.com/)** - _Plataforma de auditoria competitiva que incentiva especialistas em segurança de contratos inteligentes a encontrar vulnerabilidades e ajudar a tornar a web3 mais segura._
+
### Plataformas de recompensa de bugs {#bug-bounty-platforms}
- **[Immunefi](https://immunefi.com/)** - _Plataforma de recompensa por bugs para contratos inteligentes e projetos DeFi, onde os pesquisadores de segurança revisam o código, divulgam vulnerabilidades, recebem pagamentos e tornam a criptografia mais segura._
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/testing/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/testing/index.md
index fa18a71775e..12fb8e32535 100644
--- a/public/content/translations/pt-br/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/testing/index.md
@@ -1,265 +1,299 @@
---
title: Testes de contratos inteligentes
-description: Uma visão geral das técnicas e considerações para testar contratos inteligentes Ethereum
+description: Uma visão geral das técnicas e considerações para testar contratos inteligentes Ethereum.
lang: pt-br
---
-Testar [contratos inteligentes](/developers/docs/smart-contracts/) é uma das mais importantes medidas para melhorar a [segurança do contrato inteligente](/developers/docs/smart-contracts/security/). Ao contrário do software tradicional, os contratos inteligentes normalmente não podem ser atualizados após o lançamento, tornando imperativo testar rigorosamente antes de implantar contratos na rede Ethereum.
+Blockchains públicas como Ethereum são imutáveis, dificultando alterações de código de contratos inteligentes após sua implementação. Existem [padrões de atualização de contrato](/developers/docs/smart-contracts/upgrading/) para realizar "atualizações virtuais", mas são difíceis de implementar e requer um consenso social. Além disso, uma atualização só pode corrigir um erro _após_ que é descoberto se um invasor descobrir a vulnerabilidade primeiro, seu contrato inteligente corre o risco sofrer um exploit.
-## O que é teste de contrato inteligente? {#what-is-smart-contract-testing}
-
-Teste de contrato inteligente significa realizar uma análise e avaliação detalhada de um contrato inteligente para avaliar a qualidade de seu código-fonte durante o ciclo de desenvolvimento. Testar um contrato inteligente facilita a identificação de bugs e vulnerabilidades, e reduz a possibilidade de erros de software que podem levar a onerosas explorações.
+Por estas razões, testar contratos inteligentes antes de [implementar](/developers/docs/smart-contracts/deploying/) à rede principal é o requisito mínimo para [segurança](/developers/docs/smart-contracts/security/). Existem muitas técnicas para testar contratos e avaliar a corretude de código; qual escolher depende de suas necessidades. No entanto, um conjunto de testes feito a partir de diferentes ferramentas e abordagens é ideal para pegar pequenas e grandes falhas de segurança no código do contrato.
-O teste de contrato inteligente assume muitas formas, com diferentes métodos oferecendo benefícios. As estratégias para testar contratos inteligentes da Ethereum podem ser classificadas em duas grandes categorias: **teste automatizado** e **teste manual**.
+## Pré-requisitos {#prerequisites}
-### Teste automatizado {#automated-testing}
+Esta página explica como testar contratos inteligentes antes de implantar na rede Ethereum. Pressupõe-se que você esteja familiarizado com [contratos inteligentes](/developers/docs/smart-contracts/).
-O teste automatizado envolve o uso de ferramentas automatizadas para realizar testes com script de contratos inteligentes. Essa técnica depende de software automatizado que pode executar testes repetidos para encontrar defeitos em contratos inteligentes.
+## O que é teste de contrato inteligente? {#what-is-smart-contract-testing}
-O teste automatizado é eficiente, usa menos recursos e promete níveis mais altos de cobertura do que a análise manual. As ferramentas de teste automatizadas também podem ser configuradas com dados de teste, permitindo-lhes comparar comportamentos previstos com resultados reais.
+O teste de contrato inteligente é o processo de verificação de que o código de um contrato inteligente funciona conforme o esperado. Testar é útil para verificar se um contrato inteligente específico atende aos requisitos de confiabilidade, usabilidade e segurança.
-### Teste manual {#manual-testing}
+Embora as abordagens variem, a maioria dos métodos de teste exige a execução de um contrato inteligente com uma pequena amostra dos dados que se espera manipular. Se o contrato produzir resultados corretos para dados da amostra, presume-se que esteja funcionando corretamente. A maioria das ferramentas de teste fornece recursos para escrever e executar [casos de teste](https://en.m.wikipedia.org/wiki/Test_case) para verificar se a execução de um contrato corresponde aos resultados esperados.
-O teste manual é auxiliado por humanos e envolve um indivíduo que executa as etapas de teste manualmente. As auditorias de código, em que desenvolvedores e/ou auditores examinam cada linha de código do contrato, é um exemplo de teste manual para contratos inteligentes.
+### Por que é importante testar contratos inteligentes? {#importance-of-testing-smart-contracts}
-O teste manual de contratos inteligentes requer habilidade considerável e um investimento considerável de tempo, dinheiro e esforço. Além disso, o teste manual às vezes pode ser suscetível a problemas de erro humano.
+Como os contratos inteligentes geralmente gerenciam ativos financeiros de alto valor, pequenos erros de programação podem e geralmente levam a [perdas massivas para os usuários](https://rekt.news/leaderboard/). Rigorous testing can, however, help you discover defects and issues in a smart contract's code early and fix them before launching on Mainnet.
-Entretanto, aplicar testes manuais a contratos inteligentes também pode ser benéfico. As auditorias de código aproveitam a inteligência humana para encontrar defeitos no código do contrato que podem não ser detectados durante os testes automatizados.
+Embora seja possível atualizar um contrato se um bug for descoberto, as atualizações são complexas e podem [ resultar em erros](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) se tratadas de forma inadequada. A atualização de um contrato vai contra o princípio da imutabilidade e sobrecarrega os usuários com suposições de confiança adicionais. Por outro lado, um plano abrangente para testar seu contrato reduz os riscos de segurança do contrato inteligente e reduz a necessidade de realizar atualizações lógicas complexas após a implantação.
-O teste manual de seus contratos inteligentes também pode revelar vulnerabilidades que existem fora do código, mas ainda podem afetá-lo. Por exemplo, uma auditoria de contrato inteligente pode descobrir vulnerabilidades decorrentes da interação inadequada com componentes off-chain.
+## Métodos para testar contratos inteligentes {#methods-for-testing-smart-contracts}
-## Por que é importante testar contratos inteligentes? {#benefits-of-smart-contract-testing}
+Methods for testing Ethereum smart contracts fall under two broad categories: **automated testing** and **manual testing**. Testes automatizados e testes manuais tem seus prós e contras, mas você pode combinar ambos para criar um plano robusto para analisar seus contratos.
-Testar contratos inteligentes é importante pelos seguintes motivos:
+### Teste automatizado {#automated-testing}
-### 1. Contratos inteligentes são aplicativos de alto valor {#smart-contracts-are-high-value-applications}
+O teste automatizado usa ferramentas que verificam automaticamente um código de contratos inteligentes em busca de erros na execução. O benefício do teste automatizado vem do uso de [scripts](https://www.techtarget.com/whatis/definition/script?amp=1) para orientar a avaliação das funcionalidades do contrato. Os scripts de testes podem ser programados para serem executados repetidamente com o mínimo de intervenção humana, tornando o teste automatizado mais eficiente do que as abordagens manuais de teste.
-Contratos inteligentes geralmente lidam com ativos financeiros de alto valor, especialmente em setores como [finanças descentralizadas (DeFi)](/defi/) e itens valiosos, como [tokens não fungíveis (NFTs)](/nft/). Como tal, pequenas vulnerabilidades em contratos inteligentes podem e geralmente levam a perdas maciças e irrecuperáveis para os usuários. Testes abrangentes podem, no entanto, expor erros no código do contrato inteligente e reduzir os riscos de segurança antes da implantação.
+O teste automatizado é particularmente útil quando os testes são repetitivos e demorados; difícil de realizar manualmente; suscetíveis a erro humano; ou envolvem a avaliação de funções contratuais críticas. Mas as ferramentas de teste automatizadas podem ter desvantagens - elas podem perder certos bugs e produzir muitos [falsos positivos](https://www.contrastsecurity.com/glossary/false-positive). Portanto, combinar testes automatizados com testes manuais para contratos inteligentes é ideal.
-### 2. Contratos inteligentes são imutáveis {#smart-contracts-are-immutable}
+### Teste manual {#manual-testing}
-Os contratos inteligentes implantados na [Ethereum Virtual Machine (EVM)](/developers/docs/evm/) são imutáveis por padrão. Enquanto os desenvolvedores tradicionais podem ser usados para corrigir bugs de software após o lançamento, o desenvolvimento da Ethereum deixa pouco espaço para corrigir falhas de segurança uma vez que um contrato inteligente está ativo na blockchain.
+O teste manual é auxiliado por humanos e envolve a execução de cada caso de teste em seu conjunto de testes, um após o outro, ao analisar a corretude de um contrato inteligente. Isso é diferente do teste automatizado, no qual você pode executar simultaneamente vários testes isolados em um contrato e obter um relatório mostrando todos os testes que falharam e os que foram aprovados.
-Embora existam mecanismos de atualização para contratos inteligentes, como padrões de proxy, estes podem ser difíceis de implementar. Além de reduzir a imutabilidade e introduzir complexidade, as atualizações geralmente exigem processos de governança complexos.
+O teste manual pode ser realizado por um único indivíduo seguindo um plano de teste escrito que cobre diferentes cenários de teste. Você também pode ter vários indivíduos ou grupos interagindo com um contrato inteligente durante um período especificado como parte do teste manual. Os testadores compararão o comportamento real do contrato com o comportamento esperado, sinalizando qualquer diferença como um bug.
-Na maioria das vezes, as atualizações devem ser consideradas o último recurso e evitadas, a menos que sejam necessárias. A detecção de potenciais vulnerabilidades e falhas em seu contrato inteligente durante a fase de pré-lançamento reduz a necessidade de uma atualização lógica.
+Um teste manual eficaz requer recursos consideráveis (habilidade, tempo, dinheiro e esforço) e é possível, devido a erro humano, perder certos erros durante a execução dos testes. Mas o teste manual também pode ser benéfico - por exemplo, um testador humano (por exemplo, um auditor) pode usar a intuição para detectar casos extremos que uma ferramenta de teste automatizada perderia.
## Teste automatizado para contratos inteligentes {#automated-testing-for-smart-contracts}
-### 1. Teste funcional {#functional-testing}
+### Teste unitário {#unit-testing-for-smart-contracts}
-Testes funcionais verifica a funcionalidade de um contrato inteligente e fornece garantia de que cada função no código funciona conforme o esperado. Teste funcional requer entender como seu contrato inteligente deve se comportar em determinadas condições. Em seguida, você pode testar cada função executando cálculos com valores selecionados e comparando a saída retornada com a saída esperada.
+O teste unitário avalia as funções do contrato separadamente e verifica se cada componente funciona corretamente. Testes unitários bons devem ser simples, rápidos de executar e fornecer uma ideia clara do que deu errado se os testes falharem.
-Testes funcionais abrange três métodos: **teste unitário**, **teste de integração**, e **teste de sistema**.
+Os testes unitários são úteis para verificar se as funções retornam os valores esperados e se o armazenamento do contrato é atualizado corretamente após a execução da função. Além disso, a execução de testes unitários após fazer alterações em uma base de código de contratos garante que a adição de nova lógica não introduza erros. Abaixo estão algumas diretrizes para executar testes unitários eficazes:
-#### Teste unitário
+#### Diretrizes para testes unitários de contratos inteligentes {#unit-testing-guidelines}
-Teste unitário envolve testar componentes individuais em um contrato inteligente para correção. Um teste unitário é simples, rápido de executar e fornece uma ideia clara do que deu errado se o teste falhar.
+##### 1. Entenda a lógica de negócios e o fluxo de trabalho de seus contratos
-Testes unitário são cruciais para o desenvolvimento de contratos inteligentes, especialmente se você precisar adicionar uma nova lógica ao código. Você pode verificar o comportamento de cada função e confirmar que ela é executada como esperado.
+Antes de escrever testes unitários, é bom saber quais funcionalidades um contrato inteligente oferece e como os usuários acessarão e usarão essas funções. Isso é particularmente útil para executar [testes de caminho feliz](https://en.m.wikipedia.org/wiki/Happy_path) que determinam se as funções em um contrato retornam a saída correta para entradas válidas do usuário. Explicaremos esse conceito usando este exemplo (resumido) de [um contrato de leilão](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction)
-Executar um teste unitário muitas vezes requer criar _asserções_— simples e informais instruções especificando requisitos para um contrato inteligente. Testes unitários podem então ser usados para testar cada asserção e ver se ela se mantém verdadeira sob execução.
+```
+constructor(
+ uint biddingTime,
+ address payable beneficiaryAddress
+ ) {
+ beneficiary = beneficiaryAddress;
+ auctionEndTime = block.timestamp + biddingTime;
+ }
-Exemplos de asserções relacionadas a contratos incluem:
+function bid() external payable {
-i. Somente o administrador pode pausar o contrato
+ if (block.timestamp > auctionEndTime)
+ revert AuctionAlreadyEnded();
-ii. "Não administradores não podem cunhar novos tokens"
+ if (msg.value <= highestBid)
+ revert BidNotHighEnough(highestBid);
-iii. "O contrato reverte em erros"
+ if (highestBid != 0) {
+ pendingReturns[highestBidder] += highestBid;
+ }
+ highestBidder = msg.sender;
+ highestBid = msg.value;
+ emit HighestBidIncreased(msg.sender, msg.value);
+ }
-#### Teste de Integração
+ function withdraw() external returns (bool) {
+ uint amount = pendingReturns[msg.sender];
+ if (amount > 0) {
+ pendingReturns[msg.sender] = 0;
-O teste de integração é um nível superior ao dos testes unitários na hierarquia de testes. Em testes de integração, os componentes individuais do contrato inteligente são testados juntos.
+ if (!payable(msg.sender).send(amount)) {
+ pendingReturns[msg.sender] = amount;
+ return false;
+ }
+ }
+ return true;
+ }
-Esta abordagem detecta erros decorrentes de interações entre diferentes componentes de um contrato ou em vários contratos. Você deve usar este método se você tiver um contrato complexo com várias funções ou um que interfaces com outros contratos.
+function auctionEnd() external {
+ if (block.timestamp < auctionEndTime)
+ revert AuctionNotYetEnded();
+ if (ended)
+ revert AuctionEndAlreadyCalled();
-Testes de integração podem ser úteis para garantir que coisas como a [herança](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) e a injeção de dependência funcionem corretamente.
+ ended = true;
+ emit AuctionEnded(highestBidder, highestBid);
-#### Teste de sistema
+ beneficiary.transfer(highestBid);
+ }
+}
+```
-Os testes do sistema são a fase final dos testes funcionais de contratos inteligentes. Um sistema avalia o contrato inteligente como um produto totalmente integrado para ver se ele executa conforme especificado nos requisitos técnicos.
+Este é um contrato de leilão simples projetado para receber lances durante o período de submissão de ofertas. Se a variável `highestBid` aumentar, o licitante anterior mais alto receberá seu dinheiro; uma vez terminado o período de licitação, o objeto `beneficiary` aciona o contrato para obter seu dinheiro.
-Você pode pensar neste estágio como verificar o fluxo de ponta a ponta do seu contrato inteligente do ponto de vista do usuário. Uma boa maneira de realizar testes de sistema em um contrato inteligente é implementá-lo em um ambiente semelhante a produção, como uma [testnet](/developers/docs/networks/#ethereum-testnets) ou uma [rede de desenvolvimento](/developers/docs/development-networks/).
+Testes unitários para um contrato como este cobriria diferentes funções que um usuário poderia chamar quando interagindo com o contrato. Um exemplo seria um teste unitário que checa se o usuário pode colocar uma ordem enquanto o leilão está em andamento (ou seja, chamadas para `bid()` com sucesso) ou checar se um usuário pode colocar uma ordem mais alta que o atual `highestBid`.
-Aqui, os usuários finais podem realizar o teste são executados e relatar quaisquer problemas com a lógica de negócios do contrato e a funcionalidade no geral. O teste do sistema é importante porque você não pode alterar o código uma vez que o contrato é implantado no ambiente EVM principal.
+Entendendo o fluxo operacional do contrato também ajuda a escrever testes unitários que checam se a execução atende os requisitos. Por exemplo, o contrato de leilão especifica que os usuários não podem colocar ordens quando o leilão terminou (ou seja, quando `auctionEndTime` é menor que `block.timestamp`). Portanto, o desenvolvedor deve rodar um teste unitário que checa se chamadas para a função `bid()` tiveram sucesso ou falharam quando o leilão terminou (ou seja, quando `auctionEndTime` > `block.timestamp`).
-### 2. Análise estática/dinâmica {#static-dynamic-analysis}
+##### 2. Avalie todas as suposições relacionadas à execução do contrato
-Análise estática e análise dinâmica são dois métodos automatizados de teste para avaliar as qualidades de segurança dos contratos inteligentes. No entanto, ambas as técnicas utilizam diferentes abordagens para encontrar defeitos no código de contratos.
+É importante documentar quaisquer suposições sobre a execução do contrato e escrever testes unitários para verificar a validade destas suposições. Além de oferecer proteção contra execução inesperada, testar afirmações força você a pensar sobre operações que poderiam quebrar o modelo de segurança do contrato inteligente. Uma dica útil é ir além dos "testes do usuário feliz" e escrever testes negativos que checam se a função falha com as entradas erradas.
-#### Análise estática
+Muitos frameworks de teste unitário permitem você criar afirmações - simples declarações que declaram o que um contrato pode e não pode fazer - e rodar testes para ver se estas afirmações funcionam durante a execução. Um desenvolvedor trabalhando no contrato de leilão descrito anteriormente poderia fazer as seguintes afirmações sobre o seu comportamento antes de rodar testes negativos:
-Análise estática examina o código-fonte ou bytecode de um contrato inteligente antes da execução. Isso significa que você pode depurar código de contrato sem na verdade executar o programa. Os analistas estáticos podem detectar vulnerabilidades comuns nos contratos inteligentes da Ethereum e ajudar na conformidade com as melhores práticas.
+- Usuários não podem colocar ordens quando o leilão acabou ou não começou.
-#### Análise dinâmica
+- O contrato de leilão reverte se a ordem é abaixo do limite aceitável.
-Técnicas de análise dinâmicas requerem a execução do contrato inteligente em um ambiente de tempo de execução para identificar problemas no seu código. Analisadores de código dinâmicos observam os comportamentos dos contratos durante a execução e geram um relatório detalhado de vulnerabilidades identificadas e violações de propriedades.
+- Usuários que falham em vencer o leilão são creditados com seus fundos
-A difusão é um exemplo de uma técnica de análise dinâmica para testar os contratos. Durante os testes de difusão, um difusor alimenta seu contrato inteligente com dados incorretos e inválidos e monitora como o contrato responde a essas entradas.
+**Nota**: Uma outra maneira de testar suposições é escrever testes que disparam [modificadores de função](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) em um contrato, especialmente declarações`require`, `assert`, e `if…else`.
-Como qualquer programa, os contratos inteligentes dependem de entradas fornecidas pelos usuários para executar funções. E, enquanto assumimos que os usuários fornecerão entradas corretas, nem sempre esse é o caso.
+##### 3. Medida de cobertura do código
-Em alguns casos, enviar valores de entrada incorretos para um contrato inteligente pode causar vazamentos de recursos, falhas ou piores, levar à execução de código não pretendida. Campanhas difusas identificam tais problemas previamente, permitindo que você elimine a vulnerabilidade.
+[Cobertura de código](https://en.m.wikipedia.org/wiki/Code_coverage) é uma métrica de teste que rastreia o número de ramificações, linhas e comandos no seu código executados durante os testes. Testes devem ter boa cobertura de código, caso contrário você pode ter "falsos negativos" que acontecem quando um contrato passa todos os testes, mas vulnerabilidades ainda existem no código. Obtendo alta cobertura de código, entretanto, dá a segurança que todos os comandos/funções em um contrato inteligente foram suficientemente testados por exatidão.
-## Testes manuais para contratos inteligentes {#manual-testing-for-smart-contracts}
+##### 4. Use frameworks de teste bem desenvolvidos
-### 1. Auditorias de código {#code-audits}
+A qualidade das ferramentas usada para rodar testes unitários para o seu contrato inteligente é crucial. Um framework de teste ideal é aquele que é regularmente mantido; fornece recursos úteis (por exemplo, capacidades de log e relatórios); e tem de ter sido extensivamente usado por outros desenvolvedores.
-Uma auditoria de código é uma avaliação detalhada do código-fonte de um contrato inteligente para descobrir possíveis falhas de pontos, falhas de segurança e práticas de desenvolvimento ruins. Embora as auditorias de código possam ser automatizadas, nos referimos à análise de código com ajuda humana.
+Frameworks de teste unitário para contratos inteligentes em Solidity vêm em diferentes linguagens (geralmente JavaScript, Python e Rust). Veja alguns dos guias abaixo para informações sobre como começar a rodar testes unitários com diferentes frameworks de teste:
-Auditorias de código requerem uma mentalidade de invasor para mapear possíveis vetores de ataque em contratos inteligentes. Mesmo se você executar auditorias automatizadas, analisar cada linha de código-fonte é um requisito mínimo para escrever contratos inteligentes seguros.
+- **[Rodando testes unitários com Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)**
+- **[Rodando testes unitários com Foundry](https://book.getfoundry.sh/forge/writing-tests)**
+- **[Rodando testes unitários com Waffle](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)**
+- **[Rodando testes unitários com Remix](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)**
+- **[Rodando testes unitários com Ape](https://docs.apeworx.io/ape/stable/userguides/testing.html)**
+- **[Rodando testes unitários com Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)**
-Você também pode encomendar uma auditoria de segurança para dar aos usuários maiores garantias de segurança dos contratos inteligentes. Auditorias se beneficiam de uma análise extensiva realizada por profissionais de cibersegurança e detectam possíveis vulnerabilidades ou bugs que possam comprometer a funcionalidade do contrato inteligente.
+### Teste de Integração {#integration-testing-for-smart-contracts}
-### 2. Recompensa por bugs {#bug-bounties}
+Enquanto o teste unitário depura funções de contrato isoladamente, testes integrados avaliam os componentes de um contrato inteligente como um todo. Teste de integração pode detectar defeitos vindos de chamadas entre contratos ou interações entre diferentes funções no mesmo contrato inteligente. Por exemplo, testes de integração podem ajudar a checar se coisas como [herança](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) e injeção de dependência funcionam devidamente.
-A recompensa por bugs é uma reconhecimento financeiro dado a um indivíduo que descobre uma vulnerabilidade ou bug no código de um programa e reporta aos desenvolvedores. As recompensas por bugs são semelhantes às auditorias, uma vez que envolve pedir que outras pessoas ajudem a encontrar defeitos em contratos inteligentes. A principal diferença é que os programas de recompensas por bugs estão abertos para uma comunidade mais ampla de desenvolvedores/hacker.
+Teste de integração é útil se o seu contrato adota uma arquitetura modular ou interfaces com outros contratos on-chain durante a execução. One way of running integration tests is to [fork the blockchain](/glossary/#fork) at a specific height (using a tool like [Forge](https://book.getfoundry.sh/forge/fork-testing) or [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) and simulate interactions between your contract and deployed contracts.
-Programas de recompensa por bugs frequentemente atraem uma ampla classe de hackers éticos e profissionais de segurança independentes com habilidades e experiência exclusivas. Isso pode ser uma vantagem em relação às auditorias de contratos inteligentes, que dependem principalmente de equipes que podem possuir conhecimentos especializados limitados ou estreitos.
+O blockchain que sofreu fork irá se comportar similarmente à Mainnet e ter contas com estados e saldos associados. Mas ele age somente como um ambiente de área local de desenvolvimento restrita, significando que você não precisará de ETH real para transações, por exemplo, nem suas modificações irão afetar o protocolo Ethereum real.
-## Testes vs. Verificação formal {#testing-vs-formal-verification}
+### Teste baseado em propriedade {#property-based-testing-for-smart-contracts}
-Ao passo que testar ajuda a confirmar se um contrato retorna os resultados esperados para algumas entradas de dados, isso não pode comprovar de forma conclusiva o mesmo para entradas não utilizadas durante os testes. Testar um contrato inteligente não pode garantir "correção funcional", o que significa que não pode mostrar que um programa se comporta conforme necessário para _todos os_ conjuntos de valores e condições de entrada.
+Teste baseado em propriedade é o processo de checar que um contrato inteligente satisfaz algumas propriedades definidas. Propriedades afirmam fatos sobre o comportamento de um contrato esperado continuar verdadeiro em diferentes cenários - um exemplo de propriedade de contrato inteligente poderia ser "Operações aritméticas no contrato nunca sofrem overflow ou underflow."
-Como tal, os desenvolvedores são incentivados a incorporar **verificação formal** em sua abordagem para avaliar a exatidão dos contratos inteligentes. A verificação formal usa [métodos formais](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/)— técnicas matematicamente rigorosas para especificar e verificar softwares.
+**Análise estática** e **análise dinâmica** são duas técnicas comuns de execução de teste baseado em propriedade, e ambas podem verificar que o código para um programa (um contrato inteligente no caso) satisfaz algumas propriedades pré-definidas. Algumas ferramentas de teste baseadas em propriedade vem com regras pré-definidas sobre propriedades esperadas de contratos e checam o código contra estas regras, enquanto outras permitem você criar propriedades customizadas para um contrato inteligente.
-A verificação formal é considerada importante para contratos inteligentes, porque ajuda os desenvolvedores a testar formalmente suposições relacionadas a contratos inteligentes. Isso é feito criando especificações formais que descrevem as propriedades de um contrato inteligente e verificam que um modelo formal do contrato inteligente corresponde à especificação. Esta abordagem aumenta a confiança de que um contrato inteligente executará funções apenas como definido na lógica de negócios e nada mais.
+#### Análise estática {#static-analysis}
-[Saiba mais sobre verificação formal de contratos inteligentes](/developers/docs/smart-contracts/formal-verification)
+Um analisador estático pega como entrada o código-fonte de um contrato inteligente e retorna resultados declarando se o contrato satisfaz a propriedade ou não. Diferente da análise dinâmica, análise estática não envolve executar um contrato para analisá-lo por exatidão. Análise estática gera razões alternativas sobre todos os caminhos possíveis que um contrato inteligente poderia tomar durante a execução (ou seja, examinando a estrutura do código-fonte para determinar o que significaria para a operação do contrato em tempo de execução).
-## Testando ferramentas e bibliotecas {#testing-tools-and-libraries}
+Testes [Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) e [estático](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) são métodos comuns de rodar análise estática em contratos. Ambos requerem analisar representações de baixo nível da execução de um contrato, como [árvores de sintaxe abstrata](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) e [gráficos de controle de fluxo](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) retornados pelo compilador.
-### Ferramentas de testes unitários {#unit-testing-tools}
+Na maioria dos casos, análise estática é útil para detectar problemas de segurança como uso de construtores inseguros, erros de sintaxe, ou violações de padrões de código no código de contratos. Entretanto, analisadores estáticos são conhecidos por geralmente serem instáveis em detectar vulnerabilidades mais profundas, e podem produzir excessivos falsos positivos.
-**Solidity-Coverage** - _Ferramenta de cobertura de código em Solidity útil para testar contratos inteligentes._
+#### Análise dinâmica {#dynamic-analysis}
-- [GitHub](https://github.com/sc-forks/solidity-coverage)
+Análise dinâmica gera entradas simbólicas (por exemplo, em [execução simbólica](https://en.m.wikipedia.org/wiki/Symbolic_execution)) ou entradas concretas (por exemplo, em [fuzzing](https://owasp.org/www-community/Fuzzing)) para funções de contratos inteligentes para ver se qualquer trace de execução violou propriedades específicas. Esta forma de teste baseado em propriedades difere dos testes unitários no tocante a casos de teste cobrem múltiplos cenários e um programa manipula a geração de casos de teste.
-**Waffle** - _Um framework para desenvolvimento avançado de contratos inteligentes e testes (baseado em ethers.js)_.
+[Fuzzing](https://halborn.com/what-is-fuzz-testing-fuzzing/) é um exemplo de análise técnica dinâmica para verificar propriedades arbitrárias em contratos inteligentes. Um fuzzer invoca funções em um contrato alvo com variações randômicas ou mal formadas de um valor de entrada definido. Se um contrato inteligente entra em estado de erro (por exemplo, uma afirmação 'where' falha), o problema é indicado e as entradas que geraram esta execução para o caminho da vulnerabilidade são produzidas em um relatório.
-- [Documentação](https://ethereum-waffle.readthedocs.io/en/latest/)
-- [GitHub](https://github.com/TrueFiEng/Waffle)
-- [Site](https://getwaffle.io/)
+Fuzzing é útil para avaliação de um mecanismo de validação de entrada de contratos inteligentes, já que manipulação imprópria de entradas inesperadas pode resultar em execução não pretendida e produzir efeitos perigosos. Esta forma de teste baseado em propriedade pode ser ideal por muitas razões:
-**Remix Tests** - _Ferramenta para testar contratos inteligentes em Solidity. Funciona abaixo do plugin Remix IDE "Solidity Unit Testing" usado para escrever e executar casos de teste para um contrato._
+1. **Escrever casos de teste para cobrir muitos cenários é difícil.** Um teste de propriedade somente requer que você defina o comportamento e faixa de dados com a qual testar o comportamento - o programa automaticamente gera casos de teste baseados na propriedade definida.
-- [Documentação](https://remix-ide.readthedocs.io/en/latest/unittesting.html)
-- [GitHub](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)
+2. **Sua suíte de testes pode não cobrir suficientemente todos os caminhos possíveis dentro do programa. ** Até com 100% de cobertura, é possível perder alguns casos limítrofes.
-**OpenZeppelin Test Environment -** _ Biblioteca de asserções para teste de contrato inteligente Ethereum. Certifique-se de que seus contratos se comportam como esperado!_
+3. **Testes unitários provam que um contrato executa corretamente para dados de amostra, mas se o contrato executa corretamente para entradas fora das amostras, permanece desconhecido.** Testes de propriedade executam um contrato alvo com múltiplas variações de uma dado valor de entrada para encontrar traços de execução que causaram falhas de afirmação. Por isso, um teste proprietário fornece mais garantias que um contrato execute corretamente para uma larga classe de dados de entrada.
-- [GitHub](https://github.com/OpenZeppelin/openzeppelin-test-helpers)
-- [Documentação](https://docs.openzeppelin.com/test-helpers)
+### Orientações para rodar teste baseado em propriedade para contratos inteligentes {#running-property-based-tests}
-**Framework para teste de contrato inteligente Truffle** - _Framework de testes automatizado para tornar os testes de seus contratos mais simples._
+Executar testes baseados em propriedade geralmente começa com a definição da propriedade (por exemplo, ausência de [overflows de inteiro](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)) ou com coleções de propriedades que você quer verificar em um contrato inteligente. Você pode também precisar definir uma faixa de valores dentro da qual o programa pode gerar dados para entradas de transação quando escrevendo os testes de propriedade.
-- [Documentação](https://trufflesuite.com/docs/truffle/testing/testing-your-contracts/)
-- [Site](https://trufflesuite.com/)
+Uma vez configurado propriamente, a ferramenta de teste de propriedade irá executar as suas funções do contrato inteligente com entradas aleatoriamente geradas. Se houver quaisquer violações de afirmações, você deve receber um relatório com os dados de entrada concretos que violaram a propriedade sendo avaliada. Veja alguns dos guias abaixo para começar com testes baseados em propriedade com diferentes ferramentas:
-**Framework para testes unitário Brownie** - _Brownie utiliza Pytest, um framework de testes rico em recursos que permite que você escreva pequenos testes com código mínimo, dimensiona bem para projetos grandes e é altamente extensível._
+- **[Análise estática de contratos inteligentes com Slither](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither#slither)**
+- **[Teste baseado em propriedade com Brownie](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)**
+- **[Contratos Fuzzing com Foundry](https://book.getfoundry.sh/forge/fuzz-testing)**
+- **[Contratos Fuzzing com Echidna](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)**
+- **[Execução simbólica de contratos inteligentes com Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)**
+- **[Execução simbólica de contratos inteligentes com Mythril](https://mythril-classic.readthedocs.io/en/master/tutorial.html)**
-- [Documentação](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)
-- [GitHub](https://github.com/eth-brownie/brownie)
+## Testes manuais para contratos inteligentes {#manual-testing-for-smart-contracts}
-**Foundry testes** - _Foundry oferece o Forge, um framework de testes da Ethereum rápido e flexível capaz de executar testes unitários simples, verificações de otimização de gás e fusão de contratos._
+Teste manual de contratos inteligentes frequentemente vêm mais tarde no ciclo de desenvolvimento, após rodar testes automatizados. Essa forma de teste avalia o contrato inteligente como um produto totalmente integrado para ver se ele executa conforme especificado nos requisitos técnicos.
-- [GitHub](https://github.com/foundry-rs/foundry/tree/master/forge)
-- [Documentação](https://book.getfoundry.sh/forge/)
+### Testando contratos no blockchain local {#testing-on-local-blockchain}
-**Etheno** - _Ferramenta de teste de Ethereum All-in-one compreendendo um multiplexador de RPC JSON, ferramenta de ferramentas de análise e ferramenta de integração de teste. Etheno elimina a complexidade da criação de ferramentas de análise como Manticore e Echidna em grandes projetos multicontratos._
+Enquanto testes automatizados realizados em um ambiente local de desenvolvimento podem fornecer informações úteis de depuração, você irá querer saber como seus contrato inteligente se comporta em um ambiente de produção. Entretanto, implantar na cadeia principal do Ethereum incorre em taxas de gas - sem mencionar que você ou seus usuários podem perder dinheiro real se o seu contrato inteligente ainda tem falhas.
-- [GitHub](https://github.com/crytic/etheno)
+Testar seu contrato em um blockchain local (também conhecido como uma [rede de desenvolvimento](/developers/docs/development-networks/)) é uma alternativa recomendada em relação a testar na Mainnet. Um blockchain local é uma cópia do blockchain Ethereum rodando localmente no seu computador que simula o comportamento da camada de execução do Ethereum. Como tal, você pode programar transações para interagir com um contrato sem incorrer em custo significante.
-**Estrutura de testes e desenvolvimento Woke** — _Scripts de teste e implantação com dicas, fuzzer, suporte para depuração, cobertura de código e teste cross-chain em Python._
+Rodar contratos em blockchain local pode ser útil como forma de teste de integração manual. [Contratos inteligentes são altamente combináveis](/developers/docs/smart-contracts/composability/), permitindo você integrar com protocolos existentes - mais você ainda precisará garantir que interações on-chain assim tão complexas produzam os resultados corretos.
-- [Documentação](https://ackeeblockchain.com/woke/docs/latest/testing-framework/overview/)
-- [GitHub](https://github.com/Ackee-Blockchain/woke)
+[Mais sobre redes de desenvolvimento.](/developers/docs/development-networks/)
-### Ferramentas de análise estática {#static-analysis-tools}
+### Testando contratos nas redes de teste {#testing-contracts-on-testnets}
-**Mythril** — _Ferramenta de avaliação de bytecode de EVM para detectar vulnerabilidades de contrato usando análise concolic e análise de fluxo de controle._
+Uma rede de teste ou testnet funciona exatamente como o Ethereum Mainnet, exceto que ela usa Ether (ETH) sem valor no mundo real. Implantar seu contrato em uma [testnet](/developers/docs/networks/#ethereum-testnets) significa que qualquer um pode interagir com ele (por exemplo, via o front-end do dapp) sem colocar fundos em risco.
-- [GitHub](https://github.com/ConsenSys/mythril-classic)
-- [Documentação](https://mythril-classic.readthedocs.io/en/master/about.html)
+Esta forma de teste manual é útil para avaliação do fluxo fim-a-fim da sua aplicação do ponto de vista do usuário. Aqui, testadores beta podem também realizar execuções experimentais e reportar qualquer problema com a lógica de negócios do contrato e funcionalidade geral.
-**Slither** — _Estrutura de análise estática do Solidity baseado em Python para encontrar vulnerabilidades, aprimorando a compreensão de código e escrevendo análises personalizadas para contratos inteligentes._
+Implantar na testnet depois de testar no blockchain local é ideal desde que o primeiro é mais perto do comportamento da Máquina Virtual Ethereum. Portanto, é comum para muitos projetos nativos do Ethereum implantar dapps nas testnets para avaliar a operação dos contratos inteligentes em condições de vida real.
-- [GitHub](https://github.com/crytic/slither)
+[Mais sobre redes de teste do Ethereum.](/developers/docs/development-networks/#public-beacon-testchains)
+
+## Testes vs. Verificação formal {#testing-vs-formal-verification}
-**Rattle** — _Estrutura de análise estática de bytecode de EVM concebido para trabalhar em contratos inteligentes implementados._
+Ao passo que testar ajuda a confirmar se um contrato retorna os resultados esperados para algumas entradas de dados, isso não pode comprovar de forma conclusiva o mesmo para entradas não utilizadas durante os testes. Testar um contrato inteligente, portanto, não pode garantir "correção funcional" (o que significa que não pode mostrar que um programa se comporta conforme necessário para _todos os_ conjuntos de valores de entrada).
-- [GitHub](https://github.com/crytic/rattle)
+Verificação formal é uma abordagem para avaliação da correção do software checando se um modelo formal do programa bate com a especificação formal. Um modelo formal é uma representação matemática abstrata de um programa, enquanto uma especificação formal define as propriedades de um programa (por exemplo, afirmações lógicas sobre a execução do programa).
-### Ferramentas de análise dinâmica {#dynamic-analysis-tools}
+Pelo fato de propriedades serem escritas em termos matemáticos, é possível verificar que um modelo formal (matemático) do sistema satisfaz uma especificação usando regras lógicas de inferência. Por isso, ferramentas de verificação formal são ditas produzir 'provas matemáticas' da correção de um sistema.
-**Echidna** — _Difusor de contrato rápido para detectar vulnerabilidades em contratos inteligentes por meio de testes baseados em propriedades._
+Diferente de testar, verificações formais podem ser usadas para verificar se a execução de um contrato inteligente satisfaz uma especificação formal para _todas_ as execuções (por exemplo, não ter falhas) sem necessitar executá-lo com dados de amostra. Não apenas isto reduz tempo gasto em rodar dezenas de testes unitários, mas é também mais efetivo na caça por vulnerabilidades escondidas. Dito isto, técnicas de verificação formal se baseiam em um espectro dependendo da sua dificuldade de implementação e utilidade.
-- [GitHub](https://github.com/crytic/echidna/)
+[Saiba mais sobre verificação formal de contratos inteligentes.](/developers/docs/smart-contracts/formal-verification)
-**Harvey** — _Ferramenta automatizada de difusão útil para detectar violações de propriedades em código de contrato inteligente._
+## Testes vs auditorias e recompensas por bugs {#testing-vs-audits-bug-bounties}
-- [Website](https://consensys.net/diligence/fuzzing/)
+Como mencionado, testes rigorosos raramente podem garantir a ausência de bugs em um contrato; abordagens de verificação formal podem fornecer garantias mais fortes da correção, mas atualmente são difíceis de usar e incorrem em custos consideráveis.
-**Mantícora** — _Estrutura de execução simbólica dinâmica para analisar o bytecode de EVM._
+Ainda assim, você pode aumentar a possibilidade de encontrar vulnerabilidades de contrato pegando uma revisão independente de código. [Auditorias de contratos inteligentes](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) e [recompensas por bugs](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) são duas maneiras de ter outros analisando os seus contratos.
-- [GitHub](https://github.com/trailofbits/manticore)
-- [Documentação](https://github.com/trailofbits/manticore/wiki)
+Auditorias são realizadas por auditores experientes em encontrar casos de falhas de segurança e práticas pobres de desenvolvimento em contratos inteligentes. Uma auditoria irá geralmente incluir testes (e possivelmente verificação formal) assim como revisão manual de todo o código.
-### Serviços de auditoria de contrato inteligente {#smart-contract-auditing-services}
+Por outro lado, um programa de recompensas por bug geralmente envolve oferta de recompensa financeira para um indivíduo (geralmente descrito como um [whitehat hackers](https://en.wikipedia.org/wiki/White_hat_(computer_security))) que descobre uma vulnerabilidade em um contrato inteligente e divulga-a para os desenvolvedores. As recompensas por bugs são semelhantes às auditorias, uma vez que envolve pedir que outras pessoas ajudem a encontrar defeitos em contratos inteligentes.
-**ConsenSys Diligence** — _Serviço de auditoria inteligente de contratos que ajuda projetos no ecossistema da blockchain e garante que seus protocolos estejam prontos para serem lançados e criados para proteger os usuários._
+A maior diferença é que programas de recompensa por bug são abertos a uma maior comunidade de desenvolvedores/hackers e atraem uma vasta classe de hackers éticos e profissionais de segurança independentes com habilidades únicas e experiência. Isso pode ser uma vantagem em relação às auditorias de contratos inteligentes, que dependem principalmente de equipes que podem possuir conhecimentos especializados limitados ou estreitos.
+
+## Testando ferramentas e bibliotecas {#testing-tools-and-libraries}
+
+### Ferramentas de testes unitários {#unit-testing-tools}
-- [Site](https://consensys.net/diligence/)
+- **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Ferramenta de cobertura de código para contratos inteligentes escritos em Solidity._
-**CertiK** — _Empresa de segurança de blockchain pioneira no uso de tecnologia de verificação formal de ponta em contratos inteligentes e redes blockchain._
+- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _Framework para desenvolvimento avançado de contratos inteligentes e teste (baseado no ethers.js)_.
-- [Site](https://www.certik.com/)
+- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Ferramenta para testar contratos inteligentes em Solidity. Funciona abaixo do plugin Remix IDE "Solidity Unit Testing" usado para escrever e executar casos de teste para um contrato._
-**Trail of Bits** — _Empresa de segurança virtual que combina pesquisa de segurança com uma mentalidade de invasores para reduzir riscos e fortalecer o código._
+- **[Auxiliar para Teste do OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _Biblioteca de asserções para teste de contrato inteligente Ethereum. Certifique-se de que seus contratos se comportam como esperado!_
-- [Site](https://www.trailofbits.com/)
+- **[Framework de teste de unidade do Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _Brownie utiliza Pytest, uma estrutura de teste rica em recursos que permite que você escreva pequenos testes com o mínimo de código, escala bem para grandes projetos e é altamente extensível._
-**PeckShield** — _Empresa de segurança de blockchain que oferece produtos e serviços para a segurança, privacidade e usabilidade de todo o ecossistema blockchain._
+- **[Froundry Testes](https://github.com/foundry-rs/foundry/tree/master/forge)** - _Foundry oferece o Forge, um framework de teste no Ethereum rápido e flexível, capaz de executar testes de unidade simples, verificações de otimização de gás e mutações (fuzzing) em contratos._
-- [Site](https://peckshield.com/)
+- **[Hardhat Testes](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _Framework para testar contratos inteligentes com base no ethers.js, Mocha e Chai._
-**QuantStamp** — _Serviço de auditoria que facilita a adoção geral da tecnologia blockchain por meio de serviços de segurança e avaliação de riscos._
+- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _Desenvolvimento baseado em Python e framework de teste para contratos inteligentes voltados para a Máquina Virtual Ethereum._
-- [Site](https://quantstamp.com/)
+### Ferramentas de teste baseadas em propriedades {#property-based-testing-tools}
-**OpenZeppelin** — _Empresa de segurança de contrato inteligente, que fornece auditorias de segurança para sistemas distribuídos._
+#### Ferramentas de análise estática {#static-analysis-tools}
-- [Site](https://www.openzeppelin.com/security-audits)
+- **[Slither](https://github.com/crytic/slither)** - _Framework com base no Python de análise estática estabelecida no Solidity para encontrar vulnerabilidades, aprimorar a compreensão do código e escrever análises personalizadas para contratos inteligentes._
-**Nethermind** — _Serviços de auditoria Solidity e Cairo, que garantem a integridade de contratos inteligentes e a segurança dos usuários pelo Ethereum e Starknet._
+- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Analisador (linter) para garantir as práticas recomendadas de estilo e segurança para a linguagem de programação de contrato inteligente Solidity._
-- [Site](https://nethermind.io/smart-contracts-audits)
+#### Ferramentas de análise dinâmica {#dynamic-analysis-tools}
-### Plataformas de recompensa por bugs {#bug-bounty-platforms}
+- **[Echidna](https://github.com/crytic/echidna/)** - _Fuzzer (analisador) de contrato para detectar vulnerabilidades em contratos inteligentes por meio de testes baseados em propriedade._
-**Immunefi** — _Plataforma de recompensa por bugs para contratos inteligentes e projetos DeFi, na qual pesquisadores de segurança revisam o código, divulgam vulnerabilidades, são pagos e tornam as criptomoedas mais seguras._
+- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _ Ferramenta de análise automatizada útil para detectar violações de propriedade no código de contrato inteligente._
-- [Website](https://immunefi.com/)
+- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _Framework de execução simbólica dinâmica para análise de bytecode na EVM._
-**HackerOne** — _Coordenação de vulnerabilidades e plataforma de recompensas por bug que conecta empresas com testadores de infiltração e pesquisadores de cibersegurança._
+- **[Mithril](https://github.com/ConsenSys/mythril-classic)** - _ Ferramenta para diagnóstico de bytecode na EVM para detectar vulnerabilidades de contrato usando análise de contaminação, análise simbólica e verificação de fluxo de controle._
-- [Website](https://www.hackerone.com/)
+- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _ Scribble é uma linguagem de especificação e ferramenta de verificação do tempo de execução, que possibilita anotar contratos inteligentes com propriedades, o que permite testar automaticamente os contratos com ferramentas como Diligence Fuzzing ou MythX._
## Tutoriais relacionados {#related-tutorials}
-- [Configuração de integração contínua do Solidity e Truffle](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _ – Como configurar Travis ou Circle CI para testes de Truffle juntamente com plugins úteis._
-- [Visão geral de testes de produtos](/developers/tutorials/guide-to-smart-contract-security-tools/) _ – Uma visão geral e comparação de diferentes produtos de teste_
+- [Uma visão geral e comparação de diferentes produtos de teste](/developers/tutorials/guide-to-smart-contract-security-tools/) \_
- [Como usar o Echidna para testar contratos inteligentes](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
- [Como usar o Manticore para encontrar bugs em contratos inteligentes](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [Como utilizar o Slither para encontrar bugs nos contratos inteligentes](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-- [Como simular contratos do Solidity para teste](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
-- [Como migrar do Truffle Tests para o ambiente de teste OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
-- [Como testar os contratos depois que eles foram implantados em uma rede](https://fulldecent.blogspot.com/2019/04/testing-deployed-ethereum-contracts.html)
-- [Aprenda sobre desenvolvimento de Blockchain, Solidity e Web3 de pilha completa com JavaScript no YouTube](https://www.youtube.com/watch?v=gyMwXuJrbJQ)
-- [Curso de Contrato Inteligente, Solidity e Blockchain no YouTube](https://www.youtube.com/watch?v=M576WGiDBdQ)
+- [Como simular contratos Solidity para teste](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
+- [How to run unit tests in Solidity using Foundry](https://www.rareskills.io/post/foundry-testing-solidity)
## Leitura adicional {#further-reading}
-- [Um guia completo para testar contratos inteligentes do Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) — _Ben Hauser_
-- [Como testar os contratos inteligentes do Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) — _Alex Roan_
+- [Um guia detalhado para testar contratos inteligentes do Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297)
+- [Como testar contratos inteligentes do Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d)
+- [Guia de teste de unidade do MolochDAO para desenvolvedores](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide)
+- [Como testar contratos inteligentes como um astro do rock](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001)
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/upgrading/index.md
new file mode 100644
index 00000000000..0ea6b7aca97
--- /dev/null
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/upgrading/index.md
@@ -0,0 +1,165 @@
+---
+title: Atualizando contratos inteligentes
+description: Uma visão geral dos padrões de atualização de contratos inteligentes no Ethereum
+lang: pt-br
+---
+
+Contratos inteligentes no Ethereum são programas auto-executados que rodam em Máquina Virtual Ethereum (EVM). Estes programas são imutáveis por desenho, o que evita quaisquer atualizações na lógica de negócios uma vez que o contrato é implantado.
+
+Enquanto imutabilidade é necessária para falta de confiança, descentralização, e segurança de contratos inteligentes, ela pode ser um problema em certos casos. Por exemplo, código imutável pode tornar impossível desenvolvedores consertar contratos vulneráveis.
+
+Entretanto, mais pesquisas sobre melhoria de contratos inteligentes tem levado à introdução de vários padrões de atualização. Estes padrões de atualização permitem a desenvolvedores atualizar contratos inteligentes (enquanto preservam a imutabilidade) colocando lógica de negócio em diferentes contratos.
+
+## Pré-requisitos {#prerequisites}
+
+Você deve ter um bom entendimento de [contratos inteligentes](/developers/docs/smart-contracts/), [anatomia de contratos inteligentes](/developers/docs/smart-contracts/anatomy/), e a [Máquina Virtual Ethereum (EVM)](/developers/docs/evm/). Este guia também presume que os leitores entendam de programação de contratos inteligentes.
+
+## O que é uma atualização de contrato inteligente? {#what-is-a-smart-contract-upgrade}
+
+Uma atualização de contrato inteligente envolve mudar a lógica de negócios de um contrato inteligente enquanto preserva o estado do contrato. É importante esclarecer que capacidade de atualização e mutabilidade não são o mesmo, especialmente no contexto de contratos inteligentes.
+
+Você ainda não pode mudar um programa implantado em um endereço na rede Ethereum. Mas você pode alterar o código que é executado quando usuários interagem com um contrato inteligente.
+
+Isto pode ser feito por meio dos seguintes métodos:
+
+1. Criando múltiplas versões de um contrato inteligente e migrando o estado (ou seja, os dados) de um contrato antigo para uma nova instância do contrato.
+
+2. Criando contratos separados para armazenar lógica de negócios e estado.
+
+3. Usando padrões de proxy para delegar chamadas de função de um contrato de proxy imutável para um contrato de lógica modificável.
+
+4. Criando um contrato principal imutável que faz interface e confia em contratos satélites flexíveis para executar funções específicas.
+
+5. Usando o padrão diamante para delegar chamadas de função de um contrato proxy para contratos lógicos.
+
+### Mecanismo de atualização 1: Migração de contrato {#contract-migration}
+
+Migração de contrato é baseada no versionamento - a ideia de criar e gerenciar estados únicos do mesmo software. Migração de contrato envolve implantar uma nova instância de um contrato inteligente existente e transferir o storage e saldos para o novo contrato.
+
+O recém-implantado contrato terá um storage vazio, permitindo você recuperar dados do contrato antigo e escrevê-lo na nova implementação. Depois disso, você precisará atualizar todos os contratos que interagiram com o contrato antigo para refletir o novo endereço.
+
+O último passo na migração do contrato é convencer usuários a mudar para o novo contrato. A nova versão do contrato irá reter saldos de usuários e endereços, que preserva a imutabilidade. Se for um contrato baseado em token, você também precisará contatar a corretora para descartar o contrato antigo e usar o novo contrato.
+
+Migração de contrato é uma medida relativamente direta e segura para atualização de contratos inteligentes sem quebrar interações de usuários. Entretanto, migrar manualmente o storage do usuário e saldos para o novo contrato é demorado e pode incorrer em altos gastos com gas.
+
+[Mais sobre migração de contrato.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)
+
+### Mecanismo de atualização 2: Separação de dados {#data-separation}
+
+Um outro método para atualização de contratos inteligentes é separar a lógica de negócios e o armazenamento de dados em contratos separados. Isto significa usuários interagirem com a lógica do contrato, enquanto dados são armazenados na storage do contrato.
+
+O contrato lógico contém o código executado quando usuários interagem com a aplicação. Ele também mantém o endereço de storage do contrato e interage com ele para pegar e configurar os dados.
+
+Enquanto isso, o storage do contrato mantém o estado associado com o contrato inteligente, como saldos de usuários e endereços. Note que o storage do contrato é de propriedade da lógica do contrato e é configurado com o endereço do último na implantação. Isto evita contratos não autorizados de chamar o storage do contrato ou atualizar seus dados.
+
+Por padrão, o storage do contrato é imutável - mas você pode substituir o contrato lógico que ele aponta para uma nova implementação. Isto irá mudar o código que roda na EVM, enquanto mantém o storage o saldos intactos.
+
+Usando este método de atualização requer atualizar o endereço do contrato lógico na storage do contrato. Você tem também que configurar o novo contrato lógico com o endereço do storage do contrato, por razões já explicadas anteriormente.
+
+O padrão de separação de dados é discutivelmente mais fácil de implementar comparado à migração de contrato. Entretanto, você terá de gerenciar múltiplos contratos e implementar esquemas complexos de autorização para proteger contratos inteligentes de atualizações maliciosas.
+
+### Mecanismo de atualização 3: Padrões de proxy {#proxy-patterns}
+
+O padrão de proxy também usa separação de dados para manter lógica de negócio e dados em contratos separados. Entretanto, em um padrão de proxy, o storage do contrato (chamado de proxy) chama o contrato lógico durante a execução do código. Isto é o contrário do método de separação de dados, onde o contrato lógico chama o contrato de storage.
+
+Isto é o que acontece em um padrão proxy:
+
+1. Usuários interagem com o contrato de proxy, que armazena dados, mas não mantém a lógica de negócio.
+
+2. O contrato proxy armazena os endereços do contrato lógico e delega todas as chamadas de função para o contrato lógico (que mantém a lógica de negócio) usando a função `delegatecall`.
+
+3. Depois de a chamada ser direcionada para o contrato lógico, os dados retornados do contrato lógico é recuperado e retornado ao usuário.
+
+Usar padrões de proxy requer um entendimento da função **delegatecall**. Basicamente, `delegatecall` é um opcode que permite um contrato chamar outro contrato, enquanto a execução real do código acontece no contexto do contrato chamado. Uma implicação de usar `delegatecall` em padrões proxy é que o contrato proxy lê e escreve no seu storage e executa lógica armazenada no contrato lógico como se chamando uma função interna.
+
+Da [Documentação Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries):
+
+> _Existe uma variante especial de chamada de mensagem, chamada **delegatecall** que é idêntica à chamada de mensagem, exceto pelo fato de que o código no endereço alvo é executado no contexto (ou seja, no endereço) do contrato chamador e `msg.sender` e `msg.value` não mudam seus valores._ _Isto significa que um contrato pode dinamicamente carregar código de um endereço diferente em tempo de execução. Storage, endereço atual e saldo ainda se referem ao contrado chamador, somente o código é pego do endereço chamado._
+
+O contrato proxy sabe invocar `delegatecall` sempre quando um usuário chama a função, porque ele tem uma funçaõ `fallback` construída dentro dele. Em programação Solidity a [função fallback](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) é executada quando uma chamada de função não encontra funções especificadas em um contrato.
+
+Fazer o padrão proxy trabalhar requer escrever uma função fallback customizada que especifique como o contrato proxy deve manipular chamadas de função que ele não suporta. Neste caso, a função de fallback do proxy é programada para iniciar um delegatecall and re-rotear a requisição do usuário para a implementação atual do contrato lógico.
+
+O contrato proxy é imutável por padrão, mas novos contratos lógicos com lógicas de negócio atualizadas podem ser criados. Fazer a atualização é então uma questão de mudança de endereço do contrato lógico referenciado no contrato proxy.
+
+Ao apontar o contrato proxy para um novo contrato lógico, o código executado quando os usuários chamam a função do contrato proxy é alterado. Isso nos permite atualizar a lógica do contrato sem pedir para os usuários interagirem com o novo contrato.
+
+Padrões proxy são um método popular para atualização de contratos inteligentes porque eles eliminam as dificuldades associadas com migração de contrato. No entanto, os padrões de proxy são mais complicados de usar e podem introduzir falhas críticas, como [conflitos do seletor de funções](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357), se usado indevidamente.
+
+[Mais sobre padrões de proxy](https://blog.openzeppelin.com/proxy-patterns/).
+
+### Mecanismo de atualização 4: Padrão de estratégia {#strategy-pattern}
+
+Esta técnica é influenciada pelo [padrão de estratégia](https://en.wikipedia.org/wiki/Strategy_pattern), que encoraja criar programas de software que fazem interface com outros programas para implementar recursos específicos. Aplicar padrão de estratégia para desenvolvimento Ethereum significaria construir um contrato inteligente que chama funções de outros contratos.
+
+O contrato principal neste caso contém o núcleo da lógica de negócio, mas faz interface com outros contratos inteligentes ("contratos satélites") para executar certas funções. Este contrato principal também armazena o endereço para cada contrato satélite e pode alternar entre diferentes implementações de contrato satélite.
+
+Você pode construir um novo contrato satélite e configurar o contrato principal com o novo endereço. Isto permite você mudar _estratégias_ (ou seja, implementar nova lógica) para um contrato inteligente.
+
+Apesar de similar ao padrão de proxy discutido anteriormente, o padrão de estratégia é diferente porque o contrato principal, com o qual usuários interagem, mantém a lógica de negócios. Usar este padrão te dá a oportunidade de introduzir mudanças limitadas a um contrato inteligente sem afetar a infraestrutura principal.
+
+A principal desvantagem é que este padrão é mais útil para implantar atualizações menores. Além disso, se o contrato for comprometido (por exemplo, via um hack), você não pode usar este método de atualização.
+
+### Mecanismo de atualização 5: Padrão Diamante {#diamond-pattern}
+
+O padrão diamante pode ser considerado uma melhoria do padrão proxy. Padrões diamante diferem dos padrões proxy porque o contrato proxy diamante pode delegar chamadas de função para mais de um contrato lógico.
+
+Os contratos lógicos no padrão diamante são conhecidos como _facets_. Para fazer o padrão diamante funcionar, você precisa criar um mapeamento no contrato proxy que mapeie [funções seletoras](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) para endereços facet diferentes.
+
+Quando um usuário faz uma chamada de função, o contrato proxy checa o mapeamento para encontrar o facet responsável por executar aquela função. Então ele invoca `delegatecall` (usando a função fallback) e redireciona a chamada para o devido contrato lógico.
+
+O padrão de atualização diamante tem algumas desvantagens sobre os padrões tradicionais de atualização proxy:
+
+1. Ele permite você atualizar uma pequena parte do contrato sem alterar todo o código. Usar o padrão proxy para atualizações requer criar um contrato lógico inteiramente novo, mesmo para pequenas atualizações.
+
+2. Todos os contratos inteligentes (incluindo contratos lógicos usados nos padrões proxy) tem 24KB de limite de tamanho, o que pode ser uma limitação - especialmente para contratos complexos que requerem mais funções. O padrão diamante facilita resolver este problema dividindo funções por múltiplos contratos lógicos.
+
+3. Padrões proxy adotam uma abordagem de pegar todos para controle de acesso. Uma entidade com acesso a funções de atualização pode mudar o contrato _inteiro_. Mas o padrão diamante habilita uma abordagem de permissões modulares, onde você pode restringir entidades para atualizar certas funções dentro de um contrato inteligente.
+
+[Mais sobre padrão diamante](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w).
+
+## Prós e contras da atualização de contratos inteligentes {#pros-and-cons-of-upgrading-smart-contracts}
+
+| Prós | Contras |
+| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Uma atualização de contrato inteligente pode tornar mais fácil corrigir vulnerabilidades descobertas na fase pós-implantação. | A atualização de contratos inteligentes nega a ideia de imutabilidade do código, o qual tem implicações sobre descentralização e segurança. |
+| Os desenvolvedores podem usar atualizações lógicas para adicionar novas funcionalidades para aplicações descentralizadas. | Os usuários devem confiar nos desenvolvedores para não modificar contratos inteligentes de forma arbitrária. |
+| As atualizações de contratos inteligentes podem melhorar a segurança para os usuários finais, pois os bugs podem ser corrigidos rapidamente. | A funcionalidade de atualização de programação em contratos inteligentes adiciona outra camada de complexidade e aumenta a possibilidade de falhas críticas. |
+| As atualizações de contrato dá aos desenvolvedores mais liberdade para experimentar diferentes recursos e melhorar os dapps ao longo do tempo. | A oportunidade para atualizar contratos inteligentes pode encorajar os desenvolvedores a lançar projetos mais rapidamente sem fazer a devida diligência durante a fase de desenvolvimento. |
+| | O controle de acesso inseguro ou a centralização em contratos inteligentes podem tornar mais fácil por atores maliciosos a execução de atualizações não autorizadas. |
+
+## Considerações para atualizar contratos inteligentes {#considerations-for-upgrading-smart-contracts}
+
+1. Use mecanismos seguros de controle/autorização de acesso para evitar atualizações não autorizadas de contratos inteligentes, especialmente ao usar padrões de proxy, padrões de estratégia ou separação de dados. Um exemplo é restringir o acesso à função de atualização, de modo que apenas o proprietário do contrato possa chamá-lo.
+
+2. A atualização de contratos inteligentes é uma atividade complexa e requer um alto nível de diligência para impedir a introdução de vulnerabilidades.
+
+3. Reduza as suposições de confiança ao descentralizar o processo de implementação de atualizações. As estratégias possíveis incluem usar um [contrato de carteira multi-sig](/developers/docs/smart-contracts/#multisig), para controlar atualizações ou exigir [membros de um DAO](/dao/) para votar na aprovação da atualização.
+
+4. Esteja ciente dos custos envolvidos na atualização de contratos. Por uma razão que, ao copiar o estado (por exemplo, saldos do usuário) de um contrato antigo para um novo contrato durante a migração do contrato pode exigir mais do que uma transação, o que significa mais taxas de gás.
+
+5. Considere implementar **bloqueios de tempo** para proteger os usuários. Um bloqueio de tempo se refere a um atraso aplicado de mudanças em um sistema. Os bloqueios de tempo podem ser combinados com um sistema de governança multi-sig para controlar as atualizações: se uma ação proposta atingir o limite de aprovação necessária, ela não será executada até que o período de atraso predefinido termine.
+
+Os bloqueios de tempo dão aos usuários algum tempo para sair do sistema, se eles discordarem de uma mudança proposta (por exemplo, atualização lógica ou novos esquemas de taxas). Sem bloqueios de tempo, os usuários precisam confiar nos desenvolvedores para não implementar alterações arbitrárias em um contrato inteligente sem aviso prévio. A desvantagem aqui é que os bloqueios de tempo restringem a capacidade de corrigir vulnerabilidades rapidamente.
+
+## Recursos {#resources}
+
+**Plugins de atualização do OpenZeppelin - _Um conjunto de ferramentas para implantar e proteger contratos inteligentes atualizáveis._**
+
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades)
+- [Documentação](https://docs.openzeppelin.com/upgrades)
+
+## Tutoriais {#tutorials}
+
+- [Atualizando seus contratos inteligentes | Tutorial do YouTube](https://www.youtube.com/watch?v=bdXJmWajZRY) por Patrick Collins
+- [Tutorial de migração de contrtos inteligentes Ethereum](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) por Austin Griffith
+- [Usando o padrão de proxy UUPS para atualizar contratos inteligentes](https://blog.logrocket.com/author/praneshas/) por Pranesh A.S
+- [Tutorial Web3: Escreva o contrato inteligente atualizável (proxy) usando OpenZeppelin](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) por fangjun.eth
+
+## Leitura adicional {#further-reading}
+
+- [O estado das atualizações de contratos inteligentes](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) por Santiago Palladino
+- [Várias maneiras de atualizar um contrato inteligente Solidity](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - Blog do Crypto Market Pool
+- [Aprenda: Atualizando contratos inteligentes](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - Documentos do OpenZeppelin
+- [Padrões de proxy para capacidade de atualização de contratos Solidity: Proxies Transparentes vs UUPS](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) por Naveen Sahu
+- [Como funcionam as atualizações por diamantes](https://dev.to/mudgen/how-diamond-upgrades-work-417j) de Nick Mudge
diff --git a/public/content/translations/pt-br/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/pt-br/developers/docs/smart-contracts/verifying/index.md
new file mode 100644
index 00000000000..f1bea65fc45
--- /dev/null
+++ b/public/content/translations/pt-br/developers/docs/smart-contracts/verifying/index.md
@@ -0,0 +1,107 @@
+---
+title: Verificando contratos inteligentes
+description: Uma visão geral da verificação do código-fonte de contratos inteligentes no Ethereum
+lang: pt-br
+---
+
+[Contratos inteligentes](/developers/docs/smart-contracts/) são projetados para serem "sem confiança", ou seja, usuários não precisam ter que confiar em terceiros (ex. desenvolvedores e empresas) antes de interagir com um contrato. Como um requisito para a não necessidade de confiança, usuários e outros desenvolvedores precisam ser capazes de verificar o código-fonte de um contrato inteligente. A verificação do código-fonte assegura aos usuários e desenvolvedores que o código do contrato publicado é o mesmo código em execução no endereço do contrato na blockchain Ethereum.
+
+É importante fazer a distinção entre "verificação de código-fonte" e "[verificação formal](/developers/docs/smart-contracts/formal-verification/)". Verificação do código-fonte, que será explicada em detalhes abaixo, refere-se à verificação de que um determinado código-fonte de um contrato inteligente em uma linguagem de alto nível (ex. Solidity) compila com o mesmo bytecode a ser executado no endereço do contrato. Por outro lado, verificação formal descreve a verificação da corretude de um contrato inteligente, assegurando que o contrato se comporta como o esperado. Embora dependa do contexto, a verificação do contrato geralmente se refere à verificação do código-fonte.
+
+## O que é verificação do código-fonte? {#what-is-source-code-verification}
+
+Antes de fazer o deploy de um contrato inteligente na [Máquina Virtual do Ethereum (EVM)](/developers/docs/evm/), desenvolvedores [compilam](/developers/docs/smart-contracts/compiling/) o código-fonte do contrato —instruções [escritas em Solidity](/developers/docs/smart-contracts/languages/) ou outra linguagem de programação de alto nível— para bytecode. Como a EVM não pode interpretar instruções de alto nível, compilar o código-fonte para bytecode (ou seja, de baixo nível, instruções de máquina) é necessário para executar a lógica do contrato na EVM.
+
+A verificação do código-fonte é a comparação entre o código-fonte do contrato inteligente e o bytecode compilado usado durante a criação do contrato para detectar quaisquer diferenças. A verificação de contratos inteligentes é importante visto que o código do contrato anunciado pode diferir do que é executado na blockchain.
+
+A verificação do contrato inteligente permite investigar o que um contrato faz através da linguagem de alto nível em que é escrito, sem ter que ler código de máquina. Funções, valores, e geralmente os nomes de variáveis e comentários permanecem os mesmos do código-fonte original em que é compilado e feito o deploy. Isso torna a leitura do código muito mais fácil. A verificação da origem também incentiva a documentação do código, para que os usuários finais saibam o que um contrato inteligente é projetado para fazer.
+
+### O que é a verificação total? {#full-verification}
+
+Há algumas partes do código-fonte que não afetam o bytecode compilado, como comentários ou nomes de variáveis. Isso significa que dois códigos-fonte com diferentes nomes de variáveis e comentários conseguiriam verificar o mesmo contrato. Com isso, um ator malicioso consegue adicionar comentários enganosos ou dar nomes de variáveis enganosas dentro do código-fonte e obter o contrato verificado com um código-fonte diferente do código-fonte original.
+
+It is possible to avoid this by appending extra data to the bytecode to serve as a _cryptographic guarantee_ for the exactness of the source code, and as a _fingerprint_ of the compilation information. A informação necessária está disponível em [Metadados de contrato Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), e o hash desse arquivo é adicionado ao bytecode do contrato. Você pode conferi-lo em ação no [playground de metadados](https://playground.sourcify.dev).
+
+O arquivo de metadados contém informações sobre a compilação do contrato incluindo o código-fonte e seus hashes. Significa que, se alguma das configurações de compilação ou até mesmo um byte em um dos arquivos de origem mudar, o arquivo de metadados muda. Consequentemente, o hash do arquivo de metadados, o qual é anexado ao bytecode, também muda. Isso significa que se o bytecode de um contrato + seu hash de metadados correspondem ao determinado código-fonte e as configurações de compilação, nós podemos ter certeza de que é o mesmo código-fonte usando na compilação original, nem mesmo um único byte de diferença.
+
+Esse é tipo de verificação que se aproveita do hash é referenciado como **[verificação total](https://docs.sourcify.dev/docs/full-vs-partial-match/)** (também "verificação perfeita"). Se os hashes de metadados não coincidirem ou não forem considerados na verificação, essa seria uma "correspondência parcial", que atualmente é a maneira mais comum de se verificar contratos. É possível [inserir código malicioso](https://samczsun.com/hiding-in-plain-sight/) que não apareceria no código-fonte verificado sem a verificação total. A maioria dos desenvolvedores não está ciente da verificação completa e não mantém o arquivo de metadados de sua compilação, portanto, a verificação parcial tem sido o método de fato para verificar os contratos até agora.
+
+## Por que a verificação do código-fonte é importante? {#importance-of-source-code-verification}
+
+### Ausência de confiança {#trustlessness}
+
+A ausência da necessidade de confiança é provavelmente a maior premissa para contratos inteligentes e [aplicações descentralizadas (dapps)](/developers/docs/dapps/). Os contratos inteligentes são "imutáveis" e não podem ser alterados; um contrato executará apenas a lógica de negócio definida no código no momento do deploy. Isto significa que os desenvolvedores e empresas não podem manipular o código de um contrato após o deploy no Ethereum.
+
+Para que um contrato inteligente seja ausente de confiança, o código do contrato deve estar disponível para verificação independente. Embora o bytecode compilado de cada contrato inteligente esteja disponível publicamente na blockchain, uma linguagem de baixo nível é difícil de entender — tanto para desenvolvedores quanto para usuários.
+
+Projetos reduzem as suposições de confiança publicando o código-fonte de seus contratos. But this leads to another problem: it is difficult to verify that the published source code matches the contract bytecode. Nesse cenário, o valor da ausência de confiança é perdido porque os usuários precisam confiar nos desenvolvedores para não mudar a lógica de negócios de um contrato (ex. alterando o bytecode) antes do deploy na blockchain.
+
+As ferramentas de verificação do código-fonte fornecem garantias de que os arquivos do código-fonte do contrato inteligente correspondem ao código de montagem. O resultado é um ecossistema sem necessidade de confiança, no qual os usuários não dependem de confiar em terceiros uma vez que podem verificar o código antes de depositar fundos em um contrato.
+
+### Segurança do usuário {#user-safety}
+
+Em contratos inteligentes, geralmente há muito dinheiro envolvido. Isso pede por altas garantias de segurança e verificação da lógica de um contrato inteligente antes de usá-lo. O problema é que desenvolvedores inescrupulosos podem enganar usuários inserindo código malicioso em um contrato inteligente. Sem a verificação, contratos inteligentes maliciosos podem ter [backdoors](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), controversos mecanismos de controle de acesso, vulnerabilidades exploráveis, e outras coisas que comprometem a segurança dos usuários e que passariam despercebidas.
+
+Publicar os arquivos de código-fonte de um contrato inteligente torna mais fácil para interessados, como auditores, avaliar o contrato quanto a possíveis vetores de ataque. Com várias partes verificando independentemente o contrato inteligente, os usuários têm maiores garantias quanto à sua segurança.
+
+## Como verificar o código-fonte para contratos inteligentes Ethereum {#source-code-verification-for-ethereum-smart-contracts}
+
+[Implantar um contrato inteligente no Ethereum](/developers/docs/smart-contracts/deploying/) requer o envio de uma transação com o payload de dados (bytecode compilado) para um endereço especial. O payload de dados é gerado compilando o código-fonte, além dos [argumentos do construtor](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) da instância do contrato anexado aos dados do payload na transação. A compilação é determinística, o que significa que sempre produz a mesma saída (ou seja, bytecode de contrato), se os mesmos arquivos de origem e configurações de compilação (por exemplo, versão do compilador, otimizador) forem usados.
+
+![Um diagrama mostrando a verificação do código-fonte do contrato inteligente](./source-code-verification.png)
+
+A verificação de um contrato inteligente basicamente envolve os seguintes passos:
+
+1. Insira os arquivos de origem e as configurações de compilação em um compilador.
+
+2. O compilador gera o bytecode do contrato
+
+3. Obtenha o bytecode do contrato implantado em um dado endereço
+
+4. Compare o bytecode implantado com o bytecode recompilado. Se os códigos corresponderem, o contrato é verificado com o código-fonte fornecido e as configurações de compilação.
+
+5. Além disso, se os hashes de metadados no final do bytecode corresponderem, será uma correspondência completa.
+
+Note que esta é uma descrição simplista de verificação e há muitas exceções que não funcionariam com isso, como ter [variáveis imutáveis](https://docs.sourcify.dev/docs/immutables/).
+
+## Ferramentas de verificação de código-fonte {#source-code-verification-tools}
+
+O processo tradicional de verificação de contratos pode ser complexo. Isto é porque nós temos ferramentas para verificar o código-fonte para contratos inteligentes implantados no Ethereum. Estas ferramentas automatizam grandes partes da verificação de código-fonte e também selecionam contratos verificados para os benefícios dos usuários.
+
+### Etherscan {#etherscan}
+
+Embora mais conhecido como um [observador da blockchain do Ethereum](/developers/docs/data-and-analytics/block-explorers/), o Etherscan também oferece um [serviço de verificação de código-fonte](https://etherscan.io/verifyContract) para desenvolvedores e usuários de contratos inteligentes.
+
+O Etherscan permite que você recompile o bytecode do contrato a partir do payload de dados original (código-fonte, endereço da biblioteca, configurações do compilador, endereço do contrato, etc.) Se o bytecode recompilado está associado ao bytecode (e aos parâmetros do construtor) do contrato on-chain, então [o contrato é verificado](https://info.etherscan.com/types-of-contract-verification/).
+
+Uma vez verificado, o código-fonte do seu contrato recebe um rótulo "Verificado" e é publicado no Etherscan, para que outros auditem. Ele também é adicionado à seção [Contratos Verificados](https://etherscan.io/contractsVerified/) - um repositório de contratos inteligentes com códigos-fonte verificados.
+
+Etherscan é a ferramenta mais usada para verificação de contratos. No entanto, a verificação de contrato do Etherscan tem uma desvantagem: ele falha ao comparar o **hash de metadados** do bytecode on-chain e o bytecode recompilado. Portanto, as correspondências no Etherscan são correspondências parciais.
+
+[Mais sobre a verificação de contratos no Etherscan](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327).
+
+### Sourcify {#sourcify}
+
+[Sourcify](https://sourcify.dev/#/verifier) é outra ferramenta para verificação de contratos que é de código aberto e descentralizada. Não é um observador de blocos e apenas verifica contratos em [diferentes redes baseadas em EVM](https://docs.sourcify.dev/docs/chains). Ele atua como uma infraestrutura pública para que outras ferramentas construam sobre ele, e tem como objetivo permitir interações de contrato mais amigáveis a humanos usando o [ABI](/developers/docs/smart-contracts/compiling/#web-applications) e [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) encontrados no arquivo de metadados.
+
+Ao contrário do Etherscan, o Sourcify suporta correspondências completas com o hash de metadados. Os contratos verificados são servidos em seu [repositório público](https://docs.sourcify.dev/docs/repository/) HTTP e [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), que é um [armazenamento descentralizado](https://web3.storage/docs/concepts/content-addressing/) endereçado ao conteúdo. Isso permite buscar o arquivo de metadados de um contrato sobre IPFS, pois o hash de metadados incluído é um hash IPFS.
+
+Adicionalmente, também é possível recuperar os arquivos de código-fonte por IPFS, pois os hashes IPFS desses arquivos também são encontrados nos metadados. Um contrato pode ser verificado fornecendo o arquivo de metadados e os arquivos da origem por meio de sua API ou [UI](https://sourcify.dev/#/verifier) ou usando os plugins. A ferramenta de monitoramento Sourcify também escuta as criações de contratos em novos blocos e tenta verificar os contratos se os seus metadados e arquivos de origem são publicados no IPFS.
+
+[Mais sobre a verificação de contratos no Sourcify](https://blog.soliditylang.org/2020/06/25/sourcify-faq/).
+
+### Tenderly {#tenderly}
+
+A [plataforma Tenderly](https://tenderly.co/) permite desenvolvedores Web3 criem, testem, monitorem e operem contratos inteligentes. Ao combinar ferramentas de depuração com observabilidade e blocos de construção de infraestrutura, o Tenderly ajuda os desenvolvedores a acelerar o desenvolvimento de contratos inteligentes. Para habilitar totalmente os recursos do Tenderly, os desenvolvedores precisam [realizar a verificação do código-fonte](https://docs.tenderly.co/monitoring/contract-verification) usando vários métodos.
+
+É possível verificar um contrato de forma privada ou pública. Se verificado privadamente, o contrato inteligente ficará visível apenas para você (e outros membros do seu projeto). A verificação de um contrato publicamente o torna visível para todos que usam a plataforma Tenderly.
+
+Você pode verificar seus contratos usando o [Painel](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-a-smart-contract), [Plugin Tenderly da Hardhat](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-the-tenderly-hardhat-plugin) ou [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli).
+
+Ao verificar contratos através do Painel, você precisa importar o arquivo de origem ou o arquivo de metadados gerado pelo compilador Solidity, o endereço/rede e as configurações do compilador.
+
+O uso do plugin Tenderly da Hardhat permite mais controle sobre o processo de verificação com menos esforço, permitindo escolher entre verificação automática (sem código) e manual (baseado no código).
+
+## Leitura adicional {#further-reading}
+
+- [Verificando o código-fonte do contrato](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
diff --git a/public/content/translations/pt-br/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/pt-br/developers/docs/standards/tokens/erc-4626/index.md
index 7f027def39e..371ffca8180 100644
--- a/public/content/translations/pt-br/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/pt-br/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ Em que `sender` é o usuário que acionou a retirada e trocou `shares`, de propr
## Leitura adicional {#further-reading}
- [EIP-4626: Padrão do cofre tokenizado](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: GitHub Repo](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626: GitHub Repo](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/pt-br/developers/docs/transactions/gas-tx.png b/public/content/translations/pt-br/developers/docs/transactions/gas-tx.png
index 0ffd5869b72..3b347370158 100644
Binary files a/public/content/translations/pt-br/developers/docs/transactions/gas-tx.png and b/public/content/translations/pt-br/developers/docs/transactions/gas-tx.png differ
diff --git a/public/content/translations/pt-br/developers/docs/transactions/index.md b/public/content/translations/pt-br/developers/docs/transactions/index.md
index da8aa151a31..cd6142a6138 100644
--- a/public/content/translations/pt-br/developers/docs/transactions/index.md
+++ b/public/content/translations/pt-br/developers/docs/transactions/index.md
@@ -1,6 +1,6 @@
---
title: Transações
-description: "Uma visão geral das transações no Ethereum: como elas funcionam, sua estrutura de dados e como enviá-las através de um aplicativo."
+description: 'Uma visão geral das transações no Ethereum: como elas funcionam, sua estrutura de dados e como enviá-las através de um aplicativo.'
lang: pt-br
---
diff --git a/public/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index 588e248d0ba..c7750f6ae7d 100644
--- a/public/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -4,16 +4,15 @@ description: Uma introdução ao desenvolvimento do Ethereum, especialmente úti
author: Marc Garreau
lang: pt-br
tags:
- - "primeiros passos"
- "python"
- "web3.py"
skill: beginner
published: 2020-09-08
-source: Snake charmers
+source: O encantador de cobras
sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
---
-Você ouviu falar sobre Ethereum e agora está pronto para saber mais? Este post cobrirá rapidamente alguns conceitos básicos de blockchain e, em seguida, fará com que você interaja com um nó simulado do Ethereum – lendo dados do bloco, verificando saldos da conta e enviando transações. Em todo o caminho, vamos destacar as diferenças entre as maneiras tradicionais de desenvolver aplicativos e este novo paradigma descentralizado.
+Então, você ouviu falar sobre esta coisa do Ethereum e está pronto para se aventurar no buraco do coelho? Este post cobrirá rapidamente alguns conceitos básicos de blockchain e, em seguida, fará com que você interaja com um nó simulado do Ethereum – lendo dados do bloco, verificando saldos da conta e enviando transações. Em todo o caminho, vamos destacar as diferenças entre as maneiras tradicionais de desenvolver aplicativos e este novo paradigma descentralizado.
## Pré-requisitos de software {#soft-prerequisites}
@@ -21,8 +20,8 @@ Este post espera ser acessível a muitos desenvolvedores. Usaremos [ferramentas
Suposições:
-- você pode utilizar um terminal,
-- você já escreveu algumas linhas de código Python,
+- Você pode utilizar um terminal,
+- Você já escreveu algumas linhas de código Python,
- A versão 3.6 ou superior do Python está instalada no seu computador (uso de um [ambiente virtual](https://realpython.com/effective-python-environment/#virtual-environments) é fortemente recomendado) e
- você já usou o `pip`, instalador de pacotes do Python. Novamente, se algum destes pré-requisitos não for verdadeiro, ou se você não planeja reproduzir o código apresentado neste artigo, é provável que você ainda possa acompanhar sem maiores problemas.
@@ -35,7 +34,6 @@ Há muitas maneiras de descrever o Ethereum, mas no fundo é uma blockchain. As
"number": 1234567,
"hash": "0xabc123...",
"parentHash": "0xdef456...",
- "miner": "0xa1b2c3...",
...,
"transactions": [...]
}
@@ -59,11 +57,11 @@ Esta nova pilha de tecnologia descentralizada gerou novas ferramentas de desenvo
Os desenvolvedores do Python que querem interagir com o Ethereum provavelmente usem a [Web3.py](https://web3py.readthedocs.io/). Web3.py é uma biblioteca que simplifica muito a forma como você se conecta a um nó Ethereum, e depois envia e recebe dados dele.
-Nota: "Nó Ethereum" e "Cliente Ethereum" são usados de forma intercambiável. Em ambos os casos, refere-se ao software que um participante da rede Ethereum executa. Este software pode ler dados de blocos, receber atualizações quando novos blocos são adicionados à cadeia ("minerado"), transmitir novas transações e muito mais.
+Nota: "Nó Ethereum" e "Cliente Ethereum" são usados de forma intercambiável. Em ambos os casos, refere-se ao software que um participante da rede Ethereum executa. Este software pode ler dados de blocos, receber atualizações quando novos blocos são adicionados à cadeia, transmitir novas transações e mais. Tecnicamente, o cliente é o software, o nódulo é o computador que executa o software.
[Clientes Ethereum](/developers/docs/nodes-and-clients/) podem ser configurados para serem acessíveis por [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTPS ou Websockets, então Web3. y precisará espelhar esta configuração. Web3.py refere-se a estas opções de conexão como **provedores**. Você vai querer escolher um dos três provedores para vincular a instância da Web3.py ao seu nó.
-![Um diagrama que mostra como web3.py usa o IPC para conectar o seu aplicativo a um nó Ethereum](./web3py-and-nodes.png)
+![Um diagrama mostrando como web3.py usa IPC para conectar seu aplicativo a um nódulo Ethereum](./web3py-and-nodes.png)
_Configure o nó Ethereum e o Web3.py para se comunicarem através do mesmo protocolo, por exemplo, o IPC neste diagrama._
@@ -86,29 +84,31 @@ Neste guia, vamos trabalhar apenas com um interpretador de Python. Não criaremo
Primeiro, instale [IPython](https://ipython.org/) para explorar em um ambiente amigável. IPython propõe, entre outros, um recurso de autopreenchimento com tab, o que facilita a navegação no Web3.py.
```bash
-$ pip install ipython
+pip install ipython
```
Web3.py é publicado sob o nome `web3`. Instale-o assim:
```bash
-$ pip install web3
+pip install web3
```
Mais uma coisa: vamos simular uma blockchain mais tarde, o que requer mais algumas dependências. Você pode instalar por meio de:
```bash
-$ pip install 'web3[tester]'
+pip install 'web3[tester]'
```
Você está pronto para começar!
+Nota: o pacote `web3[tester]` funciona até Python 3.10.xx
+
## Crie uma sandbox {#spin-up-a-sandbox}
-Abra um novo ambiente Python executando o `ipython` no seu terminal. Isso é comparável a executar `python`, mas vem com mais "efeitos especiais".
+Abra um novo ambiente Python executando o `ipython` no seu terminal. Isso é como executar `python`, mas vem com mais "efeitos especiais".
```bash
-$ ipython
+ipython
```
Isso mostrará algumas informações sobre as versões do Python e do IPython que você está executando, então você deve ver um prompt esperando por uma entrada:
@@ -117,7 +117,7 @@ Isso mostrará algumas informações sobre as versões do Python e do IPython qu
In [1]:
```
-Você está olhando para um shell interativo do Python agora. Essencialmente, é uma sandbox para utilizar. If you’ve made it this far, its time to import Web3.py:
+Você está olhando para um shell interativo do Python agora. Essencialmente, é um ambiente de testes para brincar. Se você chegou até aqui, é hora de importar Web3.py:
```python
In [1]: from web3 import Web3
@@ -127,7 +127,7 @@ In [1]: from web3 import Web3
Além de ser um gateway para Ethereum, o módulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) oferece algumas funções práticas. Vamos ver algumas.
-Em um aplicativo Ethereum, você normalmente precisará converter denominações de moeda. O módulo Web3 fornece alguns métodos auxiliares só para isso: [fromWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.fromWei) e [toWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toWei).
+Em um aplicativo Ethereum, você normalmente precisará converter denominações de moeda. O módulo web3 fornece alguns métodos auxiliares apenas para isso: [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) e [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei).
Observação: os computadores são notoriamente pouco eficazes para lidar com números decimais. Para contornar isso, os desenvolvedores costumam armazenar valores em dólares em centavos. Por exemplo, um item com preço de $5,99 pode ser armazenado no banco de dados como 599.
@@ -143,10 +143,10 @@ Um padrão similar é usado ao lidar com transações em ether. No entant
Tente converter alguns valores de e para wei. Note que [existem nomes para muitas das denominações](https://web3py.readthedocs.io/en/stable/examples.html#converting-currency-denominations) entre ether e wei. Um dos mais conhecidos entre eles é o **gwei**, já que é frequentemente como as taxas de transação são representadas.
```python
-In [2]: Web3.toWei(1, 'ether')
+In [2]: Web3.to_wei(1, 'ether')
Out[2]: 1000000000000000000
-In [3]: Web3.fromWei(500000000, 'gwei')
+In [3]: Web3.from_wei(500000000, 'gwei')
Out[3]: Decimal('0.5')
```
@@ -175,14 +175,14 @@ O nó simulado é chamado [eth-tester](https://github.com/ethereum/eth-tester) e
In [4]: w3 = Web3(Web3.EthereumTesterProvider())
```
-Agora você está pronto para navegar pela cadeia! Isso não é algo que as pessoas falam. É algo que eu acabei de inventar. Façamos um tour rápido.
+Agora você está pronto para navegar pela cadeia! Disso as pessoas não falam. É algo que eu acabei de inventar. Façamos um tour rápido.
## O tour rápido {#the-quick-tour}
Primeiro, uma verificação:
```python
-In [5]: w3.isConnected()
+In [5]: w3.is_connected()
Out[5]: True
```
@@ -201,7 +201,7 @@ Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
'0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...]
```
-Se você executar esse comando, você deverá ver uma lista de dez strings que começam com `0x`. Cada um é um **endereço público** e é, em alguns aspectos, análogo ao número da conta em uma conta corrente. Você forneceria este endereço a alguém que quisesse mandar ether para você.
+Se você executar esse comando, você deverá ver uma lista de dez variáveis que começam com `0x`. Cada um é um **endereço público** e é, em alguns aspectos, análogo ao número da conta em uma conta corrente. Você forneceria este endereço a alguém que quisesse mandar ether para você.
Como mencionado, o provedor de teste pré-carregou cada uma dessas contas com algum ether. Vamos descobrir quanto há na primeira conta:
@@ -213,7 +213,7 @@ Out[7]: 1000000000000000000000000
São muitos zeros! Antes de você ir rindo até o banco falso, lembre-se daquela lição anterior sobre denominações de moeda. Os valores de ether são representados na menor denominação, wei. Converta para ether:
```python
-In [8]: w3.fromWei(1000000000000000000000000, 'ether')
+In [8]: w3.from_wei(1000000000000000000000000, 'ether')
Out[8]: Decimal('1000000')
```
@@ -236,30 +236,30 @@ Out[9]: AttributeDict({
Sãp fornecidas muitas informações sobre um bloco, mas há apenas alguns pontos para salientar aqui:
-- O número de bloco é zero — não importa quanto tempo você configurou o provedor de teste. Ao contrário da rede Ethereum real, que minera um novo bloco aproximadamente a cada 15 segundos, essa simulação esperará até que você a instrua a fazer alguma coisa.
+- O número de bloco é zero — não importa quanto tempo você configurou o provedor de teste. Ao contrário da rede Ethereum real, que minera um novo bloco aproximadamente a cada 12 segundos, essa simulação esperará até que você a instrua a fazer alguma coisa.
- `transactions` é uma lista vazia, pelo mesmo motivo: ainda não fizemos nada. Este primeiro bloco é um **bloco vazio**, apenas para iniciar a cadeia.
- Observe que o `parentHash` é apenas um monte de bytes vazios. Isso significa que ele é o primeiro bloco da cadeia, também conhecido como **bloco de início**.
## Parada n.º 2 do tour: [transações](/developers/docs/transactions/) {#tour-stop-3-transactions}
-Estamos presos no bloco zero até que haja uma transação para minerar, então vamos começar. Envie um teste com ether de uma conta para outra:
+Estamos parados no bloco zero até que haja uma transação para minerar, então vamos começar. Envie um teste com ether de uma conta para outra:
```python
In [10]: tx_hash = w3.eth.send_transaction({
'from': w3.eth.accounts[0],
'to': w3.eth.accounts[1],
- 'value': w3.toWei(3, 'ether'),
+ 'value': w3.to_wei(3, 'ether'),
'gas': 21000
})
```
-Normalmente, esse é o ponto em que você espera que sua transação seja minerada em um novo bloco. O processo completo envolve algo como isto:
+Esse é normalmente o ponto em que você espera (vários segundos) até que sua transação seja minerada em um novo bloco. O processo completo envolve algo como isto:
-1. Envie uma transação e espere pelo hash da transação. A transação fica "pendente" até que seja minerada. `tx_hash = w3.eth.send_transaction({ … })`
+1. Envie uma transação e espere pelo hash da transação. Até que o bloco que contém a transação seja criado e transmitido, a transação fica "pendente" `tx_hash = w3.eth.send_transaction({ … })`
2. Aguarde a mineração da transação: `w3.eth.wait_for_transaction_receipt(tx_hash)`
3. Continue a lógica do aplicativo. Para visualizar a transação bem-sucedida: `w3.eth.get_transaction(tx_hash)`
-Nosso ambiente simulado adicionará a transação a um novo bloco instantaneamente, para que possamos ver a transação imediatamente:
+Nosso ambiente simulado adicionará a transação a um novo bloco instantaneamente para que possamos ver a transação imediatamente:
```python
In [11]: w3.eth.get_transaction(tx_hash)
@@ -274,19 +274,21 @@ Out[11]: AttributeDict({
})
```
-You’ll see some familiar details here: the `from`, `to`, and `value` fields should match the inputs of our `send_transaction` call. A outra parte tranquilizadora é que esta transação foi incluída como a primeira transação (`'transactionIndex': 0`) dentro do bloco número 1.
+Você verá alguns detalhes familiares aqui: os campos `de`, `para` e `valor` devem corresponder às entradas da chamada `sendTransaction`. A outra parte tranquilizadora é que esta transação foi incluída como a primeira transação (`'transactionIndex': 0`) dentro do bloco número 1.
Também podemos ver facilmente o sucesso dessa transação, verificando o saldo das duas contas envolvidas. Três ether deveriam ter sido enviados de uma conta para outra.
```python
In [12]: w3.eth.get_balance(w3.eth.accounts[0])
-Out[12]: 999996999999999999969000
+Out[12]: 999996999979000000000000
In [13]: w3.eth.get_balance(w3.eth.accounts[1])
Out[13]: 1000003000000000000000000
```
-O último parece bem! O saldo foi de 1.000.000 a 1.000.003 ether. Mas o que aconteceu com a primeira conta? Parece ter perdido um pouco mais de três ether. Infelizmente, nada na vida é gratuito, e o uso da rede pública Ethereum requer que você compense os seus pares pelo papel de apoio deles. A small transaction fee was deducted from the account making the transaction to the tune of 31000 wei.
+O último parece bem! O saldo foi de 1.000.000 a 1.000.003 ether. Mas o que aconteceu com a primeira conta? Parece ter perdido um pouco mais que três ether. Infelizmente, nada na vida é gratuito, e o uso da rede pública Ethereum requer que você compense os seus pares pelo papel de apoio deles. Uma pequena taxa de transação foi deduzida da conta que submeteu a transação - esta taxa é a quantidade de gás queimado (21000 unidades de gás para uma transferência ETH) multiplicado por uma taxa base, que varia de acordo com a atividade da rede, mais a gorjeta que vai para o validador que inclui a transação em um bloco.
+
+Mais sobre [gás](/developers/docs/gas/#post-london)
Observação: na rede pública, as taxas de transação são variáveis baseadas na demanda da rede e na rapidez com que você gostaria que uma transação fosse processada. Se você estiver interessado em ver como as taxas são calculadas, veja minha publicação anterior sobre como transações são incluídas em um bloco.
diff --git a/public/content/translations/pt-br/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/pt-br/developers/tutorials/all-you-can-cache/index.md
new file mode 100644
index 00000000000..7a99bcf4de1
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/all-you-can-cache/index.md
@@ -0,0 +1,867 @@
+---
+title: "Tudo que você puder armazenar em cache"
+description: Aprenda como criar e usar um contrato de cache para transações de roll-up mais baratas
+author: Ori Pomerantz
+tags:
+ - "camada 2"
+ - "armazenamento em cache"
+ - "armazenamento"
+skill: intermediate
+published: 2022-09-15
+lang: pt-br
+---
+
+Ao usar roll-ups, o custo de um byte na transação é muito mais caro que o custo de um slot de armazenamento. Portanto, faz sentido armazenar em cache o máximo de informações possível na cadeia.
+
+Neste artigo, você aprenderá como criar e usar um contrato de armazenamento em cache de forma que qualquer valor de parâmetro, provável de ser usado diversas vezes, será armazenado em cache e ficará disponível para uso (depois da primeira vez) com um número muito menor de bytes, e como escrever código off-chain para usar esse cache.
+
+Se você quiser pular o artigo e somente ver o código-fonte, [consulte-o aqui](https://github.com/qbzzt/20220915-all-you-can-cache). A pilha de desenvolvimento é [Foundry](https://book.getfoundry.sh/getting-started/installation).
+
+## Design Geral {#overall-design}
+
+Para fins de simplicidade, vamos supor que todos os parâmetros de transação são `uint256`, com 32 bytes de tamanho. Quando recebemos uma transação, fazemos o parse em cada parâmetro deste modo:
+
+1. Se o primeiro byte for `0xFF`, pegue os 32 bytes seguintes como um valor de parâmetro e escreva-o no cache.
+
+2. Se o primeiro byte for `0xFE`, pegue os próximos 32 bytes como um valor de parâmetro, mas _não_ o escreva no cache.
+
+3. Para qualquer outro valor, pegue os primeiros quatro bits como o número de bytes adicionais, e os últimos quatro bits como os bits mais significantes da chave do cache. Veja aqui alguns exemplos:
+
+ | Bytes em calldata | Chave da cache |
+ |:----------------- | --------------:|
+ | 0x0F | 0x0F |
+ | 0x10,0x10 | 0x10 |
+ | 0x12,0xAC | 0x02AC |
+ | 0x2D,0xEA, 0xD6 | 0x0DEAD6 |
+
+## Manipulação do cache {#cache-manipulation}
+
+A cache é implementada em [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol). Vamos passar por ele linha a linha.
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+
+contract Cache {
+
+ bytes1 public constant INTO_CACHE = 0xFF;
+ bytes1 public constant DONT_CACHE = 0xFE;
+```
+
+Essas constantes são usadas para interpretar os casos especiais nos quais fornecemos todas as informações, independentemente de as querermos escritas no cache ou não. Escrever no cache requer duas operações [`SSTORE`](https://www.evm.codes/#55) nos slots de armazenamento previamente não utilizados, ao custo de 22.100 gás cada. Portanto, deixamos isso opcional.
+
+```solidity
+
+ mapping(uint => uint) public val2key;
+```
+
+Um [mapeamento](https://www.geeksforgeeks.org/solidity-mappings/) entre os valores e suas chaves. Esta informação é necessária para codificar valores antes de você enviar a transação.
+
+```solidity
+ // Location n has the value for key n+1, because we need to preserve
+ // zero as "not in the cache".
+ uint[] public key2val;
+```
+
+Podemos usar uma matriz para mapear das chaves aos valores, pois atribuímos as chaves e, para simplificar, fazemos isso de modo sequencial.
+
+```solidity
+ function cacheRead(uint _key) public view returns (uint) {
+ require(_key <= key2val.length, "Reading uninitialize cache entry");
+ return key2val[_key-1];
+ } // cacheRead
+```
+
+Ler um valor da cache.
+
+```solidity
+ // Write a value to the cache if it's not there already
+ // Only public to enable the test to work
+ function cacheWrite(uint _value) public returns (uint) {
+ // If the value is already in the cache, return the current key
+ if (val2key[_value] != 0) {
+ return val2key[_value];
+ }
+```
+
+Não faz sentido colocar o mesmo valor no cache mais de uma vez. Se o valor já está lá, apenas retorne a chave existente.
+
+```solidity
+ // Since 0xFE is a special case, the largest key the cache can
+ // hold is 0x0D followed by 15 0xFF's. If the cache length is already that
+ // large, fail.
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
+ "cache overflow");
+```
+
+Não acho que iremos algum dia ter um cache tão grande (cerca de 1,8\*1037 entradas, o que exigiria cerca de 1027 TB de armazenamento). No entanto, eu sou velho o suficiente para lembrar que ["640kB sempre será o suficiente"](https://quoteinvestigator.com/2011/09/08/640k-enough/). Este teste é muito barato.
+
+```solidity
+ // Write the value using the next key
+ val2key[_value] = key2val.length+1;
+```
+
+Adicione a busca reversa (do valor para a chave).
+
+```solidity
+ key2val.push(_value);
+```
+
+Adicione a busca para frente (da chave para o valor). Como atribuímos valores de modo sequencial, podemos apenas adicioná-los depois do último valor da matriz.
+
+```solidity
+ return key2val.length;
+ } // cacheWrite
+```
+
+Retorne o novo tamanho de `key2val`, que é a célula onde o novo valor está armazenado.
+
+```solidity
+ function _calldataVal(uint startByte, uint length)
+ private pure returns (uint)
+```
+
+Essa função lê um valor de calldata de tamanho arbitrário (até 32 bytes, o tamanho da palavra).
+
+```solidity
+ {
+ uint _retVal;
+
+ require(length < 0x21,
+ "_calldataVal length limit is 32 bytes");
+ require(length + startByte <= msg.data.length,
+ "_calldataVal trying to read beyond calldatasize");
+```
+
+A função é interna, por isso, se o resto do código for escrito corretamente, esses testes não serão obrigatórios. Porém, como eles não custam muito, podemos tê-los de qualquer forma.
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+Este código está em [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html). Ele lê um valor de 32 bytes do calldata. Isso funciona até mesmo se o calldata parar antes `startByte+32`, pois o espaço não inicializado na EVM é considerado como zero.
+
+```solidity
+ _retVal = _retVal >> (256-length*8);
+```
+
+Não queremos necessariamente um valor de 32 bytes. Isso elimina os bytes em excesso.
+
+```solidity
+ return _retVal;
+ } // _calldataVal
+
+
+ // Read a single parameter from the calldata, starting at _fromByte
+ function _readParam(uint _fromByte) internal
+ returns (uint _nextByte, uint _parameterValue)
+ {
+```
+
+Leia um único parâmetro do calldata. Observe que precisamos retornar não somente o valor que lemos, mas também a localização do próximo byte, pois os parâmetros podem estar na faixa de comprimento de 1 byte a 33 bytes.
+
+```solidity
+ // The first byte tells us how to interpret the rest
+ uint8 _firstByte;
+
+ _firstByte = uint8(_calldataVal(_fromByte, 1));
+```
+
+O Solidity tenta reduzir o número de bugs proibindo [conversões de tipo implícitas](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions) potencialmente perigosas. Um rebaixamento, por exemplo, de 256 bits para 8 bits, precisa ser explícito.
+
+```solidity
+
+ // Read the value, but do not write it to the cache
+ if (_firstByte == uint8(DONT_CACHE))
+ return(_fromByte+33, _calldataVal(_fromByte+1, 32));
+
+ // Read the value, and write it to the cache
+ if (_firstByte == uint8(INTO_CACHE)) {
+ uint _param = _calldataVal(_fromByte+1, 32);
+ cacheWrite(_param);
+ return(_fromByte+33, _param);
+ }
+
+ // If we got here it means that we need to read from the cache
+
+ // Number of extra bytes to read
+ uint8 _extraBytes = _firstByte / 16;
+```
+
+Pegue o [nibble](https://en.wikipedia.org/wiki/Nibble) inferior e combine-o com os outros bytes para ler o valor do cache.
+
+```solidity
+ uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) +
+ _calldataVal(_fromByte+1, _extraBytes);
+
+ return (_fromByte+_extraBytes+1, cacheRead(_key));
+
+ } // _readParam
+
+
+ // Read n parameters (functions know how many parameters they expect)
+ function _readParams(uint _paramNum) internal returns (uint[] memory) {
+```
+
+Poderíamos pegar o número de parâmetros que temos do calldata propriamente dito, mas as funções que nos chamam sabem quantos parâmetros elas esperam. É mais fácil que elas nos contem.
+
+```solidity
+ // The parameters we read
+ uint[] memory params = new uint[](_paramNum);
+
+ // Parameters start at byte 4, before that it's the function signature
+ uint _atByte = 4;
+
+ for(uint i=0; i<_paramNum; i++) {
+ (_atByte, params[i]) = _readParam(_atByte);
+ }
+```
+
+Leia os parâmetros até que você tenha o número de que precisa. Se ultrapassarmos o fim do calldata, `_readParams` reverterá a chamada.
+
+```solidity
+
+ return(params);
+ } // readParams
+
+ // For testing _readParams, test reading four parameters
+ function fourParam() public
+ returns (uint256,uint256,uint256,uint256)
+ {
+ uint[] memory params;
+ params = _readParams(4);
+ return (params[0], params[1], params[2], params[3]);
+ } // fourParam
+```
+
+Uma grande vantagem do Foundry é que ele permite que os testes sejam escritos no Solidity ([veja o teste de cache abaixo](#testing-the-cache)). Isto faz testes unitários muito mais fáceis. Essa é uma função que lê quatro parâmetros e retorna-os para que o teste possa verificar que eles estão corretos.
+
+```solidity
+ // Get a value, return bytes that will encode it (using the cache if possible)
+ function encodeVal(uint _val) public view returns(bytes memory) {
+```
+
+`encodeVal` é uma função que o código off-chain chama para ajudar a criar o calldata que usa o cache. Ela recebe um único valor e retorna os bytes que o codificam. Essa função é uma `view`, portanto, ela não requer uma transação e, quando chamada externamente, não custa nenhum gás.
+
+```solidity
+ uint _key = val2key[_val];
+
+ // The value isn't in the cache yet, add it
+ if (_key == 0)
+ return bytes.concat(INTO_CACHE, bytes32(_val));
+```
+
+Na [EVM](/developers/docs/evm/) todo o armazenamento não inicializado é considerado como zero. Então, se buscarmos a chave de um valor que não está lá, obteremos zero. Nesse caso, os bytes que o codificaram são `INTO_CACHE` (portanto, ele será armazenado em cache da próxima vez), seguido do valor real.
+
+```solidity
+ // If the key is <0x10, return it as a single byte
+ if (_key < 0x10)
+ return bytes.concat(bytes1(uint8(_key)));
+```
+
+Bytes únicos são os mais fáceis. Somente usamos [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) para transformar um tipo de `bytes` em uma matriz de bytes que pode ser de qualquer tamanho. Apesar do nome, isso funciona bem quando fornecemos somente um argumento.
+
+```solidity
+ // Two byte value, encoded as 0x1vvv
+ if (_key < 0x1000)
+ return bytes.concat(bytes2(uint16(_key) | 0x1000));
+```
+
+Quando temos uma chave que é inferior a 163, podemos expressá-la em dois bytes. Primeiro, convertemos `_key`, que é um valor de 256 bits, para um valor de 16 bits e usamos um cálculo lógico para adicionar o número de bytes extras ao primeiro byte. Então, convertemos o byte em um valor `bytes2`, que pode ser convertido para `bytes`.
+
+```solidity
+ // There is probably a clever way to do the following lines as a loop,
+ // but it's a view function so I'm optimizing for programmer time and
+ // simplicity.
+
+ if (_key < 16*256**2)
+ return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2)));
+ if (_key < 16*256**3)
+ return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3)));
+ .
+ .
+ .
+ if (_key < 16*256**14)
+ return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14)));
+ if (_key < 16*256**15)
+ return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15)));
+```
+
+Os outros valores (3 bytes, 4 bytes, etc.) são manipulados da mesma maneira, apenas com diferentes tamanhos de campo.
+
+```solidity
+ // If we get here, something is wrong.
+ revert("Error in encodeVal, should not happen");
+```
+
+Se chegarmos até aí, significa que temos a chave que não é inferior a 16\*25615. Porém, `cacheWrite` limita as chaves, portanto, não conseguimos nem mesmo chegar a 14\*25616 (o que teria o primeiro byte de 0xFE, que se pareceria com `DONT_CACHE`). Mas ele não nos custa tanto para adicionar um teste caso um futuro programador introduza um bug.
+
+```solidity
+ } // encodeVal
+
+} // Cache
+```
+
+### Testando o cache {#testing-the-cache}
+
+Uma das vantagens do Foundry é que [ele deixa você escrever testes em Solidity](https://book.getfoundry.sh/forge/tests), o que facilita escrever testes de unidade. Os testes para a classe `Cache` estão [aqui](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol). Como o código de teste pode ser repetitivo, assim como os testes tendem a ser, este artigo explica apenas as partes interessantes.
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import "forge-std/Test.sol";
+
+
+// Need to run `forge test -vv` for the console.
+import "forge-std/console.sol";
+```
+
+Isso é apenas um modelo necessário para usar o pacote de teste e `console.log`.
+
+```solidity
+import "src/Cache.sol";
+```
+
+Precisamos conhecer o contrato que estamos testando.
+
+```solidity
+contract CacheTest is Test {
+ Cache cache;
+
+ function setUp() public {
+ cache = new Cache();
+ }
+```
+
+A função `setUp` é chamada antes de cada teste. Nesse caso, acabamos de criar um novo cache, de modo que nossos testes não sejam afetados um pelo outro.
+
+```solidity
+ function testCaching() public {
+```
+
+Testes são funções cujos nomes começam com `test`. Essa função verifica a funcionalidade básica do cache, escrevendo valores e lendo-os novamente.
+
+```solidity
+ for(uint i=1; i<5000; i++) {
+ cache.cacheWrite(i*i);
+ }
+
+ for(uint i=1; i<5000; i++) {
+ assertEq(cache.cacheRead(i), i*i);
+```
+
+Isto é como você faz teste realmente, usando as funções [`assert...`](https://book.getfoundry.sh/reference/forge-std/std-assertions). Nesse caso, nós verificamos que o valor que escrevemos é o mesmo que lemos. Podemos descartar o resultado de `cache.cacheWrite`, pois sabemos que as chaves do cache são atribuídos linearmente.
+
+```solidity
+ }
+ } // testCaching
+
+
+ // Cache the same value multiple times, ensure that the key stays
+ // the same
+ function testRepeatCaching() public {
+ for(uint i=1; i<100; i++) {
+ uint _key1 = cache.cacheWrite(i);
+ uint _key2 = cache.cacheWrite(i);
+ assertEq(_key1, _key2);
+ }
+```
+
+Primeiro, escrevemos cada valor duas vezes para o cache e nos certificamos de que as chaves são as mesmas (ou seja, a segunda escrita não aconteceu realmente).
+
+```solidity
+ for(uint i=1; i<100; i+=3) {
+ uint _key = cache.cacheWrite(i);
+ assertEq(_key, i);
+ }
+ } // testRepeatCaching
+```
+
+Na teoria poderia haver um bug que não afetasse escritas em cache consecutivas. Então, fazemos aqui algumas escritas que não sejam consecutivas e observamos que os valores ainda não foram reescritos.
+
+```solidity
+ // Read a uint from a memory buffer (to make sure we get back the parameters
+ // we sent out)
+ function toUint256(bytes memory _bytes, uint256 _start) internal pure
+ returns (uint256)
+```
+
+Leia uma palavra de 256 bits de um buffer de `bytes memory`. Essa função utilitária nos deixa verificar que recebemos os resultados corretos quando executamos uma chamada de função que usa o cache.
+
+```solidity
+ {
+ require(_bytes.length >= _start + 32, "toUint256_outOfBounds");
+ uint256 tempUint;
+
+ assembly {
+ tempUint := mload(add(add(_bytes, 0x20), _start))
+ }
+```
+
+O Yul não suporta estruturas de dados além de `uint256`, então quando você se refere a uma estrutura de dados mais sofisticada, como um buffer de memória `_bytes`, você obtém o endereço dessa estrutura. O Solidity armazena valores `bytes memory` como uma palavra de 32 bytes que contém o tamanho, seguida dos bytes reais, então, para obter o número de bytes `_start`, precisamos calcular `_bytes+32+_start`.
+
+```solidity
+
+ return tempUint;
+ } // toUint256
+
+ // Function signature for fourParams(), courtesy of
+ // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d
+ bytes4 constant FOUR_PARAMS = 0x3edc1e6d;
+
+ // Just some constant values to see we're getting the correct values back
+ uint256 constant VAL_A = 0xDEAD60A7;
+ uint256 constant VAL_B = 0xBEEF;
+ uint256 constant VAL_C = 0x600D;
+ uint256 constant VAL_D = 0x600D60A7;
+```
+
+Algumas constantes de que precisamos para os testes.
+
+```solidity
+ function testReadParam() public {
+```
+
+Chame `fourParams()`, uma função que usa `readParams`, para testar nós podemos ler parâmetros corretamente.
+
+```solidity
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+```
+
+Não podemos usar o mecanismo de ABI normal para chamar uma função usando o cache, por isso, precisamos usar o mecanismo de baixo nível [`.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses). Esse mecanismo pega um `bytes memory` como entrada e retorna aquele (assim como o valor booleano) como saída.
+
+```solidity
+ // First call, the cache is empty
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+```
+
+É útil para o mesmo contrato suportar ambas funções em cache (para chamadas diretamente de transações) e funções não em cache (para chamadas de outros contratos inteligentes). Para fazer isso nós precisamos continuar a confiar no mecanismo Solidity para chamar a função correta, ao invés de pôr tudo em [uma função `fallback`](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function). Fazer isso torna a componibilidade muito mais fácil. Um único byte seria suficiente para identificar a função na maioria dos casos, por isso, estamos desperdiçando três bytes (16\*3=48 gás). No entanto, no momento em que escrevo este artigo, 48 gás custam 0,07 centavos de dólar, o que é um custo razoável para um código mais simples e menos sujeito a bugs.
+
+```solidity
+ // First value, add it to the cache
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+```
+
+O primeiro valor: Um sinalizador dizendo que é um valor que precisa ser escrito na cache, seguido pelos 32 bytes do valor. Os outros três valores são similares, exceto que `VAL_B` não é escrito no cache e `VAL_C` é ambos o terceiro e quarto parâmetros.
+
+```solidity
+ .
+ .
+ .
+ );
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+```
+
+É aqui que realmente chamamos o contrato `Cache`.
+
+```solidity
+ assertEq(_success, true);
+```
+
+Nós esperamos que a chamada tenha sucesso.
+
+```solidity
+ assertEq(cache.cacheRead(1), VAL_A);
+ assertEq(cache.cacheRead(2), VAL_C);
+```
+
+Nós começamos com uma cache vazia e então adicionamos `VAL_A` seguida de `VAL_C`. Nós esperaríamos a primeira ter a chave 1, e a segunda ter a 2.
+
+```
+ assertEq(toUint256(_callOutput,0), VAL_A);
+ assertEq(toUint256(_callOutput,32), VAL_B);
+ assertEq(toUint256(_callOutput,64), VAL_C);
+ assertEq(toUint256(_callOutput,96), VAL_C);
+```
+
+A saída é composta pelos quatro parâmetros. Aqui, verificamos que está correto.
+
+```solidity
+ // Second call, we can use the cache
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value in the Cache
+ bytes1(0x01),
+```
+
+As chaves de cache abaixo de 16 correspondem a apenas um byte.
+
+```solidity
+ // Second value, don't add it to the cache
+ cache.DONT_CACHE(),
+ bytes32(VAL_B),
+
+ // Third and fourth values, same value
+ bytes1(0x02),
+ bytes1(0x02)
+ );
+ .
+ .
+ .
+ } // testReadParam
+```
+
+Os testes depois da chamada são idênticos a aqueles depois da primeira chamada.
+
+```solidity
+ function testEncodeVal() public {
+```
+
+Esta função é similar a `testReadParam`, exceto que ao invés de escrever os parâmetros explicitamente, nós usamos `encodeVal()`.
+
+```solidity
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(VAL_A),
+ cache.encodeVal(VAL_B),
+ cache.encodeVal(VAL_C),
+ cache.encodeVal(VAL_D)
+ );
+ .
+ .
+ .
+ assertEq(_callInput.length, 4+1*4);
+ } // testEncodeVal
+```
+
+O único teste adicional em `testEncodeVal()` é verificar que o comprimento de `_callInput` está correto. Para a primeira chamada, ele é 4+33\*4. Para a segunda, na qual cada valor já está no cache, ele é 4+1\*4.
+
+```solidity
+ // Test encodeVal when the key is more than a single byte
+ // Maximum three bytes because filling the cache to four bytes takes
+ // too long.
+ function testEncodeValBig() public {
+ // Put a number of values in the cache.
+ // To keep things simple, use key n for value n.
+ for(uint i=1; i<0x1FFF; i++) {
+ cache.cacheWrite(i);
+ }
+```
+
+A função `testEncodeVal` acima somente escreve quatro valores na cache, então [a parte da função que lida com valores multi-byte](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) não é checada. Porém, esse código é complicado e sujeito a erros.
+
+A primeira parte dessa função é um loop que escreve todos os valores de 1 até 0x1FFF para o cache em ordem, a fim de podermos codificar esses valores e saber para onde eles estão indo.
+
+```solidity
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(0x000F), // One byte 0x0F
+ cache.encodeVal(0x0010), // Two bytes 0x1010
+ cache.encodeVal(0x0100), // Two bytes 0x1100
+ cache.encodeVal(0x1000) // Three bytes 0x201000
+ );
+```
+
+Teste valores de um byte, dois bytes e três bytes. Não testamos além disso, pois levaria tempo demais para escrever entradas de pilha suficientes (pelo menos 0x10000000, cerca de um quarto de bilhão).
+
+```solidity
+ .
+ .
+ .
+ .
+ } // testEncodeValBig
+
+
+ // Test what with an excessively small buffer we get a revert
+ function testShortCalldata() public {
+```
+
+Teste o que acontece no caso anormal em que não há parâmetros suficientes.
+
+```solidity
+ .
+ .
+ .
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, false);
+ } // testShortCalldata
+```
+
+Como ele é revertido, o resultado deve ser `false`.
+
+```
+ // Call with cache keys that aren't there
+ function testNoCacheKey() public {
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value, add it to the cache
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+
+ // Second value
+ bytes1(0x0F),
+ bytes2(0x1234),
+ bytes11(0xA10102030405060708090A)
+ );
+```
+
+Esta função pega quatro parâmetros perfeitamente legítimos, exceto que a cache está vazia, então não há valores lá para ler.
+
+```solidity
+ .
+ .
+ .
+ // Test what with an excessively long buffer everything works file
+ function testLongCalldata() public {
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+
+ // First call, the cache is empty
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_A),
+
+ // Second value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_B),
+
+ // Third value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_C),
+
+ // Fourth value, add it to the cache
+ cache.INTO_CACHE(), bytes32(VAL_D),
+
+ // And another value for "good luck"
+ bytes4(0x31112233)
+ );
+```
+
+Esta função envia cinco valores. Sabemos que o quinto valor é ignorado porque não é uma entrada de cache válida, o que causaria uma reversão se não tivesse sido incluída.
+
+```solidity
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, true);
+ .
+ .
+ .
+ } // testLongCalldata
+
+} // CacheTest
+
+```
+
+## Uma amostra do aplicativo {#a-sample-app}
+
+Escrever testes em Solidity é tudo muito bem, mas no final do dia, um dapp precisa ser capaz de processar requisições de fora da cadeia para ser útil. Este artigo demonstra como usar o cache em um dapp com `WORM`, que significa “escrever uma vez, ler várias” (em inglês, "Write Once, Read Many"). Se uma chave ainda não estiver escrita, você pode escrever um valor para ela. Se a chave já estiver escrita, você terá uma reversão.
+
+### O contrato {#the-contract}
+
+[Este é o contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol). Ele repete, em grande parte, o que já fizemos com `Cache` e `CacheTest`, então abrangeremos somente as partes que são interessantes.
+
+```solidity
+import "./Cache.sol";
+
+contract WORM is Cache {
+```
+
+A maneira mais fácil de usar `Cache` é herdá-lo no seu próprio contrato.
+
+```solidity
+ function writeEntryCached() external {
+ uint[] memory params = _readParams(2);
+ writeEntry(params[0], params[1]);
+ } // writeEntryCached
+```
+
+Essa função é similar a `fourParam` no `CacheTest` acima. Como nós não seguimos as especificações da ABI, é melhor não declarar nenhum parâmetro dentro da função.
+
+```solidity
+ // Make it easier to call us
+ // Function signature for writeEntryCached(), courtesy of
+ // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3
+ bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3;
+```
+
+O código externo que chama `writeEntryCached` precisará construir manualmente o calldata, ao invés de usar `worm.writeEntryCached`, porque nós não seguimos as especificações da ABI. Tendo o valor desta constante só facilita escrevê-la.
+
+Observe que, apesar de definirmos `WRITE_ENTRY_CACHED` como uma variável de estado, para lê-la externamente é necessário usar a função getter, `worm.WRITE_ENTRY_CACHED()`.
+
+```solidity
+ function readEntry(uint key) public view
+ returns (uint _value, address _writtenBy, uint _writtenAtBlock)
+```
+
+A função de leitura é uma `view`, então ela não requer uma transação e não custa gas. Como resultado, não há benefício de usar cache para o parâmetro. Com funções view é melhor usar o mecanismo padrão, que é mais simples.
+
+### O código de teste {#the-testing-code}
+
+[Este é o código de teste para o contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol). Novamente, vamos ver somente o que é interessante.
+
+```solidity
+ function testWReadWrite() public {
+ worm.writeEntry(0xDEAD, 0x60A7);
+
+ vm.expectRevert(bytes("entry already written"));
+ worm.writeEntry(0xDEAD, 0xBEEF);
+```
+
+[Este (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) é como especificamos em um teste Foundry que a próxima chamada deve falhar, assim como a razão dessa falha. Isto se aplica quando nós usamos a sintaxe `.()` ao invés de construir o calldata e chamar o contrato usando interface de baixo nível (`.call()`, etc.).
+
+```solidity
+ function testReadWriteCached() public {
+ uint cacheGoat = worm.cacheWrite(0x60A7);
+```
+
+Aqui nós usamos o fato de `cacheWrite` retornar a chave da cache. Isto não é algo que nós esperaríamos usar em produção, porque `cacheWrite` altera o estado, e por isso pode ser chamado apenas durante a transação. Transações não têm valores de retorno. Se elas têm resultados, esses resultados devem ser supostamente emitidos como eventos. Assim, o valor de retorno de `cacheWrite` é somente acessível do código on-chain, e o código on-chain não precisa armazenar parâmetros em cache.
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+```
+
+É assim que contamos ao Solidity que, enquanto `.call()` tem dois valores de retorno, só nos importamos com o primeiro.
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+ assertEq(_success, false);
+```
+
+Como usamos a função de baixo nível `.call()`, não podemos usar `vm.expectRevert()` e temos de olhar para o valor de êxito booleano que obtivemos da chamada.
+
+```solidity
+ event EntryWritten(uint indexed key, uint indexed value);
+
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b));
+ vm.expectEmit(true, true, false, false);
+ emit EntryWritten(a, b);
+ (_success,) = address(worm).call(_callInput);
+```
+
+Essa é a maneira que verificamos que o código [emite um evento corretamente](https://book.getfoundry.sh/cheatcodes/expect-emit) no Foundry.
+
+### O cliente {#the-client}
+
+Uma coisa que você não obtém com testes no Solidity é código JavaScript, que você pode cortar e colar no seu próprio aplicativo. Para escrever este código, implantei WORM na [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli), a nova rede de teste da [Optimism](https://www.optimism.io/). Ela está no endereço [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a).
+
+[Você pode ver o código JavaScript para o cliente aqui](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/javascript/index.js). Para usá-lo:
+
+1. Clone o repositório git:
+
+ ```sh
+ git clone https://github.com/qbzzt/20220915-all-you-can-cache.git
+ ```
+
+2. Instale os pacotes necessários:
+
+ ```sh
+ cd javascript
+ yarn
+ ```
+
+3. Copie o arquivo de configuração:
+
+ ```sh
+ cp .env.example .env
+ ```
+
+4. Edite `.env` para a sua configuração:
+
+ | Parâmetro | Valor |
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | MNEMÔNICO | O mnemônico para uma conta que tem ETH suficiente para pagar por uma transação. [Você consegue ETH grátis para a rede Optimism Goerli aqui](https://optimismfaucet.xyz/). |
+ | OPTIMISM_GOERLI_URL | URL da Optimism Goerli. O endpoint público, `https://goerli.optimism.io`, tem taxa limitada mas suficiente para o que precisamos aqui |
+
+5. Rode `index.js`.
+
+ ```sh
+ node index.js
+ ```
+
+ Primeiro, esse exemplo de aplicativo escreve uma entrada para WORM, exibindo o calldata e um link para a transação no Etherscan. Em seguida, ele lê novamente essa entrada e exibe a chave que usou e os valores na entrada (valor, bloco, número e autor).
+
+A maioria dos clientes é Javascript Dapp normal. Então, novamente, passaremos apenas pelas partes interessantes.
+
+```javascript
+.
+.
+.
+const main = async () => {
+ const func = await worm.WRITE_ENTRY_CACHED()
+
+ // Need a new key every time
+ const key = await worm.encodeVal(Number(new Date()))
+```
+
+Um dado slot pode ser apenas escrito uma vez, então usamos o carimbo de data/hora para ter certeza de que não vamos reutilizar esses slots.
+
+```javascript
+const val = await worm.encodeVal("0x600D")
+
+// Write an entry
+const calldata = func + key.slice(2) + val.slice(2)
+```
+
+Ethers espera que o dado da chamada seja uma cadeia de caracteres hexadecimal, `0x` seguida de um número par de dígitos hexadecimais. Como `key` e `val` começam com `0x`, precisamos remover esses cabeçalhos.
+
+```javascript
+const tx = await worm.populateTransaction.writeEntryCached()
+tx.data = calldata
+
+sentTx = await wallet.sendTransaction(tx)
+```
+
+Como no código de teste Solidity, não podemos chamar uma função em cache normalmente. Ao invés disso, nós precisamos usar um mecanismo de nível mais baixo.
+
+```javascript
+ .
+ .
+ .
+ // Read the entry just written
+ const realKey = '0x' + key.slice(4) // remove the FF flag
+ const entryRead = await worm.readEntry(realKey)
+ .
+ .
+ .
+```
+
+Para ler entradas, podemos usar o mecanismo normal. Não há necessidade de armazenar em cache parâmetros com funções `view`.
+
+## Conclusão {#conclusion}
+
+O código neste artigo é uma prova de conceito, a finalidade é tornar a ideia fácil de entender. Para um sistema pronto para produção, recomenda-se implementar funcionalidades adicionais:
+
+- Manipular valores que não são `uint256`. Por exemplo, cadeias de caracteres.
+- Em vez de um cache global, talvez ter um mapeamento entre usuários e caches. Usuários diferentes usam valores diferentes.
+- Valores usados para endereços são distintos daqueles usados para outras finalidades. Pode fazer sentido ter um cache separado só para endereços.
+- Atualmente, as chaves de cache estão em um algoritmo do tipo “o primeiro que chega tem a chave menor”. Os primeiros dezesseis valores podem ser enviados como um único byte. Os próximos 4.080 valores podem ser enviados como dois bytes. Os próximos milhões de valores são três bytes, etc. Um sistema de produção deveria manter contadores de uso nas entradas de cache e reorganizá-las para que os dezesseis _mais comuns_ valores sejam um byte, os próximos 4080 valores mais comuns sejam dois bytes, etc.
+
+ No entanto, essa é uma operação potencialmente perigosa. Imagine a seguinte sequência de eventos:
+
+ 1. Noam Naive chama `encodeVal` para codificar o endereço para o qual ele quer enviar tokens. Este endereço é um dos primeiros usados na aplicação, então o valor codificado é 0x06. Trata-se de uma função `view`, e não uma transação, então ela diz respeito unicamente a Noam e ao nó que ele usa, e ninguém mais sabe disso
+
+ 2. Owen Owner executa a operação de reordenação de cache. Muito poucas pessoas realmente usam esse endereço, por isso, ele é agora codificado como 0x201122. Para um valor diferente, 1018, é atribuído 0x06.
+
+ 3. Noam Naive envia seus tokens para 0x06. Eles vão para o endereço `0x0000000000000000000000000de0b6b3a7640000`, e já que ninguém sabe a chave privada para esse endereço, eles ficam presos lá. Noam _não está contente_.
+
+ Existem maneiras de resolver esse problema, e o problema relacionado às transações que estão na mempool durante a reordenação do cache, mas você deve estar atento a isso.
+
+Demonstrei o processo de armazenamento em cache aqui com o Optimism, porque sou funcionário da Optimism e esse é o roll-up que conheço melhor. Mas deve funcionar com qualquer rollup que cobre um mínimo custo por processamento interno, de modo que em comparação com escrever os dados da transação na L1 é a maior despesa.
diff --git a/public/content/translations/pt-br/developers/tutorials/create-and-deploy-a-defi-app/index.md b/public/content/translations/pt-br/developers/tutorials/create-and-deploy-a-defi-app/index.md
new file mode 100644
index 00000000000..5b726fa0266
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/create-and-deploy-a-defi-app/index.md
@@ -0,0 +1,481 @@
+---
+title: Criar e promover um Aplicativo DeFi
+description: Deposite tokens ERC20 para o contrato inteligente e crie fazenda de tokens
+author: "strykerin"
+tags:
+ - "solidity"
+ - "defi"
+ - "web3"
+ - "truffle"
+ - "ganache"
+ - "Contratos Inteligentes"
+skill: intermediate
+lang: pt-br
+published: 2020-12-31
+source: github.com
+sourceUrl: https://github.com/strykerin/DeFi-Token-Farm
+---
+
+Neste tutorial, construiremos um aplicativo DeFi com Solidity onde os usuários podem depositar um token ERC20 no contrato inteligente e ele cunhará e transferirá os Tokens Farm para eles. Os usuários podem posteriormente retirar seus tokens ERC20 queimando seu Farm Token em contrato inteligente e os tokens ERC20 serão transferidos de volta para eles.
+
+## Instale o Truffle e o Ganache {#install-truffle-and-ganache}
+
+Se esta for a primeira vez que você está escrevendo um contrato inteligente, você precisará configurar seu ambiente primeiro. Vamos usar duas ferramentas:[Truffle](https://www.trufflesuite.com/) and [Ganache](https://www.trufflesuite.com/ganache).
+
+O Truffle é um ambiente de desenvolvimento e estrutura de teste para o desenvolvimento de contratos inteligentes para o Ethereum. Com o Truffle, é fácil construir e implantar contratos inteligentes na blockchain. O Ganache nos permite criar uma blockchain Ethereum local para testar contratos inteligentes. Ele simula os recursos da rede real e as primeiras 10 contas são financiadas com 100 ether de teste, tornando a implantação e o teste do contrato inteligente gratuitos e fáceis. O Ganache está disponível como um aplicativo de desktop e uma ferramenta de linha de comandos. Para este artigo, usaremos o aplicativo de desktop de interface do usuário.
+
+![Aplicativo de área de trabalho Ganache UI](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_Aplicativo de desktop Ganache UI_
+
+Para criar o projeto, execute os seguintes passos
+
+```bash
+mkdir your-project-name
+cd your-project-name
+truffle init
+```
+
+Isso criará um projeto em branco para o desenvolvimento e implantação de nossos contratos inteligentes. A estrutura do projeto criada é a seguinte:
+
+- A Pasta para os contratos inteligentes de solidez: `contracts`
+
+- `migrações`: Pasta para os scripts de implantação
+
+- `test`: Pasta para testar nossos contratos inteligentes
+
+- `truffle-config.js`: Arquivo de configuração do Truffle
+
+## Criar o token ERC20 {#create-the-erc20-token}
+
+Primeiro, precisamos criar seu token ERC20 que usaremos para apostar no contrato inteligente. Para criar nosso token fungível, primeiro precisamos instalar a biblioteca OpenZeppelin. Esta biblioteca contém as implementações de padrões como o ERC20 e o ERC721. Para instalá-lo, execute os passos:
+
+```bash
+npm install @openzeppelin/contracts
+```
+
+Usando a biblioteca OpenZeppelin, podemos criar nosso token ERC20 gravando em `contracts/MyToken.sol` com o seguinte código solidity:
+
+```solidity
+pragma solidity ^0.8.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract MyToken is ERC20 {
+ constructor() public ERC20("MyToken", "MTKN"){
+ _mint(msg.sender, 1000000000000000000000000);
+ }
+}
+```
+
+No código acima em:
+
+- Linha 3: Importamos o contrato ERC20.sol do openzeppelin que contém a implementação para este padrão de token.
+
+- Linha 5: Herdamos do contrato ERC20.sol.
+
+- Linha 6: Estamos chamando o construtor ERC20.sol e passando os parâmetros name e symbol como `"MyToken"` e `"MTKN"` respectivamente.
+
+- Linha 7: Estamos cunhando e transferindo 1 milhão de tokens para a conta que está implantando o contrato inteligente (estamos usando os 18 decimais padrão para o token ERC20, o que significa que, se quisermos cunhar 1 token, você o representará como 1000000000000000000, 1 com 18 zeros).
+
+Podemos ver abaixo a implementação do construtor ERC20.sol onde o campo `_decimals` está definido como 18:
+
+```solidity
+string private _name;
+string private _symbol;
+uint8 private _decimals;
+
+constructor (string memory name_, string memory symbol_) public {
+ _name = name_;
+ _symbol = symbol_;
+ _decimals = 18;
+}
+```
+
+## Compilar o token ERC20 {#compile-the-erc20-token}
+
+Para compilar nosso contrato inteligente, devemos primeiro verificar nossa versão do compilador de solidez. Você pode verificar isso executando o comando:
+
+```bash
+truffle version
+```
+
+A versão padrão é a `Solidity v0.5.16`. Como nosso token é escrito usando a versão solidity `0.6.2`, se executarmos o comando para compilar nossos contratos, obteremos um erro do compilador. Para especificar qual versão do compilador de solidez será usada, acesse o arquivo `truffle-config. s` e são definidos para a versão desejada do compilador como vistos abaixo:
+
+```javascript
+// Configure your compilers
+compilers: {
+ solc: {
+ version: "^0.8.0", // Fetch exact version from solc-bin (default: truffle's version)
+ // docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
+ // settings: { // See the solidity docs for advice about optimization and evmVersion
+ // optimizer: {
+ // enabled: false,
+ // runs: 200
+ // },
+ // evmVersion: "byzantium"
+ // }
+ }
+}
+```
+
+Agora podemos compilar nosso contrato inteligente executando o seguinte comando:
+
+```bash
+truffle compile
+```
+
+## Instalar Token ERC20 {#deploy-erc20-token}
+
+Depois de compilado, podemos publicar nosso token.
+
+Na pasta de `migrations`, crie um arquivo chamado `2_deploy_Tokens.js`. Este arquivo é onde implantaremos nosso token ERC20 e nosso contrato inteligente FarmToken. O código abaixo é usado para publicar nosso contrato MyToken.sol:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+
+module.exports = async function (deployer, network, accounts) {
+ // Deploy MyToken
+ await deployer.deploy(MyToken)
+ const myToken = await MyToken.deployed()
+}
+```
+
+Abra o Ganache e selecione a opção "Quickstart" para iniciar uma blockchain local de Ethereum. Para publicar nosso contrato, execute:
+
+```bash
+truffle migrate
+```
+
+O endereço usado para implantar nossos contratos é o primeiro da lista de endereços que o Ganache nos mostra. Para verificar isso, podemos abrir o aplicativo de trabalho Ganache e podemos verificar se o saldo de ether para a primeira conta foi reduzido devido ao custo de ether para a implantação dos nossos contratos inteligentes:
+
+![Aplicativo de desktop Ganache Ui](https://cdn-images-1.medium.com/max/2346/1*1iJ9VRlyLuza58HL3DLfpg.png)_Aplicativo de desktop Ganache Ui_
+
+Para verificar que 1 milhão de tokens MyToken foram enviados para o endereço de deploy, podemos utilizar o Truffle Console para interagir com o nosso contrato inteligente que foi publicado.
+
+> [Truffle Console é um console básico interativo conectando-se a qualquer cliente Ethereum.](https://www.trufflesuite.com/docs/truffle/getting-started/using-truffle-develop-and-the-console)
+
+Para interagir com nosso contrato inteligente, execute o seguinte comando:
+
+```bash
+truffle console
+```
+
+Agora podemos escrever os seguintes comandos no terminal:
+
+- Obter o contrato inteligente: `meuToken = await MyToken.deployed()`
+
+- Obter o array de contas de Ganache: `contas = aguardar web3.eth.getAccounts()`
+
+- Obter o saldo para a primeira conta: `balance = await myToken.balanceOf(contas[0])`
+
+- Formate o saldo de 18 decimals: `web3.utils.fromWei(balance.toString())`
+
+Executando os comandos acima, vamos ver que o primeiro endereço tem na verdade 1 milhão de MyTokens:
+
+![Primeiro endereço tem 1000000 MyTokens](https://cdn-images-1.medium.com/max/2000/1*AQlj9A7dw-qtY4QAD3Bpxw.png)
+
+_Primeiro endereço tem 1000000 MyTokens_
+
+## Criando FarmToken Smart Contract {#create-farmtoken-smart-contract}
+
+O contrato inteligente FarmToken terá 3 funções:
+
+- `balance()`: Obter o balanço do MyToken no contrato inteligente FarmToken.
+
+- `deposit(uint256 _amount)`: Transfira MyToken em nome do usuário para o contrato inteligente FarmToken e então importe FarmToken para o usuário.
+
+- `withdraw(uint256 _amount)`: Queimar FarmTokens do usuário e transferir MyTokens para o endereço do usuário.
+
+Vamos dar uma olhada no construtor do FarmToken:
+
+```solidity
+pragma solidity ^0.6.2;
+
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/utils/Address.sol";
+import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract FarmToken is ERC20 {
+ using Address for address;
+ using SafeMath for uint256; // As of Solidity v0.8.0, mathematical operations can be done safely without the need for SafeMath
+ using SafeERC20 for IERC20;
+
+ IERC20 public token;
+
+ constructor(address _token)
+ public
+ ERC20("FarmToken", "FRM")
+ {
+ token = IERC20(_token);
+ }
+```
+
+- Linhas 3-6: Estamos importando os seguintes contratos do openzeppelin: IERC20.sol, Address.sol, SafeERC20.sol e ERC20.sol.
+
+- Linha 8: O FarmToken vai herdar do contrato ERC20.
+
+- Linhas 14-19: O construtor FarmToken receberá como parâmetro o endereço do contrato MyToken e atribuiremos seu contrato à nossa variável pública chamada `token`.
+
+Vamos implementar a função `balance()`. Ele não receberá parâmetros e retornará o saldo do MyToken neste contrato inteligente. Ela está implementada como mostrado abaixo:
+
+```solidity
+function balance() public view returns (uint256) {
+ return token.balanceOf(address(this));
+}
+```
+
+Para a função `deposit(uint256 _amount)`, ele receberá como parâmetro a quantia que o usuário deseja depositar e irá fazer a cunhagem e transferir FarmTokens para o usuário:
+
+```solidity
+function deposit(uint256 _amount) public {
+ // Amount must be greater than zero
+ require(_amount > 0, "amount cannot be 0");
+
+ // Transfer MyToken to smart contract
+ token.safeTransferFrom(msg.sender, address(this), _amount);
+
+ // Mint FarmToken to msg sender
+ _mint(msg.sender, _amount);
+}
+```
+
+Para a função `withdraw(uint256 _amount)`, nós vamos receber como parâmetro a quantidade de FarmTokens que o usuário deseja queimar e então vamos transferir a mesma quantidade de MyTokens de volta para o usuário:
+
+```solidity
+function withdraw(uint256 _amount) public {
+ // Burn FarmTokens from msg sender
+ _burn(msg.sender, _amount);
+
+ // Transfer MyTokens from this smart contract to msg sender
+ token.safeTransfer(msg.sender, _amount);
+}
+```
+
+Como implantar um contrato inteligente. Para fazer isso, vamos voltar para o arquivo `2_deploy_Tokens.js` e adicionar o novo contrato a ser implantado:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (deployer, network, accounts) {
+ // Deploy MyToken
+ await deployer.deploy(MyToken)
+ const myToken = await MyToken.deployed()
+
+ // Deploy Farm Token
+ await deployer.deploy(FarmToken, myToken.address)
+ const farmToken = await FarmToken.deployed()
+}
+```
+
+Note que ao implantar o FarmToken, passamos como parâmetro o endereço do contrato MyToken implantado.
+
+Agora, rode `truffle compilar` e `truffle migrar` para implantar nossos contratos.
+
+Vamos testar o nosso contrato inteligente. Em vez de usar o `truffle console` para interagir com o nosso contrato inteligente, criaremos um script para automatizar esse processo. Crie uma pasta chamada `scripts` e adicione o seguinte arquivo `getMyTokenBalance.js`. Ele irá verificar o saldo dos MyTokens no contrato inteligente do Farmtoken:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ myToken = await MyToken.deployed()
+ farmToken = await FarmToken.deployed()
+ balance = await myToken.balanceOf(farmToken.address)
+ console.log(web3.utils.fromWei(balance.toString()))
+ callback()
+}
+```
+
+Para executar esse script, execute o seguinte comando na linha de comando:
+
+```bash
+truffle exec .\scripts\getMyTokenBalance.js
+```
+
+Vamos obter o resultado esperado que é 0. Se você receber um erro sobre o FarmToken ainda não foi implantado, a rede truffle não recebeu a versão mais recente do seu código de contratos. Apenas feche o ganache, reinicie o programa rapidamente e certifique-se de executar `a migração de um truffle`.
+
+Agora, vamos fazer o staking do MyToken para o contrato inteligente. Desde a função `deposit(uint256 _amount)` chama a função `safeTransferFrom` do ERC20, primeiro o usuário deve aprovar o contrato inteligente para transferir MyToken em nome do usuário. Então, no script abaixo, primeiro aprovaremos esta etapa e então chamaremos a função:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ const accounts = await new web3.eth.getAccounts()
+ const myToken = await MyToken.deployed()
+ const farmToken = await FarmToken.deployed()
+
+ // Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through transferFrom.
+ // This is zero by default.
+ const allowanceBefore = await myToken.allowance(
+ accounts[0],
+ farmToken.address
+ )
+ console.log(
+ "Amount of MyToken FarmToken is allowed to transfer on our behalf Before: " +
+ allowanceBefore.toString()
+ )
+
+ // In order to allow the Smart Contract to transfer to MyToken (ERC-20) on the accounts[0] behalf,
+ // we must explicitly allow it.
+ // We allow farmToken to transfer x amount of MyToken on our behalf
+ await myToken.approve(farmToken.address, web3.utils.toWei("100", "ether"))
+
+ // Validate that the farmToken can now move x amount of MyToken on our behalf
+ const allowanceAfter = await myToken.allowance(accounts[0], farmToken.address)
+ console.log(
+ "Amount of MyToken FarmToken is allowed to transfer on our behalf After: " +
+ allowanceAfter.toString()
+ )
+
+ // Verify accounts[0] and farmToken balance of MyToken before and after the transfer
+ balanceMyTokenBeforeAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenBeforeFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log("*** My Token ***")
+ console.log(
+ "Balance MyToken Before accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken Before TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenBeforeFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenBeforeAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenBeforeFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken Before accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken Before TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenBeforeFarmToken.toString())
+ )
+ // Call Deposit function from FarmToken
+ console.log("Call Deposit Function")
+ await farmToken.deposit(web3.utils.toWei("100", "ether"))
+ console.log("*** My Token ***")
+ balanceMyTokenAfterAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenAfterFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance MyToken After accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken After TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenAfterFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenAfterAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenAfterFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken After accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken After TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenAfterFarmToken.toString())
+ )
+
+ // End function
+ callback()
+}
+```
+
+Para rodar esse script: `truffle exec .\scripts\transferMyTokenToFarmToken.js`. Você deve ver no seu console:
+
+![output do transferMyTokenToFarmToken.js](https://cdn-images-1.medium.com/max/2000/1*MoekE2QCw7vB98u5dl7ang.png)
+
+_output do transferMyTokenToFarmToken.js_
+
+Como podemos ver, depositamos MyTokens com sucesso no contrato inteligente já que a primeira conta agora tem FarmTokens.
+
+Para retirar:
+
+```javascript
+const MyToken = artifacts.require("MyToken")
+const FarmToken = artifacts.require("FarmToken")
+
+module.exports = async function (callback) {
+ const accounts = await new web3.eth.getAccounts()
+ const myToken = await MyToken.deployed()
+ const farmToken = await FarmToken.deployed()
+
+ // Verify accounts[0] and farmToken balance of MyToken before and after the transfer
+ balanceMyTokenBeforeAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenBeforeFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log("*** My Token ***")
+ console.log(
+ "Balance MyToken Before accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken Before TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenBeforeFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenBeforeAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenBeforeFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken Before accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenBeforeAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken Before TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenBeforeFarmToken.toString())
+ )
+
+ // Call Deposit function from FarmToken
+ console.log("Call Withdraw Function")
+ await farmToken.withdraw(web3.utils.toWei("100", "ether"))
+
+ console.log("*** My Token ***")
+ balanceMyTokenAfterAccounts0 = await myToken.balanceOf(accounts[0])
+ balanceMyTokenAfterFarmToken = await myToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance MyToken After accounts[0] " +
+ web3.utils.fromWei(balanceMyTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance MyToken After TokenFarm " +
+ web3.utils.fromWei(balanceMyTokenAfterFarmToken.toString())
+ )
+
+ console.log("*** Farm Token ***")
+ balanceFarmTokenAfterAccounts0 = await farmToken.balanceOf(accounts[0])
+ balanceFarmTokenAfterFarmToken = await farmToken.balanceOf(farmToken.address)
+ console.log(
+ "Balance FarmToken After accounts[0] " +
+ web3.utils.fromWei(balanceFarmTokenAfterAccounts0.toString())
+ )
+ console.log(
+ "Balance FarmToken After TokenFarm " +
+ web3.utils.fromWei(balanceFarmTokenAfterFarmToken.toString())
+ )
+
+ // End function
+ callback()
+}
+```
+
+Para rodar esse script: `truffle exec .\scripts\transferMyTokenToFarmToken.js`. Como podemos ver no output abaixo, nós conseguimos de volta os MyTokens com sucesso e acabamos com os FarmTokens:
+
+![output do withdrawMyTokenFromTokenFarm.js](https://cdn-images-1.medium.com/max/2000/1*jHYlTFg0NgGbhASpsRvc0w.png)
+
+_output do withdrawMyTokenFromTokenFarm.js_
+
+## Referências {#references}
+
+[Contratos - OpenZeppelin Docs](https://docs.openzeppelin.com/contracts/3.x/)
+
+[Ferramentas Suplentes para Contratos Inteligentes Common Suite](https://www.trufflesuite.com/)
+
+[Ganache | Truffle Suite](https://www.trufflesuite.com/ganache)
+
+[O que é DeFi? Um guia para iniciantes (atualizado em 2021) (99bitcoins.com)](https://99bitcoins.com/what-is-defi/)
+
+[DeFi - A classificação da finança descentraliza no DeFi Llama](https://defillama.com/)
diff --git a/public/content/translations/pt-br/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/pt-br/developers/tutorials/deploying-your-first-smart-contract/index.md
new file mode 100644
index 00000000000..4d78c0a3e2e
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -0,0 +1,99 @@
+---
+title: Implementando seu primeiro contrato inteligente
+description: Uma introdução à implantação do seu primeiro contrato inteligente em uma rede de teste Ethereum
+author: "jdourlens"
+tags:
+ - "contratos inteligentes"
+ - "remix"
+ - "solidity"
+ - "implementação"
+skill: beginner
+lang: pt-br
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+Acho que você está tão animado quanto nós para [implantar](/developers/docs/smart-contracts/deploying/) e interagir com o seu primeiro [contrato inteligente](/developers/docs/smart-contracts/) na blockchain Ethereum.
+
+Não se preocupe, pois como este é o nosso primeiro contrato inteligente, vamos publicá-lo em uma [rede de testes local](/developers/docs/networks/), assim não custa nada para você implementar e brincar com ele o quanto quiser.
+
+## Escrevendo nosso contrato {#writing-our-contract}
+
+O primeiro passo é [visitar a Remix](https://remix.ethereum.org/) e criar um novo arquivo. Na parte superior esquerda da interface Remix adicione um novo arquivo e digite o nome do arquivo desejado.
+
+![Adicionando um novo arquivo na interface Remix](./remix.png)
+
+No novo arquivo, vamos colar o seguinte código.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.5.17;
+
+contract Counter {
+
+ // Public variable of type unsigned int to keep the number of counts
+ uint256 public count = 0;
+
+ // Function that increments our counter
+ function increment() public {
+ count += 1;
+ }
+
+ // Not necessary getter to get the count value
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+Se você está acostumado com programação, você pode facilmente adivinhar o que este programa faz. Aqui está uma explicação linha a linha:
+
+- Linha 4: Definimos um contrato com o nome `Counter`.
+- Linha 7: Nosso contrato armazena um inteiro não assinado chamado `count` começando com 0.
+- Linha 10: A primeira função vai modificar o estado do contrato e `increment()` nossa variável `count`.
+- Linha 15: A segunda função é apenas um getter para ser capaz de ler o valor da variável `count` fora do contrato inteligente. Observe que, como definimos nossa variável `count` como pública, isso não é necessário, mas é mostrado como um exemplo.
+
+Tudo isso para o nosso primeiro contrato inteligente simples. Como você deve saber, ele se parece com uma classe de linguagens OOP (Object-Oriented Programming, programação orientada a objetos) como Java ou C++. Agora é hora de brincar com o nosso contrato.
+
+## Implantando nosso contrato {#deploying-our-contract}
+
+Como escrevemos nosso primeiro contrato inteligente, nós agora faremos deploy para a blockchain para poder brincar com ele.
+
+[Implantar o contrato inteligente no blockchain](/developers/docs/smart-contracts/deploying/) é, na verdade, apenas enviar uma transação que contém o código do contrato inteligente compilado sem especificar os destinatários.
+
+Primeiro, vamos [compilar o contrato](/developers/docs/smart-contracts/compiling/) clicando no ícone de compilação no lado esquerdo:
+
+![O ícone de compilação na barra de ferramentas Remix](./remix-compile-button.png)
+
+Em seguida, clique no botão de compilação:
+
+![O botão de compilação no compilador do solidity Remix](./remix-compile.png)
+
+Você pode escolher selecionar a opção "Compilação automática", para que o contrato sempre seja compilado quando você salvar o conteúdo no editor de texto.
+
+Em seguida, navegue para a tela de implantação e execução de transações:
+
+![O ícone de compilação na barra de ferramentas do Remix](./remix-deploy.png)
+
+Assim que você estiver na tela de transações "deploy and run" verifique se o nome do seu contrato aparece e clique em Deploy. Como você pode ver no topo da página, o ambiente atual é o "Javascript VM", o que significa que iremos implantar e interagir com nosso contrato inteligente em uma blockchain de teste local para podermos testar mais rápido e sem quaisquer custos.
+
+![O botão de deploy no compilador do solidity Remix](./remix-deploy-button.png)
+
+Quando você clicar no botão "Deploy", você verá seu contrato aparecer abaixo. Clique na seta à esquerda para expandi-la, para que possamos ver o conteúdo de nosso contrato. Esta é nossa variável `counter`, nossa função `increment()` e a getter `getCounter()`.
+
+Se você clicar no botão `count` ou `getCount`, ele recuperará o conteúdo da variável `count` do contrato e o exibirá. Como ainda não chamamos a função `increment`, ela deve exibir 0.
+
+![O botão de função no compilador do solidity Remix](./remix-function-button.png)
+
+Vamos agora chamar a função `increment` clicando no botão. Você verá logs das transações que são feitas aparecendo no parte inferior da janela. Você verá que os logs são diferentes quando estiver pressionando o botão para recuperar os dados em vez do botão `increment`. Isso porque a leitura de dados na blockchain não necessita de quaisquer transações (escritas) ou taxas. Porque somente modificar o estado do blockchain requer fazer uma transação:
+
+![Um log de transações](./transaction-log.png)
+
+Após pressionar o botão de incremento que gerará uma transação para chamar nossa função `increment()` se clicarmos novamente nos botões count ou getCount, iremos ler o estado recém-atualizado de nosso contrato inteligente com a variável de contagem maior que 0.
+
+![Estado recentemente atualizado do contrato inteligente](./updated-state.png)
+
+No próximo tutorial, explicaremos [como você pode adicionar eventos aos seus contratos inteligentes](/developers/tutorials/logging-events-smart-contracts/). Eventos de registro são uma maneira conveniente para depurar seu contrato inteligente e entender o que está acontecendo durante a chamada de uma função.
diff --git a/public/content/translations/pt-br/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/pt-br/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
new file mode 100644
index 00000000000..ed91278fc09
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
@@ -0,0 +1,163 @@
+---
+title: "Reduzir contratos para combater o limite de tamanho do contrato"
+description: O que você pode fazer para evitar que seus contratos inteligentes fiquem muito grandes?
+author: Markus Waas
+lang: pt-br
+tags:
+ - "solidez"
+ - "smart contracts"
+ - "armazenamento"
+ - "truffle"
+skill: intermediate
+published: 2020-06-26
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/max-contract-size
+---
+
+## Por que há um limite? {#why-is-there-a-limit}
+
+Em [22 de novembro de 2016](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) o fork Spurius Dragon introduziu a [EIP-170](https://eips.ethereum.org/EIPS/eip-170) que adicionou um limite de tamanho do contrato inteligente de 24.576 kb. Para você como desenvolvedor de Solidity isso significa que quando você adiciona mais e mais funcionalidade ao seu contrato, em algum momento você alcançará o limite e quando implantado verá o erro:
+
+`Aviso: O código do contrato excede 24576 bytes (um limite introduzido no Dragão Purioso). This contract may not be deployable on Mainnet. Considere habilitar o otimizador (com um valor baixo de "execução"!), desligar as strings de reverter ou usar bibliotecas.`
+
+Este limite foi introduzido para impedir ataques de negação de serviço (DOS). Qualquer apelo a um contrato é relativamente barato. No entanto, o impacto de uma chamada de contrato para os nós da Ethereum aumenta de forma desproporcionada, dependendo do tamanho do código do contrato chamado (lendo o código do disco, pré-processando o código, adicionando dados à prova de Merkle). Sempre que você tiver uma situação em que o agressor requer poucos recursos para causar muito trabalho para os outros, você tem o potencial para ataques DOS.
+
+Originalmente, tratava-se de um problema menor, porque um limite de tamanho natural do contrato é o limite de gas por bloco. Obviamente, um contrato precisa ser implementado dentro de uma transação que tenha todo o bytecode do contrato. Se você incluir apenas essa transação em um bloco, você pode usar todo esse gas, mas não é infinito. Desde a [London Upgrade](/history/#london), o limite de gas de bloco tem sido capaz de variar entre 15M e 30M de unidades, de acordo com a demanda da rede.
+
+## Começando a luta {#taking-on-the-fight}
+
+Infelizmente, não há maneira fácil de obter o tamanho do bytecode dos seus contratos. Uma ótima ferramenta para ajudá-lo é o plugin [truffle-contract-size](https://github.com/IoBuilders/truffle-contract-size) se você estiver usando o Truffle.
+
+1. `npm install truffle-contract-size`
+2. Adicione o plugin ao _truffle-config.js_: `plugins: ["truffle-contract-size"]`
+3. Execute `truffle rodando contract-size`
+
+Isso irá ajudá-lo a descobrir como suas mudanças estão afetando o tamanho total do contrato.
+
+A seguir, analisaremos alguns métodos ordenados pelo seu potencial impacto. Pense nisso em termos de perda de peso. A melhor estratégia para alguém atingir o seu peso alvo (no nosso caso 24kb) é concentrar-se primeiro nos grandes métodos de impacto. Na maioria dos casos, só de ajustar a sua dieta já ajudará, mas às vezes é necessário de um pouco mais. Então você pode adicionar algum exercício (impacto médio) ou até suplementos (impacto pequeno).
+
+## Grande impacto {#big-impact}
+
+### Separe os seus contratos {#separate-your-contracts}
+
+Esta deve ser sempre sua primeira abordagem. Como você pode separar o contrato em vários contratos menores? Geralmente isso te força a criar uma boa arquitetura para seus contratos. Os contratos menores são sempre preferidos por uma perspectiva de legibilidade de código. Para dividir contratos, pergunte a si mesmo:
+
+- Quais as funções que devem estar juntas? Cada conjunto de funções pode ser o melhor em seu próprio contrato.
+- Que funções não requerem leitura do estado do contrato ou apenas um subconjunto específico do estado?
+- Você pode dividir o armazenamento e a funcionalidade?
+
+### Bibliotecas {#libraries}
+
+Uma maneira simples de mover o código de funcionalidade para longe do armazenamento é usando [uma biblioteca](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#libraries). Não declarar as funções da biblioteca como internas, como essas, serão [adicionadas ao contrato](https://ethereum.stackexchange.com/questions/12975/are-internal-functions-in-libraries-not-covered-by-linking) diretamente durante a compilação. Mas se usarmos funções públicas, elas estarão então de fato, num contrato separado de biblioteca. Considere [o uso de](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#using-for) para fazer o uso de bibliotecas mais convenientes.
+
+### Proxies {#proxies}
+
+Uma estratégia mais avançada seria um sistema de procuração. As bibliotecas usam `DELEGATECALL` na parte traseira, que simplesmente executa a função de outro contrato com o estado do contrato de chamada. Confira [esta postagem no blog](https://hackernoon.com/how-to-make-smart-contracts-upgradable-2612e771d5a2) para saber mais sobre sistemas de proxy. Eles lhe dão mais funcionalidade, por exemplo, permitem a atualização, mas também adicionam muita complexidade. Eu não adicionaria aquelas apenas para reduzir os tamanhos dos contratos, a menos que fosse a sua única opção por qualquer motivo.
+
+## Médio impacto {#medium-impact}
+
+### Remover funções {#remove-functions}
+
+Este deveria ser óbvio. Funções aumentam um pouco o tamanho de um contrato.
+
+- **Externo**: Frequentemente adicionamos muitas funções de exibição por motivos de conveniência. Está perfeitamente tudo bem até que você atinja o limite de tamanho. Então talvez queiram realmente pensar na eliminação de todos que não os absolutamente essenciais.
+- **Interno**: Você também pode remover funções internas/privadas e simplesmente inserir o código, desde que a função seja chamada apenas uma vez.
+
+### Evitar variáveis adicionais {#avoid-additional-variables}
+
+Uma mudança simples assim:
+
+```solidity
+function get(uint id) returns (address,address) {
+ MyStruct memory myStruct = myStructs[id];
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns (address,address) {
+ return (myStructs[id].addr1, myStructs[id].addr2);
+}
+```
+
+faz diferença de **0.28kb**. Você pode encontrar muitas situações semelhantes nos seus contratos e isso pode realmente somar quantias significativas.
+
+### Encurtar mensagem de erro {#shorten-error-message}
+
+Mensagens de reversão longa e, em particular, muitas mensagens de reversão diferentes podem bloquear o contrato. Em vez disso, use códigos de erro curtos e decodifique-os no contrato. Uma mensagem longa poderia ser muito mais curta:
+
+```solidity
+require(msg.sender == owner, "Only the owner of this contract can call this function");
+
+```
+
+```solidity
+require(msg.sender == owner, "OW1");
+```
+
+### Use erros personalizados ao invés de mensagens de erro
+
+Erros personalizados foram introduzidos no [Solidity 0.8.4](https://blog.soliditylang.org/2021/04/21/custom-errors/). Eles são uma ótima maneira de reduzir o tamanho de seus contratos, porque são codificados por ABI como seletores (assim como as funções são).
+
+```solidity
+error Unauthorized();
+
+if (msg.sender != owner) {
+ revert Unauthorized();
+}
+```
+
+### Considere um valor de baixa execução no otimizador {#consider-a-low-run-value-in-the-optimizer}
+
+Você também pode alterar as configurações do otimizador. O valor padrão de 200 significa que está tentando otimizar o bytecode como se uma função fosse chamada 200 vezes. Se você alterá-lo para 1, basicamente diga ao otimizador para otimizar em caso de executar cada função apenas uma vez. Uma função otimizada para rodar apenas uma vez significa que ela é otimizada para a própria implantação. Esteja ciente de que **isso aumenta o custo do [gás](/developers/docs/gas/) por executar as funções**, então você pode querer não otimizá-la.
+
+## Pequeno impacto {#small-impact}
+
+### Evite passar instruções para funções {#avoid-passing-structs-to-functions}
+
+Se você estiver usando o [ABIEncoderV2](https://solidity.readthedocs.io/en/v0.6.10/layout-of-source-files.html#abiencoderv2), ele pode ajudar a não passar de structs para uma função. Em vez de passar o parâmetro como uma estrutura...
+
+```solidity
+function get(uint id) returns (address,address) {
+ return _get(myStruct);
+}
+
+function _get(MyStruct memory myStruct) private view returns(address,address) {
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns(address,address) {
+ return _get(myStructs[id].addr1, myStructs[id].addr2);
+}
+
+function _get(address addr1, address addr2) private view returns(address,address) {
+ return (addr1, addr2);
+}
+```
+
+... passe os parâmetros necessários diretamente. Neste exemplo, salvamos outro **0.1kb**.
+
+### Declarar a visibilidade correta para funções e variáveis {#declare-correct-visibility-for-functions-and-variables}
+
+- Funções ou variáveis que são chamadas apenas do lado de fora? Declará-las como `externas` em vez de `públicas`.
+- Funções ou variáveis apenas chamadas dentro do contrato? Declará-las como `private` ou `internal` em vez de `public`.
+
+### Remover modificadores {#remove-modifiers}
+
+Os modificadores, especialmente quando usados intencionalmente, podem ter um impacto significativo no tamanho do contrato. Considere removê-los e, em vez disso, usar funções.
+
+```solidity
+modifier checkStuff() {}
+
+function doSomething() checkStuff {}
+```
+
+```solidity
+function checkStuff() private {}
+
+function doSomething() { checkStuff(); }
+```
+
+Essas dicas devem ajudá-lo a reduzir significativamente o tamanho do contrato. Mais uma vez, nunca é demais salientar que se foca sempre na divisão dos contratos, se possível para o maior impacto.
diff --git a/public/content/translations/pt-br/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/pt-br/developers/tutorials/eip-1271-smart-contract-signatures/index.md
new file mode 100644
index 00000000000..36a492a687b
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/eip-1271-smart-contract-signatures/index.md
@@ -0,0 +1,127 @@
+---
+title: "EIP-1271: Assinatura e verificação de contratos inteligentes"
+description: Uma visão geral de geração de assinatura de contratos inteligentes e verificação com a EIP-1271. Também passaremos pela implementação da EIP-1271 usada no Safe (anteriormente Gnosis Safe) para fornecer um exemplo concreto de contrato inteligente para que desenvolvedores possam construir por cima dele.
+author: Nathan H. Leung
+lang: pt-br
+tags:
+ - "eip-1271"
+ - "contratos inteligentes"
+ - "verificando"
+ - "assinatura"
+skill: intermediate
+published: 2023-01-12
+---
+
+A norma [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) permite a contratos inteligentes verificarem assinaturas.
+
+Neste tutorial, forneceremos uma visão geral das assinaturas digitais, noções básicas sobre a EIP-1271, e a implementação específica da EIP-1271 usada pelo [Safe](https://safe.global/) (previamente Gnosis Safe). Tudo isso pode servir como ponto de partida para a implementação da EIP-1271 nos seus próprios contratos.
+
+## O que é assinatura?
+
+Nesse contexto, uma assinatura (mais precisamente, uma “assinatura digital”) é uma mensagem, acompanhada de um tipo de prova de que a mensagem veio de uma pessoa, remetente ou endereço específico.
+
+Por exemplo, uma assinatura digital pode se parecer com isto:
+
+1. Mensagem: “Quero me conectar a este website com minha carteira Ethereum.”
+2. Assinante: Meu endereço é `0x000…`
+3. Prova: Aqui está uma prova de que eu, `0x000…`, realmente criei esta mensagem inteira (isto é geralmente algo criptográfico).
+
+É importante observar que uma assinatura digital inclui ambos, uma “mensagem” e uma “assinatura”.
+
+Por quê? Por exemplo, se você me der um contrato para assinar, e eu retirar a página de assinatura e devolver somente a minha assinatura sem o resto do contrato, o contrato não seria válido.
+
+Da mesma maneira, uma assinatura digital não significa nada sem uma mensagem associada!
+
+## Por que a EIP-1271 existe?
+
+Para criar uma assinatura digital para uso em blockchains baseados em Ethereum, você geralmente precisa de uma chave secreta que ninguém mais conhece. Isto é o que faz sua assinatura, sua (ninguém mais pode criar a mesma assinatura sem o conhecimento da chave secreta).
+
+Sua conta Ethereum (ou seja, conta de propriedade externa / EOA) tem uma chave privada associada a ela quando um website ou dapp pergunta por sua assinatura (por exemplo: “Log in with Ethereum”).
+
+Um app pode [verificar uma assinatura](https://docs.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) que você criou usando uma biblioteca de terceiros, como ethers.js [sem conhecer sua chave privada](https://en.wikipedia.org/wiki/Public-key_cryptography) e estar confiante de que foi _você_ quem criou a assinatura.
+
+> De fato, como as assinaturas digitais EOA usam criptografia de chave pública, elas podem ser geradas e verificadas **off-chain**! É assim que a votação em DAO sem gás funciona — em vez de submeter votos on-chain, as assinaturas digitais podem ser criadas e verificadas off-chain usando bibliotecas criptográficas.
+
+Enquanto as contas EOA têm uma chave privada, as contas de contrato inteligente não têm nenhum tipo de chave privada ou secreta (portanto, “Entrar com Ethereum”, etc. não pode funcionar nativamente com contas de contratos inteligentes).
+
+O problema que a EIP-1271 visa resolver: como podemos dizer que uma assinatura de contrato inteligente é válida se o contrato inteligente não tem um “segredo” que ele possa incorporar na assinatura?
+
+## Como a EIP-1271 funciona?
+
+Contratos inteligentes não têm chaves privadas que possam ser usadas para assinar mensagens. Então, como podemos saber se uma assinatura é autêntica?
+
+Bem, uma ideia é que podemos _perguntar_ ao contrato inteligente se uma assinatura é autêntica!
+
+O que o EIP-1271 faz é padronizar a ideia de "perguntar" ao contrato inteligente se uma dada assinatura é válida.
+
+Um contrato que implementa EIP-1271 deve ter uma função chamada `isValidSignature` que recebe a mensagem e a assinatura. O contrato pode então executar alguma lógica de validação (a especificação não força nada específico aqui) e então retornar um valor indicando se a assinatura é válida ou não.
+
+Se `isValidSignature` retornar um resultado válido, isso é basicamente o contrato dizendo “sim, eu aprovo esta assinatura + mensagem!”
+
+### Interface
+
+Aqui está a interface exata na especificação da EIP-1271 (falaremos sobre o parâmetro `_hash` abaixo, mas por enquanto, pense nele como a mensagem que está sendo verificada):
+
+```jsx
+pragma solidity ^0.5.0;
+
+contract ERC1271 {
+
+ // bytes4(keccak256("isValidSignature(bytes32,bytes)")
+ bytes4 constant internal MAGICVALUE = 0x1626ba7e;
+
+ /**
+ * @dev Should return whether the signature provided is valid for the provided hash
+ * @param _hash Hash of the data to be signed
+ * @param _signature Signature byte array associated with _hash
+ *
+ * MUST return the bytes4 magic value 0x1626ba7e when function passes.
+ * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5)
+ * MUST allow external calls
+ */
+ function isValidSignature(
+ bytes32 _hash,
+ bytes memory _signature)
+ public
+ view
+ returns (bytes4 magicValue);
+}
+```
+
+## Exemplo de implementação da EIP-1271: Safe
+
+Os contratos podem implementar `isValidSignature` de várias maneiras — a especificação somente não diz muito sobre a implementação exata.
+
+Um contrato importante que implementa a EIP-1271 é o Safe (anteriormente Gnosis Safe).
+
+No código do Safe, `isValidSignature` [ é implementada](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) para que assinaturas possam ser criadas e verificadas de [duas maneiras](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support):
+
+1. Mensagens on-chain
+ 1. Criação: um proprietário Safe cria uma nova transação Safe para “assinar” a mensagem, passando a mensagem como um dado na transação. Uma vez que proprietários suficientes assinam a transação para alcançar o limite multisig, a transação é enviada e executada. Na transação, há uma função Safe chamada, que adiciona a mensagem à lista de mensagens “aprovadas”.
+ 2. Verificação: chame `isValidSignature` no contrato Safe, e transmita a mensagem para verificar enquanto parâmetro da mensagem e [ um parâmetro vazio como parâmetro da assinatura](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (i.e. `0x`). O Safe verá que o parâmetro da assinatura está vazio e, em vez de verificar a assinatura criptograficamente, ele saberá que deve prosseguir e verificar se a mensagem está na lista de mensagens “aprovadas”.
+2. Mensagens off-chain:
+ 1. Criação: um proprietário Safe cria uma mensagem off-chain, e então consegue outros proprietários Safe para assinar a mensagem, cada um individualmente, até que haja assinaturas suficientes para conseguir a aprovação pelo limite do multisig.
+ 2. Verificação: chama `isValidSignature`. No parâmetro da mensagem, passa a mensagem para ser verificada. No parâmetro da assinatura, passa cada assinatura individual de proprietário Safe todas concatenadas juntas. O Safe irá checar que há assinaturas suficientes para atingir o limite **e** que cada assinatura é válida. Acontecendo isso, ele retornará um valor indicando verificação da assinatura com sucesso.
+
+## O que é exatamente o parâmetro `_hash`? Por que não passar a mensagem inteira?
+
+Você pode ter notado que a função `isValidSignature` na interface [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) não pega a mensagem propriamente dita, mas, em vezés disso, um parâmetro `_hash`. O que isto significa é que ao invés de passar a mensagem inteira de tamanho arbitrário para `isValidSignature`, nós passamos um hash de 32-bytes da mensagem (geralmente keccak256).
+
+Cada byte de calldata — ou seja, dados de parâmetro da função passados para uma função de contrato inteligente — [custa16 gás (4 gás se zero byte)](https://eips.ethereum.org/EIPS/eip-2028), então, isso pode economizar um monte de gás se a mensagem for longa.
+
+### Especificações EIP-1271 anteriores
+
+Existem outras especificações EIP-1271 por aí, que têm uma função `isValidSignature` com um primeiro parâmetro do tipo `bytes` (tamanho arbitrário, em vez de tamanho fixo `bytes32`) e nome de parâmetro `message`. Essa é uma [versão mais antiga](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206) da norma EIP-1271.
+
+## Como o EIP-1271 poderia ser implementado nos meus próprios contratos?
+
+A especificação é bem aberta aqui. A implementação Safe tem algumas boas ideias:
+
+- Você pode considerar assinaturas EOA do "proprietário" do contrato serem válidas.
+- Você poderia armazenar uma lista de mensagens aprovadas e somente considerar estas serem válidas.
+
+No final, depende de você, como desenvolvedor do contrato!
+
+## Conclusão
+
+A [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) é uma norma versátil que permite contratos inteligentes verificar assinaturas. Ele abre a porta para contratos inteligentes que funcionam mais como EOAs - por exemplo fornecendo uma maneira de se "conectar via Ethereum" para trabalhar com contratos inteligentes - e ele pode ser implementado de várias maneiras (Safe tendo uma implementação interessante e não trivial a se considerar).
diff --git a/public/content/translations/pt-br/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/pt-br/developers/tutorials/erc-721-vyper-annotated-code/index.md
new file mode 100644
index 00000000000..fbc70bd02c3
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -0,0 +1,632 @@
+---
+title: "Passo a passo do contrato Vyper ERC-721"
+description: Ryuya Nakamura's ERC-721 contrato e como funciona
+author: Ori Pomerantz
+lang: pt-br
+tags:
+ - "vyper"
+ - "erc-721"
+ - "python"
+skill: beginner
+published: 2021-04-01
+---
+
+## Introdução {#introduction}
+
+O [ERC-721](/developers/docs/standards/tokens/erc-721/) padrão é usado para manter a propriedade de tokens não fungíveis (NFT). [ERC-20](/developers/docs/standards/tokens/erc-20/) os tokens se comportam como uma mercadoria, porque não há diferença entre os totens individuais. Em contraste com isso, ERC-721 tokens são projetados para ativos semelhantes, mas não idênticos, como diferentes [cat cartoons](https://www.cryptokitties.co/) ou títulos de diferentes imóveis.
+
+Neste artigo, vamos analisar o [contrato ERC-721 de Ryuya Nakamura](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy). Este contrato é escrito em [Vyper](https://vyper.readthedocs.io/en/latest/index.html), a Python-like linguagem de contrato projetada para tornar é mais difícil escrever código inseguro do que na solidez.
+
+## O Contrato {#contract}
+
+```python
+# @dev Implementation of ERC-721 non-fungible token standard.
+# @author Ryuya Nakamura (@nrryuya)
+# Modified from: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy
+```
+
+Comentários em Vyper, como em Python, começam com um hash (`#`) e continuam até o final da linha. Comentários que incluem `@` são usados por [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) para produzir documentação legível para humanos.
+
+```python
+from vyper.interfaces import ERC721
+
+implements: ERC721
+```
+
+A interface ERC-721 é construída na linguagem Vyper. [você pode ver o código definido aqui](https://github.com/vyperlang/vyper/blob/master/vyper/builtin_interfaces/ERC721.py). A definição da interface é escrita em Python, em vez de Vyper, porque as interfaces são usadas não apenas dentro da blockchain, mas também ao enviar à blockchain uma transação de um cliente externo, que pode ser escrito em Python.
+
+A primeira linha importa a ‘interface’, e o segundo especifica o que estamos incrementando aqui.
+
+### A interface ERC721Receiver {#receiver-interface}
+
+```python
+# Interface for the contract called by safeTransferFrom()
+interface ERC721Receiver:
+ def onERC721Received(
+```
+
+ERC-721 suporta dois tipos de transferência:
+
+- ` transfere de `, que permite ao remetente especifique qualquer endereço de destino e coloca a responsabilidade para a transferência no remetente. Isso significa que você pode transferir para um endereço inválido, caso em que o NFT será perdido para sempre.
+- `safeTransferFrom`, que verifica se o endereço de destino é um contrato. Se for assim, o contrato ERC-721 pergunta ao contrato receptor se deseja receber o NFT.
+
+Para responder ` transferência segura de ` solicita um recebimento contrato deve implementar `ERC721 recebedor `.
+
+```python
+ _operator: address,
+ _from: address,
+```
+
+O endereço `_de ` é o proprietário atual do token. O endereço `_operador` é aquele que solicitou a transferência (esses dois podem não ser o mesmo devido às provisões).
+
+```python
+ _tokenId: uint256,
+```
+
+ERC-721 token IDs está 256 bits. Normalmente, elas são criados por meio de uma execução de hash da descrição que o token representa.
+
+```python
+ _data: Bytes[1024]
+```
+
+O requerimento pode ter até 1024 bytes de dados do usuário.
+
+```python
+ ) -> bytes32: view
+```
+
+Para evitar casos em que um contrato acidentalmente aceita uma transferência o valor de retorno não é um booleano, mas 256 bits com um valor específico.
+
+Essa função é uma `view`, o que significa que pode ler o estado da blockchain, mas não modificá-lo.
+
+### Eventos {#events}
+
+Os [eventos](https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e) são emitidos para informar usuários e servidores fora da blockchain de eventos. Observe que o conteúdo dos eventos não está disponível para contratos na blockchain.
+
+```python
+# @dev Emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are
+# created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any
+# number of NFTs may be created and assigned without emitting Transfer. At the time of any
+# transfer, the approved address for that NFT (if any) is reset to none.
+# @param _from Sender of NFT (if address is zero address it indicates token creation).
+# @param _to Receiver of NFT (if address is zero address it indicates token destruction).
+# @param _tokenId The NFT that got transferred.
+event Transfer:
+ sender: indexed(address)
+ receiver: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+Isso é similar para o evento ERC-20 Transfer, exceto que informamos um `tokenId` em vez de um valor. Ninguém possui o endereço zero, portanto, por convenção, o usamos para relatar a criação e a destruição de tokens.
+
+```python
+# @dev This emits when the approved address for an NFT is changed or reaffirmed. The zero
+# address indicates there is no approved address. When a Transfer event emits, this also
+# indicates that the approved address for that NFT (if any) is reset to none.
+# @param _owner Owner of NFT.
+# @param _approved Address that we are approving.
+# @param _tokenId NFT which we are approving.
+event Approval:
+ owner: indexed(address)
+ approved: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+Uma aprovação ERC-721 é semelhante a uma permissão ERC-20. Um endereço específico é autorizado a transferir um determinado símbolo. Isso fornece um mecanismo para os contratos responderem quando aceitam um token. Os contratos não podem ouvir os eventos, portanto, se você apenas transferir o token para eles, eles não “saberão” disso. Desta forma, primeiro, o proprietário envia uma aprovação e, em seguida, envia uma solicitação ao contrato: “Aprovei para você transferir o token X, faça…”.
+
+Esse é o designe escolhido por fazer o ERC-721 padrão semelhante ao padrão ERC-20. Como os tokens ERC-721 não são fungíveis, um contrato também pode identificar que obteve um token específico olhando a propriedade do token.
+
+```python
+# @dev This emits when an operator is enabled or disabled for an owner. The operator can manage
+# all NFTs of the owner.
+# @param _owner Owner of NFT.
+# @param _operator Address to which we are setting operator rights.
+# @param _approved Status of operator rights(true if operator rights are given and false if
+# revoked).
+event ApprovalForAll:
+ owner: indexed(address)
+ operator: indexed(address)
+ approved: bool
+```
+
+Às vezes, é útil ter um _operador_ que pode gerenciar todos os tokens da conta de um tipo específico (aqueles gerenciados por um contrato específico), semelhante a uma procuração. Por exemplo, eu posso querer dar tal poder a um contrato que verifica se Eu não tenho contatado ele por seis meses, e se assim for distribuo os meus bens aos meus herdeiros (se um deles o pedir, contrata não pode fazer nada sem ser chamado por uma transação). No ERC-20, podemos simplesmente atribuir uma provisão alta a um contrato de herança, mas isso não funciona para ERC-721, pois os tokens não são fungíveis. Isso é o equivalente.
+
+O valor `approved` nos informa se o evento é para uma aprovação ou a retirada de uma aprovação.
+
+### Variáveis de Estado {#state-vars}
+
+Essas variáveis contêm o estado atual dos tokens: os quais estão disponíveis e a quem os possui. A maioria delas são objetos `HashMap`, [mapeamentos unidirecionais que existem entre dois tipos](https://vyper.readthedocs.io/en/latest/types.html#mappings).
+
+```python
+# @dev Mapping from NFT ID to the address that owns it.
+idToOwner: HashMap[uint256, address]
+
+# @dev Mapping from NFT ID to approved address.
+idToApprovals: HashMap[uint256, address]
+```
+
+As identidades de usuários e contratos no Ethereum são representados por endereços de 160 bits. Essas duas variáveis mapeiam IDs de tokens para seus proprietários e aqueles aprovados a transferi-los (no máximo um para cada). No Ethereum, os dados não inicializados são sempre zero, pois, se não houver proprietário ou transferidor aprovado, o valor desse token será zero.
+
+```python
+# @dev Mapping from owner address to count of his tokens.
+ownerToNFTokenCount: HashMap[address, uint256]
+```
+
+Essa variável possui a contagem de tokens para cada proprietário. Não há mapeamento de proprietários para tokens, então, a única forma de identificar os tokens que um proprietário específico possui é olhar para trás no histórico de eventos da blockchain e ver os eventos `Transfer` apropriados. Podemos usar essa variável para saber quando temos todos os NFTs e não precisaremos mais olhar ainda mais no tempo.
+
+Observe que esse algoritmo funciona apenas para interfaces do usuário e servidores externos. Código em execução na blockchain em si não pode ler eventos passados.
+
+```python
+# @dev Mapping from owner address to mapping of operator addresses.
+ownerToOperators: HashMap[address, HashMap[address, bool]]
+```
+
+Uma conta pode ter mais de um único operador. Um simples `HashMap` é insuficiente para mantê-los, pois cada chave gera um único valor. Em vez disso, você pode usar `HashMap[address, bool]` como valor. Por padrão, o valor para cada endereço é `False`, o que significa que ele não é um operador. Você pode definir valores como `True` conforme necessário.
+
+```python
+# @dev Address of minter, who can mint a token
+minter: address
+```
+
+Novos tokens têm de ser criados de alguma forma. Neste contrato há uma única entidade que está autorizada a fazê-lo, o `minter`. É provável que isso seja suficiente para um jogo, por exemplo. Para outros propósitos, pode ser necessário criar uma lógica de negócio mais complicada.
+
+```python
+# @dev Mapping of interface id to bool about whether or not it's supported
+supportedInterfaces: HashMap[bytes32, bool]
+
+# @dev ERC165 interface ID of ERC165
+ERC165_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000001ffc9a7
+
+# @dev ERC165 interface ID of ERC721
+ERC721_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000080ac58cd
+```
+
+[ERC-165](https://eips.ethereum.org/EIPS/eip-165) especifica um mecanismo para um contrato divulgar como aplicações podem se comunicar com ele, com os quais ERCs ele está em conformidade. Neste caso, o contrato está em conformidade com ERC-165 e ERC-721.
+
+### Funções {#functions}
+
+Estas são as funções que realmente implementam o ERC-721.
+
+#### Construtor {#constructor}
+
+```python
+@external
+def __init__():
+```
+
+No Vyper, assim como no Python, a função construtora é chamada `__init__`.
+
+```python
+ """
+ @dev Contract constructor.
+ """
+```
+
+No Python e no Vyper, você também pode criar um comentário especificando uma string de múltiplas linhas (que começa e termina com `"""`), e não usá-lo de qualquer forma. Esses comentários também podem incluir [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html).
+
+```python
+ self.supportedInterfaces[ERC165_INTERFACE_ID] = True
+ self.supportedInterfaces[ERC721_INTERFACE_ID] = True
+ self.minter = msg.sender
+```
+
+Para acessar variáveis de estado, você usa `self.` (novamente, o mesmo que em Python).
+
+#### Exibir funções {#views}
+
+São funções que não modificam o estado da blockchain e, por isso, podem ser executadas gratuitamente se chamadas externamente. Se as funções de exibição forem chamadas por um contrato, elas ainda têm de ser executadas em cada nó e, portanto, custam gás.
+
+```python
+@view
+@external
+```
+
+Essas palavras-chave anteriores a uma definição de função que começam com um sinal de (`@`) são chamadas de _decoradores_. Elas especificam as circunstâncias em que uma função pode ser chamada.
+
+- `@view` especifica que esta função é um modo de exibição.
+- `@external` especifica que essa função em particular pode ser chamada por transações e por outros contratos.
+
+```python
+def supportsInterface(_interfaceID: bytes32) -> bool:
+```
+
+Ao contrário do Python, o Vyper é uma [linguagem de tipo estática](https://wikipedia.org/wiki/Type_system#Static_type_checking). Você não pode declarar uma variável ou um parâmetro de função, sem identificar os tipos de [dados](https://vyper.readthedocs.io/en/latest/types.html). Neste caso, o parâmetro de entrada é `bytes32`, um valor de 256 bits (256 bits é o tamanho da palavra nativa da [Máquina Virtual do Ethereum](/developers/docs/evm/)). A saída é um booleano valor. Por convenção, os nomes dos parâmetros da função começam com um sublinhado (`_`).
+
+```python
+ """
+ @dev Interface identification is specified in ERC-165.
+ @param _interfaceID Id of the interface
+ """
+ return self.supportedInterfaces[_interfaceID]
+```
+
+Retorne o valor do `self.supportedInterfaces` HashMap, o qual é definido no construtor (`__init__`).
+
+```python
+### VIEW FUNCTIONS ###
+```
+
+Estas são as funções de visualização que fornecem informações sobre os tokens disponíveis para usuários e outros contratos.
+
+```python
+@view
+@external
+def balanceOf(_owner: address) -> uint256:
+ """
+ @dev Returns the number of NFTs owned by `_owner`.
+ Throws if `_owner` is the zero address. NFTs assigned to the zero address are considered invalid.
+ @param _owner Address for whom to query the balance.
+ """
+ assert _owner != ZERO_ADDRESS
+```
+
+Esta linha [afirma](https://vyper.readthedocs.io/en/latest/statements.html#assert) que `_owner` não é zero. Se for zero, há um erro e a operação é anulada.
+
+```python
+ return self.ownerToNFTokenCount[_owner]
+
+@view
+@external
+def ownerOf(_tokenId: uint256) -> address:
+ """
+ @dev Returns the address of the owner of the NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId The identifier for an NFT.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ return owner
+```
+
+Na Máquina Virtual do Ethereum (EVM) qualquer armazenamento que não tenha um valor armazenado nele é zero. Se não houver token em `_tokenId`, o valor de `self.idToOwner[_tokenId]` é zero. Naquilo caso a função reverta.
+
+```python
+@view
+@external
+def getApproved(_tokenId: uint256) -> address:
+ """
+ @dev Get the approved address for a single NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId ID of the NFT to query the approval of.
+ """
+ # Throws if `_tokenId` is not a valid NFT
+ assert self.idToOwner[_tokenId] != ZERO_ADDRESS
+ return self.idToApprovals[_tokenId]
+```
+
+Observe que `getApproved` _pode_ retornar zero. Se o token for válido, ele retorna `self.idToApprovals[_tokenId]`. Se não houver aprovador, esse valor é zero.
+
+```python
+@view
+@external
+def isApprovedForAll(_owner: address, _operator: address) -> bool:
+ """
+ @dev Checks if `_operator` is an approved operator for `_owner`.
+ @param _owner The address that owns the NFTs.
+ @param _operator The address that acts on behalf of the owner.
+ """
+ return (self.ownerToOperators[_owner])[_operator]
+```
+
+Esta função checa se `_operator` tem permissão para gerenciar todos os tokens de `_owner` neste contrato. Como pode haver vários operadores, este é um Hashmap de dois níveis.
+
+#### Funções Auxiliares de Transferência {#transfer-helpers}
+
+Essas funções implementam operações que fazem parte da transferência ou gerenciamento de tokens.
+
+```python
+
+### TRANSFER FUNCTION HELPERS ###
+
+@view
+@internal
+```
+
+Este decorador, `@internal`, significa que a função é somente acessível de outras funções dentro do mesmo contrato. Por convenção, estes nomes de função também começam com um sublinhado (`_`).
+
+```python
+def _isApprovedOrOwner(_spender: address, _tokenId: uint256) -> bool:
+ """
+ @dev Returns whether the given spender can transfer a given token ID
+ @param spender address of the spender to query
+ @param tokenId uint256 ID of the token to be transferred
+ @return bool whether the msg.sender is approved for the given token ID,
+ is an operator of the owner, or is the owner of the token
+ """
+ owner: address = self.idToOwner[_tokenId]
+ spenderIsOwner: bool = owner == _spender
+ spenderIsApproved: bool = _spender == self.idToApprovals[_tokenId]
+ spenderIsApprovedForAll: bool = (self.ownerToOperators[owner])[_spender]
+ return (spenderIsOwner or spenderIsApproved) or spenderIsApprovedForAll
+```
+
+Há três maneiras na qual um endereço pode ser permitido a transferir um token:
+
+1. O endereço é o proprietário do token
+2. O endereço é aprovado a gastar o token
+3. O endereço é um operador do proprietário do token
+
+A função acima pode ser uma view porque ela não muda o estado. Para reduzir custos operacionais, qualquer função que _possa_ ser uma view, _deve_ ser uma view.
+
+```python
+@internal
+def _addTokenTo(_to: address, _tokenId: uint256):
+ """
+ @dev Add a NFT to a given address
+ Throws if `_tokenId` is owned by someone.
+ """
+ # Throws if `_tokenId` is owned by someone
+ assert self.idToOwner[_tokenId] == ZERO_ADDRESS
+ # Change the owner
+ self.idToOwner[_tokenId] = _to
+ # Change count tracking
+ self.ownerToNFTokenCount[_to] += 1
+
+
+@internal
+def _removeTokenFrom(_from: address, _tokenId: uint256):
+ """
+ @dev Remove a NFT from a given address
+ Throws if `_from` is not the current owner.
+ """
+ # Throws if `_from` is not the current owner
+ assert self.idToOwner[_tokenId] == _from
+ # Change the owner
+ self.idToOwner[_tokenId] = ZERO_ADDRESS
+ # Change count tracking
+ self.ownerToNFTokenCount[_from] -= 1
+```
+
+Quando há um problema com uma transferência, anulamos a chamada.
+
+```python
+@internal
+def _clearApproval(_owner: address, _tokenId: uint256):
+ """
+ @dev Clear an approval of a given address
+ Throws if `_owner` is not the current owner.
+ """
+ # Throws if `_owner` is not the current owner
+ assert self.idToOwner[_tokenId] == _owner
+ if self.idToApprovals[_tokenId] != ZERO_ADDRESS:
+ # Reset approvals
+ self.idToApprovals[_tokenId] = ZERO_ADDRESS
+```
+
+Altere o valor apenas se necessário. Variáveis de estado vivem no armazenamento. Escrever para o storage é uma das operações mais caras que a EVM (Máquina Virtual Ethereum) faz (em termos de [gas](/developers/docs/gas/)). Portanto, é uma boa ideia minimizá-lo, mesmo escrevendo o valor existente tem um custo alto.
+
+```python
+@internal
+def _transferFrom(_from: address, _to: address, _tokenId: uint256, _sender: address):
+ """
+ @dev Execute transfer of a NFT.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT. (NOTE: `msg.sender` not allowed in private function so pass `_sender`.)
+ Throws if `_to` is the zero address.
+ Throws if `_from` is not the current owner.
+ Throws if `_tokenId` is not a valid NFT.
+ """
+```
+
+Nós temos esta função interna porque há duas maneiras de transferir tokens (normal e segura), mas nós queremos somente uma única localização no código onde nós fazemos isso para facilitar auditoria.
+
+```python
+ # Check requirements
+ assert self._isApprovedOrOwner(_sender, _tokenId)
+ # Throws if `_to` is the zero address
+ assert _to != ZERO_ADDRESS
+ # Clear approval. Throws if `_from` is not the current owner
+ self._clearApproval(_from, _tokenId)
+ # Remove NFT. Throws if `_tokenId` is not a valid NFT
+ self._removeTokenFrom(_from, _tokenId)
+ # Add NFT
+ self._addTokenTo(_to, _tokenId)
+ # Log the transfer
+ log Transfer(_from, _to, _tokenId)
+```
+
+Para emitir um evento em Vyper você usa uma declaração de `log` ([veja aqui para mais detalhes](https://vyper.readthedocs.io/en/latest/event-logging.html#event-logging)).
+
+#### Funções de Transferência {#transfer-funs}
+
+```python
+
+### TRANSFER FUNCTIONS ###
+
+@external
+def transferFrom(_from: address, _to: address, _tokenId: uint256):
+ """
+ @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else
+ they maybe be permanently lost.
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+Esta função deixa você transferir para um endereço arbitrário. A não ser que o endereço é um usuário, ou um contrato que sabe como transferir tokens, qualquer token que você transferir ficará preso no endereço e inútil.
+
+```python
+@external
+def safeTransferFrom(
+ _from: address,
+ _to: address,
+ _tokenId: uint256,
+ _data: Bytes[1024]=b""
+ ):
+ """
+ @dev Transfers the ownership of an NFT from one address to another address.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the
+ approved address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ If `_to` is a smart contract, it calls `onERC721Received` on `_to` and throws if
+ the return value is not `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
+ NOTE: bytes4 is represented by bytes32 with padding
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ @param _data Additional data with no specified format, sent in call to `_to`.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+Tudo bem fazer a transferência primeiro, porque se der um problema, vamos revertê-la de qualquer maneira, a fim de anular tudo o que foi feito durante a chamada.
+
+```python
+ if _to.is_contract: # check if `_to` is a contract address
+```
+
+Primeiro cheque para ver se o endereço é um contrato (se ele tem código). Se não, assuma que ele é um endereço de usuário e o usuário será capaz de usar o token ou transferi-lo. Mas não deixe que isso engane você com uma falsa sensação de segurança. Você pode perder tokens, mesmo com `safeTransferFrom`, se você transferi-los para um endereço que ninguém conhece a chave privada.
+
+```python
+ returnValue: bytes32 = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data)
+```
+
+Chame o contrato-alvo para ver se ele pode receber tokens ERC-721.
+
+```python
+ # Throws if transfer destination is a contract which does not implement 'onERC721Received'
+ assert returnValue == method_id("onERC721Received(address,address,uint256,bytes)", output_type=bytes32)
+```
+
+Se o destino é um contrato, mas um que não aceita tokens ERC-721 (ou que decide não aceitar esta transferência em particular), reverta.
+
+```python
+@external
+def approve(_approved: address, _tokenId: uint256):
+ """
+ @dev Set or reaffirm the approved address for an NFT. The zero address indicates there is no approved address.
+ Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.
+ Throws if `_tokenId` is not a valid NFT. (NOTE: This is not written the EIP)
+ Throws if `_approved` is the current owner. (NOTE: This is not written the EIP)
+ @param _approved Address to be approved for the given NFT ID.
+ @param _tokenId ID of the token to be approved.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ # Throws if `_approved` is the current owner
+ assert _approved != owner
+```
+
+Por convenção, se você não quiser ter um aprovador, designe o endereço zero, não você mesmo.
+
+```python
+ # Check requirements
+ senderIsOwner: bool = self.idToOwner[_tokenId] == msg.sender
+ senderIsApprovedForAll: bool = (self.ownerToOperators[owner])[msg.sender]
+ assert (senderIsOwner or senderIsApprovedForAll)
+```
+
+Para configurar um aprovador você pode ou ser o proprietário, ou um operador autorizado pelo proprietário.
+
+```python
+ # Set the approval
+ self.idToApprovals[_tokenId] = _approved
+ log Approval(owner, _approved, _tokenId)
+
+
+@external
+def setApprovalForAll(_operator: address, _approved: bool):
+ """
+ @dev Enables or disables approval for a third party ("operator") to manage all of
+ `msg.sender`'s assets. It also emits the ApprovalForAll event.
+ Throws if `_operator` is the `msg.sender`. (NOTE: This is not written the EIP)
+ @notice This works even if sender doesn't own any tokens at the time.
+ @param _operator Address to add to the set of authorized operators.
+ @param _approved True if the operators is approved, false to revoke approval.
+ """
+ # Throws if `_operator` is the `msg.sender`
+ assert _operator != msg.sender
+ self.ownerToOperators[msg.sender][_operator] = _approved
+ log ApprovalForAll(msg.sender, _operator, _approved)
+```
+
+#### Cunhar novos tokens e destruir os existentes {#mint-burn}
+
+A conta que criou o contrato é o `minter`, o superusuário autorizado a cunhar novos NFTs. No entanto, mesmo isso não é autorizado para queimar tokens existentes. Somente o proprietário, ou uma entidade autorizada pelo proprietário, podem fazer isso.
+
+```python
+### MINT & BURN FUNCTIONS ###
+
+@external
+def mint(_to: address, _tokenId: uint256) -> bool:
+```
+
+Esta função sempre retorna `True`, porque se a operação falhar, ela é revertida.
+
+```python
+ """
+ @dev Function to mint tokens
+ Throws if `msg.sender` is not the minter.
+ Throws if `_to` is zero address.
+ Throws if `_tokenId` is owned by someone.
+ @param _to The address that will receive the minted tokens.
+ @param _tokenId The token id to mint.
+ @return A boolean that indicates if the operation was successful.
+ """
+ # Throws if `msg.sender` is not the minter
+ assert msg.sender == self.minter
+```
+
+Somente o minter (a conta que criou o contrato ERC-721) pode cunhar novos tokens. Isso pode ser um problema no futuro se você quiser mudar a identidade do minter. Em um contrato de produção, provavelmente seria desejável ter uma função que permita ao minter transferir privilégios de minter para uma outra pessoa.
+
+```python
+ # Throws if `_to` is zero address
+ assert _to != ZERO_ADDRESS
+ # Add NFT. Throws if `_tokenId` is owned by someone
+ self._addTokenTo(_to, _tokenId)
+ log Transfer(ZERO_ADDRESS, _to, _tokenId)
+ return True
+```
+
+Por convenção, a cunhagem de novos tokens conta como uma transferência do endereço zero.
+
+```python
+
+@external
+def burn(_tokenId: uint256):
+ """
+ @dev Burns a specific ERC721 token.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId uint256 id of the ERC721 token to be burned.
+ """
+ # Check requirements
+ assert self._isApprovedOrOwner(msg.sender, _tokenId)
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ self._clearApproval(owner, _tokenId)
+ self._removeTokenFrom(owner, _tokenId)
+ log Transfer(owner, ZERO_ADDRESS, _tokenId)
+```
+
+Qualquer pessoa autorizada a transferir um token, tem permissão para queimá-lo. Enquanto uma queima aparece equivalente à transferência para o endereço zero, o endereço zero não recebe de verdade o token. Isso permite-nos liberar todo o armazenamento usado pelo token, o que pode reduzir o custo de gás da transação.
+
+# Usando este contrato {#using-contract}
+
+Ao contrário do Solidity, o Vyper não tem herança. Esta é uma escolha de design deliberada para tornar o código mais claro e, com isso, mais fácil de proteger. Portanto, para criar seu próprio contrato Vyper ERC-721, você usa [este contrato](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy) e o modifica para implementar a lógica comercial que você desejar.
+
+# Conclusão {#conclusion}
+
+Recapitulando, aqui estão algumas das ideias mais importantes neste contrato:
+
+- Para receber os tokens ERC-721 com uma transferência segura, os contratos têm de implementar a interface `ERC721Receiver`.
+- Mesmo que você use a transferência segura, os tokens ainda podem ficar presos se você os enviar para um endereço cuja chave privada.
+- Quando há um problema com uma operação, é uma boa ideia fazer o `revert` da chamada, em vez de apenas retornar um valor de falha.
+- Os tokens ERC-721 existem quando eles têm um proprietário.
+- Existem três formas de ser autorizado a transferir um NFT. Você pode ser o proprietário, ser aprovado para um token específico, ou ser um operador para todos os tokens do proprietário.
+- Eventos passados são visíveis apenas fora da blockchain. O código executando dentro da blockchain não pode visualizá-los.
+
+Agora, você está pronto para implementar contratos Vyper seguros.
diff --git a/public/content/translations/pt-br/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/pt-br/developers/tutorials/erc20-annotated-code/index.md
new file mode 100644
index 00000000000..a1180674191
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/erc20-annotated-code/index.md
@@ -0,0 +1,796 @@
+---
+title: "Demonstração do Contrato ERC-20"
+description: O que é o contrato OpenZeppelin ERC-20 e por que está lá?
+author: Ori Pomerantz
+lang: pt-br
+tags:
+ - "solidez"
+ - "erc-20"
+skill: beginner
+published: 2021-03-09
+---
+
+## Introdução {#introduction}
+
+Um dos usos mais comuns do Ethereum é a criação por um grupo de pessoas de um token negociável que, de certa forma, criam sua própria moeda. Essas moedas seguem a norma [ERC-20](/developers/docs/standards/tokens/erc-20/). Essa norma possibilita a criação de ferramentas, como os pools de liquidez e carteiras, que funcionam com todos os tokens ERC-20. Neste artigo, analisaremos a [Implementação do OpenZeppelin Solidity ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), assim como a [definição de interface](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol).
+
+Este é o código-fonte anotado. Se você deseja implementar ERC-20, [leia este tutorial](https://docs.openzeppelin.com/contracts/2.x/erc20-supply).
+
+## A 'Interface' {#the-interface}
+
+O objetivo de uma norma como a ERC-20 é permitir que as implementações das várias moedas sejam interoperáveis entre aplicativos, como carteiras e corretoras descentralizadas. Para atingirmos tal objetivo, criamos uma ['interface'](https://www.geeksforgeeks.org/solidity-basics-of-interface/). Qualquer código que necessite utilizar o contrato pode usar as mesmas definições de interface e ser compatível com todos os contratos de token que o usem, seja uma carteira de criptomoedas como a MetaMask, um aplicativo descentralizado como o Etherscan.io, ou um contrato diferente como um pool de liquidez.
+
+![Ilustração da interface ERC-20](erc20_interface.png)
+
+Se você é um programador experiente, provavelmente se lembra de ver constructos semelhantes em [Java](https://www.w3schools.com/java/java_interface.asp) ou mesmo em [arquivos de cabeçalho em C](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html).
+
+Essa é a definição da [interface ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) do OpenZeppelin. Ela é uma tradução do [padrão legível para humanos](https://eips.ethereum.org/EIPS/eip-20) em código Solidity. Obviamente, a interface por si só não define _como_ fazer algo. Isso é explicado no código-fonte do contrato abaixo.
+
+
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+Os arquivos Solidity devem incluir um identificador de licença. [Você pode ver a lista de licenças aqui](https://spdx.org/licenses/). Se você necessitar de uma licença diferente, explique nos comentários.
+
+
+
+```solidity
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+A linguagem Solidity continua evoluindo rapidamente, e novas versões podem não ser compatíveis com o código antigo. ([confira aqui](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html)). Portanto, é uma boa ideia especificar não apenas uma versão mínima da linguagem, mas também uma versão máxima com a qual você testou o código.
+
+
+
+```solidity
+/**
+ * @dev Interface of the ERC20 standard as defined in the EIP.
+ */
+```
+
+O `@dev` no comentário faz parte do [formato NatSpec](https://docs.soliditylang.org/en/develop/natspec-format.html), usado para produzir a documentação a partir de um código-fonte.
+
+
+
+```solidity
+interface IERC20 {
+```
+
+Convenientemente, nomes de Interface começam com `I`.
+
+
+
+```solidity
+ /**
+ * @dev Returns the amount of tokens in existence.
+ */
+ function totalSupply() external view returns (uint256);
+```
+
+Essa função é `external`, ou seja, [só pode ser chamada de fora do contrato](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2). Ela retorna o fornecimento total de tokens no contrato. Esse valor é retornado usando o tipo mais comum no Ethereum, 256 bits não assinado (256 bits é o tamanho de fonte nativo da EVM). Essa função também é uma `view`, ou seja, ela não pode alterar o estado, portanto, ela pode ser executada em apenas um nó em vez de fazer com que todos os nós da blockchain a executem. Esse tipo de função não gera transação e não custa [gás](/developers/docs/Gas/).
+
+**Observação:** Em teoria, pode-se ter a impressão de que o criador do contrato conseguiria trapacear retornando uma quantia menor do fornecimento total do que a quantia real, fazendo com que cada moeda valha mais do que realmente vale. De qualquer forma, este medo ignora a verdadeira natureza da blockchain. Tudo que acontece na blockchain pode ser verificado em cada nó. Para conseguir isso, cada contrato da linguagem de código e armazenamento esta disponível em cada nó. Embora não seja obrigatório publicar o código Solidity, mas ninguém confiará em você a menos que publique o código-fonte e a versão do Solidity usados na compilação, para que ele possa ser comparado com o código de linguagem da máquina que você forneceu. Por exemplo, confira [este contrato](https://etherscan.io/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD#code).
+
+
+
+```solidity
+ /**
+ * @dev Returns the amount of tokens owned by `account`.
+ */
+ function balanceOf(address account) external view returns (uint256);
+```
+
+Como o próprio nome já diz, `balanceOf` retorna o saldo de uma conta. Contas de Ethereum são identificadas em Solidity usando `address`, que contem 160 bits. Também são `external` e `view`.
+
+
+
+```solidity
+ /**
+ * @dev Moves `amount` tokens from the caller's account to `recipient`.
+ *
+ * Returns a boolean value indicating whether the operation succeeded.
+ *
+ * Emits a {Transfer} event.
+ */
+ function transfer(address recipient, uint256 amount) external returns (bool);
+```
+
+A função `transfer` transfere as moedas de um chamador para outro endereço. Isso envolve uma mudança de estado, então não é um `view`. Quando um usuário chama essa função, ele cria uma transação a um custo cobrada em gás. Ele também emite um evento, `Transfer`, para informar a todos na blockchain sobre esse evento.
+
+Essa função possui duas saídas para dois chamadores diferentes:
+
+- Os usuários que chamam a função diretamente de uma interface de usuário. Normalmente o usuário envia uma transação e não espera por uma resposta, que pode demorar uma quantidade indefinida de tempo. O usuário pode ver o que ocorreu procurando pelo recibo da transação (identificado pela transação hash) ou procurando pelo evento `transfer`.
+- Outros contratos, nos quais chamam a função como parte de uma transação inteira. Esses contratos obtêm o resultado imediatamente, pois eles executam a mesma transação, para usar o valor de retorno da função.
+
+O mesmo tipo de saída é criado por outras funções que mudam o estado do contrato.
+
+
+
+As provisões permitem que uma conta gaste tokens que pertencem a um proprietário diferente. Isso é útil, por exemplo, para contratos que agem como vendedores. Contratos não podem monitorar eventos, portanto, se um comprador quiser transferir diretamente, tokens para o contrato do vendedor, esse contrato não saberá se foi pago. Em vez disso, o comprador permite que o contrato do vendedor gaste uma certa quantia, e o vendedor transfere essa quantia. Isso é feito por meio de uma função do contrato do vendedor, para que o contrato do vendedor possa saber se a operação foi bem-sucedida.
+
+```solidity
+ /**
+ * @dev Returns the remaining number of tokens that `spender` will be
+ * allowed to spend on behalf of `owner` through {transferFrom}. Isso é
+ * zero por padrão.
+ *
+ * This value changes when {approve} or {transferFrom} are called.
+ */
+ function allowance(address owner, address spender) external view returns (uint256);
+```
+
+A função `allowance` permite que qualquer pessoa consulte qual é a provisão que um endereço (`owner`) permite que outro endereço (`spender`) gaste.
+
+
+
+```solidity
+ /**
+ * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
+ *
+ * Returns a boolean value indicating whether the operation succeeded.
+ *
+ * IMPORTANT: Beware that changing an allowance with this method brings the risk
+ * that someone may use both the old and the new allowance by unfortunate
+ * transaction ordering. Uma solução possível para mitigar esta corrida
+ * é primeiramente reduzir a tolerância do remetente para 0 e definir o
+ * valor desejado depois:
+ * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+ *
+ * Emite um evento de {Approval}.
+ */
+ function approve(address spender, uint256 amount) external returns (bool);
+```
+
+A função `approve` cria uma provisão. Certifique-se de ler a mensagem sobre como ela pode ser usada indevidamente. No Ethereum, você controla a ordem de suas próprias transações, mas não é possível controlar a ordem na qual as transações de outras pessoas serão executadas, a menos que você não envie sua própria transação até ver a transação de outro lado ser executada.
+
+
+
+```solidity
+ /**
+ * @dev Moves `amount` tokens from `sender` to `recipient` using the
+ * allowance mechanism. O valor é então deduzido do rendimento do chamador.
+ *
+ * Returns a boolean value indicating whether the operation succeeded.
+ *
+ * Emits a {Transfer} event.
+ */
+ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
+```
+
+Por fim, `transferFrom` é utilizado pelo cliente para realmente gastar a provisão.
+
+
+
+```solidity
+
+ /**
+ * @dev Emitted when `value` tokens are moved from one account (`from`) to
+ * another (`to`).
+ *
+ * Note that `value` may be zero.
+ */
+ event Transfer(address indexed from, address indexed to, uint256 value);
+
+ /**
+ * @dev Emitted when the allowance of a `spender` for an `owner` is set by
+ * a call to {approve}. `Valor` é a nova permissão.
+ */
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+```
+
+Esses eventos são emitidos quando o estado do contrato ERC-20 é alterado.
+
+## O contrato real {#the-actual-contract}
+
+Este é o contrato que implementa o padrão ERC-20, [retirado daqui](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). Ele não é destinado a ser usado tal como é, mas você pode [herdar](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) dele para estendê-lo para algo utilizável.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+
+
+### Importar declarações {#import-statements}
+
+Além das definições de interface acima, o contrato de definição importa outros dois arquivos:
+
+```solidity
+
+import "../../GSN/Context.sol";
+import "./IERC20.sol";
+import "../../math/SafeMath.sol";
+```
+
+- `GSN/Context.sol` são as definições necessárias para usar [OpenGSN](https://www.opengsn.org/), um sistema que permite que usuários sem ether possam usar a blockchain. Observe que esta é uma versão antiga. Se você quiser integrá-la com o OpenGSN [use este tutorial](https://docs.opengsn.org/javascript-client/tutorial.html).
+- [A biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-‘overflows’/), que é usada para fazer adições e subtrações sem estouros. Isso é necessário, pois, do contrário, uma pessoa pode ter um token, dois tokens, e então ter 2^256-1 tokens.
+
+
+
+Este comentário explica o propósito do contrato.
+
+```solidity
+/**
+ * @dev Implementation of the {IERC20} interface.
+ *
+ * This implementation is agnostic to the way tokens are created. Isto significa
+* que um mecanismo de oferta deve ser adicionado em um contrato derivado usando {_mint}.
+ * For a generic mechanism see {ERC20PresetMinterPauser}.
+ *
+ * TIP: For a detailed writeup see our guide
+ * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
+ * to implement supply mechanisms].
+ *
+ * We have followed general OpenZeppelin guidelines: functions revert instead
+ * of returning `false` on failure. Esse comportamento é, no entanto, convencional
+ * e não entra em conflito com as expectativas das aplicações do ERC20.
+ *
+ * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
+ * This allows applications to reconstruct the allowance for all accounts just
+ * by listening to said events. Outras implementações do EIP podem não emitir
+ * esses eventos, pois não é exigido pela especificação.
+ *
+ * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
+ * functions have been added to mitigate the well-known issues around setting
+ * allowances. Veja {IERC20-approve}.
+ */
+
+```
+
+### Definição de contrato {#contract-definition}
+
+```solidity
+contract ERC20 is Context, IERC20 {
+```
+
+Esta linha especifica a herança, neste caso de `IERC20` acima e `Context`, para OpenGSN.
+
+
+
+```solidity
+
+ using SafeMath for uint256;
+
+```
+
+Essa linha anexa a biblioteca `SafeMath` ao tipo `uint256`. Você pode encontrar essa biblioteca [aqui](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol).
+
+### Definições de variáveis {#variable-definitions}
+
+Essas definições especificam as variáveis de estado do contrato. Existem variáveis declaradas como `private`, mas isso apenas significa que outros contratos na blockchain não as podem ler. _Não há segredos na blockchain_, o software em cada nó possui o estado de cada contrato em cada bloco. Por convenção, as variáveis de estado são denominadas `_`.
+
+As duas primeiras variáveis são [mapeamentos](https://www.tutorialspoint.com/solidity/solidity_mappings.html), ou seja, se comportam mais ou menos da mesma forma que [matrizes associativas](https://wikipedia.org/wiki/Associative_array), com exceção das chaves, que são valores numéricos. O armazenamento é alocado apenas para as entradas que possuem valores diferentes do padrão (zero).
+
+```solidity
+ mapping (address => uint256) private _balances;
+```
+
+O primeiro mapeamento, `_balances`, é composta por endereços e seus respectivos saldos desse token. Para acessar o saldo, utilize a sintaxe: `_balances[]`.
+
+
+
+```solidity
+ mapping (address => mapping (address => uint256)) private _allowances;
+```
+
+Esta variável, `_allowances`, armazena as margens explicadas anteriormente. O primeiro índice é o proprietário das moedas, e o segundo é o contrato com a provisão. Para acessar a quantia que o endereço A pode gastar na conta do endereço B, use `_allowances[B][A]`.
+
+
+
+```solidity
+ uint256 private _totalSupply;
+```
+
+Como o nome sugere, essa variável mantém registro do fornecimento total de tokens.
+
+
+
+```solidity
+ string private _name;
+ string private _symbol;
+ uint8 private _decimals;
+```
+
+Essas três variáveis são usadas para melhorar a legibilidade. As duas primeiras são autoexplicativas, mas `_decimals` não.
+
+De um lado, o Ethereum não possui ponto flutuante ou variáveis fracionadas. De outro, as pessoas gostam de poder dividir tokens. Uma das razões pelas quais as pessoas estabeleceram o uso do ouro como moeda foi devido à dificuldade de trocá-lo quando alguém queria, por exemplo, comprar vaca pelo valor de um pato.
+
+A solução é manter o registro dos inteiros, mas em vez de contar o token real, contar o token fracionário, que praticamente não tem valor. No caso do ether, a moeda fracionária é chamada de wei, e 10^18 WEI é igual a um ETH. No momento da criação deste artigo, 10.000.000.000.000 WEI equivalem a cerca de um centavo de Dólar ou Euro.
+
+Os aplicativos precisam saber como exibir o saldo do token. Se um usuário tiver 3.141.000.000.000.000.000 WEI, seria equivalente a 3,14 ETH? 31,41 ETH? 3,141 ETH? No caso do ETH, é definido 10^18 WEI para o ETH, mas para sua moeda, você pode escolher um valor diferente. Se dividir uma moeda não fizer sentido, você pode usar um valor `_decimals` de zero. Se você quiser utilizar o mesmo padrão utilizado em ETH, use o valor **18**.
+
+### O Constructor {#the-constructor}
+
+```solidity
+ /**
+ * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
+ * a default value of 18.
+ *
+ * To select a different value for {decimals}, use {_setupDecimals}.
+ *
+ * All three of these values are immutable: they can only be set once during
+ * construction.
+ */
+ constructor (string memory name_, string memory symbol_) public {
+ _name = name_;
+ _symbol = symbol_;
+ _decimals = 18;
+ }
+```
+
+O construtor é chamado quando o contrato é criado pela primeira vez. Por convenção, os parâmetros da função são denominados `_`.
+
+### Funções da interface do usuário {#user-interface-functions}
+
+```solidity
+ /**
+ * @dev Returns the name of the token.
+ */
+ function name() public view returns (string memory) {
+ return _name;
+ }
+
+ /**
+ * @dev Returns the symbol of the token, usually a shorter version of the
+ * name.
+ */
+ function symbol() public view returns (string memory) {
+ return _symbol;
+ }
+
+ /**
+ * @dev Returns the number of decimals used to get its user representation.
+ * For example, if `decimals` equals `2`, a balance of `505` tokens should
+ * be displayed to a user as `5,05` (`505 / 10 ** 2`).
+ *
+ * Tokens usually opt for a value of 18, imitating the relationship between
+ * ether and wei. Esse é o valor {ERC20} usado, a menos que {_setupDecimals} seja
+ * chamado.
+ *
+ * NOTE: This information is only used for _display_ purposes: it in
+ * no way affects any of the arithmetic of the contract, including
+ * {IERC20-balanceOf} and {IERC20-transfer}.
+ */
+ function decimals() public view returns (uint8) {
+ return _decimals;
+ }
+```
+
+Essas funções, `nome`, `symbol` e `decimals`, ajudam as interfaces do usuário a conhecer o seu contrato para poderem exibi-lo corretamente.
+
+O tipo do retorno é `string memory`, o que significa que retorna uma string que é armazenada na memória. Variáveis, como ‘strings’, podem ser armazenadas em três locais:
+
+| | Tempo de vida | Acesso ao contrato | Custo em gás |
+| ------------- | ----------------- | ------------------ | ------------------------------------------------------------------------ |
+| Memória | Chamada da função | Leitura/gravação | Dezenas ou centenas (maior para locais mais altos) |
+| Calldata | Chamar Função | Somente leitura | Não pode ser usada como retorno, apenas como tipo de parâmetro de função |
+| Armazenamento | Até ser alterado | Ler/Escrever | Alto (800 para leitura, 20 mil para gravação) |
+
+Neste caso, `memory` é a melhor escolha.
+
+### Informação de leitura do token {#read-token-information}
+
+Essas funções fornecem informações sobre o token, seja o fornecimento total ou o saldo de uma conta.
+
+```solidity
+ /**
+ * @dev See {IERC20-totalSupply}.
+ */
+ function totalSupply() public view override returns (uint256) {
+ return _totalSupply;
+ }
+```
+
+A função `totalSupply` retorna o fornecimento total de tokens.
+
+
+
+```solidity
+ /**
+ * @dev See {IERC20-balanceOf}.
+ */
+ function balanceOf(address account) public view override returns (uint256) {
+ return _balances[account];
+ }
+```
+
+Leia o saldo de uma conta. Observe que qualquer um pode obter o saldo da conta de outra pessoa. Não há motivo para esconder essa informação, pois ela está disponível em todos os nós. _Não há segredos na blockchain._
+
+### Transferência de tokens {#transfer-tokens}
+
+```solidity
+ /**
+ * @dev See {IERC20-transfer}.
+ *
+ * Requirements:
+ *
+ * - `recipient` cannot be the zero address.
+ * - the caller must have a balance of at least `amount`.
+ */
+ function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
+```
+
+A função `transfer` é chamada para transferir os tokens do remetente para um destinatário. Observe que mesmo que ela retorne um valor booleano, o valor é sempre **true**. Se a transferência falhar, o contrato anulará a chamada.
+
+
+
+```solidity
+ _transfer(_msgSender(), recipient, amount);
+ return true;
+ }
+```
+
+A função `_transfer` faz o trabalho real. Ela é uma função privada que só pode ser chamada por outras funções de contrato. Por convenção, funções privadas são denominadas `_`, assim como as variáveis de estado.
+
+Normalmente, usamos `msg.sender` no Solidity para o remetente de mensagens. No entanto, isso rompe a [OpenGSN](http://opengsn.org/). Caso queiramos permitir transações sem Eth com nosso token, precisamos usar `_msgSender()`. Ela retornará `msg.sender` para transações normais, mas para transações sem Eth, ela indicará o signatário original e não o contrato que repassou a mensagem.
+
+### Funções de margem {#allowance-functions}
+
+Estas são as funções que implementam a funcionalidade da margem: `allowance`, `approve`, `transferFrom`, e `_approve`. Além disso, a implementação do OpenZeppelin vai além do padrão básico, para poder incluir alguns recursos que melhoram a segurança: `increaseAllowance`, e `decreaseAllowance`.
+
+#### A função allowance {#allowance}
+
+```solidity
+ /**
+ * @dev See {IERC20-allowance}.
+ */
+ function allowance(address owner, address spender) public view virtual override returns (uint256) {
+ return _allowances[owner][spender];
+ }
+```
+
+A função `allowance` permite que todo mundo confira qualquer margem.
+
+#### A função approve {#approve}
+
+```solidity
+ /**
+ * @dev See {IERC20-approve}.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ */
+ function approve(address spender, uint256 amount) public virtual override returns (bool) {
+```
+
+Essa função é chamada para criar uma provisão. Ela é semelhante à função `transfer` acima:
+
+- A função apenas chama uma função interna (neste caso, `_approve`) que realmente faz o trabalho.
+- A função retorna `true` (se for bem-sucedida) ou é revertida (se falhar).
+
+
+
+```solidity
+ _approve(_msgSender(), spender, amount);
+ return tu;
+}
+```
+
+Usamos funções internas para minimizar a quantidade de lugares onde as mudanças de estado ocorrem. _Qualquer_ função que mude o estado constitui um risco de segurança em potencial que precisa ser auditado para segurança. Dessa forma, temos menos chances de errar.
+
+#### A função transferFrom {#transferFrom}
+
+Essa é a função que um gastador chama para gastar uma margem. Isso requer duas operações: transfira o valor sendo gasto e reduza a margem nesse valor.
+
+```solidity
+ /**
+ * @dev See {IERC20-transferFrom}.
+ *
+ * Emits an {Approval} event indicating the updated allowance. Isso não é
+ * necessário para o EIP. Veja a nota no início do {ERC20}.
+ *
+ * Requirements:
+ *
+ * - `sender` and `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ * - the caller must have allowance for ``sender``'s tokens of at least
+ * `amount`.
+ */
+ function transferFrom(address sender, address recipient, uint256 amount) public virtual
+ override returns (bool) {
+ _transfer(sender, recipient, amount);
+```
+
+
+
+A chamada da função `a.sub(b, "message")` faz duas coisas. Primeiro, ela calcula `a-b`, que é a nova margem. Em seguida, ela verifica se esse resultado não é negativo. Se for negativo, a chamada é revertida com a mensagem fornecida. Observe que, quando uma chamada reverte qualquer processamento feito anteriormente a essa chamada, ela é ignorada para não precisarmos desfazer a `_transfer`.
+
+```solidity
+ _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
+ "ERC20: transfer amount exceeds allowance"));
+ return true;
+ }
+```
+
+#### Adições de segurança do OpenZeppelin {#openzeppelin-safety-additions}
+
+É perigoso definir uma margem que não seja zero como outro valor que não seja zero, porque você só controla a ordem de suas próprias transações, mas não as de outras pessoas. Imagine que você tenha dois usuários: Alice, que é ingênua, e Bill, que é desonesto. Alice quer solicitar um serviço de Bill que, segundo ela, custa cinco tokens — então, ela dá a Bill uma provisão de cinco tokens.
+
+Então, algo muda e o preço de Bill aumenta para dez tokens. Alice, que ainda quer o serviço, envia uma transação que define a provisão de Bill para dez. No momento em que Bill vê essa nova transação no pool de transações, ele envia uma transação que gasta os cinco tokens de Alice e com uma tarifa de gás muito mais alta que, portanto, será minerada mais rápido. Dessa forma, Bill pode gastar os cinco primeiros tokens e, quando a nova provisão de Alice for minerada, pode gastar mais dez por um preço total de quinze tokens, mais do que Alice queria autorizar. Essa técnica é chamada de [front-running](https://consensys.github.io/smart-contract-best-practices/attacks/#front-running)
+
+| Transação de Alice | Nonce de Alice | Transação de Bill | Nonce de Bill | A provisão de Bill | Total faturado por Bill de Alice |
+| ------------------ | -------------- | ----------------------------- | ------------- | ------------------ | -------------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10.123 | 0 | 5 |
+| approve(Bill, 10) | 11 | | | 10 | 5 |
+| | | transferFrom(Alice, Bill, 10) | 10.124 | 0 | 15 |
+
+Para evitar esse problema, essas duas funções (`increaseAllowance` e `reduaseAllowance`) permitem que você modifique a provisão por um valor específico. Então, se Bill já tinha gastado cinco tokens, ele só poderá gastar mais cinco tokens. Dependendo do tempo disponível, há duas maneiras de proceder, sendo que as duas acabam com Bill obtendo os dez tokens:
+
+A:
+
+| Transação de Alice | Nonce de Alice | Transação de Bill | Nonce de Bill | Permissão de Bill | Cobrança Total de Alice |
+| -------------------------- | --------------:| ---------------------------- | -------------:| -----------------:| ----------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| increaseAllowance(Bill, 5) | 11 | | | 0+5 = 5 | 5 |
+| | | transferFrom(Alice, Bill, 5) | 10,124 | 0 | 10 |
+
+B:
+
+| Transação de Alice | Nonce de Alice | Transação de Bill | Nonce de Bill | Permissão de Bill | Cobrança Total de Alice |
+| -------------------------- | --------------:| ----------------------------- | -------------:| -----------------:| -----------------------:|
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| increaseAllowance(Bill, 5) | 11 | | | 5+5 = 10 | 0 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 10 |
+
+```solidity
+ /**
+ * @dev Atomically increases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ */
+ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
+ return true;
+ }
+```
+
+A função `a.add(b)` é uma adição segura. No caso improvável de `um`+`b`>=`2^256`, ele não é contornado da mesma maneira que uma adição normal.
+
+```solidity
+
+ /**
+ * @dev Atomically decreases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ * - `spender` must have allowance for the caller of at least
+ * `subtractedValue`.
+ */
+ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
+ "ERC20: decreased allowance below zero"));
+ return true;
+ }
+```
+
+### Funções que modificam informações do token {#functions-that-modify-token-information}
+
+Essas são as quatro funções que realmente funcionam: `_transfer`, `_mint`, `_burn`, e `_appro`.
+
+#### A função \_transfer {#\_transfer}
+
+```solidity
+ /**
+ * @dev Moves tokens `amount` from `sender` to `recipient`.
+ *
+ * This is internal function is equivalent to {transfer}, and can be used to
+ * e.g. implement automatic token fees, slashing mechanisms, etc.
+ *
+ * Emits a {Transfer} event.
+ *
+ * Requirements:
+ *
+ * - `sender` cannot be the zero address.
+ * - `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ */
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual {
+```
+
+Esta função, `_transfer`, transfere moedas de uma conta para outra. Ela é chamada por `transfer` (para transferências da própria conta do remetente) e `transferFrom` (para usar as provisões a serem transferidas da conta de outra pessoa).
+
+
+
+```solidity
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+```
+
+Na verdade, ninguém possui o endereço zero no Ethereum (ou seja, ninguém conhece uma chave privada cuja chave pública correspondente tenha sido transformada no endereço zero). Quando as pessoas usam esse endereço, geralmente se trata de um bug de software, portanto, falhamos se o endereço zero é usado como o remetente ou o destinatário.
+
+
+
+```solidity
+ _beforeTokenTransfer(sender, recipient, amount);
+
+```
+
+Existem duas maneiras de usar esse contrato:
+
+1. Use-o como um modelo para o seu próprio código
+1. [Herde a partir daqui](https://www.bitdegree.org/learn/solidity-inheritance) e substitua apenas as funções que você precisa modificar
+
+O segundo método é muito melhor, porque o código OpenZeppelin ERC-20 já foi auditado e comprovado como seguro. Ao usar a herança, é fácil distinguir quais são as funções que você modificou e, para confiar nos seus contratos, as pessoas só precisam auditar essas funções específicas.
+
+Geralmente, é útil executar uma função toda vez que os tokens mudam de mãos. No entanto,`_transfer` é uma função muito importante e é possível escrevê-la de forma não segura (veja abaixo). Portanto, é melhor não substituí-la. A solução é `_beforeTokenTransfer`, uma [função hook](https://wikipedia.org/wiki/Hooking). Você pode substituir essa função e ela será chamada em cada transferência.
+
+
+
+```solidity
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+```
+
+Essas são as linhas que realmente executam a transferência. Observe que não há **nada** entre elas, e que subtraímos o valor transferido do remetente antes de adicioná-lo ao destinatário. Isso é importante, pois se tivesse ocorrido uma chamada para um contrato diferente nesse meio tempo, ela poderia ter sido utilizada para enganar esse contrato. Dessa forma, a transferência é atômica, ou seja, nada pode acontecer enquanto ela está em execução.
+
+
+
+```solidity
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+Essa função emite o evento `Transfer`. Os eventos não são acessíveis para contratos inteligentes, mas o código executado fora da blockchain pode ouvir os eventos e reagir a eles. Por exemplo, uma carteira pode monitorar quando o proprietário obtém mais tokens.
+
+#### As funções \_mint e \_burn {#\_mint-and-\_burn}
+
+Essas duas funções (`_mint` e `_burn`) modificam o fornecimento total de moedas. Elas são internas e não há nenhuma função que as chame nesse contrato, portanto, elas só são úteis se você herdar do contrato e adicionar sua própria lógica para decidir em que condições gerar novos tokens ou usar os tokens já existentes.
+
+**OBSERVAÇÃO:** Todos os tokens ERC-20 têm sua própria lógica comercial que dita o gerenciamento de tokens. Por exemplo, um contrato de fornecimento fixo só pode chamar `_mint` no construtor e nunca chamar `_burn`. Um contrato que vende tokens chamará `_mint` quando for pago, e provavelmente chamará `_burn` em algum momento para evitar hiperinflação.
+
+```solidity
+ /** @dev Creates `amount` tokens and assigns them to `account`, increasing
+ * the total supply.
+ *
+ * Emits a {Transfer} event with `from` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `to` cannot be the zero address.
+ */
+ function _mint(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: mint to the zero address");
+ _beforeTokenTransfer(address(0), account, amount);
+ _totalSupply = _totalSupply.add(amount);
+ _balances[account] = _balances[account].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
+```
+
+Certifique-se de atualizar o `_totalSupply` quando o número total de tokens mudar.
+
+
+
+```
+ /**
+ * @dev Destroys `amount` tokens from `account`, reducing the
+ * total supply.
+ *
+ * Emits a {Transfer} event with `to` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `account` cannot be the zero address.
+ * - `account` must have at least `amount` tokens.
+ */
+ function _burn(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: burn from the zero address");
+
+ _beforeTokenTransfer(account, address(0), amount);
+
+ _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
+ _totalSupply = _totalSupply.sub(amount);
+ emit Transfer(account, address(0), amount);
+ }
+```
+
+A função `_burn` é quase idêntica à `_mint`, exceto que ela funciona na direção inversa.
+
+#### A função \_approve {#\_approve}
+
+Essa é a função que especifica as provisões. Observe que ela permite que um proprietário especifique uma provisão superior ao saldo atual do proprietário. Isso não tem problema, pois o saldo é verificado no momento da transferência, quando ele poderia diferir do saldo no momento da criação da provisão.
+
+```solidity
+ /**
+ * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
+ *
+ * This internal function is equivalent to `approve`, and can be used to
+ * e.g. set automatic allowances for certain subsystems, etc.
+ *
+ * Emits an {Approval} event.
+ *
+ * Requirements:
+ *
+ * - `owner` cannot be the zero address.
+ * - `spender` cannot be the zero address.
+ */
+ function _approve(address owner, address spender, uint256 amount) internal virtual {
+ require(owner != address(0), "ERC20: approve from the zero address");
+ require(spender != address(0), "ERC20: approve to the zero address");
+
+ _allowances[owner][spender] = amount;
+```
+
+
+
+Emita um evento `Approval`. Dependendo de como o aplicativo é escrito, o contrato do gastador pode ser informado sobre a aprovação, seja pelo proprietário, seja pelo servidor que realiza esses eventos.
+
+```solidity
+ emit Approval(owner, spender, amount);
+ }
+
+```
+
+### Modificando as variáveis decimais {#modify-the-decimals-variable}
+
+```solidity
+
+
+ /**
+ * @dev Sets {decimals} to a value other than the default one of 18.
+ *
+ * WARNING: This function should only be called from the constructor. A maioria dos
+ * aplicativos que interagem com contratos das moedas não esperarão que
+ * {decimals} altere, e pode funcionar incorretamente se ele o fizer.
+ */
+ function _setupDecimals(uint8 decimals_) internal {
+ _decimals = decimals_;
+ }
+```
+
+Essa função modifica a variável `_decimals` utilizada para dizer às ‘interfaces’ de usuário como interpretar o valor. Você deve chamá-la a partir do construtor. Seria desonesto chamá-la em qualquer ponto subsequente, ainda mais que aplicativos não são projetados para lidar com isso.
+
+### Ganchos {#hooks}
+
+```solidity
+
+ /**
+ * @dev Hook that is called before any transfer of tokens. This includes
+ * minting and burning.
+ *
+ * Calling conditions:
+ *
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+ * will be to transferred to `to`.
+ * - when `from` is zero, `amount` tokens will be minted for `to`.
+ * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
+ * - `from` and `to` are never both zero.
+ *
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
+ */
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
+}
+```
+
+Essa é a função hook a ser chamada durante as transferências. Ela está vazia, mas se precisar dela para fazer algo, basta sobrescrevê-la.
+
+# Conclusão {#conclusion}
+
+Resumindo, aqui estão algumas das ideias mais importantes neste contrato (na minha opinião, pode ser que as suas não sejam as mesmas):
+
+- _Não há segredos na blockchain_. Qualquer informação que um contrato inteligente possa acessar está disponível para o mundo inteiro.
+- Você pode controlar a ordem de suas transações, mas não quando transações de outras pessoas estão em andamento. É por isso que alterar uma provisão pode ser perigoso, porque permite que o gastador gaste a soma das duas provisões.
+- Valores do tipo `uint256` aproximados. Em outras palavras, _0-1=2^256-1_. Se esse não for o comportamento desejado, você precisa verificá-lo (ou usar a biblioteca SafeMath que faz isso por você). Observe que isso foi alterado em [Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html).
+- Faça todas as mudanças de estado de um tipo específico e em um local específico, pois isso facilita a auditoria. Esse é o motivo pelo qual temos, por exemplo, `_approve`, chamado por `approve`, `transferFrom`, `increaseAllowance` e `decreaseAllowance`
+- Mudanças de estado devem ser atômicas, sem qualquer outra ação no meio (como se pode ver em `_transfer`). Isso ocorre, pois, durante a mudança de estado, o estado é inconsistente. Por exemplo, entre o tempo que você deduz do saldo do remetente e o tempo de adicionar ao saldo do beneficiário, há menos tokens existentes do que deveria haver. Isto pode ser potencialmente explorado mal-intencionadamente se houver operações entre eles, especialmente chamadas para um contrato diferente.
+
+Agora que você já viu como o contrato do OpenZeppelin ERC-20 é escrito, e especialmente como ele se tornou mais seguro, escreva seus próprios contratos e aplicativos seguros.
diff --git a/public/content/translations/pt-br/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/pt-br/developers/tutorials/erc20-with-safety-rails/index.md
new file mode 100644
index 00000000000..793a44bb683
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/erc20-with-safety-rails/index.md
@@ -0,0 +1,213 @@
+---
+title: ERC-20 com Trilhos de Segurança
+description: Como ajudar pessoas para evitar erros tolos
+author: Ori Pomerantz
+lang: pt-br
+tags:
+ - "erc-20"
+skill: intermediate
+published: 2022-08-15
+---
+
+## Introdução {#introduction}
+
+Uma das melhores coisas sobre o Ethereum é que não há autoridade central que possa modificar ou desfazer transações. Um dos maiores problemas do Ethereum é que não há autoridade central com o poder de desfazer erros de usuário ou transações ilícitas. Neste artigo, você aprenderá sobre alguns dos erros comuns que usuários cometem com tokens [ERC-20](/developers/docs/standards/tokens/erc-20/), assim como criar contratos ERC-20 que ajudam usuários a evitar esses erros, ou que dão a uma autoridade central algum poder (por exemplo, congelar contas).
+
+Observe que, apesar de usarmos o [contrato de token ERC-20 da OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20), este artigo não o explica em maiores detalhes. Você pode encontrar esta informação [aqui](/developers/tutorials/erc20-annotated-code).
+
+Se você quiser ver o código-fonte completo:
+
+1. Abra o [Remix IDE](https://remix.ethereum.org/).
+2. Clique o ícone de clonar o github (![clone github icon](icon-clone.png)).
+3. Clone o repositório github `https://github.com/qbzzt/20220815-erc20-safety-rails`.
+4. Abra **contracts > erc20-safety-rails.sol**.
+
+## Criando um contrato ERC-20 {#creating-an-erc-20-contract}
+
+Antes que nós possamos adicionar funcionalidade de trilhos de segurança, nós precisamos de um contrato ERC-20. Neste artigo, usaremos o [o Assistente de contratos da OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Abra-o em outro navegador e siga estas instruções:
+
+1. Selecione **ERC20**.
+2. Entre estas configurações:
+
+ | Parâmetro | Valor |
+ | ------------------------- | ---------------- |
+ | Nome | SafetyRailsToken |
+ | Símbolo | SAFE |
+ | Pré-cunhagem | 1.000 |
+ | Recursos | Nenhum |
+ | Controle de acesso | Proprietário |
+ | Capacidade de atualização | Nenhum |
+
+3. Suba e clique **Open in Remix** (para o Remix) ou **Download** para usar um ambiente diferente. Vou presumir que você está usando o Remix. Se você estiver usando algo diferente, faça as mudanças apropriadas.
+4. Agora, temos um contrato ERC-20 totalmente funcional. Você pode expandir `.deps` e `npm` para ver o código importado.
+5. Compile, implante e brinque com o contrato para ver se ele funciona como um contrato ERC-20. Se você precisar aprender como usar o Remix, [use este tutorial](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth).
+
+## Erros comuns {#common-mistakes}
+
+### Os erros {#the-mistakes}
+
+Às vezes, os usuários enviam tokens para o endereço errado. Embora não consigamos ler a mente dos usuários para saber o que querem fazer, há dois tipos de erros que ocorrem muitas vezes e são fáceis de detectar:
+
+1. Enviar os tokens para o próprio endereço do contrato. Por exemplo, [token Optimism's OP](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) acabou acumulando [mais de 120.000](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042#tokentxns) tokens OP em menos de dois meses. Isso representa uma quantia de dinheiro significativa, que presumimos que as pessoas tenham simplesmente perdido.
+
+2. Enviar os tokens para um endereço vazio, um que não corresponde a uma [conta de propriedade externa](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) ou um [contrato inteligente](/developers/docs/smart-contracts). Enquanto eu não tenho estatísticas de quão frequente isso acontece, [um incidente poderia ter custado 20.000.000 de tokens](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595).
+
+### Evitando transferências {#preventing-transfers}
+
+O contrato OpenZeppelin ERC-20 inclui [um hook, `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368), que é chamado antes de um token ser transferido. Por padrão, esse hook não faz nada, mas podemos pendurar nossas próprias funcionalidades, como verificações que são anuladas se houver um problema.
+
+Para usar o hook, adicione esta função depois do construtor:
+
+```solidity
+ function _beforeTokenTransfer(address from, address to, uint256 amount)
+ internal virtual
+ override(ERC20)
+ {
+ super._beforeTokenTransfer(from, to, amount);
+ }
+```
+
+Algumas partes desta função podem ser novas se você não estiver muito familiarizado com o Solidity:
+
+```solidity
+ internal virtual
+```
+
+A palavra-chave `virtual` significa que conforme herdamos funcionalidades do `ERC20` e substituímos essa função, outros contratos podem herdar de nós e substituir essa função.
+
+```solidity
+ override(ERC20)
+```
+
+Temos que especificar explicitamente que estamos [substituindo](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) a definição de token ERC20 de `_beforeTokenTransfer`. Em geral, definições explícitas são muito melhores, do ponto de vista da segurança, do que as implícitas — você não pode se esquecer de que fez algo se isso estive bem na sua frente. Esta também é a razão que nós precisamos para especificar que superclasses `_beforeTokenTransfer` nós estamos sobrepondo.
+
+```solidity
+ super._beforeTokenTransfer(from, to, amount);
+```
+
+Esta linha chama a função `_beforeTokenTransfer` do contrato ou contratos que herdamos e que a possui. Neste caso, isto é somente `ERC20`, `Ownable` não tem esse hook. Mesmo que, atualmente, o `ERC20._beforeTokenTransfer` não faça nada, nós o chamamos caso a funcionalidade seja adicionada no futuro (e nós então decidimos reimplantar o contrato, porque contratos não mudam depois da implantação).
+
+### Codificando os requisitos {#coding-the-requirements}
+
+Nós queremos adicionar estes requisitos para a função:
+
+- O endereço `to` não pode ser igual a `address(this)`, o endereço do contrato ERC-20 propriamente dito.
+- O endereço `to` não pode ser vazio, ele tem de ser:
+ - Uma conta de propriedade externa (EOA). Nós não podemos checar se um endereço é um EOA diretamente, mas nós podemos checar o saldo em ETH de um endereço. EOAs quase sempre têm um saldo, mesmo que não estejam mais sendo usados — é difícil esvaziá-los até o último wei.
+ - Um contrato inteligente. Testar se um endereço é um contrato inteligente é um pouco mais difícil. Há um opcode que checa o tamanho do código externo, chamado [`EXTCODESIZE`](https://www.evm.codes/#3b), mas ele não é disponível diretamente em Solidity. Para isso, temos que usar [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html), que é um assembly da EVM. Há outros valores do Solidity que poderíamos usar ([`.code` e `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), mas eles são mais caros.
+
+Vamos passar sobre o código novo, linha a linha:
+
+```solidity
+ require(to != address(this), "Can't send tokens to the contract address");
+```
+
+Este é o primeiro requisito, verificar se `to` e `this(address)` não são a mesma coisa.
+
+```solidity
+ bool isToContract;
+ assembly {
+ isToContract := gt(extcodesize(to), 0)
+ }
+```
+
+É assim que verificamos se um endereço é um contrato. Não podemos receber saídas diretamente do Yul, então, em vez disso, definimos uma variável para manter o resultado (`isToContract` neste caso). A maneira como o Yul trabalha é considerando cada opcode como uma função. Então, primeiro chamamos [`EXTCODESIZE`](https://www.evm.codes/#3b) para obter o tamanho do contrato e, em seguida, usamos [`GT`](https://www.evm.codes/#11) para verificar se não é zero (estamos lidando com inteiros sem sinal, então claro que ele não pode ser negativo). Então, escrevemos o resultado em `isToContract`.
+
+```solidity
+ require(to.balance != 0 || isToContract, "Can't send tokens to an empty address");
+```
+
+Por fim, temos a verificação real de endereços vazios.
+
+## Acesso administrativo {#admin-access}
+
+Algumas vezes é útil ter um administrador que pode desfazer erros. Para reduzir o potencial de abuso, esse administrador pode ser um [multisig](https://blog.logrocket.com/security-choices-multi-signature-wallets/) para que várias pessoas tenham que concordar com uma ação. Neste artigo, teremos dois recursos administrativos:
+
+1. Congelar e descongelar contas. Isto pode ser útil, por exemplo, quando uma conta for comprometida.
+2. Limpeza de ativos.
+
+ Às vezes, fraudadores enviam tokens fraudulentos para o contrato do token real para ganhar legitimidade. Por exemplo, [veja aqui](https://optimistic.etherscan.io/token/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe?a=0x4200000000000000000000000000000000000042). O contrato ERC-20 legítimo é [0x4200....0042](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042). A fraude que finge ser o contrato é [0x234....bbe](https://optimistic.etherscan.io/address/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe).
+
+ Também é possível que pessoas enviem tokens ERC-20 legítimos para nosso contrato por erro, que é outra razão para querer ter uma maneira de tirá-los de lá.
+
+OpenZeppelin fornece dois mecanismos para habilitar acesso administrativo:
+
+- [`Ownable`](https://docs.openzeppelin.com/contracts/4.x/access-control#ownership-and-ownable) contratos tem um único priprietário. Funções que tem o [modifier](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `onlyOwner` só podem ser chamadas por este proprietário. Os proprietários podem transferir a propriedade para outra pessoa ou renunciar a ela completamente. Os direitos de todas as outras contas são geralmente idênticas.
+- Os contratos [`AccessControl`](https://docs.openzeppelin.com/contracts/4.x/access-control#role-based-access-control) têm [controle de acesso baseado em função (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control).
+
+Por simplicidade, neste artigo usamos `Ownable`.
+
+### Congelando e descongelando contratos {#freezing-and-thawing-contracts}
+
+Congelar e descongelar contratos requer várias mudanças:
+
+- Um [mapeamento](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) de endereços em [booleanos](https://en.wikipedia.org/wiki/Boolean_data_type) para manter o controle de quais endereços estão congelados. Todos os valores são inicialmente zero, o que, para valores booleanos, é interpretado como falso. Isto é o que queremos porque, por padrão, as contas não são congeladas.
+
+ ```solidity
+ mapping(address => bool) public frozenAccounts;
+ ```
+
+- [Eventos](https://www.tutorialspoint.com/solidity/solidity_events.htm) para informar qualquer pessoa interessada, quando uma conta é congelada ou descongelada. Tecnicamente falando, os eventos não são necessários para essas ações, mas ajuda o código fora da cadeia a ser capaz de ouvir esses eventos e saber o que está acontecendo. É considerado uma boa conduta para um contrato inteligente emiti-los quando acontece algo que pode ser relevante para outra pessoa.
+
+ Os eventos são indexados, então, será possível pesquisar todas as vezes que uma conta foi congelada ou descongelada.
+
+ ```solidity
+ // When accounts are frozen or unfrozen
+ event AccountFrozen(address indexed _addr);
+ event AccountThawed(address indexed _addr);
+ ```
+
+- Funções para congelar e descongelar contas. Essas duas funções são praticamente idênticas, por isso, analisaremos apenas a função de congelamento.
+
+ ```solidity
+ function freezeAccount(address addr)
+ public
+ onlyOwner
+ ```
+
+ As funções marcadas como [`public`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) podem ser chamadas a partir de outros contratos inteligentes ou diretamente por uma transação.
+
+ ```solidity
+ {
+ require(!frozenAccounts[addr], "Account already frozen");
+ frozenAccounts[addr] = true;
+ emit AccountFrozen(addr);
+ } // freezeAccount
+ ```
+
+ Se a conta já estiver congelada, reverta-a. Caso contrário, congele-a e envie um evento `emit`.
+
+- Mude o `_beforeTokenTransfer` para evitar que o dinheiro seja movido de uma conta congelada. Note que o dinheiro ainda pode ser transferido para a conta congelada.
+
+ ```solidity
+ require(!frozenAccounts[from], "The account is frozen");
+ ```
+
+### Limpeza de ativos {#asset-cleanup}
+
+Para liberar os tokens ERC-20 mantidos por este contrato, precisamos chamar uma função no contrato do token ao qual eles fazem parte, [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) ou [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve). Nesse caso, não faz sentido desperdiçar gás em provisões. Vale mais a pena transferir diretamente.
+
+```solidity
+ function cleanupERC20(
+ address erc20,
+ address dest
+ )
+ public
+ onlyOwner
+ {
+ IERC20 token = IERC20(erc20);
+```
+
+Essa é a sintaxe para criar um objeto para um contrato quando recebemos o endereço. Podemos fazer isso porque temos a definição de tokens ERC20 como parte do código-fonte (veja a linha 4) e esse arquivo inclui [a definição para IERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol), a interface para um contrato OpenZeppelin ERC-20.
+
+```solidity
+ uint balance = token.balanceOf(address(this));
+ token.transfer(dest, balance);
+ }
+```
+
+Esta é uma função de limpeza, portanto, provavelmente não queremos deixar nenhum token. Em vez de obter o saldo do usuário manualmente, podemos também automatizar o processo.
+
+## Conclusão {#conclusion}
+
+Esta não é uma solução perfeita — não há solução perfeita para o problema do “usuário que cometeu um erro”. No entanto, usar esses tipos de verificações pode, pelo menos, evitar alguns erros. A capacidade de congelar contas, embora seja perigosa, pode ser usada para limitar os danos de certos ataques ao negar ao hacker os fundos roubados.
diff --git a/public/content/translations/pt-br/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/pt-br/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
new file mode 100644
index 00000000000..922ce204baa
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -0,0 +1,154 @@
+---
+title: Introdução ao Desenvolvimento Ethereum
+description: "Este é um guia para iniciantes no desenvolvimento do Ethereum. Iremos levá-lo desde a criação de um endpoint de API, para fazer uma solicitação de linha de comando, para escrever seu primeiro script web3! Não é necessário ter experiência em desenvolvimento de blockchain!"
+author: "Elan Halpern"
+tags:
+ - "javascript"
+ - "ethers.js"
+ - "nódulos"
+ - "consultando"
+ - "alchemy"
+skill: beginner
+lang: pt-br
+published: 2020-10-30
+source: Médio
+sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f
+---
+
+![Logos do Ethereum e Alchemy](./ethereum-alchemy.png)
+
+Este é um guia de iniciantes para começar com o desenvolvimento na Ethereum. Neste tutorial, usaremos a [Alchemy](https://alchemyapi.io/), a plataforma líder de desenvolvedores de blockchain, capacitando milhões de usuários em 70% dos principais aplicativos de blockchain, incluindo Maker, 0x, MyEtherWallet, Dharma e Kyber. A Alchemy nos dará acesso a um ponto de extremidade de API na cadeia do Ethereum para que possamos ler e escrever transações.
+
+Ajudaremos você a se inscrever na Alchemy para escrever o seu primeiro script web3! Não é necessário ter experiência em desenvolvimento de blockchain!
+
+## 1. Inscreva-se para obter uma conta gratuita da Alchemy {#sign-up-for-a-free-alchemy-account}
+
+Criar uma conta em Alchemy é fácil, [inscreva-se gratuitamente aqui](https://auth.alchemyapi.io/signup).
+
+## 2. Criar um app Alchemy {#create-an-alchemy-app}
+
+Para se comunicar com a chain da Ethereum e usar os produtos da Alchemy, você precisa de uma chave de API para autenticar as suas solicitações.
+
+Você pode [criar chaves de API a partir do painel de controle](http://dashboard.alchemyapi.io/). Para fazer uma nova chave, navegue até "Create app" como mostrado abaixo:
+
+Um agradecimento especial ao [_ShapeShift_](https://shapeshift.com/) _por nos permitir mostrar seu painel!_
+
+![Painel de controle Alchemy](./alchemy-dashboard.png)
+
+Preencha os detalhes em "Create app" para obter sua nova chave. Aqui você também pode ver os apps criados anteriormente, bem como os criados pela sua equipe. Pegue chaves existentes clicando em "View Key" para qualquer app.
+
+![Criar app com um Alchemy screenshot](./create-app.png)
+
+Você também pode extrair chaves de API existentes, passando o mouse sobre “Aplicativos” e selecionando uma. Você pode “Visualizar chave” aqui, bem como “Editar aplicativo” na lista de permissões de domínios específicos, ver várias ferramentas de desenvolvedor e visualizar análises.
+
+![Gif mostrando a um usuário como requisitar chaves API](./pull-api-keys.gif)
+
+## 3. Fazer uma requisição via Command line {#make-a-request-from-the-command-line}
+
+Interagir com a blockchain Ethereum através de Alchemy, usando JSON-RPC e curl.
+
+Para solicitações manuais, recomendamos interagir com `JSON-RPC` via solicitações de `POST`. Simplesmente passe no header `Content-Type: application/json` e sua query como corpo do `POST` com os seguintes campos:
+
+- `jsonrpc`: Atualmente, somente a versão `2.0` do JSON-RPC é suportada.
+- `method`: O método ETH API. [Veja a referência da API.](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc)
+- `params`: Uma lista de parâmetros para passar ao método.
+- `id`: A ID da sua solicitação. Será retornado pela resposta para que você possa manter o controle sobre qual solicitação uma resposta pertence.
+
+Aqui está um exemplo que você pode executar a partir da linha de comando, para recuperar o preço atual do gás:
+
+```bash
+curl https://eth-mainnet.alchemyapi.io/v2/demo \
+-X POST \
+-H "Content-Type: application/json" \
+-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
+```
+
+_**NOTA:** Substitua [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) por sua própria chave de API `https://eth-mainnet.alchemyapi.io/v2/**sua-chave-api`._
+
+**Resultados:**
+
+```json
+{ "id": 73,"jsonrpc": "2.0","result": "0x09184e72a000" // 10000000000000 }
+```
+
+## 4. Configure seu Cliente Web3 {#set-up-your-web3-client}
+
+**Se você tem um cliente existente,** mude o URL do seu provedor de nó atual para uma URL de Alchemy com a sua chave API: `“https://eth-mainnet.alchemyapi.io/v2/your-api-key"`
+
+**_NOTA:_** Os scripts abaixo precisam ser executados em um **contexto de nó** ou **salvo em um arquivo**. Não é executado na linha de comando. Se você ainda não instalou o Node ou o NPM, confira este rápido [guia de configuração para macs](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs).
+
+Há inúmeras [bibliotecas Web3](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) que você pode integrar com Alchemy. No entanto, nós recomendamos usar [Alchemy Web3](https://docs.alchemy.com/reference/api-overview), um drop-in substituto para web3.js, construída e configurada para trabalhar sem interrupções com Alchemy. Isto fornece múltiplas vantagens, tais como novas tentativas automáticas e um suporte robusto a WebSocket.
+
+Para instalar AlchemyWeb3.js, **navegue até o diretório do seu projeto** e execute:
+
+**Com o Yarn:**
+
+```
+yarn add @alch/alchemy-web3
+```
+
+**Com NPM:**
+
+```
+yarn add @alch/alchemy-web3
+```
+
+Para interagir com a infraestrutura dos nós de Alchemy, execute em NodeJS ou adicione isso a um arquivo JavaScript:
+
+```js
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(
+ "https://eth-mainnet.alchemyapi.io/v2/your-api-key"
+)
+```
+
+## 5. Escreva seu primeiro script Web3! {#write-your-first-web3-script}
+
+Agora vamos colocar a mão na massa com um pouco de programação na Web3. Vamos escrever um script simples que exibe o número de bloco mais recente da Rede principal do Ethereum.
+
+**1. Se você ainda não fez, no seu terminal, crie um novo diretório e cd do projeto dentro dele:**
+
+```
+mkdir web3-example
+cd web3-example
+```
+
+**2. Instale a dependência do Alchemy web3 (ou qualquer web3) em seu projeto, se você ainda não tiver:**
+
+```
+npm install @alch/alchemy-web3
+```
+
+**3. Crie um arquivo chamado `index.js` e adicione o seguinte conteúdo:**
+
+> Por fim, você deve substituir `demo` pela sua chave de API HTTP do Alchemy.
+
+```js
+async function main() {
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+ const web3 = createAlchemyWeb3("https://eth- mainnet.alchemyapi.io/v2/demo")
+ const blockNumber = await web3.eth.getBlockNumber()
+ console.log("The latest block number is " + blockNumber)
+}
+main()
+```
+
+Não está familiarizado com programação assíncrona? Confira este [post no Medium](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c).
+
+**4. Executá-lo em seu terminal usando o nó**
+
+```
+node index.js
+```
+
+**5. Agora você deve ver a saída do último número de bloco no seu console!**
+
+```
+O último número de bloco é 11043912
+```
+
+**Eba! Parabéns! Você acabou de escrever o seu primeiro script web3 usando Alchemy 🎉**
+
+Não tem certeza do que fazer a seguir? Experimente implementar seu primeiro contrato inteligente e colocar a mão na massa com um pouco de programação Solidity em nosso [Guia de contratos inteligentes “Olá, mundo”](https://docs.alchemyapi.io/tutorials/hello-world-smart-contract), ou teste seus conhecimentos sobre painel de controle com o [Aplicativo de demonstração do painel](https://docs.alchemyapi.io/tutorials/demo-app)!
+
+_[Cadastre-se com o Alchemy](https://auth.alchemyapi.io/signup) gratuitamente, confira [a nossa documentação](https://docs.alchemyapi.io/), e para receber as últimas notícias, siga-nos no [Twitter](https://twitter.com/AlchemyPlatform)_.
diff --git a/public/content/translations/pt-br/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/pt-br/developers/tutorials/guide-to-smart-contract-security-tools/index.md
new file mode 100644
index 00000000000..877be8a219b
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -0,0 +1,105 @@
+---
+title: Um guia para ferramentas de segurança de contratos inteligentes
+description: Uma visão geral de três diferentes técnicas de análise de testes e programas
+author: "Trailofbits"
+lang: pt-br
+tags:
+ - "solidez"
+ - "smart contracts"
+ - "segurança"
+skill: intermediate
+published: 2020-09-07
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
+---
+
+We are going to use three distinctive testing and program analysis techniques:
+
+- **Análise estática com [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/).** Todos os caminhos do programa são aproximados e analisados ao mesmo tempo, por meio de diferentes apresentações de programa (por exemplo, um control-flow-graph)
+- **Fuzzing com [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/).** O código é executado com uma geração pseudo-aleatória de transações. O fuzzer tentará encontrar uma sequência de transações para violar uma determinada propriedade.
+- **A execução simbólica com a [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/).** Uma técnica de verificação formal, que traduz cada caminho de execução para uma fórmula matemática, na qual as restrições de cima podem ser verificadas.
+
+Cada técnica tem vantagens e armadilhas, e será útil em [casos específicos](#determining-security-properties):
+
+| Técnica | Ferramenta | Uso | Velocidade | Erros perdidos | Alarmes falso |
+| ------------------ | ---------- | ------------------------------------ | ---------- | -------------- | ------------- |
+| Análise estática | Slither | CLI & scripts | segundos | moderado | baixo |
+| Fuzzing | Echidna | Propriedades da Solidity | minutos | baixo | nenhum |
+| Execução simbólica | Manticore | Propriedades & scripts & da Solidity | horas | nenhum\* | nenhum |
+
+\* se todos os caminhos forem explorados sem tempo limite
+
+**Slither** analisa contratos em poucos segundos, no entanto análise estática pode levar a alarmes falsos e será menos adequada para verificações complexas (e.. verificações aritméticas). Execute o Slither por meio da API para acesso com botão de comando para detectores internos ou por meio da API para verificações definidas pelo usuário.
+
+O **Echidna** precisa ser executado por vários minutos e só produzirá verdadeiros positivos. O Echidna verifica as propriedades de segurança fornecidas pelo usuário escritas em Solidity. Ele pode perder erros, pois é baseado em exploração aleatória.
+
+O **Manticore** executa a análise com maior peso. Como o Echidna, o Manticore verifica as propriedades fornecidas pelo usuário. Será necessário mais tempo de execução, mas isso poderá comprovar a validade de uma propriedade e não relatará alarmes falsos.
+
+## Fluxo de trabalho sugerido {#suggested-workflow}
+
+Comece com os detectores internos do Slither para garantir que nenhum bug simples esteja presente agora ou seja introduzido mais tarde. Use o Slither para verificar propriedades relacionadas a herança, dependências de variáveis e questões estruturais. À medida que a base de código cresce, use o Echidna para testar propriedades mais complexas da máquina de estado. Revisite o Slither para desenvolver verificações personalizadas de proteções indisponíveis na Solidity, como proteger contra uma função que está sendo substituída. Finalmente, use o Manticore para realizar a verificação direcionada de propriedades de segurança críticas, por exemplo, operações aritméticas.
+
+- Use a CLI do Slither para capturar problemas comuns
+- Use o Echidna para testar as propriedades de segurança de alto nível do seu contrato
+- Use o Slither para escrever verificações estáticas personalizadas
+- Use o Manticore quando quiser uma garantia aprofundada de propriedades de segurança críticas
+
+**Uma nota sobre testes de unidade**. Testes de unidade são necessários para construir softwares de alta qualidade. No entanto, estas técnicas não são as mais adequadas para encontrar falhas de segurança. Normalmente, eles são usados para testar comportamentos positivos de código (ou seja, o código funciona conforme o esperado no contexto normal), enquanto as falhas de segurança tendem a residir em casos de risco que os desenvolvedores não consideraram. No nosso estudo sobre dezenas de revisões inteligentes de segurança do contrato, a [cobertura do teste de unidade não teve efeito sobre o número ou gravidade das falhas de segurança](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/) que encontramos no código do nosso cliente.
+
+## Determinando propriedades de segurança {#determining-security-properties}
+
+Para testar e verificar efetivamente seu código, você deve identificar as áreas que precisam de atenção. Como seus recursos gastos com a segurança são limitados, é importante otimizar seus esforços para determinar o escopo das partes fracas ou de grande valor da sua base de código. A modelagem de ameaças pode ajudar nisso. Considere revisar:
+
+- [Avaliação de risco rápida](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (nossa abordagem preferida quando o tempo é curto)
+- [Guia de modelagem de ameaças do sistema centralizado de dados](https://csrc.nist.gov/publications/detail/sp/800-154/draft) (também conhecido como NIST 800-154)
+- [Modelagem de ameaças Shostack](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
+- [STRIDE](https://wikipedia.org/wiki/STRIDE_(security)) / [DREAD](https://wikipedia.org/wiki/DREAD_(risk_assessment_model))
+- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
+- [Uso de asserções](https://blog.regehr.org/archives/1091)
+
+### Componentes {#components}
+
+Saber o que você deseja verificar também ajudará a escolher a ferramenta certa.
+
+As vastas áreas que são frequentemente relevantes para os contratos inteligentes incluem:
+
+- **Máquina de estado.** A maioria dos contratos pode ser representada como uma máquina de estado. Recomendamos verificar que: (1) nenhum estado inválido pode ser alcançado, (2) se um estado é válido, que ele seja alcançável e (3) nenhum estado bloqueia o contrato.
+
+ - Echidna e Manticore são as ferramentas para testar as especificações da máquina.
+
+- **Controles de acesso.** Se o seu sistema tiver usuários privilegiados (por exemplo, um proprietário, controladores, …), você deve garantir que (1) cada usuário pode executar apenas as ações autorizadas e (2) nenhum usuário pode bloquear ações de um usuário com mais privilégios.
+
+ - Slither, Echidna e Manticore podem verificar se há controles de acesso corretos. Por exemplo, o Slither pode verificar que apenas as funções da lista de permissões não possuem o modificador onlyOwner. O Echidna e a Manticore são úteis para um controle de acesso mais complexo, como uma autorização dada apenas se o contrato atingir um determinado estado.
+
+- **Operações aritméticas.** É essencial verificar a solidez das operações aritméticas. Usar o `SafeMath` em todo lugar é um bom passo para evitar overflow/underflow, no entanto, ainda é importante considerar outras falhas aritméticas, incluindo problemas de arredondamento e falhas que atrapalham o contrato.
+
+ - A Manticore é a melhor escolha aqui. O Echidna pode ser utilizado se a aritmética estiver fora do escopo da solução SMT.
+
+- **Exatidão da herança.** Os contratos do Solidity dependem fortemente de várias heranças. Erros como uma função de sombreamento faltando uma chamada `super` e uma ordem de linearização c3 interpretada erradamente podem ser facilmente introduzidos.
+
+ - O Slither é a ferramenta que garante a detecção desses problemas.
+
+- **Interações externas.** Os contratos interagem entre si, e não se deve confiar em alguns contratos externos. Por exemplo, se o seu contrato depende de oráculos externos, ele permanecerá seguro se metade dos oráculos disponíveis estiverem comprometidos?
+
+ - A Manticore e o Echidna são a melhor escolha para testar as interações externas com seus contratos. A Manticore possui um mecanismo integrado para o stub de contratos externos.
+
+- **Conformidade padrão.** As normas do Ethereum (por exemplo, ERC20) têm um histórico de falhas em seu design. Esteja ciente das limitações da norma no qual você está construindo.
+ - Slither, Echidna e Manticore vão ajudar você a detectar desvios de uma determinada norma.
+
+### Folha de dicas de ferramentas {#tool-selection-cheatsheet}
+
+| Componentes | Ferramentas | Exemplos |
+| --------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Máquina de estado | Echidna, Manticore | |
+| Controle de acesso | Slither, Echidna, Manticore | [Slither exercise 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise2.md), [Echidna exercício 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-2.md) |
+| Operações aritméticas | Manticore, Echidna | [Echidna exercício 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-1.md), [Manticore exercícios 1 a 3](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
+| Exatidão da herança | Slither | [Slither exercício 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise1.md) |
+| Interações externas | Manticore, Echidna | |
+| Conformidade padrão | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
+
+Outras áreas terão de ser verificadas dependendo dos seus objetivos, mas essas áreas gerais são um bom começo para qualquer sistema de contrato inteligente.
+
+Nossas auditorias públicas contêm exemplos de propriedades verificadas ou testadas. Considere a leitura das seções `Teste Automatizado e Verificação` dos seguintes relatórios para revisar as propriedades de segurança em situações reais:
+
+- [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf)
+- [Balanceador](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf)
diff --git a/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract-fullstack/index.md
new file mode 100644
index 00000000000..83b560c08ac
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -0,0 +1,1540 @@
+---
+title: Contrato inteligente "Hello World" para iniciantes - Fullstack
+description: Tutorial introdutório sobre como escrever e implementar um contrato inteligente simples no Ethereum.
+author: "nstrike2"
+tags:
+ - "solidity"
+ - "hardhat"
+ - "alchemy"
+ - "contratos inteligentes"
+ - "implementação"
+ - "blockexplorer"
+ - "front-end"
+ - "transações"
+skill: beginner
+lang: pt-br
+published: 2021-10-25
+---
+
+Este guia é para você que é iniciante em desenvolvimento de blockchain e não sabe por onde começar ou como implantar e interagir com contratos inteligentes. Nós iremos passar por criação e implantação de um contrato inteligente simples na rede de teste Goerli, usando [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org), e [Alchemy](https://alchemyapi.io/eth).
+
+Você irá precisar de uma conta Alchemy para completar este tutorial. [Registre-se para uma conta grátis](https://www.alchemy.com/).
+
+E claro, se você tiver alguma dúvida em qualquer momento, não hesite em entrar no [Discord da Alchemy](https://discord.gg/gWuC7zB)!
+
+## Parte 1 - Criando e Implantando seu Contrato Inteligente usando Hardhat {#part-1}
+
+### Conectar-se à rede Ethereum {#connect-to-the-ethereum-network}
+
+Existem muitas maneiras de fazer solicitações à cadeia de Ethereum. Para simplificar, usaremos uma conta gratuita na Alchemy, uma plataforma de desenvolvedores de blockchain e API que nos permite comunicar com a cadeia Ethereum sem termos que executar nosso próprio nó. A Alchemy também possui ferramentas de desenvolvedor para monitoração e análise. Neste tutorial, vamos aproveitá-las para entender o que está acontecendo nos bastidores da implantação do nosso contrato inteligente.
+
+### Crie o seu app e sua chave API {#create-your-app-and-api-key}
+
+Assim que criar uma conta na Alchemy, você poderá gerar uma chave API criando um app. Isso nos permitirá fazer solicitações na rede de teste Goerli. Se você não estiver familiarizado com redes de teste, você pode [ler o guia da Alchemy para escolher uma rede](https://docs.alchemyapi.io/guides/choosing-a-network).
+
+No painel da Alchemy, encontre o item **Apps** no menu suspenso na barra de navegação e selecione **Criar aplicativo**.
+
+![Criar um aplicativo Hello World](./hello-world-create-app.png)
+
+Dê ao seu app o nome “_Olá, Mundo_” e escreva uma breve descrição. Selecione **Staging** como o seu ambiente, e **Goerli** como a sua rede.
+
+![criar uma visualização do app hello world](./create-app-view-hello-world.png)
+
+_Observação: certifique-se de selecionar **Goerli**, ou este tutorial não funcionará._
+
+Clique em **Criar app**. Seu app aparecerá na tabela abaixo.
+
+### Cria uma conta Ethereum {#create-an-ethereum-account}
+
+Você precisa de uma conta Ethereum para enviar e receber transações. Nós usaremos MetaMask, a carteira virtual no navegador que permite usuários gerenciarem o endereço da sua conta Ethereum.
+
+Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando você estiver criando uma conta, ou se já tiver uma conta, certifique-se de mudar para a “Rede de teste Goerli”, no canto superior direito (para que não estejamos lidando com dinheiro real).
+
+### Etapa 4: Adicionar ether de um faucet {#step-4-add-ether-from-a-faucet}
+
+Para implantar nosso contrato inteligente na rede de teste, precisaremos de alguns ETHs falsos. Para conseguir ETH da rede Goerli, vá para o Goerli faucet e entre o endereço da sua conta Goerli. Note that Goerli faucets can be a bit unreliable recently - see the [test networks page](/developers/docs/networks/#goerli) for a list of options to try:
+
+_Nota: devido a tráfego de rede, isto pode demorar um pouco._
+
+### Etapa 5: Verificar seu saldo {#step-5-check-your-balance}
+
+Para garantir que o ETH está na sua carteira, vamos fazer uma chamada [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando a [ferramenta de composição da Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Ele mostrará a quantidade de ETH em nossa carteira. Para saber mais, confira o [Breve tutorial da Alchemy sobre como usar a ferramenta de composição](https://youtu.be/r6sjRxBZJuU).
+
+Insira o endereço da sua conta MetaMask e clique em **Send Request**. Você verá a resposta que se parece com o pedação de código abaixo.
+
+```json
+{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
+```
+
+> _Nota: Este resultado é em wei, não ETH. Lembre-se de que "Wei" é a menor unidade de ether._
+
+Ufa! O nosso dinheiro falso está todo lá.
+
+### Etapa 6: Dar início a nosso projeto {#step-6-initialize-our-project}
+
+Primeiro, precisamos criar uma pasta para o nosso projeto. Navegue para a sua linha de comando e entre o seguinte.
+
+```
+mkdir hello-world
+cd hello-world
+```
+
+Agora que estamos dentro da pasta do nosso projeto, vamos usar o comando `npm init `para inicializar o projeto.
+
+> Se você não tem npm instalado ainda, siga [essas instruções para instalar o Node.js e o npm](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm).
+
+Para finalidade deste tutorial, não importa como você responde às questões de inicialização. Aqui está como nós fizemos para referência:
+
+```
+package name: (hello-world)
+version: (1.0.0)
+description: hello world smart contract
+entry point: (index.js)
+test command:
+git repository:
+keywords:
+author:
+license: (ISC)
+
+About to write to /Users/.../.../.../hello-world/package.json:
+
+{
+ "name": "hello-world",
+ "version": "1.0.0",
+ "description": "hello world smart contract",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+}
+```
+
+Aprove o package.json e estaremos prontos para começar!
+
+### Passo 7: Baixar Hardhat {#step-7-download-hardhat}
+
+Hardhat é um ambiente de desenvolvimento para compilar, implementar, testar e depurar seu software de Ethereum. Ele ajuda os desenvolvedores na criação de contratos inteligentes e dapps localmente antes de implantar na cadeia real.
+
+Dentro de nosso projeto `hello-world` execute:
+
+```
+npm install --save-dev hardhat
+```
+
+Para mais detalhes, confira esta página sobre as [instruções de instalação](https://hardhat.org/getting-started/#overview).
+
+### Etapa 8: Criar o projeto Hardhat {#step-8-create-hardhat-project}
+
+Dentro da pasta do nosso projeto `hello-world`, rode:
+
+```
+npx hardhat
+```
+
+Você deve então ver uma mensagem de boas-vindas e a opção de selecionar o que quer fazer. Selecione "criar uma hardhat.config.js vazia":
+
+```
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.11 👷
+
+What do you want to do? …
+Create a sample project
+❯ Create an empty hardhat.config.js
+Quit
+```
+
+Isto irá gerar um arquivo `hardhat.config.js` no projeto. Usaremos isso mais tarde neste tutorial para especificar a configuração do nosso projeto.
+
+### Etapa 9: Adicionar as pastas do projeto {#step-9-add-project-folders}
+
+Para manter a organização do nosso projeto, vamos criar duas novas pastas. No comando de linha, navegue para o diretório raiz do nosso projeto `hello-world` e digite:
+
+```
+mkdir contracts
+mkdir scripts
+```
+
+- `contracts/` é onde nós vamos manter o arquivo de código do contrato inteligente "hello world"
+- `scripts/` é onde nós vamos manter scripts para implantar e interagir com nosso contrato
+
+### Etapa 10: Escrever nosso contrato {#step-10-write-our-contract}
+
+Você pode estar se perguntando, quando é que nós vamos escrever código? Está na hora!
+
+Abra o projeto hello-world no seu editor favorito. Contratos inteligentes são mais comumente escritos em Solidity, o que nós usaremos para escrever o nosso contrato inteligente.
+
+1. Navegue para a pasta `contracts` e crie um novo arquivo chamado `HelloWorld.sol`
+2. Veja abaixo uma amostra de contrato inteligente “Hello World”, que usaremos neste tutorial. Copie o conteúdo abaixo no arquivo `HelloWorld.sol`.
+
+_Nota: Certifique-se de ler os comentários para entender o que o contrato faz._
+
+```
+// Especifica a versão do Solidity usando a versão semântica.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity >=0.7.3;
+
+// Defines a contract named `HelloWorld`.
+// Um contrato é uma coleção de funções e dados (seu estado). Uma vez implantado, um contrato reside em um endereço específico na blockchain Ethereum. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ //Emitted when update function is called
+ //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // Declares a state variable `message` of type `string`.
+ // Variáveis de estado são variáveis cujos valores são permanentemente armazenados no armazenamento do contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Os construtores são usados para inicializar os dados do contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+Este é um contrato inteligente básico que armazena uma mensagem quando da sua criação. Ele pode ser atualizado chamando-se a função `update`.
+
+### Etapa 11: Vincular as contas MetaMask e Alchemy a seu projeto {#step-11-connect-metamask-alchemy-to-your-project}
+
+Nós já criamos uma carteira Metamask, uma conta Alchemy e já escrevemos nosso contrato inteligente. Agora é hora de vincularmos os três.
+
+Toda transação enviada da sua carteira requer uma assinatura, usando sua chave privada única. Para fornecer esta permissão ao nosso programa, podemos armazenar seguramente nossa chave privada em um arquivo de ambiente. Nós armazenaremos também uma chave de API da Alchemy aqui.
+
+> Para saber mais sobre o envio de transações, confira [este tutorial](https://docs.alchemyapi.io/alchemy/tutorials/sending-transactions-using-web3-and-alchemy) sobre o envio de transações usando web3.
+
+Primeiro, instale o pacote dotenv na pasta do seu projeto:
+
+```
+npm install dotenv --save
+```
+
+Então, crie um arquivo `.env` no diretório raiz do projeto. Adicione sua chave privada MetaMask e URL da API HTTP Alchemy a ele.
+
+Seu arquivo de ambiente deve ser nomeado `.env` or ele não será reconhecido como arquivo de ambiente.
+
+Não o nomeie como `process.env` ou `.env-custom` ou qualquer outra coisa.
+
+- Siga [estas instruções](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar sua chave privada
+- Veja abaixo como obter o URL da API HTTP Alchemy
+
+![](./get-alchemy-api-key.gif)
+
+Seu arquivo `.env` ficará assim:
+
+```
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PRIVATE_KEY = "your-metamask-private-key"
+```
+
+Para realmente vinculá-los a nosso código, vamos fazer referência a essas variáveis em nosso arquivo `hardhat.config.js` no passo 13.
+
+### Etapa 12: Instalar o Ethers.js {#step-12-install-ethersjs}
+
+Ethers.js é uma biblioteca que facilita a interação e o envio de solicitações ao Ethereum ao incorporar [métodos padrões JSON-RPC](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) a outros métodos mais amigáveis ao usuário.
+
+O Hardhat nos permite integrar [plugins](https://hardhat.org/plugins/) para ferramentas adicionais e funcionalidade estendida. Aproveitaremos o [plugin Ethers](https://hardhat.org/plugins/nomiclabs-hardhat-ethers.html) para implantar o contrato.
+
+No diretório do projeto, digite:
+
+```bash
+npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
+```
+
+### Etapa 13: Atualizar hardhat.config.js {#step-13-update-hardhat.configjs}
+
+Até aqui, já adicionamos diversas dependências e plugins. Agora precisamos atualizar o `hardhat.config.js` para que nosso projeto reconheça todos eles.
+
+Atualize seu `hardhat.config.js` para ficar assim:
+
+```javascript
+/**
+ * @type import('hardhat/config').HardhatUserConfig
+ */
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+
+const { API_URL, PRIVATE_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+}
+```
+
+### Etapa 14: Compilar nosso contrato {#step-14-compile-our-contract}
+
+Para ter certeza de que tudo está funcionando, vamos compilar nosso contrato. A tarefa `compile` é uma das tarefas integradas do Hardhat.
+
+Na linha de comando, execute:
+
+```bash
+npx hardhat compile
+```
+
+Você pode receber o aviso `SPDX license identifier not provided in source file`, mas não há necessidade de se preocupar com isso. Esperemos que tudo mais esteja bem! Se não, você sempre pode enviar uma mensagem no [discord Alchemy](https://discord.gg/u72VCg3).
+
+### Etapa 15: Escrever nosso script de implantação {#step-15-write-our-deploy-script}
+
+Agora que nosso contrato está escrito e nosso arquivo de configuração está pronto, é hora de escrever o script de implantação do contrato.
+
+Navegue até a pasta `scripts/` e crie um novo arquivo chamado `deploy.js`, adicionando o seguinte conteúdo:
+
+```javascript
+async function main() {
+ const HelloWorld = await ethers.getContractFactory("HelloWorld")
+
+ // Start deployment, returning a promise that resolves to a contract object
+ const hello_world = await HelloWorld.deploy("Hello World!")
+ console.log("Contract deployed to address:", hello_world.address)
+}
+
+main()
+ .then(() => process.exit(0))
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+```
+
+A Hardhat fez um trabalho incrível ao explicar o que cada uma dessas linhas de código faz em seu [Tutorial sobre contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests). Adotamos aqui as explicações deles.
+
+```javascript
+const HelloWorld = await ethers.getContractFactory("HelloWorld")
+```
+
+Uma `ContractFactory` em ethers.js é uma abstração usada para implantar novos contratos inteligentes, então, aqui, `HelloWorld` representa uma [fábrica](https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)) para instâncias do nosso contrato Hello World. Quando usar o plugin `hardhat-ethers` `ContractFactory` e `Contract`, as instâncias estão conectadas ao primeiro assinante (proprietário) por padrão.
+
+```javascript
+const hello_world = await HelloWorld.deploy()
+```
+
+Chamar `deploy()` em uma `ContractFactory`, irá iniciar a implantação, e retornará uma `Promise` que se resolve em um objeto `Contract`. Este é o objeto que tem um método para cada uma de nossas funções de contrato inteligente.
+
+### Etapa 16: Implantar nosso contrato {#step-16-deploy-our-contract}
+
+Finalmente estamos prontos para implantar o nosso contrato inteligente! Navegue até a linha de comando e digite:
+
+```bash
+npx hardhat run scripts/deploy.js --network goerli
+```
+
+Você deverá ver algo assim:
+
+```bash
+Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+```
+
+**Por favor, grave este endereço**. Nós o usaremos mais tarde neste tutorial.
+
+Se formos ao [etherscan da Goerli](https://goerli.etherscan.io) e procurarmos nosso endereço de contrato, devemos ser capazes de ver que ele foi implantado com sucesso. A transação ficará parecida com isto:
+
+![](./etherscan-contract.png)
+
+O endereço `From` deve combinar com o endereço da sua conta MetaMask, e o endereço `To` conterá **Contract Creation**. Se clicarmos na transação, veremos o nosso endereço de contrato no campo `To`.
+
+![](./etherscan-transaction.png)
+
+Parabéns! Você acaba de implantar um contrato inteligente em uma rede de teste Ethereum.
+
+Para entender o que está acontecendo nos bastidores, vamos navegar até a guia Explorer no [painel do Alchemy](https://dashboard.alchemyapi.io/explorer). Se você tem vários aplicativos Alchemy, certifique-se de filtrar por app e selecionar **Hello World**.
+
+![](./hello-world-explorer.png)
+
+Aqui você verá um punhado de métodos JSON-RPC que Hardhat/Ethers fizeram em segundo plano para nós quando chamamos a função `.deploy() `. Dois importantes métodos aqui são [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que é a requisição para escrever nosso contrato na cadeia Goerli, e [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash) que é uma requisição para ler informações sobre nossa transação, dado o hash. Para saber mais sobre o envio de transações, confira [este tutorial sobre o envio de transações usando web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
+
+## Parte 2: Interaja com o seu Contrato Inteligente {#part-2-interact-with-your-smart-contract}
+
+Agora que você implantou com sucesso um contrato inteligente na rede Goerli, vamos aprender como interagir com ele.
+
+### Crie um arquivo interact.js {#create-a-interactjs-file}
+
+Este é o arquivo onde nós iremos escrever nosso script de interação. Nós usaremos a biblioteca Ether.js que você instalou anteriormente na Parte1.
+
+Dentro da pasta `scripts/` crie um novo arquivo chamado `interact.js`, adicionando o seguinte código:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+```
+
+### Atualize seu arquivo .env {#update-your-env-file}
+
+Nós usaremos novas variáveis de ambiente, portanto nós precisamos defini-las no arquivo `.env` que [ nós criamos antes](#step-11-connect-metamask-&-alchemy-to-your-project).
+
+Nós precisaremos adicionar uma definição para a nossa `API_KEY` Alchemy e o `CONTRACT_ADDRESS` onde o nosso contrato inteligente foi implantado.
+
+Seu arquivo `.env` deverá se parecer com isto:
+
+```bash
+# .env
+
+API_URL = "https://eth-goerli.alchemyapi.io/v2/"
+API_KEY = ""
+PRIVATE_KEY = ""
+CONTRACT_ADDRESS = "0x"
+```
+
+### Pegue a ABI do seu contrato {#grab-your-contract-ABI}
+
+O [ABI (Interface binária da aplicação)](/glossary/#abi) do nosso contrato é a interface para interagir com o nosso contrato inteligente. O Hardhat automaticamente gera uma ABI e a salva no arquivo `HelloWorld.json`. Para usar a ABI, precisaremos analisar o conteúdo adicionando as seguintes linhas de código ao nosso arquivo `interact.js`:
+
+```javascript
+// interact.js
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+```
+
+Se quiser ver a ABI, pode imprimi-la no console:
+
+```javascript
+console.log(JSON.stringify(contract.abi))
+```
+
+Para ver o seu ABI impresso no console, navegue até seu terminal e execute:
+
+```bash
+npx hardhat run scripts/interact.js
+```
+
+### Criar uma instância do seu contrato {#create-an-instance-of-your-contract}
+
+Para interagir com o nosso contrato, precisamos criar uma instância dele em nosso código. Para fazer isso com Ether.js, nós precisaremos trabalhar com três conceitos:
+
+1. Provedor — um nó fornecedor que lhe dá acesso de leitura e escrita ao blockchain
+2. Signatário — representa uma conta Ethereum que pode assinar transações
+3. Contrato — um objeto Ether.js representando um contrato específico implantado on-chain
+
+Usaremos a ABI do contrato da etapa anterior para criar nossa instância do contrato:
+
+```javascript
+// interact.js
+
+// Provider
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// Signer
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// Contract
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+```
+
+Aprenda mais sobre Provedores, Signatários e Contratos na [documentação ethers.js](https://docs.ethers.io/v5/).
+
+### Leia a mensagem init {#read-the-init-message}
+
+Lembra-se de quando implantamos nosso contrato com o `initMessage = "Hello world!"`? Nós vamos agora ler a mensagem armazenada no nosso contrato inteligente e imprimi-la no console.
+
+Em JavaScript, funções assíncronas são usadas quando interagindo com redes. Para aprender mais sobre funções assíncronas, [leia este artigo](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff).
+
+Use o código abaixo para chamar a função `message` no nosso contrato inteligente e ler a mensagem init:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+}
+main()
+```
+
+Depois de rodar o arquivo usando `npx hardhat run scripts/interact.js` no terminal, nós devemos ver esta resposta:
+
+```
+The message is: Hello world!
+```
+
+Parabéns! Você acabou de ler com sucesso dados de contrato inteligente do blockchain Ethereum, continue assim!
+
+### Atualize a mensagem {#update-the-message}
+
+Ao invés de só ler a mensagem, nós podemos também atualizar a mensagem salva no nosso contrato inteligente usando a função `update`! Muito bacana, não?
+
+Para atualizar a mensagem, nós podemos chamar diretamente a função `update` no nosso objeto Contract instanciado:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("This is the new message.")
+ await tx.wait()
+}
+main()
+```
+
+Note que na linha 11, nós fazemos uma chamada para `.wait()` no objeto da transação retornada. Isso garante que nosso script espere pela transação ser minerada no blockchain antes de sair da função. Se a chamada `.wait()` não estiver incluída, o script pode não ver o valor da `message` atualizada no contrato.
+
+### Leia a nova mensagem {#read-the-new-message}
+
+Você deve ser capaz de repetir o [passo anterior](#read-the-init-message) para ler o valor atualizado da `message`. Pegue um momento e veja se você pode fazer as mudanças necessárias para imprimir o novo valor!
+
+Se você precisar de uma dica, aqui está o que o seu arquivo `interact.js` deve se parecer neste ponto:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+
+// provider - Alchemy
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// signer - you
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// contract instance
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("this is the new message")
+ await tx.wait()
+
+ const newMessage = await helloWorldContract.message()
+ console.log("The new message is: " + newMessage)
+}
+
+main()
+```
+
+Agora apenas rode o script e você deve ser capaz de ver a mensagem antiga, o estado atualizado, e a nova mensagem impressa no seu terminal!
+
+`npx hardhat run scripts/interact.js --network goerli`
+
+```
+The message is: Hello World!
+Updating the message...
+The new message is: This is the new message.
+```
+
+Enquanto estiver rodando este script, você pode perceber que o passo `Updating the message...` leva um tempo para carregar antes da nova mensagem carregar. Isto é por causa do processo de mineração; se você é curioso sobre rastrear transações enquanto elas estão sendo mineradas, visite o [Alchemy mempool](https://dashboard.alchemyapi.io/mempool) para ver o estado da transação. Se a transação for derrubada, também é útil checar o [Goerli Etherscan](https://goerli.etherscan.io) e procurar pelo hash da sua transação.
+
+## Parte 3: Publique seu Contrato Inteligente no Etherscan {#part-3-publish-your-smart-contract-to-etherscan}
+
+Você fez todo o trabalho duro dar vida ao seu contrato inteligente; agora é hora de compartilhá-lo com o mundo!
+
+Verificando seu contrato inteligente no Etherscan, qualquer um pode ver seu código-fonte e interagir com o seu contrato inteligente. Vamos começar!
+
+### Passo 1: Gere a Chave API na sua conta Etherscan {#step-1-generate-an-api-key-on-your-etherscan-account}
+
+Uma Chave API Etherscan é necessária para verificar que você possui o contrato inteligente que você está tentando publicar.
+
+Se você não tem uma conta Etherscan ainda, [se inscreva para uma conta](https://etherscan.io/register).
+
+Uma vez conectado, encontre seu nome de usuário na barra de navegação, passe o mouse em cima dele, e selecione o botão **My profile**.
+
+Na página do seu perfil, você deve ver uma barra de navegação lateral. Da barra de navegação lateral, selecione **API Keys**. Em seguida, pressione o botão "Add" para criar uma nova chave API, nomeie seu app **hello-world**e pressione o botão **Create New API Key**.
+
+Sua nova chave API deve aparecer na tabela de chaves API. Copie a chave API na sua área de transferência.
+
+Agora nós precisamos adicionar a chave API Etherscan no seu arquivo `.env`.
+
+Depois de adicionar isso, seu arquivo `.env` deve se parecer com isso:
+
+```javascript
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PUBLIC_KEY = "your-public-account-address"
+PRIVATE_KEY = "your-private-account-address"
+CONTRACT_ADDRESS = "your-contract-address"
+ETHERSCAN_API_KEY = "your-etherscan-key"
+```
+
+### Contratos inteligentes implantados pelo Hardhat {#hardhat-deployed-smart-contracts}
+
+#### Instale o hardhat-etherscan {#install-hardhat-etherscan}
+
+Publicar o seu contrato no Etherscan usando Hardhat é uma tarefa direta. Você primeiro precisa instalar o plugin `hardhat-etherscan` para começar. `hardhat-etherscan` verificará automaticamente o código-fonte do contrato inteligente e da ABI no Etherscan. Para adicionar isso, no diretório `hello-world` rode:
+
+```text
+npm install --save-dev @nomiclabs/hardhat-etherscan
+```
+
+Uma vez instalado, inclua o seguinte comando no topo do seu `hardhat.config.js`, e adicione as opções de configuração Etherscan:
+
+```javascript
+// hardhat.config.js
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+require("@nomiclabs/hardhat-etherscan")
+
+const { API_URL, PRIVATE_KEY, ETHERSCAN_API_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+ etherscan: {
+ // Your API key for Etherscan
+ // Obtain one at https://etherscan.io/
+ apiKey: ETHERSCAN_API_KEY,
+ },
+}
+```
+
+#### Verifique seu contrato inteligente no Etherscan {#verify-your-smart-contract-on-etherscan}
+
+Certifique-se que todos os arquivos foram salvos e todas as variáveis `.env` estão corretamente configuradas.
+
+Rode a tarefa `verify`, passando o endereço do contrato, e a rede onde ele foi implantado:
+
+```text
+npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS 'Hello World!'
+```
+
+Certifique-se que `DEPLOYED_CONTRACT_ADDRESS` é o endereço do seu contrato inteligente implantado na rede de teste Goerli. Além disso, o argumento final (`'Hello World!'`) tem de ser o mesmo valor de string usado [durante o passo de implantação na parte 1](#write-our-deploy-script).
+
+Se tudo der certo, você verá a seguinte mensagem no seu terminal:
+
+```text
+Successfully submitted source code for contract
+contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address
+for verification on Etherscan. Waiting for verification result...
+
+
+Successfully verified contract HelloWorld on Etherscan.
+https://goerli.etherscan.io/address/#contracts
+```
+
+Parabéns! O código do seu contrato inteligente está no Etherscan!
+
+### Cheque seu contrato inteligente no Etherscan! {#check-out-your-smart-contract-on-etherscan}
+
+Quando você navegar para o link fornecido no seu terminal, você deve ser capaz de ver o código do seu contrato inteligente e ABI publicados no Etherscan!
+
+**Parabéns, você conseguiu, campeão! Agora qualquer um pode chamar ou escrever no seu contrato inteligente! Nós mal conseguimos esperar o que você vai construir em seguida!**
+
+## Parte 4 - Integrando seu contrato inteligente com o front-end {#part-4-integrating-your-smart-contract-with-the-frontend}
+
+No fim deste tutorial você saberá como:
+
+- Conectar uma carteira MetaMask no seu dapp
+- Ler dados do seu contrato inteligente usando a API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
+- Assinar transações Ethereum usando MetaMask
+
+Para este dapp, estaremos usando [React](https://reactjs.org/) como nosso framework de front-end; entretanto, é importante notar que nós não gastaremos muito tempo explicando seus fundamentos, já que estaremos principalmente focados em trazer funcionalidade Web3 para o nosso projeto.
+
+Como um pré-requisito, você deve ter um nível iniciante de entendimento de React. Caso contrário, recomendamos concluir o tutorial oficial [Introdução ao React](https://reactjs.org/tutorial/tutorial.html).
+
+### Clonar os arquivos iniciais {#clone-the-starter-files}
+
+Primeiro, vá até o [repositório GitHub hello-world-part-four](https://github.com/alchemyplatform/hello-world-part-four-tutorial) para obter os arquivos iniciais para esse projeto e clone o repositório no seu computador local.
+
+Abra o repositório clonado localmente. Note que ele contém duas pastas: `starter-files` e `completed`.
+
+- `starter-files`- **nós trabalharemos neste diretório**, nós conectaremos a UI à nossa carteira Ethereum e o contrato inteligente que nós publicamos no Etherscan na [Parte 3](#part-3).
+- `completed` contém o tutorial inteiro completado e deve ser somente usado como referência se você estiver empacado.
+
+Em seguida, abra sua cópia de `starter-files` no seu editor de código favorito, e então navegue na pasta `src`.
+
+Todo o código que vamos escrever será exibido na pasta `src`. Nós estaremos editando o componente `HelloWorld.js` e os arquivos JavaScript `util/interact.js` para dar ao seu projeto funcionalidade Web3.
+
+### Cheque os arquivos iniciais {#check-out-the-starter-files}
+
+Antes de começar a codificar, vamos explorar o que nos é fornecido nos arquivos iniciais.
+
+#### Tenha seu projeto React em execução {#get-your-react-project-running}
+
+Vamos começar executando o projeto React em nosso navegador. A beleza do React é que uma vez que nosso projeto esteja sendo executado no nosso navegador, qualquer alteração que salvarmos será atualizada ao vivo em nosso navegador.
+
+Para fazer com que o projeto funcione, navegue até o diretório raiz da pasta `starter-files`, e execute`npm install` no seu terminal para instalar as dependências do projeto:
+
+```bash
+cd starter-files
+npm install
+```
+
+Uma vez terminada a instalação, execute `npm start` em seu terminal:
+
+```bash
+npm start
+```
+
+Ao fazê-lo, deve abrir [http://localhost:3000/](http://localhost:3000/) no seu navegador, onde você verá o front-end do nosso projeto. Ele deve consistir em um campo \ (um lugar para atualizar a mensagem armazenada no seu contrato inteligente\), um botão “Conectar Carteira”, e um botão “Atualizar”.
+
+Se você tentar clicar em qualquer dos botões você notará que eles não funcionam — isso porque ainda precisamos programar a funcionalidade deles.
+
+#### O componente `HelloWorld.js` {#the-helloworld-js-component}
+
+Vamos voltar à pasta `src` no nosso editor e abrir o arquivo `HelloWorld.js`. É muito importante que entendamos tudo neste arquivo, pois é o principal componente do React no qual vamos trabalhar.
+
+No começo deste arquivo você irá notar que nós temos diversas declarações importantes que são necessárias para termos nosso projeto rodando, incluindo a biblioteca React, os hooks useEffect e UseState, alguns itens do `./util/interact.js` (nós os descreveremos em mais detalhes em breve!), e o logo Alchemy.
+
+```javascript
+// HelloWorld.js
+
+import React from "react"
+import { useEffect, useState } from "react"
+import {
+ helloWorldContract,
+ connectWallet,
+ updateMessage,
+ loadCurrentMessage,
+ getCurrentWalletConnected,
+} from "./util/interact.js"
+
+import alchemylogo from "./alchemylogo.svg"
+```
+
+Em seguida, temos nossas variáveis de estado que serão atualizadas após eventos específicos.
+
+```javascript
+// HelloWorld.js
+
+//State variables
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [message, setMessage] = useState("No connection to the network.")
+const [newMessage, setNewMessage] = useState("")
+```
+
+Veja aqui o que cada uma das variáveis representa:
+
+- `walletAddress` - uma string que armazena o endereço da carteira do usuário
+- `status` uma string que armazena uma mensagem útil que guia o usuário em como interagir com o dapp
+- `message` - uma string que armazena a mensagem atual no contrato inteligente
+- `newMessage` -uma string que armazena a nova mensagem que será escrita no contrato inteligente
+
+Depois das variáveis de estado, você verá cinco funções não implementadas: `useEffect` ,`addSmartContractListener`, `addWalletListener` , `connectWalletPressed`, e `onUpdatePressed`. Nós explicaremos o que elas fazem abaixo:
+
+```javascript
+// HelloWorld.js
+
+//called only once
+useEffect(async () => {
+ //TODO: implement
+}, [])
+
+function addSmartContractListener() {
+ //TODO: implement
+}
+
+function addWalletListener() {
+ //TODO: implement
+}
+
+const connectWalletPressed = async () => {
+ //TODO: implement
+}
+
+const onUpdatePressed = async () => {
+ //TODO: implement
+}
+```
+
+- [`useEffect`](https://reactjs.org/docs/hooks-effect.html)- isto é um hook React hook que é chamado depois que o seu componente é renderizado. Por ele ter um array vazio `[]` prop passada por ele \(veja linha 4\), ele só será chamado na _primeira_ renderização do componente. Aqui nós vamos carregar a mensagem atual armazenada no nosso contrato inteligente, chamar nosso contrato inteligente e listeners da carteira, e atualizar nos UI para refletir se a carteira já está conectada.
+- `addSmartContractListener`- esta função configura um listener que irá aguardar o evento `UpdatedMessages` do nosso contrato HelloWorld e atualizar nossa UI quando a mensagem é alterada em nosso contrato inteligente.
+- `addWalletListener`- esta função configura um listener que detecta mudanças no estado da carteira MetaMask do usuário, como quando o usuário desconecta sua carteira ou muda endereços.
+- `connectWalletPressed`- esta função será chamada para conectar a carteira MetaMask do usuário no nosso dapp.
+- `onUpdatePressed` - essa função será chamada quando o usuário quiser atualizar a mensagem armazenada no contrato inteligente.
+
+Perto do final desse arquivo, temos a interface de usuário do nosso componente.
+
+```javascript
+// HelloWorld.js
+
+//the UI of our component
+return (
+
+)
+```
+
+Se você procurar com cuidado no código, você notará quando nós usamos nossas várias variáveis de estado na nossa UI:
+
+- Nas linhas 6 a 12, se a carteira do usuário estiver conectada \(ou seja. `walletAddress.length > 0`\), mostraremos uma versão truncada da `walletAddress` do usuário no botão com a ID "walletButton;", caso contrário, ele simplesmente dirá "Connect Wallet."
+- Na linha 17, nós mostramos a mensagem atual armazenada no contrato inteligente, que é capturada na string `message`.
+- Nas linhas 23-26, nós usamos um [componente controlado](https://reactjs.org/docs/forms.html#controlled-components) para atualizar nossa variável de estado `newMessage` quando a entrada no campo texto muda.
+
+Em adição às nossas variáveis de estado, você também verá que as funções `connectWalletPressed` e `onUpdatePressed` são chamadas quando os botões com IDs `publishButton` e `walletButton` são respectivamente clicados.
+
+Finalmente, vamos endereçar onde esse componente `HelloWorld.js` será adicionado.
+
+Se você for ao arquivo `App.js`, que é o componente principal do React, que atua como um contêiner para todos os outros componentes, você verá que o nosso componente `HelloWorld.js` é injetado na linha 7.
+
+Finalmente, mas não menos importante, vamos checar mais um arquivo fornecido para você, o arquivo `interact.js`.
+
+#### O arquivo `interact.js` {#the-interact-js-file}
+
+Como queremos respeitar o paradigma [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), queremos um arquivo separado que contém todas as nossas funções para gerenciar a lógica, dados e regras do nosso dapp, para então conseguirmos exportar essas funções para o nosso front-end \(nosso componente `HelloWorld.js` component\).
+
+👆🏽Esta é a exata finalidade do nosso arquivo `interact.js`!
+
+Navegue para a pasta `util` no seu diretório `src`, e você notará que nós incluimos um arquivo chamado `interact.js` que irá conter todas as nossas interações com o contrato inteligente, funções de carteira, e variáveis.
+
+```javascript
+// interact.js
+
+//export const helloWorldContract;
+
+export const loadCurrentMessage = async () => {}
+
+export const connectWallet = async () => {}
+
+const getCurrentWalletConnected = async () => {}
+
+export const updateMessage = async (message) => {}
+```
+
+Você pode notar no topo do arquivo que nós transformamos o objeto `helloWorldContract` em um comentário. Mais tarde neste tutorial nós vamos descomentar este objeto e instanciar nosso contrato inteligente nesta variável, que irá então exportar no nosso componente `HelloWorld.js`.
+
+As quatro funções não implementadas depois do nosso objeto `helloWorldContract` fazem o seguinte:
+
+- `loadCurrentMessage`: esta função manipula a lógica de carregamento da mensagem atual armazenada no contrato inteligente. Ela fará uma chamada _read_ para o contrato inteligente Olá, Mundo usando a [API Web3 da Alchemy](https://github.com/alchemyplatform/alchemy-web3).
+- `connectWallet`: essa função conectará a MetaMask do usuário ao nosso dapp.
+- `getCurrentWalletConnected` - essa função irá checar se uma conta Ethereum já está conectada no nosso dapp no carregamento da página e atualização da nossa UI devidamente.
+- `updateMessage` - esta função atualizará a mensagem armazenada no contrato inteligente. Ela fará uma chamada _write_ para o contrato inteligente Hello World, para que a carteira do usuário MetaMask tenha que assinar uma transação Ethereum para atualizar a mensagem.
+
+Agora que você entende no que estamos trabalhando, vamos entender como ler do nosso contrato inteligente!
+
+### Passo 3: Leia do seu Contrato Inteligente {#step-3-read-from-your-smart-contract}
+
+Para ler do seu contrato inteligente, você irá precisar configurar com sucesso:
+
+- Uma conexão API com a cadeia Ethereum
+- Uma instância carregada para o seu contrato inteligente
+- Uma função para chamar para a sua função de contrato inteligente
+- Um ouvinte para observar as atualizações quando os dados de contrato inteligente que você está lendo mudem
+
+Isto pode parecer que são muitos passos, mas não se preocupe! Nós vamos acompanhá-lo como fazer cada um deles passo a passo! :\)
+
+#### Estabeleça uma conexão API com a cadeia Ethereum {#establish-an-api-connection-to-the-ethereum-chain}
+
+Você se lembra como na Parte 2 deste tutorial usamos a nossa chave [Alchemy Web3 para ler do nosso contrato inteligente](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library)? Você também irá precisar de uma chave Alchemy Web3 em seu dapp para ler da cadeia.
+
+Se você ainda não tem, primeiro instale [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando até o diretório raiz do seu `starter-files` e executando o seguinte em seu terminal:
+
+```text
+yarn add @alch/alchemy-web3
+```
+
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) é um invólucro em torno do [Web3.js](https://docs.web3js.org/), fornecendo métodos aprimorados da API e outros benefícios cruciais para tornar a sua vida de desenvolvedor da Web3 mais fácil. Ele foi projetado para exigir uma configuração mínima, para que você possa começar a usá-la no seu aplicativo imediatamente!
+
+Então, instale o pacote [dotenv](https://www.npmjs.com/package/dotenv) no seu diretório do projeto, para termos um lugar seguro para armazenar nossa chave API depois de pegarmos ela.
+
+```text
+npm install dotenv --save
+```
+
+Para o nosso dapp, **nós usaremos nossa chave API Websockets** ao invés de nossa chave API HTTP, já que nos garante configurar um listener que detecta quando a mensagem, armazenada no contrato inteligente, muda.
+
+Uma vez que você tem a chave API, crie um arquivo `.env` no seu diretório raiz e adicione sua url Alchemy Websockets a ele. Depois disso, seu arquivo `.env` deve se parecer com isso:
+
+```javascript
+REACT_APP_ALCHEMY_KEY = wss://eth-goerli.ws.alchemyapi.io/v2/
+```
+
+Agora estamos prontos para configurar nosso ponto de extremidade Web3 da Alchemy no nosso dapp! Vamos voltar para o nosso `interact.js`, que é aninhado dentro da nossa pasta `util` e adicionar o seguinte código no topo do arquivo:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+//export const helloWorldContract;
+```
+
+Acima, nós primeiro importamos a chave Alchemy do nosso arquivo `.env` e então passamos nosso `alchemyKey` para `createAlchemyWeb3` estabelecer nosso endpoint Alchemy Web3.
+
+Com este endpoint pronto, é hora de carregar nosso contrato inteligente!
+
+#### Carregando o seu contrato inteligente Hello World {#loading-your-hello-world-smart-contract}
+
+Para carregar o seu contrato inteligente Hello World, você precisará do seu endereço de contrato e ABI, ambos os quais podem ser encontrados no Etherscan se você completou a [Parte 3 deste tutorial.](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan)
+
+#### Como obter a ABI do seu contrato no Etherscan {#how-to-get-your-contract-abi-from-etherscan}
+
+Se você pulou a Parte 3 deste tutorial, você pode usar o contrato Olá, Mundo com o endereço [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code). Sua ABI pode ser encontrada [aqui](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code).
+
+A ABI de um contrato é necessária para especificar qual função um contrato irá invocar, assim como garantir que a função irá retornar dados no formato que você está esperando. Uma vez que nós copiamos nosso contrato ABI, vamos salvá-lo como um arquivo JSON chamado `contract-abi.json` no seu diretório `src`.
+
+O seu contract-abi.json deve ser armazenado na sua pasta src.
+
+Armados com nosso endereço de contrato, ABI, e endpoint Alchemy Web3, nós podemos usar o [método do contrato](https://docs.web3js.org/api/web3-eth-contract/class/Contract) para carregar uma instância do nosso contrato inteligente. Importe a ABI do seu contrato no arquivo `interact.js` e adicione o seu endereço de contrato.
+
+```javascript
+// interact.js
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+```
+
+Nós podemos agora finalmente descomentar nossa variável `helloWorldContract`, e carregar o contrato inteligente usando nosso endpoint AlchemyWeb3:
+
+```javascript
+// interact.js
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+Para recapitular, as primeiras 12 linhas do seu `interact.js` deve agora se parecer com isso:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+Agora que nós temos nosso contrato carregado, nós podemos implementar nossa função `loadCurrentMessage`!
+
+#### Implementando `loadCurrentMessage` no nosso arquivo `interact.js` {#implementing-loadCurrentMessage-in-your-interact-js-file}
+
+Esta função é super simples. Nós vamos fazer uma simples chamada async web3 para ler do nosso contrato. Nossa função irá retornar a mensagem armazenada no contrato inteligente:
+
+Atualize o `loadCurrentMessage` no seu arquivo `interact.js` para o seguinte:
+
+```javascript
+// interact.js
+
+export const loadCurrentMessage = async () => {
+ const message = await helloWorldContract.methods.message().call()
+ return message
+}
+```
+
+Já que nós queremos exibir este contrato inteligente na nossa UI, vamos atualizar a função `useEffect` no nosso componente `HelloWorld.js` com o seguinte:
+
+```javascript
+// HelloWorld.js
+
+//called only once
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+}, [])
+```
+
+Note que nós somente queremos nosso `loadCurrentMessage` ser chamado uma vez durante a primeira renderização do componente. Logo implementaremos `addSmartContractListener` para atualizar automaticamente a interface do usuário depois que a mensagem no contrato inteligente mudar.
+
+Antes que nós mergulhemos no nosso listener, vamos checar o que nós temos até aqui! Salve seus arquivos `HelloWorld.js` e `interact.js`, e então vá para [http://localhost:3000/](http://localhost:3000/)
+
+Você notará que a mensagem atual não diz mais "No connection to the network." Ao invés disso, ela reflete a mensagem armazenada no contrato inteligente. Ótimo!
+
+#### Sua UI poderia agora refletir a mensagem armazenada no contrato inteligente {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract}
+
+Agora falando daquele listener...
+
+#### Implementar `addSmartContractListener` {#implement-addsmartcontractlistener}
+
+Se você voltar para pensar no arquivo `HelloWorld.sol` que escrevemos na [Parte 1 desta série de tutoriais](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract), você se lembrará que há um evento de contrato inteligente chamado `UpdatedMessages` que é emitido depois da função `update` do nosso contrato inteligente ser invocada \(ver linhas 9 e 27\):
+
+```javascript
+// HelloWorld.sol
+
+// Specifies the version of Solidity, using semantic versioning.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.7.3;
+
+// Defines a contract named `HelloWorld`.
+// Um contrato é uma coleção de funções e dados (seu estado). Uma vez implantado, um contrato reside em um endereço específico na blockchain Ethereum. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ //Emitted when update function is called
+ //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // Declares a state variable `message` of type `string`.
+ // Variáveis de estado são variáveis cujos valores são permanentemente armazenados no armazenamento do contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Os construtores são usados para inicializar os dados do contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+Eventos de contratos inteligentes são uma maneira do seu contrato comunicar que alguma coisa aconteceu \(ou seja, houve um _event_\) na blockchain no seu aplicativo de front-end, que pode “escutar” eventos específicos e tomar uma ação quando eles acontecem.
+
+A função `addSmartContractListener` escutará especificamente o evento `UpdatedMessages` do nosso contrato inteligente Olá, Mundo e atualizar nossa interface do usuário para mostrar a nova mensagem.
+
+Modifique `addSmartContractListener` da seguinte maneira:
+
+```javascript
+// HelloWorld.js
+
+function addSmartContractListener() {
+ helloWorldContract.events.UpdatedMessages({}, (error, data) => {
+ if (error) {
+ setStatus("😥 " + error.message)
+ } else {
+ setMessage(data.returnValues[1])
+ setNewMessage("")
+ setStatus("🎉 Your message has been updated!")
+ }
+ })
+}
+```
+
+Vamos quebrar em partes o que acontece quando o listener detecta um evento:
+
+- Se um erro ocorre quando o evento é emitido, ele será refletido na UI via nossa variável de estado `status`.
+- Caso contrário, nós usaremos o objeto `data` retornado. O `data.returnValues` é uma array indexada no zero onde o primeiro elemento da array armazena a mensagem anterior e o segundo elemento armazena o atualizado. Ao todo, em um evento bem-sucedido, iremos configurar nossa cadeia de caracteres `message` com a mensagem atualizada, limpar a cadeia de caracteres `newMessage` e atualizar nossa variável de estado `status` para refletir que uma nova mensagem foi publicada no nosso contrato inteligente.
+
+Finalmente, vamos chamar nosso listener em nossa função `useEffect` para que seja inicializada na primeira renderização do componente `HelloWorld.js`. Tudo junto, sua função `useEffect` deve se parecer com:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+}, [])
+```
+
+Agora que nós somos capazes de ler do nosso contrato inteligente, seria ótimo descobrir como escrever nele também! Entretanto, para escrever no nosso dapp, nós precisamos primeiro uma carteira Ethereum conectada nele.
+
+Então, em seguida vamos configurar nossa carteira Ethereum \(MetaMask\) e então conectá-la ao nosso dapp!
+
+### Passo 4: Configurar sua carteira Ethereum {#step-4-set-up-your-ethereum-wallet}
+
+Para escrever qualquer coisa na cadeia Ethereum, usuários devem assinar transações usando as chaves privadas das suas carteiras virtuais. Para este tutorial, usaremos o [MetaMask](https://metamask.io/), uma carteira virtual no navegador usada para gerenciar o seu endereço de conta do Ethereum, pois ele torna esta assinatura de transação superfácil para o usuário final.
+
+Se você quiser entender mais sobre como as transações no Ethereum funcionam, confira [esta página](/developers/docs/transactions/) na Fundação Ethereum.
+
+#### Baixar MetaMask {#download-metamask}
+
+Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Ao criar uma conta, ou mesmo se você já tiver uma conta, certifique-se de mudar para "Goerli Test Network” na parte superior direita \(para não lidarmos com dinheiro real\).
+
+#### Etapa: Adicionar Faucet ether {#add-ether-from-a-faucet}
+
+Para assinar a transação no blockchain Ethereum, nós precisamos de alguns Eth falsos. Para obter Eth você pode ir em[FaucETH](https://fauceth.komputing.org) e entrar seu endereço de conta Goerli, clicar em “Request funds”, e então selecionar “Ethereum Testnet Goerli” no menu, e finalmente clicar no botão "Request funds" novamente. Em seguida, você deve ver Eth em sua conta Metamask!
+
+#### Cheque seu Saldo {#check-your-balance}
+
+Para verificar novamente que tem saldo, vamos fazer uma solicitação através da ferramenta [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) fornecida pelo [compositor da Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Ela mostrará a quantidade de Eth na sua carteira. Depois de inserir o endereço da sua conta da MetaMask e clicar em "Send Request", você verá uma resposta como esta:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**NOTA:** Este resultado está em wei, não em ETH. Lembre-se de que "Wei" é a menor unidade de ether. A conversão de wei para eth é: 1 eth = 10¹⁸ wei. Então, se convertemos 0xde0b6b3a7640000 para decimal, temos 1\*10¹⁸ wei, que é igual a 1 eth.
+
+Ufa! Nosso dinheiro falso está todo lá! 🤑
+
+### Passo 5: Conecte o MetaMask na sua UI {#step-5-connect-metamask-to-your-UI}
+
+Agora que nossa carteira MetaMask está configurada, vamos conectar nosso dapp a ela!
+
+#### Função `connectWallet` {#the-connectWallet-function}
+
+No nosso arquivo `interact.js`, vamos implementar a função `connectWallet`, a qual podemos então chamar no nosso componente `HelloWorld.js`.
+
+Vamos modificar `connectWallet` para o seguinte:
+
+```javascript
+// interact.js
+
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Então, o que esse bloco gigante de código faz exatamente?
+
+Bem, primeiro, ele checar se a `window.ethereum` está habilitada no seu navegador.
+
+`window.ethereum` é uma API global injetada pela MetaMask e outros provedores de carteira que permitem que sites solicitem contas Ethereum dos usuários. Se aprovado, ele pode ler dados dos blockchains que o usuário está conectado, e sugerir que o usuário assine mensagens e transações. Confira a [documentação da MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obter mais informações!
+
+Se `window.ethereum` _não está_ presente, então isso significa que o MetaMask não está instalado. Isso resulta em um objeto JSON sendo retornado, onde o `endereço` retornado é uma string vazia, e o `status` do objeto JSX repassa que o usuário deve instalar o MetaMask.
+
+Agora se `window.ethereum` _estiver_ presente, e é aí que as coisas ficam interessantes.
+
+Usando um laço try/catch, nós vamos tentar conectar ao MetaMask chamando[`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). Chamando esta função o MetaMask irá abrir no navegador, onde o usuário será solicitado a conectar sua carteira ao seu dapp.
+
+- Se o usuário escolher conectar, `method: "eth_requestAccounts"` irá retornar uma array que contém todos os endereços de contas de usuário que conectaram ao dapp. No total, nossa função `connectWallet` retornará um objeto JSON que contém o _primeiro_ `address` desta matriz \(ver linha 9\) e uma mensagem `status` que pede que o usuário escreva uma mensagem para o contrato inteligente.
+- Se o usuário rejeitar a conexão, então o objeto JSON vai conter uma string vazia para o `address` retornado e uma mensagem de `status` que reflete que o usuário rejeitou a conexão.
+
+Agora que nós escrevemos esta função `connectWallet`, o próximo passo é chamar ele para o nosso componente `HelloWorld.js`.
+
+#### Adicione a função `connectWallet` ao seu componente de interface do usuário `HelloWorld.js` {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component}
+
+Navegue para a função `connectWalletPressed` em `HelloWorld.js`, e atualize-o para o seguinte:
+
+```javascript
+// HelloWorld.js
+
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+Observe como a maior parte das nossas funcionalidades está abstraída do nosso componente `HelloWorld.js` do arquivo `interact.js`? É assim que respeitamos o paradigma M-V-C!
+
+Em `connectWalletPressed`, simplesmente fazemos uma chamada de espera (await) para a função `connectWallet`, importada, e usando sua resposta, nós atualizaremos nossas variáveis `status` e `walletAddress` através de seus state hooks.
+
+Agora, vamos salvar os dois arquivos `HelloWorld.js` e `interact.js` e testar nossa UI até agora.
+
+Abra seu navegador na página [http://localhost:3000/](http://localhost:3000/) e clique no botão “Connect Wallet” na parte superior direita da página.
+
+Se você tiver o MetaMask instalado, você será solicitado a conectar sua carteira ao seu dapp. Aceite o convite para se conectar.
+
+Observe que o botão de carteira agora mostra que o seu endereço está conectado! Ótimo!!🔥
+
+Em seguida, tente atualizar a página... isso é estranho. Nosso botão de carteira está nos pedindo para conectar o MetaMask, mesmo que já esteja conectado...
+
+Entretanto, não tenha medo! Nós podemos endereçar (entendeu?) facilmente isso implementando `getCurrentWalletConnected`, o qual irá checar se um endereço já está conectado no nosso dapp e atualizar nossa UI de acordo!
+
+#### A função `getCurrentWalletConnected` {#the-getcurrentwalletconnected-function}
+
+Atualize a sua função `getCurrentWalletConnected` no arquivo `interact.js` como mostrado abaixo:
+
+```javascript
+// interact.js
+
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Este código é _muito_ similar à função `connectWallet` que nós acabamos de escrever no passo anterior.
+
+A diferença principal é que, em vez de chamar o método `eth_requestAccounts`, que abre o MetaMask para o usuário conectar sua carteira, aqui chamamos o método `eth_accounts`, que simplesmente retorna uma matriz que contém os endereços MetaMask atualmente conectados ao nosso dapp.
+
+Para ver esta função em ação, vamos chamar nossa função `useEffect` do nosso componente `HelloWorld.js`:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+Note que nós usamos a resposta da nossa chamada a `getCurrentWalletConnected` para atualizar nossa `walletAddress` e nossa variável de estado `status`.
+
+Agora que você adicionou este código, tente atualizar a janela do navegador.
+
+Ótimo!!!! O botão deve dizer que você está conectado e mostrar uma visualização do endereço de sua carteira conectada - mesmo depois de atualizar!
+
+#### Implemente `addWalletListener` {#implement-addwalletlistener}
+
+O passo final na configuração da nossa carteira dapp é implementar o ouvinte de carteira, para que nossa interface atualize quando o estado mudar, como quando o usuário desconecta ou troca de contas.
+
+No seu arquivo `HelloWorld.js`, modifique a sua função `addWalletListener` para o seguinte:
+
+```javascript
+// HelloWorld.js
+
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ )
+ }
+}
+```
+
+Eu aposto que você nem mesmo precisou da nossa ajuda para entender o que está acontecendo aqui neste ponto, mas por finalidade de clareza, vamos quebrá-lo em partes:
+
+- Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador \(ex. MetaMask instalado\).
+ - Caso contrário, nós simplesmente configuramos a variável de estado `status` para uma JSX string que solicita o usuário instalar a MetaMask.
+ - Se estiver habilitado, configuramos o ouvinte `window.ethereum.on("accountsChanged")` na linha 3 que houve mudança de estado na carteira MetaMask, inclusive quando o usuário conecta uma conta adicional ao dapp, troca de conta ou desconecta uma conta. Se houver pelo menos uma conta conectada, a variável de estado `walletAddress` é atualizada como a primeira conta no array `accounts` retornada pelo ouvinte. Caso contrário, `walletAddress` é definida como uma string vazia.
+
+Por último, mas não menos importante, nós devemos chamá-la em nossa função `useEffect`:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+E é isso! Concluímos com sucesso a programação de toda a nossa carteira! Agora, a nossa última tarefa: atualizar a mensagem armazenada no nosso contrato inteligente!
+
+### Passo 6: Implemente a função `updateMessage` {#step-6-implement-the-updateMessage-function}
+
+Tudo bem, nós chegamos ao trecho caseiro! No `updateMessage` do seu arquivo `interact.js`, façamos o seguinte:
+
+1. Certifique-se que a mensagem que nós queremos publicar no nosso contrato inteligente é válida
+2. Assine nossa transação usando MetaMask
+3. Chame esta função do nosso componente de frontend `HelloWorld.js`
+
+Isso não vai demorar muito; vamos terminar este dapp!
+
+#### Manipulação de erros de script {#input-error-handling}
+
+Naturalmente, faz sentido ter alguns tipos de gerencialmente de erros de entrada no início da função.
+
+Queremos que nossa função retorne rapidamente. Se não houver uma extensão MetaMask instalada, não haverá carteiras conectadas \(ou seja, o `address` transmitido é uma cadeira de caracteres vazia\) ou a `message` será uma cadeira de caracteres vazia. Vamos adicionar o seguinte gerencialmente de erro em `updateMessage`:
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+}
+```
+
+Agora que ele tem o devido gerenciamento de erro de entrada, é hora de assinar a transação via MetaMask!
+
+#### Assinando a nossa transação {#signing-our-transaction}
+
+Se você já está confortável com as transações tradicionais Web3 do Ethereum, o código que vamos escrever em seguida será bastante familiar. Abaixo, nosso código de manipulação de erro de entrada, adicione o seguinte a `updateMessage`:
+
+```javascript
+// interact.js
+
+//set up transaction parameters
+const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: address, // must match user's active address.
+ data: helloWorldContract.methods.update(message).encodeABI(),
+}
+
+//sign the transaction
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will be
+ updated automatically.
+
+ ),
+ }
+} catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+}
+```
+
+Vamos quebrar em partes o que está acontecendo. Primeiro, configuramos nossos parâmetros de transações, em que:
+
+- `to` especificar o endereço do destinatário \(nosso contrato inteligente\)
+- `from` especifica o signatário da transação, a variável `address` que transmitimos para a nossa função
+- `data` contém a chamada para o método `update` do nosso contrato inteligente Olá, Mundo, recebendo nossa variável de cadeia de caracteres `message` como entrada
+
+Então, nós fazemos uma chamada await, `window.ethereum.request`, onde nós pedimos ao MetaMask para assinar a transação. Observe que nas linhas 11 e 12, estamos especificando nosso método eth `eth_sendTransaction` e passando os nossos `transactionParameters`.
+
+Neste ponto, a MetaMask irá abrir no navegador e pedirá que o usuário assine ou rejeite a transação.
+
+- Se a transação tiver sucesso, a função retornará um objeto JSON no qual a cadeia de caracteres JSX `status` pede ao usuário para verificar o Etherscan para mais informações sobre suas transações.
+- Se a transação falha, a função irá retornar um objeto JSON onde a string `status` retransmite a mensagem de erro.
+
+Tudo junto, nossa função `updateMessage` deve se parecer com isso:
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ //input error handling
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+
+ //set up transaction parameters
+ const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: address, // must match user's active address.
+ data: helloWorldContract.methods.update(message).encodeABI(),
+ }
+
+ //sign the transaction
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will
+ be updated automatically.
+
+ ),
+ }
+ } catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+ }
+}
+```
+
+Por último, mas não menos importante, nós precisamos conectar nossa função `updateMessage` ao componente `HelloWorld.js`.
+
+#### Conecte `updateMessage` ao front-end `HelloWorld.js` {#connect-updatemessage-to-the-helloworld-js-frontend}
+
+Nossa função `onUpdatePressed` deve fazer uma chamada await para a função `updateMessage` importada e modificar a variável de estado `status` para refletir se a nossa transação teve sucesso ou falhou:
+
+```javascript
+// HelloWorld.js
+
+const onUpdatePressed = async () => {
+ const { status } = await updateMessage(walletAddress, newMessage)
+ setStatus(status)
+}
+```
+
+É super limpo e simples. E advinhe... SEU DAPP ESTÁ COMPLETO!!!
+
+Vá em frente e teste com o botão **Update**!
+
+### Faça o seu próprio dapp customizado {#make-your-own-custom-dapp}
+
+Ebaaaaa, você chegou até o fim deste tutorial! Para recapitular, você aprendeu como:
+
+- Conectar a carteira MetaMask no seu projeto dapp
+- Ler dados do seu contrato inteligente usando a API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
+- Assinar transações Ethereum usando MetaMask
+
+Agora você está totalmente equipado para aplicar suas habilidades deste tutorial para construir seu próprio projeto dapp customizado! Como sempre, se você tiver questões, não hesite em nos contatar para pedir ajuda no[Discord da Alchemy](https://discord.gg/gWuC7zB). 🧙♂️
+
+Uma vez que você terminou este tutorial, nos diga como foi sua experiência ou se você tem alguma opinião, nos marcando no Twitter [@alchemyplatform](https://twitter.com/AlchemyPlatform)!
diff --git a/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract/index.md
index 04864b12d21..2db6baca805 100644
--- a/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/hello-world-smart-contract/index.md
@@ -7,16 +7,23 @@ tags:
- "hardhat"
- "alchemy"
- "contratos inteligentes"
- - "primeiros passos"
- "implementação"
skill: beginner
lang: pt-br
published: 2021-03-31
---
-Se você é novo no desenvolvimento de blockchain e não sabe por onde começar, ou se apenas deseja entender como implementar ou interagir com contratos inteligentes, este guia é para você. Mostraremos a você como criar e implementar um simples contrato inteligente na rede de testes Ropsten usando uma carteira virtual ([MetaMask](https://metamask.io/)), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) e [Alchemy](https://alchemyapi.io/eth). Não se preocupe caso não entenda ainda o que tudo isso significa. Vamos explicar).
+Se você é novo no desenvolvimento de blockchain e não sabe por onde começar, ou se apenas deseja entender como implementar ou interagir com contratos inteligentes, este guia é para você. Vamos criar e implantar um contrato inteligente simples na rede de teste Goerli usando uma carteira virtual [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) e [Alchemy](https://alchemyapi.io/eth) (não se preocupe se você ainda não entendeu o que isso significa, nós explicaremos).
-Na segunda parte deste tutorial, analisaremos como podemos interagir com nosso contrato inteligente uma vez que ele esteja implementado e, já na terceira parte, abordaremos como publicá-lo no Etherscan.
+> **Atenção**
+>
+> Aviso de descontinuidade
+>
+> Para este guia inteiro, a rede de teste Goerli está sendo usada para criação e implantação de contratos inteligentes. Entretanto, por favor note que a Ethereum Foundation anunciou que a [Goerli será descontinuada em breve](https://www.alchemy.com/blog/goerli-faucet-deprecation).
+>
+> Nós recomendamos você usar a [Sepolia](https://www.alchemy.com/overviews/sepolia-testnet) e [faucets Sepolia](https://sepoliafaucet.com/) para este tutorial.
+
+Na [parte 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract) deste tutorial, veremos como podemos interagir com nosso contrato inteligente, assim que for implantado aqui, e na [parte 3](https://docs.alchemy.com/docs/submitted-your-smart-contract-to-etherscan), abordaremos como publicá-lo no Etherscan.
Caso surjam perguntas em qualquer momento, sinta-se à vontade para falar no Discord da [Alchemy](https://discord.gg/gWuC7zB)!
@@ -26,29 +33,29 @@ Existem muitas maneiras de fazer solicitações à cadeia de Ethereum. Por simpl
## Passo 2: Crie seu aplicativo (e chave de API) {#step-2}
-Assim que você criar uma conta na Alchemy, você pode gerar uma chave de API criando um app. Isso nos permitirá fazer solicitações à rede de testes Ropsten. Se não estiver familiarizado com as redes de teste, confira [esta página](/developers/docs/networks/).
+Assim que você criar uma conta na Alchemy, você pode gerar uma chave de API criando um app. Isso nos permitirá fazer solicitações na rede de teste Goerli. Se não estiver familiarizado com as redes de teste, confira [esta página](/developers/docs/networks/).
-1. Vá até a página "Create App" no painel da Alchemy, passe o mouse sobre a palavra "Apps" na barra de navegação e clique em "Create App"
+1. Navegue até a pagina "Create App" na sua "Dashboard da Alchemy", indo na aba de "Apps" na barra de navegação e clicando em “Create App”
![Criar um aplicativo Hello World](./hello-world-create-app.png)
-2. Nomeie seu aplicativo "Hello World", ofereça uma breve descrição, selecione "Staging" para o ambiente (usado para a contabilidade de seu app) e escolha "Ropsten" para sua rede.
+2. Nomeie seu aplicativo “Hello World”, ofereça uma breve descrição, selecione “Staging” para o ambiente (usado para seu aplicativo de contabilidade) e escolha “Goerli” para sua rede.
![criar uma visualização do app hello world](./create-app-view-hello-world.png)
-3. Clique em "Create App", e é isso e tudo! Seu app deveria aparecer na tabela abaixo.
+3. Clique em "Criar app" e pronto! Seu app deve aparecer na tabela abaixo.
## Passo 3: Crie uma conta (endereço) de Ethereum {#step-3}
Precisamos de uma conta de Ethereum para enviar e receber transações. Para este tutorial, usaremos uma carteira virtual no navegador, a MetaMask, para gerenciar o endereço da sua conta Ethereum. Mais sobre [transações](/developers/docs/transactions/).
-Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando estiver criando uma conta, ou se já tiver uma, certifique-se de mudar para a "Ropsten Test Network", no canto superior direito (para não precisar lidar com dinheiro de verdade).
+Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando você estiver criando uma conta, ou se já tiver uma conta, certifique-se de mudar para a “Rede de teste Goerli”, no canto superior direito (para que não estejamos lidando com dinheiro real).
![exemplo metamask ropsten](./metamask-ropsten-example.png)
## Passo 4: Adicione ether de um faucet {#step-4}
-Para implementar nosso contrato inteligente na rede de teste, precisaremos de alguns ETHs de imitação. Para obter ETH você pode ir para o [faucet da Ropsten](https://faucet.dimensions.network/), inserir seu endereço de conta Ropsten e clicar em "Send Ropsten ETH". Devido ao tráfego de rede, pode levar algum tempo até receber o seu ETH de imitação. Você deveria ver o ETH na sua conta MetaMask logo depois!
+Para implantar nosso contrato inteligente na rede de teste, precisaremos de algum Eth falso. Para obter Eth, você pode acessar a [torneira Goerli](https://goerlifaucet.com/), fazer login na sua conta Alchemy, inserir o endereço da carteira e clicar em "Send Me Eth." Pode levar algum tempo para receber seu Eth falso devido ao tráfego de rede. (Enquanto escrevia isto, levou cerca de 30 minutos) Você deve ver Eth em sua conta Metamask logo depois!
## Passo 5: Verifique seu saldo {#step-5}
@@ -58,8 +65,8 @@ Para verificar novamente que temos saldo, vamos fazer uma solicitação através
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```
-> **OBSERVAÇÃO:** este resultado é em wei não em ETH. Lembre-se de que o wei é a menor unidade do ether. A conversão de wei para ETH é 1 ETH = 1018 wei. Desta maneira, se convertermos 0x2B5E3AF16B1880000 em decimal obteremos 5\*10¹⁸, o que equivale a 5 ETH.
->
+> **OBSERVAÇÃO:** este resultado é em wei não em ETH. Lembre-se de que "Wei" é a menor unidade de ether. A conversão de wei para ETH é 1 ETH = 1018 wei. Desta maneira, se convertermos 0x2B5E3AF16B1880000 em decimal obteremos 5\*10¹⁸, o que equivale a 5 ETH.
+>
> Ufa! Nosso dinheiro de imitação está todo aí .
## Passo 6: Inicialize nosso projeto {#step-6}
@@ -106,9 +113,9 @@ About to write to /Users/.../.../.../hello-world/package.json:
Aprove o package.json e estaremos prontos para começar!
-## Passo 7: Baixe o [Hardhat](https://hardhat.org/getting-started/#overview){#step-7}
+## Etapa 7: Faça o download do [Hardhat](https://hardhat.org/getting-started/#overview) {#step-7}
-Hardhat é um ambiente de desenvolvimento para compilar, implementar, testar e depurar seu software de Ethereum. Ele ajuda os desenvolvedores na criação de contratos inteligentes e dApps localmente antes de serem implementados na cadeia online.
+Hardhat é um ambiente de desenvolvimento para compilar, implementar, testar e depurar seu software de Ethereum. Ele ajuda os desenvolvedores na criação de contratos inteligentes e dapps localmente antes de implantar na cadeia real.
Dentro de nosso projeto `hello-world` execute:
@@ -199,9 +206,9 @@ contract HelloWorld {
Este é um contrato inteligente muito simples, que armazena uma mensagem ao ser criado e pode ser atualizado através da função `update`.
-## Passo 11: Vincule MetaMask e Alchemy a seu projeto {#step-11}
+## Passo 11: Vincule Metamask e Alchemy a seu projeto {#step-11}
-Nós já criamos uma carteira MetaMask, uma conta Alchemy e já escrevemos nosso contrato inteligente. Agora é hora de vincularmos os três.
+Nós já criamos uma carteira Metamask, uma conta Alchemy e já escrevemos nosso contrato inteligente. Agora é hora de vincularmos os três.
Toda transação enviada da sua carteira virtual requer uma assinatura, usando sua chave privada única. Para fornecer essa permissão ao nosso programa, nós podemos armazenar com segurança nossa chave privada (e a chave Alchemy API) em um arquivo de ambiente.
@@ -213,7 +220,7 @@ Primeiro, instale o pacote dotenv na pasta do seu projeto:
npm install dotenv --save
```
-Depois, crie um arquivo `.env` no diretório raiz do seu projeto e adicione sua chave MetaMask privada e o URL da API HTTP Alchemy nele.
+Depois, crie um arquivo `.env` no diretório raiz do seu projeto e adicione sua chave Metamask privada e o URL da API HTTP Alchemy nele.
- Siga [estas instruções](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar sua chave privada
- Veja abaixo como obter o URL da API HTTP Alchemy
@@ -225,14 +232,14 @@ Copiar o URL da Alchemy API
Seu arquivo `.env` ficará assim:
```
-API_URL = "https://eth-ropsten.alchemyapi.io/v2/your-api-key"
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
PRIVATE_KEY = "your-metamask-private-key"
```
Para realmente vinculá-los a nosso código, vamos fazer referência a essas variáveis em nosso arquivo `hardhat.config.js` no passo 13.
-Don't commit .env! Please make sure never to share or expose your .env file with anyone, as you are compromising your secrets in doing so. If you are using version control, add your .env to a gitignore file.
+No faça commit do .env! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env ao arquivo gitignore
## Passo 12: Instale o Ethers.js {#step-12-install-ethersjs}
@@ -266,10 +273,10 @@ const { API_URL, PRIVATE_KEY } = process.env;
*/
module.exports = {
solidity: "0.7.3",
- defaultNetwork: "ropsten",
+ defaultNetwork: "goerli",
networks: {
hardhat: {},
- ropsten: {
+ goerli: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
}
@@ -330,7 +337,7 @@ Ao chamar `deploy()` em uma `ContractFactory`, a implantação se iniciará e re
Finalmente estamos prontos para implantar o nosso contrato inteligente! Navegue até a linha de comando e digite:
```
-npx hardhat run scripts/deploy.js --network ropsten
+npx hardhat run scripts/deploy.js --network goerli
```
Você deverá ver algo assim:
@@ -339,11 +346,11 @@ Você deverá ver algo assim:
Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```
-Se formos para a [etherscan Ropsten](https://ropsten.etherscan.io/) e procurarmos o endereço de nosso contrato, poderemos ver se ele foi implantado com sucesso. A transação ficará parecida com isto:
+Se formos ao [etherscan da Goerli](https://goerli.etherscan.io/) e procurarmos nosso endereço de contrato, devemos ser capazes de ver que ele foi implantado com sucesso. A transação ficará parecida com isto:
![contrato etherscan](./etherscan-contract.png)
-O endereço `From` deve corresponder ao endereço da sua conta MetaMask, e o endereço "Para" vai dizer "Criação de contrato", mas se clicarmos na transação veremos o endereço do nosso contrato no campo `To`:
+O endereço `From` deve corresponder ao endereço da sua conta Metamask, e o endereço "Para" vai dizer "Criação de contrato", mas se clicarmos na transação veremos o endereço do nosso contrato no campo `To`:
![transação etherscan](./etherscan-transaction.png)
@@ -351,7 +358,7 @@ Parabéns! Você acaba de implantar um contrato inteligente para a cadeia Ethere
Para entender o que está acontecendo nos bastidores, vamos navegar até a guia Explorer no [painel do Alchemy](https://dashboard.alchemyapi.io/explorer). Se você tem vários aplicativos Alchemy, certifique-se de filtrar por app e selecionar “Hello World”. ![explorador hello world](./hello-world-explorer.png)
-Aqui você verá um punhado de chamadas JSON-RPC que Hardhat/Ethers fizeram em segundo plano para nós quando chamamos a função `.deploy() `. Duas importantes chamadas aqui são a [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que é o pedido para realmente escrever nosso contrato inteligente na cadeia de Ropsten, e a [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que é um pedido para ler informações sobre nossa transação, dado o hash (um padrão típico ao enviar transações). Para saber mais sobre o envio de transações, confira este tutorial em [ sobre como enviar transações usando a Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
+Aqui você verá um punhado de chamadas JSON-RPC que Hardhat/Ethers fizeram em segundo plano para nós quando chamamos a função `.deploy() `. Duas importantes chamadas aqui são [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que é o pedido para escrever de fato nosso contrato na cadeia Goerli, e [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash) que é um pedido para ler informações sobre nossa transação dado o hash (um padrão típico em transações). Para saber mais sobre o envio de transações, confira este tutorial em [ sobre como enviar transações usando a Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
Isso é tudo para a parte 1 deste tutorial. Na parte 2, [interagiremos com nosso contrato inteligente](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#part-2-interact-with-your-smart-contract) atualizando nossa mensagem inicial e, na parte 3, [publicaremos nosso contrato inteligente no Etherscan](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#optional-part-3-publish-your-smart-contract-to-etherscan) para que todos aprendam como interagir com ele.
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-implement-an-erc721-market/index.md
new file mode 100644
index 00000000000..dc2b696978c
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -0,0 +1,149 @@
+---
+title: Como implementar um mercado ERC-721
+description: Como colocar itens tokenizados para venda em um mercado descentralizado
+author: "Alberto Cuesta Cañada"
+tags:
+ - "contratos inteligentes"
+ - "erc-721"
+ - "solidez"
+ - "tokens"
+skill: intermediate
+lang: pt-br
+published: 2020-03-19
+source: Hackernoon
+sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9
+---
+
+Neste artigo, vou lhe mostrar como programar um Craigslist na blockchain Ethereum.
+
+Antes de Gumtree, Ebay e Craigslist, classificados eram basicamente painéis de cortiça ou papel. Havia seções de classificados nos corredores da escola, jornais, postes de rua, e vitrines.
+
+Tudo isso mudou com a internet. O número de pessoas que podiam ver um determinado quadro classificado foi multiplicado por muitas ordens de magnitude. Com isso, os mercados que representam tornaram-se muito mais eficientes e escalaram até à dimensão global. A Ebay é uma empresa gigantesca que rastreia a origem destes quadros de classificações físicas.
+
+Com a blockchain, esses mercados estão definidos para mudar mais uma vez, deixe-me te mostrar como.
+
+## Monetização {#monetization}
+
+O modelo de negócio de um conselho de classificações públicas da blockchain precisará ser diferente do da Ebay e da empresa.
+
+Primeiro, há [o ângulo de descentralização](/developers/docs/web2-vs-web3/). Plataformas existentes precisam manter seus próprios servidores. Uma plataforma descentralizada é mantida por seus usuários, então o custo de executar a plataforma principal cai para zero para o proprietário da plataforma.
+
+Em seguida, há o front-end, o site ou a interface que dá acesso à plataforma. Aqui há muitas opções. Os proprietários da plataforma podem restringir o acesso e forçar todos a usar a interface, carregando uma taxa. Os proprietários da plataforma também podem decidir abrir o acesso (Poder para as Pessoas!) e deixar qualquer pessoa construir interfaces na plataforma. Ou os proprietários poderiam decidir qualquer abordagem no meio desses extremos.
+
+_Os líderes empresariais com mais visão do que eu saberão bem como monetizar isso. Tudo o que entendo é que isto é diferente do status quo e é, provavelmente, lucrativo._
+
+Além disso, há o ponto relativo à automação e aos pagamentos. Algumas coisas podem ser [efetivamente tokenizadas](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) e negociadas em um quadro de classificações. Ativos tokenizados são facilmente transferidos em uma blockchain. Métodos de pagamento altamente complexos podem ser facilmente implementados em uma blockchain.
+
+Sinto uma oportunidade de negócios aqui. Um quadro de classificados sem custos correntes pode ser facilmente implementado, com caminhos de pagamento complexos incluídos em cada transação. Tenho certeza de que alguém vai ter uma ideia sobre em que usar isso.
+
+Estou feliz construindo. Vamos dar uma olhada no código.
+
+## Implementação {#implementation}
+
+Há algum tempo iniciamos um [repositório de código aberto](https://github.com/HQ20/contracts?ref=hackernoon.com) com implementações de exemplos de casos de negócios e outros brindes, dê uma olhada.
+
+O código para este [Ethereum Classifieds Board](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com) está lá, por favor, use e abuse dele. Apenas esteja ciente de que o código não foi auditado e de que você precisa fazer a sua própria diligência antes de deixar o dinheiro entrar.
+
+Os fundamentos do conselho não são complexos. Todos os anúncios no board serão apenas uma construção com alguns campos:
+
+```solidity
+struct Trade {
+ address poster;
+ uint256 item;
+ uint256 price;
+ bytes32 status; // Open, Executed, Cancelled
+}
+```
+
+Portanto, há alguém que publique o anúncio. Item à venda. Um preço para o item. O status da operação que pode ser aberto, executado ou cancelado.
+
+Todas essas trocas serão mantidas em um mapeamento. Porque tudo no Solidity parece ser um mapeamento. Também porque é conveniente.
+
+```solidity
+mapping(uint256 => Trade) public trades;
+```
+
+Usando um mapeamento significa apenas que temos que criar um id para cada anúncio antes de publicá-lo, e precisaremos saber a identificação de um anúncio antes de podermos operar sobre ele. Existem várias maneiras de lidar com isto, seja no contrato inteligente ou na parte front-end. Por favor pergunte se você precisa de alguns ponteiros.
+
+Em seguida, a questão de quais são os itens com que lidamos, e qual é esta moeda que é usada para pagar a transação.
+
+Para os itens, vamos apenas pedir que eles implementem a interface [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com), que realmente é apenas uma maneira de representar itens do mundo real em uma blockchain, embora [funcione melhor com os recursos digitais](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com). Vamos especificar o nosso próprio contrato ERC721 no construtor, significa que todos os ativos do nosso quadro de classificados precisam ter sido tokenizados previamente.
+
+Quanto aos pagamentos, vamos fazer algo semelhante. A maioria dos projetos blockchain definem suas próprias criptomoedas [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com). Outros preferem usar um mainstream como a DAI. Neste quadro de classificações, você só precisa decidir em construção qual será a sua moeda. Fácil.
+
+```solidity
+constructor (
+ address _currencyTokenAddress, address _itemTokenAddress
+) public {
+ currencyToken = IERC20(_currencyTokenAddress);
+ itemToken = IERC721(_itemTokenAddress);
+ tradeCounter = 0;
+}
+```
+
+Nós estamos chegando lá. Temos anúncios, itens para negociação e uma moeda para pagamentos. Fazer um anúncio significa colocar um item no escopo para mostrar que você o tem e que você não publicou duas vezes, possivelmente em um quadro diferente.
+
+O código abaixo faz exatamente isso. Coloca o item no escrow, cria o anúncio, faz algum serviço doméstico.
+
+```solidity
+function openTrade(uint256 _item, uint256 _price)
+ public
+{
+ itemToken.transferFrom(msg.sender, address(this), _item);
+ trades[tradeCounter] = Trade({
+ poster: msg.sender,
+ item: _item,
+ price: _price,
+ status: "Open"
+ });
+ tradeCounter += 1;
+ emit TradeStatusChange(tradeCounter - 1, "Open");
+}
+```
+
+Aceitar a troca significa escolher um anúncio (negociação), pagar o preço, receber o item. O código abaixo recupera uma troca. Verifica se está disponível. Paga o item. Recupera o item. Atualiza o anúncio.
+
+```solidity
+function executeTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(trade.status == "Open", "Trade is not Open.");
+ currencyToken.transferFrom(msg.sender, trade.poster, trade.price);
+ itemToken.transferFrom(address(this), msg.sender, trade.item);
+ trades[_trade].status = "Executed";
+ emit TradeStatusChange(_trade, "Executed");
+}
+```
+
+Por último, temos uma opção para os vendedores recuarem numa negociação antes que um comprador a aceite. Em alguns modelos, os anúncios estariam vivos por um período de tempo antes de eles expirarem. Fica a sua escolha, dependendo do design do seu mercado.
+
+O código é muito semelhante ao usado para executar uma negociação, apenas não há nenhuma mudança de moeda e o item volta para o cartaz anunciante.
+
+```solidity
+function cancelTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(
+ msg.sender == trade.poster,
+ "Trade can be cancelled only by poster."
+ );
+ require(trade.status == "Open", "Trade is not Open.");
+ itemToken.transferFrom(address(this), trade.poster, trade.item);
+ trades[_trade].status = "Cancelled";
+ emit TradeStatusChange(_trade, "Cancelled");
+}
+```
+
+É isso. Você chegou ao fim da implementação. É bastante surpreendente como alguns conceitos de negócios se tornam compactos quando são expressados em código, e este é um desses casos. Verifique o contrato completo [no nosso repositório](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol).
+
+## Conclusão {#conclusion}
+
+As seções de classificados são uma configuração comum de mercado que cresceu em grande escala com a internet, tornando-se um modelo de negócio extremamente popular com alguns vencedores monopolistas.
+
+Também acontece de as seções de classificados serem uma ferramenta fácil de replicar em um ambiente blockchain, com características muito específicas que possibilitarão um desafio para os gigantes da atualidade.
+
+Neste artigo, tentei fazer uma ponte entre a realidade comercial de um conselho de administração clássico com a implementação tecnológica. Este conhecimento deve ajudá-lo a criar uma visão e um roteiro para a implementação, se você tiver as habilidades certas.
+
+Como sempre, se você for construir algo divertido e gostaria de alguns conselhos, por favor [envie-me uma mensagem](https://albertocuesta.es/)! Fico sempre feliz em ajudar.
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-mint-an-nft/index.md
index bbabf05713c..94593c6e630 100644
--- a/public/content/translations/pt-br/developers/tutorials/how-to-mint-an-nft/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-mint-an-nft/index.md
@@ -4,7 +4,8 @@ description: Este tutorial descreve como criar um NFT na blockchain Ethereum usa
author: "Sumi Mudgil"
tags:
- "ERC-721"
- - "Solidity"
+ - "alchemy"
+ - "solidity"
- "contratos inteligentes"
skill: beginner
lang: pt-br
@@ -13,7 +14,7 @@ published: 2021-04-22
[Beeple](https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html): 69 milhões de doláres [3LAU](https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b): 11 milhões de doláres [Grimes](https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens): 6 milhões de doláres
-Estes NFTs foram criados usando a poderosa API da Alchemy. Neste tutorial, vamos te ensinar a fazer o mesmo em < 10 minutos.
+All of them minted their NFTs using Alchemy’s powerful API. Neste tutorial, vamos te ensinar a fazer o mesmo em < 10 minutos.
"Cunhar um NFT" é o ato de publicar uma instância única do seu token ERC-721 na blockchain. Usando nosso contrato inteligente da [Parte 1 desta série de tutoriais NFT](/developers/tutorials/how-to-write-and-deploy-an-nft/), vamos usar nossas habilidades Web3 e criar um NFT. No final deste tutorial, você será capaz de cunhar tantos NFTs quanto seu coração (e sua carteira) desejar!
@@ -110,9 +111,9 @@ Uma vez terminada a edição do arquivo JSON, salve-o e faça o upload para o Pi
## Etapa 5: Criar uma instância de seu contrato {#instance-contract}
-Agora, para interagir com o nosso contrato, precisamos criar uma instância dele em nosso código. Para fazer isso, precisaremos do nosso endereço de contrato, obtido na implantação ou no [Etherscan](https://goerli.etherscan.io/), procurando o endereço que você usou para implantar o contrato.
+Agora, para interagir com o nosso contrato, precisamos criar uma instância dele em nosso código. Para fazer isso, precisaremos do nosso endereço de contrato, obtido na implantação ou no [Etherscan](https://sepolia.etherscan.io/), procurando o endereço que você usou para implantar o contrato.
-![Veja o seu endereço de contrato no Etherscan](./viewContractEtherscan.png)
+![Veja o seu endereço de contrato no Etherscan](./view-contract-etherscan.png)
No exemplo acima, o endereço do contrato é 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778.
@@ -131,7 +132,7 @@ Agora, para criar e enviar transações para a cadeia Ethereum, usaremos seu end
Adicione sua chave pública ao seu arquivo `.env` — se você concluiu a parte 1 do tutorial, nosso arquivo `.env` deve ficar assim:
```js
-API_URL = "https://eth-goerli.g.alchemy.com/v2/your-api-key"
+API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY = "your-private-account-address"
PUBLIC_KEY = "your-public-account-address"
```
@@ -314,15 +315,15 @@ mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")
Agora, execute `node scripts/mint-nft.js` para implantar seu NFT. Depois de alguns segundos, você deverá ver uma resposta como essa no seu terminal:
O hash de sua transação é: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
-
+
Verifique o Mempool da Alquemy para ver o estado da sua transação!
-Em seguida, acesse a [mempool (área de espera) da Alchemy](https://dashboard.alchemyapi.io/mempool) para ver o estado da sua transação (se pendente, minerada ou recusada pela rede). Se a sua transação foi descartada, também é útil verificar o [Goerli Etherscan](https://goerli.etherscan.io/) e procurar pelo hash da transação.
+Em seguida, acesse a [mempool (área de espera) da Alchemy](https://dashboard.alchemyapi.io/mempool) para ver o estado da sua transação (se pendente, minerada ou recusada pela rede). Se a sua transação se perdeu, também é útil verificar no [Sepolia Etherscan](https://sepolia.etherscan.io/) e procurar o hash da transação.
-![Veja seu hash de transação NFT no Etherscan](./viewNFTEtherscan.png)_Veja seu hash de transação NFT no Etherscan_
+![Veja seu hash de transação NFT no Etherscan](./view-nft-etherscan.png)_Veja seu hash de transação NFT no Etherscan_
E pronto! Você agora implantou E cunhou um NFT na blockchain Ethereum
-Usando o `mint-nft.js`, você pode cunhar quantos NFTs você (e sua carteira) desejar! Apenas certifique-se de transmitir um novo tokenURI descrevendo os metadados do NFT (caso contrário, você acaba criando um monte de identificações idênticas, com IDs diferentes).
+Using the `mint-nft.js` you can mint as many NFTs as your heart (and wallet) desires! Apenas certifique-se de transmitir um novo tokenURI descrevendo os metadados do NFT (caso contrário, você acaba criando um monte de identificações idênticas, com IDs diferentes).
Provavelmente você gostaria de poder exibir seu NFT na sua carteira — então certifique-se de conferir [Parte 3: Como ver seu NFT na sua carteira](/developers/tutorials/how-to-view-nft-in-metamask/)!
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
new file mode 100644
index 00000000000..5621dda9432
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -0,0 +1,106 @@
+---
+title: Como simular contratos inteligentes em Solidity para teste
+description: Por que você deve aproveitar os seus contratos ao testar
+author: Markus Waas
+lang: pt-br
+tags:
+ - "solidez"
+ - "contratos inteligentes"
+ - "testando"
+ - "simulando"
+skill: intermediate
+published: 2020-05-02
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/mocking-contracts
+---
+
+[Mock de objetos ](https://wikipedia.org/wiki/Mock_object) são um padrão de design comum na programação orientada a objetos. Vindo da velha palavra francesa "mocquer" com o significado de "diversão de", evoluiu para a "imitação de algo real", que é na realidade, o que estamos fazendo na programação. Por favor, só se divirta de seus contratos inteligentes se você quiser, mas faça o mock deles sempre que puder. Isso torna sua vida mais fácil.
+
+## Testes de unidade de contratos com simulações {#unit-testing-contracts-with-mocks}
+
+Simular um contrato (mocking) significa essencialmente criar uma segunda versão desse contrato que se comporta de maneira muito semelhante ao original, mas de uma maneira que pode ser facilmente controlada pelo desenvolvedor. Muitas vezes, você acaba com contratos complexos nos quais você só quer [fazer testes de unidade de pequenas partes do contrato](/developers/docs/smart-contracts/testing/). O problema é: e se o teste desta pequena parte exigir um estado de contrato muito específico que seja difícil de alcançar?
+
+Você poderia escrever uma lógica de configuração de testes complexa toda vez que apresentasse o contrato no estado necessário ou você escreveria uma simulação (mock, em inglês). Simular um contrato é fácil com herança. Basta criar um segundo contrato mock que herda do original. Agora você pode substituir funções de seu mock. Vejamos com um exemplo.
+
+## Exemplo: ERC20 Privado {#example-private-erc20}
+
+Usamos um exemplo de contrato ERC-20 que tem um tempo privado inicial. O proprietário pode gerenciar usuários privados e apenas esses terão permissão para receber tokens no início. Uma vez que um certo tempo tenha passado, todos poderão utilizar os tokens. Se você estiver curioso, estamos usando o hook (código modificado) [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/3.x/extending-contracts#using-hooks) dos novos contratos OpenZeppelin v3.
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/Ownable.sol";
+
+contract PrivateERC20 is ERC20, Ownable {
+ mapping (address => bool) public isPrivateUser;
+ uint256 private publicAfterTime;
+
+ constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public {
+ publicAfterTime = now + privateERC20timeInSec;
+ }
+
+ function addUser(address user) external onlyOwner {
+ isPrivateUser[user] = true;
+ }
+
+ function isPublic() public view returns (bool) {
+ return now >= publicAfterTime;
+ }
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
+ super._beforeTokenTransfer(from, to, amount);
+
+ require(_validRecipient(to), "PrivateERC20: invalid recipient");
+ }
+
+ function _validRecipient(address to) private view returns (bool) {
+ if (isPublic()) {
+ return true;
+ }
+
+ return isPrivateUser[to];
+ }
+}
+```
+
+E agora vamos fazer o mock disso.
+
+```solidity
+pragma solidity ^0.6.0;
+import "../PrivateERC20.sol";
+
+contract PrivateERC20Mock is PrivateERC20 {
+ bool isPublicConfig;
+
+ constructor() public PrivateERC20(0) {}
+
+ function setIsPublic(bool isPublic) external {
+ isPublicConfig = isPublic;
+ }
+
+ function isPublic() public view returns (bool) {
+ return isPublicConfig;
+ }
+}
+```
+
+Você receberá uma das seguintes mensagens de erro:
+
+- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.`
+- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.`
+
+Como estamos usando a nova versão 0.6 do Solidity, temos que adicionar a palavra-chave `virtual` para funções que podem ser sobrescritas e substituídas pela função substituta. Então vamos adicioná-los para ambas as funções `isPublic`.
+
+Agora você pode usar `PrivateERC20Mock` nos seus testes de unidade. Quando você quiser testar o comportamento durante o tempo de uso privado, use `setIsPublic(false)` e, da mesma forma, `setIsPublic(true)` para testar o tempo de uso público. É claro que em nosso exemplo, poderíamos usar simplesmente [auxiliares de tempo](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) para alterar os tempos de acordo também. Mas a ideia de mocking deve estar clara agora e você pode imaginar cenários em que não é tão fácil quanto simplesmente avançar no tempo.
+
+## Mocking em muitos contratos {#mocking-many-contracts}
+
+Pode ficar confuso se você tiver que criar outro contrato para cada mock. Se isso incomoda você, dê uma olhada na biblioteca [MockContract](https://github.com/gnosis/mock-contract). Ele permite que você sobrescreva e modifique comportamentos de contratos em tempo real. No entanto, ele só funciona para chamadas mocking para outro contrato, portanto, não funcionaria para o nosso exemplo.
+
+## Mocking podem ser ainda mais poderosas {#mocking-can-be-even-more-powerful}
+
+Os poderes de mocking não terminam aí.
+
+- Adicionando funções: sobrescrever uma função específica é útil, mas apenas acrescentar funções adicionais também poderá ser. Um bom exemplo para tokens é ter apenas uma função adicional `mint` para permitir que qualquer usuário obtenha novos tokens gratuitamente.
+- Uso em testnets: ao implantar e testar seus contratos em testnets juntamente com seu Dapp, considere usar uma versão mock. Evite sobrescrever funções, a menos que você realmente precise. Afinal, você quer testar a lógica real. Mas adicionar, por exemplo, uma função de redefinição pode ser útil que simplesmente redefine o estado do contrato para o início, sem necessidade de nova implantação. Obviamente, você não gostaria de ter isso em um contrato na mainnet (rede principal).
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
new file mode 100644
index 00000000000..899dffa2ab9
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -0,0 +1,693 @@
+---
+title: Como usar o Echidna para testar contratos inteligentes
+description: Como usar o Echidna para testar automaticamente contratos inteligentes
+author: "Trailofbits"
+lang: pt-br
+tags:
+ - "solidez"
+ - "smart contracts"
+ - "segurança"
+ - "testando"
+ - "fuzzing"
+skill: advanced
+published: 2020-04-10
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna
+---
+
+## Instalação {#installation}
+
+Echidna pode ser instalado através do docker ou usando o binário pré-compilado.
+
+### Echidna com docker {#echidna-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_O último comando roda a eth-security-toolbox em um docker que tem acesso ao seu diretório atual. Você pode alterar os arquivos do seu host e executar as ferramentas nos arquivos através do docker_
+
+Dentro do docker, execute :
+
+```bash
+solc-select 0.5.11
+cd /home/training
+```
+
+### Binário {#binary}
+
+[https://github.com/crytic/echidna/releases/tag/v1.4.0.0](https://github.com/crytic/echidna/releases/tag/v1.4.0.0)
+
+## Introdução a fuzzing baseado em propriedade {#introduction-to-property-based-fuzzing}
+
+Echidna é um fuzzer baseado em propriedades, descrevemos em nossos posts anteriores ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/)).
+
+### Fuzzing {#fuzzing}
+
+[Fuzzing](https://wikipedia.org/wiki/Fuzzing) é uma técnica bem conhecida na comunidade de segurança. It consists of generating inputs that are more or less random to find bugs in the program. Fuzzers por software tradicional (como [AFL](http://lcamtuf.coredump.cx/afl/) ou [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) são conhecidos por serem ferramentas eficientes para encontrar bugs.
+
+Além da geração aleatória de entradas, há muitas técnicas e estratégias para gerar bons inputs, incluindo:
+
+- Obtenha feedback de cada execução e geração de guias usando-o. Por exemplo, se uma entrada recém-gerada leva à descoberta de um novo caminho, ele pode fazer sentido para gerar novas entradas fechadas a ele.
+- Geração da entrada respeitando uma restrição estrutural. Por exemplo, se a sua entrada contiver um cabeçalho com uma soma de verificação, fará sentido deixar o difusor gerar uma entrada validando a soma de verificação.
+- Usando entradas conhecidas para gerar novas entradas: se você tem acesso a um grande conjunto de dados de entrada válida, seu difusor pode gerar novas entradas a partir deles, ao invés de começar sua geração do zero. Eles geralmente são chamados de _seeds_.
+
+### Fuzzing baseado em propriedade {#property-based-fuzzing}
+
+Echidna pertence a uma família específica de fuzzer: fuzzing baseada em propriedades fortemente inspirada pelo [QuickCheck](https://wikipedia.org/wiki/QuickCheck). Em contraste com o fuzzing clássico que tentará encontrar falhas, Echidna tentará quebrar invariantes definidos pelo usuário.
+
+Nos contratos inteligentes, invariantes são funções Solidity, que podem representar qualquer estado incorreto ou inválido que o contrato possa alcançar, incluindo:
+
+- Controle de acesso incorreto: quem ataca tornou-se o proprietário do contrato.
+- Máquina de estado incorreta: os tokens podem ser transferidos enquanto o contrato é pausado.
+- Aritmética incorreta: o usuário pode passar abaixo do saldo e obter tokens gratuitos ilimitados.
+
+### Testando uma propriedade com Echidna {#testing-a-property-with-echidna}
+
+Veremos como testar um contrato inteligente com o Echidna. O alvo é o seguinte contrato inteligente [`exemplo.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol):
+
+```solidity
+contract Token{
+ mapping(address => uint) public balances;
+ function airdrop() public{
+ balances[msg.sender] = 1000;
+ }
+ function consume() public{
+ require(balances[msg.sender]>0);
+ balances[msg.sender] -= 1;
+ }
+ function backdoor() public{
+ balances[msg.sender] += 1;
+ }
+}
+```
+
+Assumiremos que esse token deve ter as seguintes propriedades:
+
+- Qualquer um pode ter no máximo 1000 tokens
+- O token não pode ser transferido (não é um token ERC20)
+
+### Escrever uma propriedade {#write-a-property}
+
+Propriedades do Echidna são funções de Solidity. Uma propriedade deve:
+
+- Ter nenhum argumento
+- Retornar `verdadeiro` se for bem sucedido
+- Tenha seu nome começando com `echidna`
+
+Echidna irá:
+
+- Gera automaticamente transações arbitrárias para testar a propriedade.
+- Relata quaisquer transações que levem uma propriedade para retornar `` falso ou lançar um erro.
+- Descartar efeito lateral ao chamar uma propriedade (ou seja, se a propriedade altera uma variável de estado, ela é descartada após o teste)
+
+A propriedade a seguir verifica que o "caller" não possui mais do que 1000 tokens:
+
+```solidity
+function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+}
+```
+
+Use herança para separar seu contrato de suas propriedades:
+
+```solidity
+contract TestToken is Token{
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) implementa a propriedade e herda do token.
+
+### Iniciar um contrato {#initiate-a-contract}
+
+Echidna precisa de um [constructor](/developers/docs/smart-contracts/anatomy/#constructor-functions) sem argumento. Se seu contrato precisa de uma inicialização específica, você precisa fazê-lo no construtor.
+
+Há alguns endereços específicos no Echidna:
+
+- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72` que chama o constructor.
+- `0x10000`, `0x20000`, e `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` que aleatoriamente chama as outras funções.
+
+Nós não precisamos de nenhuma inicialização específica em nosso exemplo atual, como resultado, nosso construtor está vazio.
+
+### Executando Echidna {#run-echidna}
+
+Echidna foi lançado com:
+
+```bash
+echidna-test contract.sol
+```
+
+Se o contract.sol contém múltiplos contratos, você pode especificar o alvo:
+
+```bash
+echidna-test contract.sol --contract MyContract
+```
+
+### Resumo: Testando uma propriedade {#summary-testing-a-property}
+
+O seguinte resumo é a execução de Echidna no nosso exemplo:
+
+```solidity
+contract TestToken is Token{
+ constructor() public {}
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+```bash
+echidna-test testtoken.sol --contract TestToken
+...
+
+echidna_balance_under_1000: failed!💥
+ Call sequence, shrinking (1205/5000):
+ airdrop()
+ backdoor()
+
+...
+```
+
+Echidna descobriu que a propriedade é violada se `backdoor` é chamada.
+
+## Filtrando funções para chamar durante uma campanha de fuzzing {#filtering-functions-to-call-during-a-fuzzing-campaign}
+
+Veremos como filtrar as funções a serem "fuzzed". O alvo é o seguinte contrato inteligente:
+
+```solidity
+contract C {
+ bool state1 = false;
+ bool state2 = false;
+ bool state3 = false;
+ bool state4 = false;
+
+ function f(uint x) public {
+ require(x == 12);
+ state1 = true;
+ }
+
+ function g(uint x) public {
+ require(state1);
+ require(x == 8);
+ state2 = true;
+ }
+
+ function h(uint x) public {
+ require(state2);
+ require(x == 42);
+ state3 = true;
+ }
+
+ function i() public {
+ require(state3);
+ state4 = true;
+ }
+
+ function reset1() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function reset2() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function echidna_state4() public returns (bool) {
+ return (!state4);
+ }
+}
+```
+
+Este pequeno exemplo força Echidna a encontrar uma determinada sequência de transações para alterar uma variável de estado. Isso é difícil para um fuzzer (é recomendado usar uma ferramenta de execução simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos executar o Echidna para verificar isto:
+
+```bash
+echidna-test multi.sol
+...
+echidna_state4: passed! 🎉
+Seed: -3684648582249875403
+```
+
+### Filtrando funções {#filtering-functions}
+
+Echidna tem problemas para encontrar a sequência correta para testar esse contrato, porque as duas funções de redefinição (`reset1` e `reset2`) definirão todas as variáveis de estado como `false`. No entanto, podemos usar um recurso especial Echidna para ou para a lista negra redefinir a função ou apenas para a lista branca `f`, `g`, `h` e `i` funções.
+
+Para funções da lista negra, podemos usar esse arquivo de configuração:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["reset1", "reset2"]
+```
+
+Outra abordagem para as funções de filtro é listar as funções na lista branca. Para fazer isso, podemos usar este arquivo de configuração:
+
+```yaml
+filterBlacklist: false
+filterFunctions: ["f", "g", "h", "i"]
+```
+
+- `filterBlacklist` é `verdadeiro` por padrão.
+- A filtragem será executada apenas por nome (sem parâmetros). Se você tiver `f()` e `f(uint256)`, o filtro `"f"` corresponderá a ambas as funções.
+
+### Executar Echidna {#run-echidna-1}
+
+Para executar Echidna com um arquivo de configuração `blacklist.yaml`:
+
+```bash
+echidna-test multi.sol --config blacklist.yaml
+...
+echidna_state4: failed!💥
+ Call sequence:
+ f(12)
+ g(8)
+ h(42)
+ i()
+```
+
+Echidna vai encontrar a sequência de transações para falsificar a propriedade quase de forma mesquinha.
+
+### Resumo: Filtrando funções {#summary-filtering-functions}
+
+Echidna pode ser chamada na lista negra ou na lista branca durante uma campanha de fuzzing:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["f1", "f2", "f3"]
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+Echidna inicia uma campanha de fuzzing em qualquer blacklist `f1`, `f2` e `f3` ou apenas chamando a eles, de acordo com o valor do booleano `filterBlacklist`.
+
+## Como testar a asserção de Solidity com Echidna {#how-to-test-soliditys-assert-with-echidna}
+
+Neste breve tutorial, vamos mostrar como usar o Echidna para testar a verificação de asserção em contratos. Vamos supor que tenhamos um contrato como este:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ // tmp <= counter
+ return (counter - tmp);
+ }
+}
+```
+
+### Escreva uma asserção {#write-an-assertion}
+
+Queremos ter certeza de que `tmp` é menor ou igual a `contador` depois de retornar a sua diferença. Nós poderíamos escrever uma propriedade de Echidna, mas precisaremos armazenar o valor de `tmp` em algum lugar. Em vez disso, poderíamos usar uma asserção como esta:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+### Executando Echidna {#run-echidna-2}
+
+Para habilitar o teste de falha de asserção, crie um arquivo de configuração [Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+
+```yaml
+checkAsserts: true
+```
+
+Quando executamos este contrato em Echidna, obtemos os resultados esperados:
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+Como você pode ver, Echidna relata algumas falhas de afirmação na função `inc`. Adicionar mais de uma asserção por função é possível, mas Echidna não pode dizer qual afirmação falhou.
+
+### Quando e como usar asserções {#when-and-how-use-assertions}
+
+As asserções podem ser usadas como alternativas às propriedades explícitas, se as condições a serem verificadas estão diretamente relacionadas com o uso correto de alguma operação `f`. Adicionar asserções após algum código forçará que a verificação ocorra imediatamente após sua execução:
+
+```solidity
+function f(..) public {
+ // some complex code
+ ...
+ assert (condition);
+ ...
+}
+
+```
+
+Pelo contrário, usando uma propriedade Echidna explícita irá executar transações aleatoriamente e não há maneira fácil de aplicar exatamente quando elas serão verificadas. Ainda é possível fazer esta solução alternativa:
+
+```solidity
+function echidna_assert_after_f() public returns (bool) {
+ f(..);
+ return(condition);
+}
+```
+
+Entretanto, existem alguns problemas: %{issues}:
+
+- Ele falha se `f` é declarado como `interno` ou `externo`.
+- Não está claro quais argumentos devem ser usados para chamar `f`.
+- Se `f` reverter, a propriedade irá falhar.
+
+Em geral, recomendamos seguir a recomendação de [John Regehr](https://blog.regehr.org/archives/1091) sobre como usar asserções:
+
+- Não force qualquer efeito colateral durante a verificação de asserção. Por exemplo: `assert(ChangeStateAndReturn() == 1)`
+- Não faça asserções óbvias. Por exemplo, `assert(var >= 0)` onde `var` é declarado como `uint`.
+
+Finalmente, **não use** `require` em vez de `assert`, já que Echidna não será capaz de detectá-lo (mas o contrato será revertido mesmo assim).
+
+### Resumo: checando a asserção {#summary-assertion-checking}
+
+O seguinte resumo é a execução de Echidna no nosso exemplo:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+Echidna percebeu que a asserção em `inc` pode falhar se essa função é chamada várias vezes com argumentos grandes.
+
+## Coletando e modificando um corpus Echidna {#collecting-and-modifying-an-echidna-corpus}
+
+Veremos como coletar e usar um corpus de transações com Echidna. O alvo é o seguinte contrato inteligente [`exemplo.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol):
+
+```solidity
+contract C {
+ bool value_found = false;
+ function magic(uint magic_1, uint magic_2, uint magic_3, uint magic_4) public {
+ require(magic_1 == 42);
+ require(magic_2 == 129);
+ require(magic_3 == magic_4+333);
+ value_found = true;
+ return;
+ }
+
+ function echidna_magic_values() public returns (bool) {
+ return !value_found;
+ }
+
+}
+```
+
+Este pequeno exemplo força Echidna a encontrar uma determinada sequência de transações para alterar uma variável de estado. Isso é difícil para um fuzzer (é recomendado usar uma ferramenta de execução simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos executar o Echidna para verificar isto:
+
+```bash
+echidna-test magic.sol
+...
+
+echidna_magic_values: passed! 🎉
+
+Seed: 2221503356319272685
+```
+
+No entanto, ainda podemos usar o Echidna para coletar corpus na condução desta campanha de fuzzing.
+
+### Coletando um corpus {#collecting-a-corpus}
+
+Para habilitar a coleção de corpus, crie um diretório corpus:
+
+```bash
+mkdir corpus-magic
+```
+
+E um [arquivo de configuração Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+
+```yaml
+coverage: true
+corpusDir: "corpus-magic"
+```
+
+Agora podemos rodar nossa ferramenta e checar o corpus coletado:
+
+```bash
+echidna-test magic.sol --config config.yaml
+```
+
+Echidna ainda não conseguiu encontrar os valores mágicos corretos, mas podemos olhar para o corpus que ele coletou. Por exemplo, um desses arquivos foi:
+
+```json
+[
+ {
+ "_gas'": "0xffffffff",
+ "_delay": ["0x13647", "0xccf6"],
+ "_src": "00a329c0648769a73afac7f9381e08fb43dbea70",
+ "_dst": "00a329c0648769a73afac7f9381e08fb43dbea72",
+ "_value": "0x0",
+ "_call": {
+ "tag": "SolCall",
+ "contents": [
+ "magic",
+ [
+ {
+ "contents": [
+ 256,
+ "93723985220345906694500679277863898678726808528711107336895287282192244575836"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [256, "334"],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [
+ 256,
+ "68093943901352437066264791224433559271778087297543421781073458233697135179558"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "tag": "AbiUInt",
+ "contents": [256, "332"]
+ }
+ ]
+ ]
+ },
+ "_gasprice'": "0xa904461f1"
+ }
+]
+```
+
+Claramente, esse input não causará falha em nossa propriedade. No entanto, no próximo passo, veremos como modificá-lo nesse sentido.
+
+### Semeando um corpus {#seeding-a-corpus}
+
+Echidna precisa de ajuda para lidar com a função `mágica`. Vamos copiar e modificar a entrada para usar os parâmetros adequados para ele:
+
+```bash
+cp corpus/2712688662897926208.txt corpus/new.txt
+```
+
+Nós iremos modificar `new.txt` para chamar `mágica(42,129,333,0)`. Agora, podemos reexecutar o Echidna:
+
+```bash
+echidna-test magic.sol --config config.yaml
+...
+echidna_magic_values: failed!💥
+ Call sequence:
+ magic(42,129,333,0)
+
+
+Unique instructions: 142
+Unique codehashes: 1
+Seed: -7293830866560616537
+
+```
+
+Desta vez, constatou que a propriedade é violada imediatamente.
+
+## Localizando transações com alto consumo de gas {#finding-transactions-with-high-gas-consumption}
+
+Veremos como encontrar as transações com alto consumo de gas com o Echidna. O alvo é o seguinte contrato inteligente:
+
+```solidity
+contract C {
+ uint state;
+
+ function expensive(uint8 times) internal {
+ for(uint8 i=0; i < times; i++)
+ state = state + i;
+ }
+
+ function f(uint x, uint y, uint8 times) public {
+ if (x == 42 && y == 123)
+ expensive(times);
+ else
+ state = 0;
+ }
+
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+
+}
+```
+
+Aqui `caro` pode ter um grande consumo de gas.
+
+Atualmente, Echidna sempre precisa de uma propriedade para testar: aqui `echidna_test` sempre retorna `true`. Podemos executar o Echidna para verificar isto:
+
+```
+echidna-test gas.sol
+...
+echidna_test: passed! 🎉
+
+Seed: 2320549945714142710
+```
+
+### Medição do consumo de gas {#measuring-gas-consumption}
+
+Para habilitar o consumo de gas com Echidna, crie um arquivo de configuração `config.yaml`:
+
+```yaml
+estimateGas: true
+```
+
+Neste exemplo, também reduziremos o tamanho da sequência de transações para facilitar a compreensão dos resultados:
+
+```yaml
+seqLen: 2
+estimateGas: true
+```
+
+### Executando Echidna {#run-echidna-3}
+
+Assim que tivermos o arquivo de configuração criado, poderemos executar o Echidna assim:
+
+```bash
+echidna-test gas.sol --config config.yaml
+...
+echidna_test: passed! 🎉
+
+f used a maximum of 1333608 gas
+ Call sequence:
+ f(42,123,249) Gas price: 0x10d5733f0a Time delay: 0x495e5 Block delay: 0x88b2
+
+Unique instructions: 157
+Unique codehashes: 1
+Seed: -325611019680165325
+
+```
+
+- O gas mostrado é um cálculo fornecido por [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-).
+
+### Filtrando Chamadas com Redução de Gas {#filtering-out-gas-reducing-calls}
+
+O tutorial sobre **funções de filtragem para chamar durante uma campanha de difusão** acima mostra como remover algumas funções de seu teste.
+Isso pode ser fundamental para obter uma estimativa de gas precisa. Considere o seguinte exemplo:
+
+```solidity
+contract C {
+ address [] addrs;
+ function push(address a) public {
+ addrs.push(a);
+ }
+ function pop() public {
+ addrs.pop();
+ }
+ function clear() public{
+ addrs.length = 0;
+ }
+ function check() public{
+ for(uint256 i = 0; i < addrs.length; i++)
+ for(uint256 j = i+1; j < addrs.length; j++)
+ if (addrs[i] == addrs[j])
+ addrs[j] = address(0x0);
+ }
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+}
+```
+
+Se Echidna pode chamar todas as funções, ele não encontrará facilmente transações com alto custo de gas:
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+pop used a maximum of 10746 gas
+...
+check used a maximum of 23730 gas
+...
+clear used a maximum of 35916 gas
+...
+push used a maximum of 40839 gas
+```
+
+Isso porque o custo depende do tamanho dos `addrs` e chamadas aleatórias tendem a deixar o array quase vazio. Lista negra `pop` e `limpa`, no entanto, nos dá resultados muito melhores:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["pop", "clear"]
+```
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+push used a maximum of 40839 gas
+...
+check used a maximum of 1484472 gas
+```
+
+### Localizando transações com alto consumo de gás {#summary-finding-transactions-with-high-gas-consumption}
+
+Echidna pode encontrar transações com alto consumo de gás usando a opção de configuração `estimateGas`:
+
+```yaml
+estimateGas: true
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+Echidna irá relatar uma sequência com o consumo máximo de gas para cada função, uma vez terminada a campanha de fuzzing.
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..3382b47b034
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,514 @@
+---
+title: Como usar o Manticore para encontrar bugs em contratos inteligentes
+description: Como usar o Manticore para encontrar bugs automaticamente em contratos inteligentes
+author: Trailofbits
+lang: pt-br
+tags:
+ - "solidez"
+ - "smart contracts"
+ - "segurança"
+ - "testando"
+ - "verificação formal"
+skill: advanced
+published: 2020-01-13
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore
+---
+
+O objetivo deste tutorial é mostrar como usar o Manticore para encontrar bugs em contratos inteligentes automaticamente.
+
+## Instalação {#installation}
+
+Manticore requer >= python 3.6. Pode ser instalado pelo pip ou usando o docker.
+
+### Manticore através do Docker {#manticore-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_O último comando roda a eth-security-toolbox em um docker que tem acesso ao seu diretório atual. Você pode alterar os arquivos do seu host e executar as ferramentas nos arquivos através do docker_
+
+Dentro do docker, execute:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### Manticore através do pip {#manticore-through-pip}
+
+```bash
+pip3 install --user manticore
+```
+
+solc 0.5.11 é recomendado.
+
+### Executando um script {#running-a-script}
+
+Para executar um script python com python 3:
+
+```bash
+python3 script.py
+```
+
+## Introdução à execução simbólica dinâmica {#introduction-to-dynamic-symbolic-execution}
+
+### Execução Simbólica Dinâmica em uma Nutshell {#dynamic-symbolic-execution-in-a-nutshell}
+
+A execução simbólica dinâmica (DSE) é uma técnica de análise de programa que explora um espaço de estado com um alto grau de consciência semântica. Esta técnica baseia-se na descoberta de "caminhos do programa", representados como fórmulas matemáticas chamadas de `predicados de caminho`. Conceitualmente, esta técnica opera em predicados de caminho em dois passos:
+
+1. Eles são construídos usando restrições na entrada de dados do programa.
+2. Eles são usados para gerar entradas no programa que farão com que os caminhos associados sejam executados.
+
+Esta abordagem não produz falsos positivos no sentido de que todos os estados identificados do programa podem ser acionados durante a execução concreta. Por exemplo, se a análise encontrar um integer overflow, é certo que será reproduzível.
+
+### Exemplo de Predicado do Caminho {#path-predicate-example}
+
+Para se ter uma idéia de como o DSE funciona, considere o seguinte exemplo:
+
+```solidity
+function f(uint a){
+
+ if (a == 65) {
+ // Um bug está presente
+ }
+
+}
+```
+
+Como `f()` contém dois caminhos, uma DSE construirá dois caminhos diferentes atribuídos:
+
+- Caminho 1: `a == 65`
+- Caminho 2: `Not (a == 65)`
+
+Cada caminho atribuido é uma fórmula matemática que pode ser dada a uma chamada [SMT solver](https://wikipedia.org/wiki/Satisfiability_modulo_theories), que tentará resolver a equação. Para o `Caminho 1`, o solver dirá que o caminho pode ser explorado com `a = 65`. Para o `Caminho 2`, o solver pode dar para `a` qualquer valor diferente de 65, por exemplo, `a = 0`.
+
+### Verificando propriedades {#verifying-properties}
+
+A Manticore permite um controle total sobre toda a execução de cada caminho. Como resultado, permite que você adicione restrições arbitrárias a quase qualquer coisa. Este controle permite a criação de propriedades no contrato.
+
+Considere o seguinte exemplo:
+
+```solidity
+function unsafe_add(uint a, uint b) returns(uint c){
+ c = a + b; // no overflow protection
+ return c;
+}
+```
+
+Aqui há apenas um caminho para explorar na função:
+
+- Caminho 1: `c = a + b`
+
+Usando o Manticore, você pode verificar se há overflow, e adicionar restrições à previsão do caminho:
+
+- `c = a + b AND (c < a OR c < b)`
+
+Se é possível encontrar uma avaliação de `um` e `b` para a qual o caminho predicado acima é viável, significa que encontrou um transbordamento ("overflow"). Por exemplo, o solver pode gerar a entrada `a = 10 , b = MAXUINT256`.
+
+Se você considerar uma versão fixa:
+
+```solidity
+function safe_add(uint a, uint b) returns(uint c){
+ c = a + b;
+ require(c>=a);
+ require(c>=b);
+ return c;
+}
+```
+
+A fórmula associada com verificação de overflow seria:
+
+- `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)`
+
+Esta fórmula não pode ser resolvida; em outras palavras, esta é uma **prova** que em `safe_add`, `c` irá sempre aumentar.
+
+DSE é assim uma ferramenta poderosa, que pode verificar restrições arbitrárias no seu código.
+
+## Executando sob Manticore {#running-under-manticore}
+
+Veremos como explorar um contrato inteligente com a API Manticore. O alvo é o seguinte contrato inteligente [`exemplo.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Executar uma exploração independente {#run-a-standalone-exploration}
+
+Você pode executar a Manticore diretamente no contrato inteligente pelo seguinte comando (`projeto` pode ser um Arquivo Solidity, ou um diretório de projeto):
+
+```bash
+$ manticore project
+```
+
+Você obterá a saída de casos de teste como este (a ordem pode mudar):
+
+```
+...
+... m.c.manticore:INFO: Generated testcase No. 0 - STOP
+... m.c.manticore:INFO: Generated testcase No. 1 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 2 - RETURN
+... m.c.manticore:INFO: Generated testcase No. 3 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 4 - STOP
+... m.c.manticore:INFO: Generated testcase No. 5 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 6 - REVERT
+... m.c.manticore:INFO: Results in /home/ethsec/workshops/Automated Smart Contracts Audit - TruffleCon 2018/manticore/examples/mcore_t6vi6ij3
+...
+```
+
+Sem informações adicionais, Manticore explorará o contrato com novas transações simbólicas até que não explore novos caminhos do contrato. Manticore não executa novas transações após uma falha (por exemplo: após um reversão).
+
+Manticore irá gerar as informações em um diretório `mcore_*`. Entre outros, você encontrará nesse diretório:
+
+- `global.summary`: cobertura e avisos do compilador
+- `test_XXXXX.summary`: cobertura, última instrução, saldos de conta por caso de teste
+- `test_XXXXX.tx`: lista detalhada de transações por caso de teste
+
+Aqui, Manticore encontrou 7 casos de teste, que correspondem à (a ordem do nome do arquivo pode mudar):
+
+| | Transação 0 | Transação 1 | Transação 2 | Resultado |
+|:--------------------:|:-------------------:|:----------------------:| ---------------------- |:---------:|
+| **test_00000000.tx** | Criação de contrato | f(!=65) | f(!=65) | STOP |
+| **test_00000001.tx** | Criação de contrato | função de contingência | | REVERT |
+| **test_00000002.tx** | Criação de contrato | | | RETURN |
+| **test_00000003.tx** | Criação de contrato | f(65) | | REVERT |
+| **test_00000004.tx** | Criação de contrato | f(!=65) | | STOP |
+| **test_00000005.tx** | Criação de contrato | f(!=65) | f(65) | REVERT |
+| **test_00000006.tx** | Criação de contrato | f(!=65) | função de contingência | REVERT |
+
+_Resumo da exploração f(!=65) denota f chamado com qualquer valor diferente de 65._
+
+Como você pode perceber, Manticore gera um caso de teste único para cada transação bem sucedida ou revertida.
+
+Use a flag `--quick-mode` se você quiser uma exploração rápida de código (ele desativa detectores de bugs, cálculo de gas, ...)
+
+### Manipule um contrato inteligente através da API {#manipulate-a-smart-contract-through-the-api}
+
+Esta seção descreve detalhes sobre como manipular um contrato inteligente através da API Manticore Python. Você pode criar um novo arquivo com a extensão python `*. y` e escreva o código necessário adicionando os comandos da API (básicos dos quais serão descritos abaixo) neste arquivo e então execute-o com o comando `$ python3 *. a`. Também você pode executar os comandos abaixo diretamente no console python, para executar o console use o comando `$ python3`.
+
+### Criando Contas {#creating-accounts}
+
+A primeira coisa que você deve fazer é iniciar uma nova blockchain com os seguintes comandos:
+
+```python
+from manticore.ethereum import ManticoreEVM
+```
+
+Uma conta de não-contrato é criada usando [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
+
+```python
+user_account = m.create_account(balance=1000)
+```
+
+Um contrato de Solidity pode ser implantado usando [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract):
+
+```solidity
+source_code = '''
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+'''
+# Iniciar o contrato
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+```
+
+#### Resumo {#summary}
+
+- Você pode criar contas de usuário e contratos com [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) and [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
+
+### Executando transações {#executing-transactions}
+
+Manticore suporta dois tipos de transação:
+
+- Transação bruta: todas as funções são exploradas
+- Transação nomeada: apenas uma função é explorada
+
+#### Transação bruta {#raw-transaction}
+
+Uma transação bruta é executada usando [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction):
+
+```python
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=data,
+ value=value)
+```
+
+O chamador, o endereço, os dados ou o valor da transação pode ser concreto ou simbólico:
+
+- [m.make_symbollic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) cria um valor simbólico.
+- [m.make_symbollic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) cria um valor simbólico "byte array".
+
+Por exemplo:
+
+```python
+symbolic_value = m.make_symbolic_value()
+symbolic_data = m.make_symbolic_buffer(320)
+m.transaction(caller=user_account,
+ address=contract_address,
+ data=symbolic_data,
+ value=symbolic_value
+```
+
+Se os dados forem simbólicos, Manticore irá explorar todas as funções do contrato durante a execução da transação. Será útil ver a explicação de Função de Fallback nas [Mãos do CTF Ethernaut](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/), artigo para entender como a seleção de função funciona.
+
+#### Transação nomeada {#named-transaction}
+
+Funções podem ser executadas através de seu nome. Para executar `f(uint var)` com um valor simbólico, do user_account, e com 0 ether, use:
+
+```python
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var, caller=user_account, value=0)
+```
+
+Se `valor` da transação não for especificado, ela é 0 por padrão.
+
+#### Resumo {#summary-1}
+
+- Os argumentos de uma transação podem ser concretos ou simbólicos
+- Uma transação bruta irá explorar todas as funções
+- A função pode ser chamada pelo nome
+
+### Espaço de trabalho {#workspace}
+
+`m.workspace` é o diretório usado como diretório de saída para todos os arquivos gerados:
+
+```python
+print("Results are in {}".format(m.workspace))
+```
+
+### Terminar a Exploração {#terminate-the-exploration}
+
+Para parar a exploração, use [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize). Nenhuma transação adicional deve ser enviada quando este método for chamado e a Manticore gerar casos de teste para cada caminho explorado.
+
+### Resumo: Executando sob Manticore {#summary-running-under-manticore}
+
+Juntando todos os passos anteriores, obtemos:
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+print("Results are in {}".format(m.workspace))
+m.finalize() # stop the exploration
+```
+
+Todo o código acima você pode encontrar no [`exemple_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+
+## Obtendo caminhos {#getting-throwing-paths}
+
+Agora vamos gerar entradas específicas para os caminhos levantando uma exceção em `f()`. O alvo é ainda o seguinte contrato inteligente [`exemplo.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Usando informações do estado {#using-state-information}
+
+Cada caminho executado tem seu estado de blockchain. Um estado ou está pronto ou é morto, o que significa que atinge um caminho de THROW ou REVERT:
+
+- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): a lista de estados que estão prontos (não executaram um REVERT/INVALID)
+- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): a lista de estados que estão mortos
+- [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): todos os estados
+
+```python
+for state in m.all_statees:
+ # faz algo com estado
+```
+
+Você pode acessar informações de estado. Por exemplo:
+
+- `state.platform.get_balance(account.address)`: o saldo da conta
+- `state.platform.transactions`: a lista de transações
+- `state.platform.transactions[-1].return_data`: os dados retornados pela última transação
+
+Os dados retornados pela última transação são um array, que pode ser convertido para um valor com ABI.deserialize, por exemplo:
+
+```python
+data = state.platform.transactions[0].return_data
+data = ABI.deserialize("uint", data)
+```
+
+### Como gerar caixa de teste {#how-to-generate-testcase}
+
+Use [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) para gerar a caixa de teste:
+
+```python
+m.generate_testcase(estado, 'BugFound')
+```
+
+### Resumo {#summary-2}
+
+- Você pode iterar sobre o estado com m.all_states
+- `state.platform.get_balance(account.address)` retorna o saldo da conta
+- `state.platform.transactions` retorna a lista de transações
+- `Transtion.return_data` são os dados retornados
+- `m.generate_testcase(state, name)` gera entradas para o estado
+
+### Resumo: Obtendo o caminho de lançamento {#summary-getting-throwing-path}
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+## Verificando se a execução termina com um REVERT ou INVALID
+for state in m.terminated_states:
+ last_tx = state.platform.transactions[-1]
+ if last_tx.result in ['REVERT', 'INVALID']:
+ print('Throw found {}'.format(m.workspace))
+ m.generate_testcase(state, 'ThrowFound')
+```
+
+Todo o código acima você pode encontrar no [`exemple_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+
+_Note que poderíamos ter gerado um script muito mais simples, como todos os estados retornados por terminated_state REVERT ou INVALID no seu resultado: este exemplo foi destinado apenas para demonstrar como manipular a API._
+
+## Adicionar Restrições {#adding-constraints}
+
+Veremos como restringir a exploração. Vamos fazer a suposição de que a documentação de `f()` que afirma que a função nunca é chamada com `a == 65`, então qualquer erro com `a == 65` não é um bug de verdade. O alvo é o seguinte contrato inteligente [`exemplo.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### Operadores {#operators}
+
+O módulo [Operadores](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) facilita a manipulação de restrições, entre outras que fornece:
+
+- Operadores.AND,
+- Operadores.OR,
+- Operators.UGT (não assinado maior que),
+- Operators.UGE (não assinado maior ou igual a),
+- Operators.UGT (não assinado menor que),
+- Operators.ULE (menor que ou igual a).
+
+Para importar o módulo use o seguinte:
+
+```python
+from manticore.core.smtlib import Operators
+```
+
+`Operators.CONCAT` é usado para concatenar uma matriz a um valor. Por exemplo, o return_data de uma transação precisa ser alterado para um valor a ser verificado contra outro valor:
+
+```python
+last_return = Operators.CONCAT(256, *last_return)
+```
+
+### Restrições {#state-constraint}
+
+Você pode usar restrições globalmente ou para um estado específico.
+
+#### Restrição global {#state-constraint}
+
+Use `m.constrain(constraint)` para adicionar um constraint ("restrição") global. Por exemplo, você pode chamar um contrato de um endereço simbólico e restringir este endereço para serem valores específicos:
+
+```python
+symbolic_address = m.make_symbolic_value()
+m.constraint(Operators.OR(symbolic == 0x41, symbolic_address == 0x42))
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=m.make_symbolic_buffer(320),
+ value=0)
+```
+
+#### Restrição de estado {#state-constraint}
+
+Use o estado de [. onstrain(restrição)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) para adicionar uma restrição a um estado específico. Ele pode ser usado para restringir o estado após sua exploração para verificar alguma propriedade nele.
+
+### Verificando a constraint ("restrição") {#checking-constraint}
+
+Use `solver.check(state.constraints)` para saber se uma restrição ainda é viável. Por exemplo, o seguinte irá restringir o simbolic_valor para ser diferente do 65 e verificar se o estado ainda é viável:
+
+```python
+state.constrain(symbolic_var != 65)
+if solver.check(state.constraints):
+ # estado é viável
+```
+
+### Resumo: Adicionando constraints ("restrições") {#summary-adding-constraints}
+
+Adicionando constraints ("restrições") ao código anterior, obtemos:
+
+```python
+from manticore.ethereum import ManticoreEVM
+from manticore.core.smtlib.solver import Z3Solver
+
+solver = Z3Solver.instance()
+
+m = ManticoreEVM()
+
+with open("example.sol") as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+no_bug_found = True
+
+## Verificar se a execução termina com um REVERT ou INVALID
+for state in m.terminated_states:
+ last_tx = state.platform.transactions[-1]
+ if last_tx.result in ['REVERT', 'INVALID']:
+ # we do not consider the path were a == 65
+ condition = symbolic_var != 65
+ if m.generate_testcase(state, name="BugFound", only_if=condition):
+ print(f'Bug found, results are in {m.workspace}')
+ no_bug_found = False
+
+if no_bug_found:
+ print(f'No bug found')
+```
+
+Todo o código acima você pode encontrar no [`exemple_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..b9ac9dc2118
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,238 @@
+---
+title: Como utilizar o Slither para encontrar bugs nos contratos inteligentes
+description: Como usar o Slither para encontrar automaticamente bugs em contratos inteligentes
+author: Trailofbits
+lang: pt-br
+tags:
+ - "solidity"
+ - "smart contracts"
+ - "segurança"
+ - "testando"
+ - "análise estática"
+skill: advanced
+published: 2020-06-09
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither
+---
+
+## Como usar o Slither {#how-to-use-slither}
+
+O objetivo deste tutorial é mostrar como usar o Slither para localizar automaticamente bugs em contratos inteligentes.
+
+- [Instalação](#installation)
+- [Uso da linha de comando](#command-line)
+- [Introdução à análise estática](#static-analysis): Breve introdução à análise estática
+- [API](#api-basics): Descrição da API Python
+
+## Instalação {#installation}
+
+O Slither requer a versão 3.6 do Python ou superior. Pode ser instalado pelo pip ou usando o docker.
+
+Slither via pip:
+
+```bash
+pip3 install --user slither-analyzer
+```
+
+Slither através de docker:
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/trufflecon trailofbits/eth-security-toolbox
+```
+
+_O último comando roda a eth-security-toolbox em um docker que tem acesso ao seu diretório atual. Você pode alterar os arquivos do seu host e executar as ferramentas nos arquivos através do docker_
+
+Dentro do docker, execute:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### Executando um script {#running-a-script}
+
+Para executar um script python com python 3:
+
+```bash
+python3 script.py
+```
+
+### Linha de comando {#command-line}
+
+**Linha de comando versus scripts definidos pelo usuário.** O Slither vem com um conjunto de detectores predefinidos que encontram muitos bugs comuns. Chamar o Slither na linha de comando irá executar todos os detectores. Nenhum conhecimento detalhado da análise estática é necessária:
+
+```bash
+slither project_paths
+```
+
+Além de detectadores, o Slither possui recursos de revisão de código através de suas [printers](https://github.com/crytic/slither#printers) e [ferramentas](https://github.com/crytic/slither#tools).
+
+Use [crytic.io](https://github.com/crytic) para obter acesso a detectadores privados e integração GitHub.
+
+## Análise estática {#static-analysis}
+
+Os recursos e design do framework estático de análise do Slither foram descritos nos posts de blog ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/)), [2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) e em um [documento acadêmico](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf).
+
+A análise estática existe em diferentes "flavors". Você provavelmente percebe que compiladores como [clang](https://clang-analyzer.llvm.org/) e [gcc](https://lwn.net/Articles/806099/) dependem destas técnicas de pesquisa, mas também sustenta ([Infer](https://fbinfer.com/), [CodeClimate](https://codeclimate.com/), [FindBugs](http://findbugs.sourceforge.net/) e ferramentas baseadas em métodos formais como [Frama-C](https://frama-c.com/) e [Polyspace](https://www.mathworks.com/products/polyspace.html).
+
+Nós não analisaremos exaustivamente técnicas de análise estática e pesquisador aqui. Em vez disso, vamos focar no que é necessário para entender como o Slither funciona para que você possa usá-lo de forma mais eficiente para encontrar bugs e entender códigos.
+
+- [Representação de código](#code-representation)
+- [Análise de código](#analysis)
+- [Representação intermediária](#intermediate-representation)
+
+### Representação de código {#code-representation}
+
+Em contraste com uma análise dinâmica, que justifica um único caminho de execução, razões de análise estática sobre todos os caminhos ao mesmo tempo. Para isso, ele depende de uma representação diferente do código. As duas mais comuns são a árvore de sintaxe abstrata (AST) e o gráfico de fluxo de controle (CFG).
+
+### Árvores de sintaxe abstratas (AST) {#abstract-syntax-trees-ast}
+
+AST é usado toda vez que o compilador analisa o código. É provavelmente a estrutura mais básica sobre a qual se pode efetuar a análise estática.
+
+Em poucas palavras, a AST é uma árvore estruturada onde, normalmente, cada folha contém uma variável ou uma constante e os nós internos são operações ou operações de fluxo de controle. Considere o seguinte código:
+
+```solidity
+function safeAdd(uint a, uint b) pure internal returns(uint){
+ if(a + b <= a){
+ revert();
+ }
+ return a + b;
+}
+```
+
+O AST correspondente é mostrado em:
+
+![AST](./ast.png)
+
+O Slither usa o AST exportado pelo solc.
+
+Enquanto for simples construir, o AST é uma estrutura aninhada. Por vezes, esta não é a mais simples de analisar. Por exemplo, para identificar as operações usadas pela expressão `a + b <= a`,, primeiro você deve analisar `<=` e, em seguida, `+`. Uma abordagem comum é usar o chamado padrão de visitantes, que navega pela árvore recursivamente. O Slither contém um visitante genérico em [`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py).
+
+O código a seguir usa `ExpressionVisitor` para detectar se a expressão contém uma adição:
+
+```python
+from slither.visitors.expression.expression import ExpressionVisitor
+from slither.core.expressions.binary_operation import BinaryOperationType
+
+class HasAddition(ExpressionVisitor):
+
+ def result(self):
+ return self._result
+
+ def _post_binary_operation(self, expression):
+ if expression.type == BinaryOperationType.ADDITION:
+ self._result = True
+
+visitor = HasAddition(expression) # expression is the expression to be tested
+print(f'The expression {expression} has a addition: {visitor.result()}')
+```
+
+### Controlar Gráfico de Fluxos (CFG) {#control-flow-graph-cfg}
+
+A segunda representação de código mais comum é o gráfico de fluxo de controle (CFG). Como seu nome sugere, é uma representação baseada em gráficos que expõe todos os caminhos de execução. Cada nó contém uma ou várias instruções. Bordas no gráfico representam as operações de fluxo de controle (se/então/outra vez, loop, etc). O nosso exemplo anterior é o do CFG:
+
+![CFG](./cfg.png)
+
+O CFG é a representação que está por cima da qual se constrói a maioria das análises.
+
+Existem muitas outras representações de código. Cada representação tem vantagens e desvantagens de acordo com a análise que você deseja realizar.
+
+### Análise {#analysis}
+
+O tipo mais simples de análises que você pode realizar com o Slither são análises sintáticas.
+
+### Análises de sintaxe {#syntax-analysis}
+
+O Slither pode navegar através dos diferentes componentes do código e sua representação para encontrar inconsistências e falhas usando uma abordagem semelhante a padrões de correspondência.
+
+Por exemplo, os seguintes detectores procuram por problemas relacionados à sintaxe:
+
+- [State variable shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing): itera sobre todas as variáveis de estado e verifica se tem alguma variável "shadow" de um contrato herdado ([state.py#L51-L62](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/shadowing/state.py#L51-L62))
+
+- [Interface ERC20 incorreta](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface): procurar por assinaturas de função ERC20 incorretas ([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55))
+
+### Análise semântica {#semantic-analysis}
+
+Em contraste com a análise de sintaxe, uma análise semântica vai aprofundar e analisar o "significado" do código. Esta família inclui vários tipos de análises. Conduzem a resultados mais poderosos e úteis, mas são também mais complexos de escrever.
+
+Análises semânticas são usadas para detecções de vulnerabilidades mais avançadas.
+
+#### Análise de dependência de dados {#fixed-point-computation}
+
+Uma variável `variable_a` diz ser dependente de dados `variable_b` se houver um caminho para o qual o valor de `variable_a` seja influenciado pela `variable_b`.
+
+No código a seguir, `variable_a` depende de `variable_b`:
+
+```solidity
+// ...
+variable_a = variable_b + 1;
+```
+
+O Slither vem com capacidades embutidas de [dependência de dados,](https://github.com/crytic/slither/wiki/data-dependency) graças à sua representação intermediária (discutida em uma seção posterior).
+
+Um exemplo de uso de dependência de dados pode ser encontrado em ["dangerous strict equality detector"](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities). Aqui o Slither procurará por uma comparação rigorosa de igualdade com um valor perigoso ([incorrect_strict_equality. y#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87)), e informará o usuário que deve usar `>=` ou `<=` ao invés de `==`para evitar um invasor para prender o contrato. Entre outros, o detector considerará como perigoso o valor de retorno de uma chamada para o `balanceOf(endereço)` ([incorrect_strict_equality. y#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64)), e usará o mecanismo de dependência de dados para rastrear seu uso.
+
+#### Cálculo de ponto fixo {#fixed-point-computation}
+
+Se a sua análise navegar através do CFG e seguir as bordas, é provável que você veja os nós já visitados. Por exemplo, se um loop é apresentado como mostrado abaixo:
+
+```solidity
+for(uint i; i < range; ++){
+ variable_a += 1
+}
+```
+
+A sua análise terá de saber quando parar. Existem duas estratégias principais aqui: (1) iterar em cada nó um número finito de vezes, (2) calcular um chamado _fixpoint_. Um ponto de acesso basicamente significa que a análise deste nó não fornece nenhuma informação significativa.
+
+Um exemplo de fixpoint usado pode ser encontrado nos detectadores de reentrância: Slither explora os nós, e procurar por chamadas externas, escrever e ler para armazenar. Uma vez que chegou a um ponto de correção ("fixpoint") ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)), interrompe a exploração e analisa os resultados para ver se uma reentrância está presente, através de diferentes padrões de reentrada ([reentrancy_benign. y](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py), [reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py), [reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py)).
+
+Escrever análises usando um cálculo de ponto fixo eficiente requer um bom entendimento de como a análise propaga sua informação.
+
+### Representação intermediária {#intermediate-representation}
+
+Uma representação intermediária (IR) é uma linguagem que deve ser mais acessível à análise estática do que a original. Slither traduz Solidity para seu próprio IR: [SlithIR](https://github.com/crytic/slither/wiki/SlithIR).
+
+Compreender o SlithIR não é necessário se você quiser apenas escrever verificações básicas. No entanto, será útil se você planejar escrever análises semânticas avançadas. As [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir) e [SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa)printers irão ajudá-lo a entender como o código é traduzido.
+
+## API Básica {#api-basics}
+
+Slither tem uma API que permite explorar os atributos básicos do contrato e suas funções.
+
+Carregando um codebase:
+
+```python
+from slither import Slither
+slither = Slither('/path/to/project')
+
+```
+
+### Explorando contratos e funções {#exploring-contracts-and-functions}
+
+Um objeto `Slither` contém:
+
+- contracts`contracts (list(Contract)`: lista de contratos
+- `contracts_derived (list(Contract)`: lista de contratos que não são herdados por outro contrato (subconjunto de contratos)
+- `get_contract_from_name (str)`: Retorna um contrato a partir de seu nome
+
+Um objeto `Slither` contém:
+
+- `name (str)`: Nome do contrato
+- `functions (list(Function))`: Lista de funções
+- `modifiers (list(Modifier))`: Lista de funções
+- `all_functions_called (list(Função/Modificador))`: Lista de todas as funções internas acessíveis pelo contrato
+- `herança (lista(contrato))`: Lista de contratos herdados
+- `get_function_from_signature (str)`: Retorna uma função a partir de sua assinatura
+- `get_function_from_signature (str)`: Retorna uma função a partir de sua assinatura
+- `get_contract_from_name (str)`: Retorna um contrato a partir de seu nome
+
+Um objeto `Function` ou `Modifier` têm:
+
+- `name (str)`: Nome da função
+- `contract (contract)`: o contrato onde a função é declarada
+- `nodes (list(Node))`: Lista dos nós que compõem o CFG da função/modificador
+- `entry_point (Node)`: Ponto de entrada do CFG
+- `variables_read (list(variável))`: Lista de variáveis lidas
+- `variables_written (list(variável))`: Lista de variáveis escritas
+- `state_variables_read (list(StateVariable))`: Lista de variáveis de estado lidas (subconjunto de variáveis lidas)
+- `state_variables_written (list(StateVariable))`: Lista de variáveis de estado escritas (subconjunto de variáveis escritas)
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
new file mode 100644
index 00000000000..2dae6657637
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -0,0 +1,84 @@
+---
+title: Como configurar Tellor como seu Oráculo
+description: Um guia para começar a integrar o oráculo Tellor ao seu protocolo
+author: "Tellor"
+lang: pt-br
+tags:
+ - "solidity"
+ - "contratos inteligentes"
+ - "oráculos"
+skill: intermediate
+published: 2021-06-29
+source: Documentação Tellor
+sourceUrl: https://docs.tellor.io/tellor/
+---
+
+Pop Quiz: Seu protocolo está quase pronto, mas precisa de um oráculo para obter acesso aos dados off-chain... O que você faz?
+
+## (Soft) Pré-requisitos {#soft-prerequisites}
+
+Esse texto tem como objetivo tornar o acesso a um conjunto de dados através do uso de um oráculo o mais simples e direto possível. Dito isso, estamos assumindo o seguinte sobre seu nível de habilidade de codificação para focar no aspecto do oráculo.
+
+Suposições:
+
+- você pode navegar em um terminal
+- você tem o npm instalado
+- você sabe como usar o npm para gerenciar dependências
+
+Tellor é um oráculo vivo e de código aberto pronto para implementação. Este guia para iniciantes está aqui para mostrar a facilidade com que se pode começar a trabalhar com Tellor, fornecendo ao seu projeto um oráculo totalmente descentralizado e resistente à censura.
+
+## Visão geral {#overview}
+
+Tellor é um sistema de oráculo onde as partes podem solicitar o valor de um ponto de dados off-chain (por exemplo, BTC/USD) e os repórteres (nós ou participantes) competem para adicionar esse valor a um banco de dados on-chain, acessível por todos os contratos inteligentes do Ethereum. As entradas para este banco de dados são asseguradas por uma rede de repórteres participantes. Tellor utiliza mecanismos de incentivo cripto-econômico, recompensando envios de dados honestos por repórteres e punindo maus atores por meio da emissão do token Tellor, Tributos (TRB) e um mecanismo de disputa.
+
+Neste tutorial, nós iremos ver:
+
+- Configurar o kit de ferramentas inicial, que você precisará para começar a trabalhar.
+- Percorra por um exemplo simples.
+- Listar os endereços de teste das redes as quais você pode testar o Tellor atualmente.
+
+## UsingTellor {#usingtellor}
+
+A primeira coisa que você vai querer fazer é instalar as ferramentas básicas necessárias para usar o Tellor como seu oráculo. Use [este pacote](https://github.com/tellor-io/usingtellor) para instalar os contratos de usuário do Tellor:
+
+`npm install usingtellor`
+
+Uma vez instalado, isso permitirá que seus contratos herdem as funções do contrato 'UsingTellor'.
+
+Excelente! Agora que você tem as ferramentas prontas, vamos passar por um simples exercício onde recuperamos o preço do bitcoin:
+
+### Exemplo BTC/USD {#btcusd-example}
+
+Herde o contrato UsingTellor, passando o endereço do Tellor como um argumento do construtor:
+
+Aqui está um exemplo:
+
+```solidity
+import "usingtellor/contracts/UsingTellor.sol";
+
+contract PriceContract is UsingTellor {
+ uint256 public btcPrice;
+
+ //This Contract now has access to all functions in UsingTellor
+
+constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}
+
+function setBtcPrice() public {
+ bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd"));
+ bytes32 _queryId = keccak256(_b);
+
+ uint256 _timestamp;
+ bytes _value;
+
+ (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes);
+
+ btcPrice = abi.decode(_value,(uint256));
+ }
+}
+```
+
+Para uma lista completa de endereços de contrato, consulte [aqui](https://docs.tellor.io/tellor/the-basics/contracts-reference).
+
+Para facilidade de uso, o repositório UsingTellor vem com uma versão do contrato [Tellor Playground](https://github.com/tellor-io/TellorPlayground) para facilitar a integração. Consulte [aqui](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) para obter uma lista de funções úteis.
+
+Para uma implementação mais robusta do oráculo Tellor, confira a lista completa de funções, disponíveis [aqui](https://github.com/tellor-io/usingtellor/blob/master/README.md).
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-view-nft-in-metamask/index.md
index c5a4eaf33c3..3171780741b 100644
--- a/public/content/translations/pt-br/developers/tutorials/how-to-view-nft-in-metamask/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-view-nft-in-metamask/index.md
@@ -1,12 +1,12 @@
---
title: Como ver seu NFT na sua carteira (Parte 3/3 da série de tutorial sobre NFT)
-description: Este tutorial descreve como visualizar um NFT existente no MetaMask!
+description: This tutorial describes how to view an existing NFT on MetaMask!
author: "Sumi Mudgil"
tags:
- "ERC-721"
- "Alchemy"
- "Solidity"
-skill: beginner
+skill: intermediate
lang: pt-br
published: 2021-04-22
---
@@ -17,15 +17,15 @@ Parabéns! Você chegou à parte mais curta e simples da nossa série de tutoria
Como pré-requisito, você já deve ter MetaMask instalado no celular e deve incluir a conta para a qual você cunhou seu NFT. Você pode obter o aplicativo gratuitamente no [iOS](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) ou [Android](https://play.google.com/store/apps/details?id=io.metamask&hl=en_US&gl=US).
-## Passo 1: Definir a sua rede como Goerli {#set-network-to-goerli}
+## Passo 1: Defina sua rede para Sepolia {#set-network-to-sepolia}
-No topo do aplicativo, pressione o botão "Wallet". Em seguida, você será solicitado a selecionar uma rede. Como o nosso NFT foi cunhado na rede Goerli, selecione Goerli como a sua rede.
+No topo do aplicativo, pressione o botão "Wallet". Em seguida, você será solicitado a selecionar uma rede. Como nosso NFT foi cunhado na rede Sepolia, você deverá selecionar Sepolia como sua rede.
-![Como definir a Goerli como sua rede na MetaMask Mobile](./goerliMetamask.gif)
+![Como definir Sepolia como sua rede no MetaMask Mobile](./goerliMetamask.gif)
## Passo 2: Adicionar o seu colecionável ao MetaMask {#add-nft-to-metamask}
-Assim que você estiver na rede Goerli, selecione a guia "Colecionáveis" na direita e adicione o endereço do contrato inteligente do NFT e o ID do token ERC-721 correspondente, que você deve encontrar no Etherscan com base no hash de transação do seu NFT, como visto na Parte II do nosso tutorial.
+Quando estiver na rede Sepolia, selecione a guia “Colecionáveis” à direita e adicione o endereço do contrato inteligente NFT e o ID do token ERC-721 do seu NFT - o qual você poderá encontrar no Etherscan com base no hash da transação do seu NFT implantado na Parte II do nosso tutorial.
![Como encontrar seu hash de transação e o ID do token ERC-721](./findNFTEtherscan.png)
diff --git a/public/content/translations/pt-br/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/pt-br/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
index f2727475e78..1419b4d33c0 100644
--- a/public/content/translations/pt-br/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
@@ -7,7 +7,7 @@ tags:
- "Alchemy"
- "Solidity"
- "contratos inteligentes"
-skill: beginner
+skill: intermediate
lang: pt-br
published: 2021-04-22
---
@@ -16,7 +16,7 @@ Com os NFTs trazendo a blockchain aos olhos do público, agora é uma excelente
A Alchemy tem muito orgulho por estar no espaço NFT com os maiores nomes incluindo Makersplace (recentemente atingiu a marca de 69 milhões de doláres em vendas de artes digitais), Dapper Labs (criadores do NBA Top Shot e Crypto Kitties), OpenSea (o maior mercado de NFT do mundo), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable e muito mais.
-Neste tutorial, veremos como criar e implantar um contrato inteligente ERC-721 na rede de teste Goerli usando [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) e [Alchemy](https://alchemy.com/signup/eth) (não se preocupe se você não entender o que isso significa — vamos explicar!).
+Neste tutorial, nós vamos criar e implantar um contrato inteligente ERC-721 na rede de teste Sepolia usando [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) e [Alquimia](https://alchemy.com/signup/eth) (não se preocupe caso não entender o que tudo isso significa — explicaremos tudo!).
Na parte 2 deste tutorial, veremos como podemos usar nosso contrato inteligente para gerar NFT, e na Parte 3, explicaremos como ver seu NFT no MetaMask.
@@ -30,15 +30,15 @@ Neste tutorial, também aproveitaremos as ferramentas de desenvolvedor da Alchem
## Etapa 2: Criar seu aplicativo (e chave de API) {#make-api-key}
-Assim que criar uma conta na Alchemy, você pode gerar uma chave de API criando um "app". Isso nos permitirá fazer solicitações na rede de teste Goerli. Confira [este guia](https://docs.alchemyapi.io/guides/choosing-a-network) se você está curioso para aprender mais sobre as redes de teste.
+Assim que criar uma conta na Alchemy, você pode gerar uma chave de API criando um "app". Isso nos permitirá fazer solicitações à rede de teste Sepolia. Confira [este guia](https://docs.alchemyapi.io/guides/choosing-a-network) se você está curioso para aprender mais sobre as redes de teste.
1. Vá até a página "Create App" no painel da Alchemy, passe o mouse sobre a palavra "Apps" na barra de navegação e clique em "Create App"
![Crie seu aplicativo](./create-your-app.png)
-2. Nomeie seu aplicativo (escolhemos “Meu primeiro NFT!”), faça uma breve descrição dele, selecione “Ethereum” para a cadeia e escolha “Goerli” para sua rede. Desde a fusão, as outras redes de teste foram descontinuadas.
+2. Nomeie seu app (nós escolhemos “Meu primeiro NFT!”), ofereça uma breve descrição, selecione “Ethereum” para a rede e escolha “Sepolia” para sua rede. Desde a fusão, as outras redes de teste foram descontinuadas.
-![Configure e publique seu aplicativo](./configure-and-publish-your-app.png)
+![Configure e publique seu aplicativo](./alchemy-explorer-sepolia.png)
3. Clique em "Create App", e é isso e tudo! Seu app deveria aparecer na tabela abaixo.
@@ -46,13 +46,13 @@ Assim que criar uma conta na Alchemy, você pode gerar uma chave de API criando
Precisamos de uma conta Ethereum para enviar e receber transações. Para este tutorial, usaremos uma carteira virtual no navegador, a MetaMask, para gerenciar o endereço da sua conta Ethereum. Se você quiser entender mais sobre como as transações no Ethereum funcionam, confira [esta página](/developers/docs/transactions/) na Fundação Ethereum.
-Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando você estiver criando uma conta, ou se já tiver uma conta, certifique-se de mudar para a “Rede de teste Goerli”, no canto superior direito (para que não estejamos lidando com dinheiro real).
+Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando você estiver criando uma conta, ou se você já tiver uma, certifique-se de mudar para a “Sepolia Test Network” no canto superior direito (para que não lidemos com dinheiro real).
-![Defina Goerli como sua rede](./metamask-goerli.png)
+![Defina Sepolia como sua rede](./metamask-goerli.png)
## Etapa 4: Adicionar ether de um faucet {#step-4-add-ether-from-a-faucet}
-Para implementar nosso contrato inteligente na rede de teste, precisaremos de alguns ETHs de imitação. Para obter ETH, você pode acessar [Goerli Faucet](https://goerlifaucet.com/) hospedado pela Alchemy, fazer login e inserir o endereço da sua conta, clicar em "Send Me ETH". Você deveria ver o ETH na sua conta MetaMask logo depois!
+Para implementar nosso contrato inteligente na rede de teste, precisaremos de alguns ETHs de imitação. Para obter ETH, você pode acessar a [Torneira da Sepolia](https://sepoliafaucet.com/) hospedada pela Alchemy, fazer login, inserir o endereço da sua conta e clicar em "Enviar-me ETH". Você deveria ver o ETH na sua conta MetaMask logo depois!
## Etapa 5: Verificar seu saldo {#check-balance}
@@ -87,7 +87,7 @@ Não importa realmente como você responde às questões de instalação; aqui e
author:
license: (ISC)
About to write to /Users/thesuperb1/Desktop/my-nft/package.json:
-
+
{
"name": "my-nft",
"version": "1.0.0",
@@ -234,14 +234,12 @@ Então crie um arquivo `.env` no diretório raiz do nosso projeto e adicione sua
Seu arquivo `.env` ficará assim:
- API_URL="https://eth-goerli.g.alchemy.com/v2/your-api-key"
+ API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY="your-metamask-private-key"
Para realmente conectá-las ao nosso código, referenciaremos essas variáveis em nosso arquivo hardhat.config.js na etapa 13.
-
-No faça commit do .env! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env ao arquivo gitignore.
-
+
## Etapa 12: Instalar o Ethers.js {#install-ethers}
@@ -249,7 +247,7 @@ Ethers.js é uma biblioteca que facilita a interação e o envio de solicitaçõ
Hardhat torna muito fácil a integração de [plugins](https://hardhat.org/plugins/), para ferramentas adicionais e funcionalidades extendidas. Aproveitaremos o [plugin Ethers](https://hardhat.org/plugins/nomiclabs-hardhat-ethers.html) para implantação de contratos. ([Ethers.js](https://github.com/ethers-io/ethers.js/) tem alguns métodos de implantação de contratos bastante claros).
-No diretório do seu projeto, digite:
+No diretório do projeto, digite:
npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0
@@ -269,10 +267,10 @@ Atualize seu hardhat.config.js para ficar assim:
const { API_URL, PRIVATE_KEY } = process.env;
module.exports = {
solidity: "0.8.1",
- defaultNetwork: "goerli",
+ defaultNetwork: "sepolia",
networks: {
hardhat: {},
- goerli: {
+ sepolia: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
}
@@ -287,7 +285,7 @@ Na linha de comando, execute:
npx hardhat compile
-Você pode receber o aviso "SPDX license identifier not provided in source file", mas não há necessidade de se preocupar com isso. Esperamos que tudo mais esteja bem! Se não, você sempre pode enviar uma mensagem no [discord Alchemy](https://discord.gg/u72VCg3).
+Você pode receber o aviso do identificador de licença SPDX não fornecido no arquivo fonte, mas não há necessidade de se preocupar com isso. Esperemos que tudo mais esteja bem! Se não, você sempre pode enviar uma mensagem no [discord Alchemy](https://discord.gg/u72VCg3).
## Etapa 15: Escrever nosso script de implantação {#write-deploy}
@@ -317,7 +315,7 @@ A Hardhat fez um trabalho incrível ao explicar o que cada uma dessas linhas de
const MyNFT = await ethers.getContractFactory("MyNFT");
-Uma ContractFactory em ethers.js é uma abstração usada para implantar novos contratos inteligentes, então, MyNFT aqui representa uma fábrica para instâncias do nosso contrato NFT. Ao usar o plug-in hardhat-ethers, as instâncias ContractFactory e Contract são conectadas ao primeiro signatário por padrão.
+Uma ContractFactory em ethers.js é uma abstração usada para implantar novos contratos inteligentes, então a MyNFT aqui representa uma fábrica para instâncias do nosso contrato NFT. Ao usar o plug-in hardhat-ethers, as instâncias ContractFactory e Contract são conectadas ao primeiro signatário por padrão.
const myNFT = await MyNFT.deploy();
@@ -327,26 +325,26 @@ Ao chamar deploy() em uma ContractFactory, a implantação se iniciará e retorn
Finalmente estamos prontos para implantar o nosso contrato inteligente! Navegue de volta para a raiz do diretório do seu projeto e, na linha de comando, execute:
- npx hardhat --network goerli run scripts/deploy.js
+ npx hardhat --network sepo lia run scripts/deploy.js
Você deverá ver algo assim:
Contrato implantado no endereço: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650
-Se nós formos ao [Goerli etherscan](https://goerli.etherscan.io/) e procurarmos pelo endereço do nosso contrato, conseguiremos ver que ele foi implantado com sucesso. Se você não conseguir ver o endereço imediatamente, aguarde um momento, pois pode demorar algum tempo. A transação ficará parecida com isto:
+Se nós formos ao [Sepolia etherscan](https://sepolia.etherscan.io/) e procurarmos o endereço do nosso contrato, poderemos ver que ele foi implantado com sucesso. Se você não puder ver o endereço imediatamente, por favor, aguarde um momento, pois pode levar algum tempo. A transação ficará parecida com isto:
-![Veja o seu endereço de transação no Etherscan](./etherscan-goerli-contract-creation.png)
+![Veja o seu endereço de transação no Etherscan](./etherscan-sepoila-contract-creation.png)
O endereço do remetente (From) deve corresponder ao seu endereço da conta MetaMask e o endereço do destinatário (To) deve dizer "Contract Creation". Se clicarmos na transação, veremos o nosso endereço de contrato no campo "To":
-![Veja o seu endereço de contrato no Etherscan](./etherscan-goerli-tx-details.png)
+![Veja o seu endereço de contrato no Etherscan](./etherscan-sepolia-tx-details.png)
Sim! Você acabou de implantar seu contrato inteligente NFT na cadeia Ethereum (testnet)!
-Para entender o que está acontecendo nos bastidores, vamos navegar até a guia Explorer no [painel do Alchemy](https://dashboard.alchemyapi.io/explorer). Se você tem vários aplicativos Alchemy, certifique-se de filtrar por app e selecionar "MyNFT".
+Para entender o que está acontecendo nos bastidores, vamos navegar até a guia Explorer no [painel do Alchemy](https://dashboard.alchemyapi.io/explorer). Se você tem vários aplicativos Alchemy certifique-se de filtrar por app e selecionar "MyNFT".
![Exibir chamadas feitas "em segundo plano" com o Explorer Dashboard do Alquimia](./alchemy-explorer-goerli.png)
-Aqui você verá um punhado de chamadas JSON-RPC que Hardhat/Ethers fizeram em segundo plano para nós quando chamamos a função .deploy() . Duas chamadas importantes aqui são [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), que é o pedido para realmente escrever nosso contrato inteligente na cadeia Goerli e [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash) que é um pedido para ler informações sobre nossa transação, conforme o hash (um padrão típico ao enviar transações). Para saber mais sobre o envio de transações, confira [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre como enviar transações usando a Web3.
+Aqui você verá um punhado de chamadas JSON-RPC que Hardhat/Ethers fizeram em segundo plano para nós quando chamamos a função .deploy() . Dois importantes pontos a destacar aqui são [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), que é a solicitação para realmente escrever nosso contrato inteligente na cadeia Sepolia, e [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash), que é uma solicitação para ler informações sobre nossa transação dado o hash (um padrão típico ao enviar transações). Para saber mais sobre o envio de transações, confira [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre como enviar transações usando a web3.
Isso é tudo para a Parte 1 deste tutorial. Na [Parte 2, interagiremos com o nosso contrato inteligente cunhando um NFT](/developers/tutorials/how-to-mint-an-nft/), e na [Parte 3, mostraremos como ver o seu NFT na sua carteira Ethereum](/developers/tutorials/how-to-view-nft-in-metamask/)!
diff --git a/public/content/translations/pt-br/developers/tutorials/interact-with-other-contracts-from-solidity/index.md b/public/content/translations/pt-br/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
new file mode 100644
index 00000000000..53c8a1a6b79
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
@@ -0,0 +1,177 @@
+---
+title: Interaja com outros contratos de Solidity
+description: Como implantar um contrato inteligente a partir de um contrato existente e interagir com ele
+author: "jdourlens"
+tags:
+ - "contratos Inteligentes"
+ - "solidity"
+ - "remix"
+ - "implementação"
+ - "componibilidade"
+skill: advanced
+lang: pt-br
+published: 2020-04-05
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/interact-with-other-contracts-from-solidity/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+Nos tutoriais anteriores, aprendemos muito [como publicar seu primeiro contrato inteligente](/developers/tutorials/deploying-your-first-smart-contract/) e adicionar alguns recursos a ele, como [controlar o acesso com modificadores](https://ethereumdev.io/organize-your-code-and-control-access-to-your-smart-contract-with-modifiers/) ou [manipulação de erros no Solidity](https://ethereumdev.io/handle-errors-in-solidity-with-require-and-revert/). Neste tutorial, aprenderemos como implantar um contrato inteligente a partir de um contrato existente e interagir com ele.
+
+Faremos um contrato que permite a qualquer pessoa ter seu próprio contrato inteligente`Counter`, criando uma fábrica para ele. Seu nome será `CounterFactory`. De início, aqui está o código do nosso primeiro contrato inteligente `Counter`:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+```
+
+Note que modificamos ligeiramente o código do contrato para manter um controle do endereço da fábrica e do endereço do proprietário. Quando você chamar um código de contrato de outro contrato, o msg.sender irá consultar o endereço da nossa fábrica de contratos. Este é **um ponto muito importante para entender** como usar um contrato para interagir com outros contratos é uma prática comum. Você deve, portanto, cuidar de quem é o remetente em casos complexos.
+
+Para isso também adicionamos um modificador de `onlyFactory` que certifica-se de que a função de mudança de estado só pode ser chamada pela fábrica que passará o chamador original como um parâmetro.
+
+Dentro de nossa nova `CounterFactory` que gerenciará todos os outros Counters, adicionaremos um mapeamento que associará o proprietário ao endereço de seu contrato:
+
+```solidity
+mapping(address => Counter) _counters;
+```
+
+Na Ethereum, o mapeamento é equivalente a objetos em Javascript. Eles permitem mapear uma chave do tipo A para um valor do tipo B. Neste caso, mapeamos o endereço de um proprietário com a instância de seu Counter.
+
+Instanciar um novo Counter para alguém ficará assim:
+
+```solidity
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+```
+
+Primeiro, verificamos se a pessoa já possui um Counter. Se ele não tem um Counter, instanciamos um novo Counter, passando seu endereço para o construtor `Counter` e atribuímos a instância recém-criada para o mapeamento.
+
+Para obter a contagem de um Counter específico, fica assim:
+
+```solidity
+function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+}
+
+function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+}
+```
+
+A primeira função verifica se o contrato do Counter existe para um determinado endereço e, em seguida, chama o método `getCount` a partir da instância. A segunda função: `getMyCount` é apenas um breve fim para passar a função msg.sender diretamente para a função `getCount`.
+
+A função `increment` é bastante parecida, mas passa o remetente da transação original para o contrato `Counter`:
+
+```solidity
+function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+```
+
+Observe que, se for chamado várias vezes, nosso contador poderá ser vítima de um transbordamento ("overflow"). Você deve usar a [biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/) tanto quanto possível para se proteger deste possível caso.
+
+Para implantar nosso contrato, você precisará fornecer tanto o código da `CounterFactory` quanto o `Counter`. Ao implantar, por exemplo, em Remix, você precisará selecionar a CounterFactory.
+
+Aqui está o código completo:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+
+contract CounterFactory {
+
+ mapping(address => Counter) _counters;
+
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+
+ function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+
+ function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+ }
+
+ function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+ }
+
+}
+```
+
+Depois de compilar, na seção de implante de Remix, você selecionará a fábrica a ser implantada:
+
+![Selecionando a fábrica a ser implantada no Remix](./counterfactory-deploy.png)
+
+Então você pode brincar com sua fábrica de contrato e verificar a mudança de valor. Se você prefere chamar o contrato inteligente a partir de um endereço diferente, altere o endereço na Conta selecionada do Remix.
diff --git a/public/content/translations/pt-br/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/public/content/translations/pt-br/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
new file mode 100644
index 00000000000..d96aa4a5e30
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
@@ -0,0 +1,110 @@
+---
+title: Comece a desenvolver o front-end do seu dapp usando create-eth-app
+description: Uma visão geral de como criar um aplicativo eth-app e seus recursos
+author: "Markus Waas"
+tags:
+ - "create-eth-app"
+ - "front-end"
+ - "javascript"
+ - "ethers.js"
+ - "o grafo"
+ - "defi"
+skill: intermediate
+lang: pt-br
+published: 2020-04-27
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/create-eth-app
+---
+
+Da última vez, olhamos [para a grande imagem de Solidity](https://soliditydeveloper.com/solidity-overview-2020) e já mencionamos o app [create-eth-](https://github.com/PaulRBerg/create-eth-app). Agora você vai descobrir como usá-lo, quais recursos são integrados e ideias adicionais sobre como expandir sobre isso. Iniciado por Paul Razvan Berg, o fundador do [Sablier](http://sablier.com/), este aplicativo irá iniciar seu desenvolvimento de frontend e vem com várias integrações opcionais para escolher.
+
+## Instalação {#installation}
+
+A instalação requer Yarn 0.25 ou versão superior (`npm install yarn --global`). Ela é muito simples de executar:
+
+```bash
+yarn create eth-app my-eth-app
+cd my-eth-app
+yarn react-app:start
+```
+
+Está usando [create-react-app](https://github.com/facebook/create-react-app) debaixo do "hood". Para ver sua aplicação, abra `http://localhost:3000/`. Quando você estiver pronto para implantar em produção, crie um pacote minificado com o build Yarn. Uma maneira fácil de hospedar isso seria [Netlify](https://www.netlify.com/). Você pode criar um repositório GitHub, adicioná-lo ao Netlify, configurar o comando build e pronto! Seu aplicativo será hospedado e utilizável para todos. E tudo isso gratuitamente.
+
+## Funcionalidades {#features}
+
+### React & create-react-app {#react--create-react-app}
+
+Primeiro de tudo o coração da aplicação: React e todas as funcionalidades adicionais que vêm com o _create-react-app_. Usar apenas essa é uma ótima opção se você não quiser integrar a Ethereum. O [React](https://reactjs.org/) torna a construção de interfaces de usuário interativas muito fácil. Ele pode não ser tão simples para iniciantes como o [Vue](https://vuejs.org/), mas ainda é o mais usado, tem mais recursos e, sobretudo, conta com milhares de opções de bibliotecas adicionais. O _create-react-app_ torna muito fácil começar com ele também e inclui:
+
+- React, JSX, ES6, TypeScript, Sintaxe Flow.
+- Idioma extra além do ES6 como o operador de propagação de objetos.
+- CSS prefixados automaticamente, para que você não precise de -webkit- ou outros prefixos.
+- Um rápido corretor de teste de unidade interativa com suporte embutido para relatórios de cobertura.
+- Um servidor de desenvolvimento dinâmico que avisa sobre erros comuns.
+- Um script de compilação para empacotar JS, CSS e imagens para produção, com hashes e sourcemaps.
+
+O _create-eth-app_ em particular está usando novos [efeitos de hooks](https://reactjs.org/docs/hooks-effect.html). Um método para escrever componentes ditos funcionais, poderosos, mas muito pequenos. Veja a seção abaixo sobre Apollo sobre como eles são usados no _create-eth-app_.
+
+### Yarn workspaces {#yarn-workspaces}
+
+[Yarn Workspace](https://classic.yarnpkg.com/en/docs/workspaces/) permite que você tenha vários pacotes, mas ser capaz de gerenciar tudo a partir da pasta raiz e instalar as dependências de uma só vez usando `yarn install`. Isso faz sentido especialmente para pacotes adicionais menores, como o gerenciamento de endereços de contratos inteligentes / ABI (a informação sobre onde você implementou quais contratos inteligentes e como se comunicar com eles) ou a integração de grafos, ambos parte do `create-eth-app`.
+
+### ethers.js {#ethersjs}
+
+Enquanto o [Web3](https://docs.web3js.org/) ainda é mais usado, [ethers. s](https://docs.ethers.io/) tem recebido muito mais tração como uma alternativa no último ano e é integrada no _create-eth-app_. Você pode trabalhar com este, alterá-lo para Web3 ou considerar a possibilidade de atualizar para [ethers.js v5](https://docs-beta.ethers.io/) que já quase saiu da versão beta.
+
+### The Graph {#the-graph}
+
+[GraphQL](https://graphql.org/) é uma forma alternativa de manipular dados em comparação com uma [Restful API](https://restfulapi.net/). Eles têm várias vantagens sobre o Restful Apis, especialmente para dados descentralizados da blockchain. Se você estiver interessado no raciocínio por trás disso, dê uma olhada no [GraphQL Will Power the Decentralized Web](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a).
+
+Geralmente, você obteria dados diretamente do seu contrato inteligente. Gostaria de saber o horário da última transação? Basta chamar `MyContract.methods.latestTradeTime().call()` que busca os dados de um nó Ethereum em seu dapp. Mas e se você precisar de centenas de pontos de dados diferentes? Isso resultaria em centenas de buscas de dados para o nó, cada vez exigindo um [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) tornando seu dapp lento e ineficiente. Uma solução alternativa pode ser uma função de busca de chamadas dentro do seu contrato que retorna vários dados de uma só vez. Mas nem sempre é o ideal.
+
+E então talvez também estejam interessados em dados históricos. Você quer saber não apenas a última troca, mas também os tempos para todas as negociações que você já fez. Use o _create-eth-app_ pacote de subgráfico, leia a [documentação](https://thegraph.com/docs/define-a-subgraph) e adapte-a aos seus próprios contratos. Se você estiver procurando contratos inteligentes populares, pode até ser que já exista um subgrafo. Confira o [explorador de subgrafos](https://thegraph.com/explorer/).
+
+Ao obter um subgrafo, você pode escrever uma consulta simples em seu dapp para recuperar todos os dados importantes da blockchain, incluindo os históricos de que você precisa — basta uma única busca.
+
+### Apollo {#apollo}
+
+Graças à integração do [Apollo Boost](https://www.apollographql.com/docs/react/get-started/), você pode integrar facilmente o grafo em seu aplicativo React. Especialmente ao usar [React hooks e Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2), buscar dados é tão simples como escrever uma única consulta GraphQl em seu componente:
+
+```js
+const { loading, error, data } = useQuery(myGraphQlQuery)
+
+React.useEffect(() => {
+ if (!loading && !error && data) {
+ console.log({ data })
+ }
+}, [loading, error, data])
+```
+
+## Modelos {#templates}
+
+No topo, você pode escolher entre vários modelos diferentes. Até agora você pode usar uma integração de Aave, composto, UniSwap ou saborosa. Todos eles adicionam importantes endereços de contrato inteligente de serviço, juntamente com integrações pré-fabricadas de subgráficos. Apenas adicione o template ao comando de criação como `yarn create eth-app my-eth-app --with-template aave`.
+
+### Aave {#aave}
+
+[Aave](https://aave.com/) é um mercado descentralizado de empréstimos de dinheiro. Os depositantes fornecem liquidez ao mercado para ganhar uma renda passiva, enquanto os tomadores podem fazer um empréstimo usando garantias. Uma característica única da Aave são os [empréstimos rápidos](https://docs.aave.com/developers/guides/flash-loans) que permitem que você empreste dinheiro sem nenhuma garantia, contanto que você devolva o empréstimo dentro de uma transação. Isso pode ser útil, por exemplo, para você obter dinheiro extra em uma operação de arbitragem.
+
+Os tokens negociados que ganham seus interesses são chamados de _aTokens_.
+
+Quando você optar por integrar o Aave ao _create-eth-app_, você terá uma [integração subgraph](https://docs.aave.com/developers/getting-started/using-graphql). O Aave usa The Graph e já fornece vários subgrafos prontos para uso no [Ropsten](https://thegraph.com/explorer/subgraph/aave/protocol-ropsten) e na [Rede principal](https://thegraph.com/explorer/subgraph/aave/protocol), em formato [bruto](https://thegraph.com/explorer/subgraph/aave/protocol-raw) ou [formatado](https://thegraph.com/explorer/subgraph/aave/protocol).
+
+![Meme de Empréstimo Aave – "Yeahhh, se eu conseguisse manter meu empréstimo rápido por mais de 1 transação, isso seria ótimo"](./flashloan-meme.png)
+
+### Compound {#compound}
+
+[Compound](https://compound.finance/) é similar a Aave. A integração já inclui o novo [Compound v2 Subgraph](https://medium.com/graphprotocol/https-medium-com-graphprotocol-compound-v2-subgraph-highlight-a5f38f094195). Aqui, os tokens que obtêm lucro são surpreendentemente chamados de _cTokens_.
+
+### Uniswap {#uniswap}
+
+[Uniswap](https://uniswap.exchange/) é uma exchange descentralizada (DEX). Provedores de liquidez podem ganhar taxas fornecendo os tokens necessários ou serviços para ambos os lados de uma negociação. Ela é amplamente utilizada e, portanto, possui uma das mais altas taxas de liquidez para uma grande variedade de tokens. Você pode integrá-lo facilmente ao seu dapp para, por exemplo, permitir que os usuários troquem seu ETH por DAI.
+
+Infelizmente, no momento em que escrevemos a integração é apenas para o Uniswap v1 e não para o [recém-lançado v2](https://uniswap.org/blog/uniswap-v2/).
+
+### Sablier {#sablier}
+
+O [Sablier](https://sablier.com/) permite que os usuários efetuem pagamentos continuamente. Em vez de um único dia de pagamento, você na verdade recebe o seu dinheiro constantemente sem mais administração após a configuração inicial. A integração inclui seu [próprio subgráfico](https://thegraph.com/explorer/subgraph/sablierhq/sablier).
+
+## O que vem a seguir? {#whats-next}
+
+Se você tiver perguntas sobre o _create-eth-app_, acesse o [servidor da comunidade Sablier](https://discord.gg/bsS8T47), onde você pode entrar em contato com os autores do _create-eth-app_. Como alguns primeiros passos que você pode querer integrar uma estrutura UI como [Material UI](https://material-ui.com/), escrever consultas GraphQL para os dados que você realmente precisa e configurar a implantação.
diff --git a/public/content/translations/pt-br/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/pt-br/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
new file mode 100644
index 00000000000..0457b9e3218
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -0,0 +1,272 @@
+---
+title: Aprenda Tópicos fundamentais de Ethereum com SQL
+description: Este tutorial ajuda os leitores a entender os conceitos fundamentais de Ethereum, incluindo transações, blocos e gas, consultando dados on-chain com linguagem de consulta estruturada (SQL).
+author: "Paul Apivat"
+tags:
+ - "SQL"
+ - "Querying"
+ - "Transações"
+skill: intermediate
+lang: pt-br
+published: 2021-05-11
+source: paulapivat.com
+sourceUrl: https://paulapivat.com/post/query_ethereum/
+---
+
+Muitos tutorias da Ethereum são direcionadas para desenvolvedores, mas há uma falta de recursos educacionais para analistas de dados ou pessoas que desejam ver dados on-chain sem executar um cliente ou um nó.
+
+Esse tutorial ajuda os leitores a entenderem os conceitos fundamentais da Ethereum, incluindo transações, blocos e gás, consultando dados on-chain com a linguagem SQL por meio de uma interface fornecida por [Dune Analytics](https://dune.xyz/home).
+
+Dados on-chain podem nos ajudar a compreender a rede Ethereum como uma economia para capacidade computacional, e deve servir como base para entender os desafios enfrentados pela Ethereum hoje (por exemplo, o aumento dos preços do gas) e, o mais importante, discussões sobre soluções de escalabilidade.
+
+### Transações {#transactions}
+
+A jornada do usuário no Ethereum começa com a inicialização de uma conta controlada ou uma entidade com saldo ETH. Há duas categorias de contas: controlada pelo usuário ou um contrato inteligente (veja em: [ethereum.org](/developers/docs/accounts/)).
+
+Qualquer conta pode ser visualizada em um explorador de bloco como a [Etherscan](https://etherscan.io/). Exploradores de bloco são um portal para os dados da Ethereum. Eles exibem, em tempo real, dados em blocos, transações, mineiradores, contas, e outras atividades on-chain (veja [aqui](/developers/docs/data-and-analytics/block-explorers/)).
+
+No entanto, um usuário pode desejar consultar um dado diretamente para reconciliar as informações fornecidas por exploradores de bloco externos. O [Dune Analytics](https://duneanalytics.com/) fornece esse recurso para qualquer pessoa com algum conhecimento em SQL.
+
+Como referência, a conta de contrato inteligente da Fundação Ethereum (EF) pode ser visualizada na [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae).
+
+Uma coisa a ser observada é que todas as contas, incluindo as EF's, têm um endereço público que pode ser utilizado para enviar e receber transações.
+
+O saldo da conta na Etherscan inclui transações regulare e transações internas. As transações internas, apesar do nome, não são _realmente_ transações que alteram o estado da cadeia. Elas são transferências de valores iniciadas pela execução de um contrato ([fonte](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). Visto que as transações internas não têm assinatura, elas **não** são incluídas na blockchain e não podem ser consultadas com o Dune Analytics.
+
+Portanto, este tutorial irá focar em transações regulares. Isso pode ser consultado como:
+
+```sql
+WITH temp_table AS (
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ value / 1e18 AS ether,
+ gas_used,
+ gas_price / 1e9 AS gas_price_gwei
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+)
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ ether,
+ (gas_used * gas_price_gwei) / 1e9 AS txn_fee
+FROM temp_table
+```
+
+Isso irá gerar as mesmas informações fornecidas na página de transações do Etherscan. Para você comparar, aqui estão duas fontes:
+
+#### Etherscan {#etherscan}
+
+![](./etherscan_view.png)
+
+[Visualizar página de contratos de EF's no Etherscan.](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
+
+#### Dune Analytics {#dune-analytics}
+
+![](./dune_view.png)
+
+Você pode encontrar o painel [aqui](https://duneanalytics.com/paulapivat/Learn-Ethereum). Clique na tabela para visualizar a consulta (veja também acima).
+
+### Decompondo Transações {#breaking_down_transactions}
+
+Uma transação enviada inclui várias informações, incluindo ([fonte](/developers/docs/transactions/)):
+
+- **Destinatário**: O endereço de recebimento (chamado como "para")
+- **Assinatura**: Enquanto as chaves privadas de um remetente assinam uma transação, o que podemos consultar com o SQL é o endereço público de um remetente ("de").
+- **Valor**: Esta é a quantidade de ETH transferido (veja a coluna `ether`).
+- **Dados**: Estes são dados arbitrários misturados (veja a coluna `dados`).
+- **gasLimit**: a quantidade máxima de gas que pode ser consumida pela transação. As unidades de gas representam etapas computacionais
+- **maxPriorityFeePerGas**: a quantidade máxima de gas a ser incluída como dica para o minerador
+- **maxFeePerGas** - a quantidade máxima de gas disposta a ser paga pela transação (incluindo baseFeePerGas e maxPriorityFeePerGas)
+
+Podemos consultar essas informações específicas sobre transações no endereço público da Fundação Ethereum:
+
+```sql
+SELECT
+ "to",
+ "from",
+ value / 1e18 AS ether,
+ data,
+ gas_limit,
+ gas_price / 1e9 AS gas_price_gwei,
+ gas_used,
+ ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### Blocos {#blocks}
+
+Cada transação irá alterar o estado da máquina virtual da Ethereum ([EVM](/developers/docs/evm/)) ([fonte](/developers/docs/transactions/)). As transações são transmitidas à rede para serem verificadas e incluídas em um bloco. Cada transação está associada a um número de bloco. Para ver os dados, nós podemos consultar um número de bloco específico: 12396854 (o bloco mais recente entre as transações da Fundação Ethereum a partir desta escrita, 11/05/21).
+
+Além disso, quando consultarmos os próximos dois blocos, podemos observar que cada bloco contém o hash do bloco anterior (i.., hash pai), ilustrando como a blockchain é formada.
+
+Cada bloco contém uma referência ao bloco pai. Isso é mostrado abaixo entre as colunas `hash` e `parent_hash` (fonte[](/developers/docs/blocks/)):
+
+![parent_hash](./parent_hash.png)
+
+Aqui está a [consulta](https://duneanalytics.com/queries/44856/88292) no Dune Analytics:
+
+```sql
+SELECT
+ time,
+ number,
+ hash,
+ parent_hash,
+ nonce
+FROM ethereum."blocks"
+WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
+LIMIT 10
+```
+
+Podemos examinar um bloco consultando o horário, o número de bloco, a dificuldade (quantidade de computação necessária), o hash, o hash pai e a nonce.
+
+A única coisa que esta consulta não cobre é a _lista de transações_ que requer uma consulta separada abaixo e _raiz do estado_. Um nó completo ou de arquivamento irá armazenar todas as transações e transições de estado, permitindo que os clientes consultem o estado da cadeia a qualquer momento. Como isso requer um grande espaço de armazenamento, nós podemos separar os dados em cadeia dos dados de estado:
+
+- Dados em cadeia (lista de blocos, transações)
+- Dados de estado (resultado da transição de estado de cada transação)
+
+A raiz de estado cai na última e são _ dados implícitos_ (não armazenados na cadeia), enquanto os dados em cadeia são explícitos e armazenados na própria cadeia ([fonte](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored)).
+
+Para este tutorial, estaremos focando em dados on-chain que _podem_ ser consultados com SQL via Dune Analytics.
+
+Como mencionado acima, cada bloco contém uma lista de transações, podemos consultar isso filtrando por um bloco específico. Vamos tentar o bloco mais recente, 12396854:
+
+```sql
+SELECT * FROM ethereum."transactions"
+WHERE block_number = 12396854
+ORDER BY block_time DESC`
+```
+
+Segue o SQL output no Dune:
+
+![](./list_of_txn.png)
+
+Este único bloco sendo adicionado à cadeia altera o estado da máquina virtual Ethereum ([EVM](/developers/docs/evm/)). Dezenas, às vezes centenas, de transações são verificadas de uma só vez. Neste caso específico, foram incluídas 222 transações.
+
+Para ver quantas foram realmente bem-sucedidas, nós adicionaríamos outro filtro para contar transações bem-sucedidas:
+
+```sql
+WITH temp_table AS (
+ SELECT * FROM ethereum."transactions"
+ WHERE block_number = 12396854 AND success = true
+ ORDER BY block_time DESC
+)
+SELECT
+ COUNT(success) AS num_successful_txn
+FROM temp_table
+```
+
+Para o bloco 12396854, do total de 222 transações, 204 foram verificadas com sucesso:
+
+![](./successful_txn.png)
+
+As solicitações de transações ocorrem dezenas de vezes por segundo, mas os blocos são confirmados aproximadamente uma vez a cada 15 segundos ([source](/developers/docs/blocks/)).
+
+Para ver que há um bloco produzido aproximadamente a cada 15 segundos, poderíamos pegar o número de segundos em um dia (86400) por 15, para obter um número médio estimado de blocos por dia (~ 5760).
+
+O gráfico de blocos Ethereum produzidos por dia (2016 - presente) é:
+
+![](./daily_blocks.png)
+
+O número médio de blocos produzidos diariamente durante esse período de tempo é de aproximadamente ~5.874:
+
+![](./avg_daily_blocks.png)
+
+As consultas são:
+
+```sql
+# query to visualize number of blocks produced daily since 2016
+
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+
+# average number of blocks produced per day
+
+WITH temp_table AS (
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+)
+SELECT
+ AVG(block_count) AS avg_block_count
+FROM temp_table
+```
+
+O número médio de blocos produzidos por dia desde 2016 está um pouco acima desse número em 5.874. Alternativamente, dividindo 86400 segundos por 5874 blocos médios resultam em 14,7 segundos ou aproximadamente um bloco a cada 15 segundos.
+
+### Gás {#gas}
+
+Blocos são limitados em tamanho. O tamanho máximo do bloco é dinâmico e varia de acordo com a demanda de rede entre 12.500.000 e 25.000.000 unidades. Limites são necessários para evitar que, blocos de tamanho arbitrariamente grandes coloquem tensão em nós completos, em termos de espaço em disco e requisitos de velocidade ([source](/developers/docs/blocks/)).
+
+Uma maneira de conceitualizar o limite de gas do bloco é pensar nele como o **suprimento** de espaço de bloco disponível para as transações em lote. O limite de gas do bloco pode ser consultado e visualizado a partir de 2016 até o presente dia:
+
+![](./avg_gas_limit.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_limit) AS avg_block_gas_limit
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+Depois, há o gas real usado diariamente para pagar pela computação realizada na cadeia Ethereum (ou seja, enviar transações, chamar um contrato inteligente, cunhar um NFT). Esta é a **demanda** por espaço de bloco disponível no Ethereum:
+
+![](./daily_gas_used.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_used) AS avg_block_gas_used
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+Também podemos justapor esses dois gráficos para ver como a **demanda e oferta** se alinham:
+
+![gas_demand_supply](./gas_demand_supply.png)
+
+Portanto, podemos entender os preços do gas em função da demanda por espaço no bloco Ethereum, dada a oferta disponível.
+
+Finalmente, podemos querer consultar os preços médios diários do gas para a cadeia Ethereum, no entanto, fazê-lo resultará em um tempo de consulta especialmente longo, então, filtraremos a nossa consulta pela quantidade média de gas paga por transação pela Fundação Ethereum.
+
+![](./ef_daily_gas.png)
+
+Podemos ver os preços do gas pagos por todas as transações feitas para o endereço da Ethereum Foundation ao longo dos anos. Aqui está a consulta:
+
+```sql
+SELECT
+ block_time,
+ gas_price / 1e9 AS gas_price_gwei,
+ value / 1e18 AS eth_sent
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### Resumo {#summary}
+
+Com este tutorial, entendemos os conceitos fundamentais do Ethereum e como a blockchain do Ethereum funciona consultando e obtendo uma ideia dos dados on-chain.
+
+O painel que contém todo o código usado neste tutorial pode ser encontrado [aqui](https://duneanalytics.com/paulapivat/Learn-Ethereum).
+
+Para mais uso de dados para explorar a web3 [siga-me no Twitter](https://twitter.com/paulapivat).
diff --git a/public/content/translations/pt-br/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/pt-br/developers/tutorials/logging-events-smart-contracts/index.md
new file mode 100644
index 00000000000..d74031cc9e8
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/logging-events-smart-contracts/index.md
@@ -0,0 +1,66 @@
+---
+title: Registrando dados de contratos inteligentes com eventos
+description: Uma introdução aos eventos de contrato inteligentes e como você pode usá-los para registrar os dados
+author: "jdourlens"
+tags:
+ - "contratos inteligentes"
+ - "remix"
+ - "solidity"
+ - "eventos"
+skill: intermediate
+lang: pt-br
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/logging-data-with-events/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+No Solidity, [eventos](/developers/docs/smart-contracts/anatomy/#events-and-logs) são sinais enviados que os contratos inteligentes podem disparar. Dapps, ou qualquer coisa conectada à API Ethereum JSON-RPC, podem reconhecer esses eventos e agir em conformidade. Um evento também pode ser indexado para que o histórico de eventos seja pesquisável posteriormente.
+
+## Eventos {#events}
+
+O evento mais comum na blockchain Ethereum no momento da redação deste artigo é o evento Transfer, que é emitido por tokens ERC20 quando alguém transfere tokens.
+
+```solidity
+event Transfer(address indexed from, address indexed to, uint256 value);
+```
+
+A assinatura do evento é declarada dentro do código do contrato e pode ser emitida com a palavra-chave de emissão. Por exemplo, os registros de eventos de transferência que enviaram a transferência (_from_), para quem foram transferidos (_to_) e quantos tokens foram transferidos (_value_).
+
+Se voltarmos ao nosso contrato inteligente Contador e decidirmos registrar toda vez que o valor for alterado. Como este contrato não é para ser usado, mas serve como uma base para a construção de outro contrato, estendendo-o: é chamado de contrato abstrato. No caso de nosso exemplo de contador, ele ficaria assim:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ event ValueChanged(uint oldValue, uint256 newValue);
+
+ // Private variable of type unsigned int to keep the number of counts
+ uint256 private count = 0;
+
+ // Function that increments our counter
+ function increment() public {
+ count += 1;
+ emit ValueChanged(count - 1, count);
+ }
+
+ // Getter to get the count value
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+Observe que:
+
+- **Linha 5**: declaramos nosso evento e o que ele contém, o valor antigo e o novo valor.
+
+- **Linha 13**: Quando incrementamos nossa variável de contagem, emitimos o evento.
+
+Se implementarmos o contrato e chamarmos a função de incremento, veremos que o Remix será exibido automaticamente se você clicar na nova transação dentro de um array de logs nomeados.
+
+![Captura de tela Remix](./remix-screenshot.png)
+
+Os logs são muito úteis para depurar seus contratos inteligentes, mas também são importantes se você criar aplicativos usados por diferentes pessoas e tornar mais fácil fazer análises para rastrear e entender como seu contrato inteligente é usado. Os registros gerados pelas transações são exibidos em exploradores de blocos populares e você também pode, por exemplo, usá-los para criar 'scripts' fora da cadeia para ver eventos específicos e agir quando eles ocorrerem.
diff --git a/public/content/translations/pt-br/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/pt-br/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
new file mode 100644
index 00000000000..f0a29036ae2
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -0,0 +1,241 @@
+---
+title: Provas de Merkle para integridade de dados offline
+description: Assegurar a integridade dos dados na cadeia para os dados armazenados, sobretudo, fora da cadeia
+author: Ori Pomerantz
+tags:
+ - "armazenamento"
+skill: advanced
+lang: pt-br
+published: 2021-12-30
+---
+
+## Introdução {#introduction}
+
+Idealmente, gostaríamos de guardar tudo no armazenamento do Ethereum, que é armazenado em milhares de computadores e conta com uma disponibilidade extremamente alta (os dados não podem ser censurados) e integridade (os dados não podem ser modificados de forma não autorizada), sabendo que armazenar uma palavra de 32 bytes normalmente custa 20.000 gás. No momento em que estou escrevendo isto, o custo é equivalente a $6,60. A 21 centavos por byte, isso é bastante caro para muitas utilizações.
+
+Para resolver esse problema, o ecossistema do Ethereum desenvolveu [muitas formas alternativas de armazenar dados de forma descentralizada](/developers/docs/storage/). Geralmente, elas envolvem um equilíbrio entre a disponibilidade e o preço. No entanto, a integridade é geralmente assegurada.
+
+Neste artigo, você aprenderá **como** garantir a integridade dos dados sem armazenar os dados na blockchain, usando [ provas de Merkle](https://computersciencewiki.org/index.php/Merkle_proof).
+
+## Como isso funciona? {#how-does-it-work}
+
+Em teoria, poderíamos apenas armazenar o hash dos dados na cadeia e enviar todos os dados em transações que precisam deles. No entanto, isso ainda é demasiado caro. Um byte de dados para uma transação custa cerca de 16 gás, atualmente cerca de meio centavo ou cerca de $5 por kilobyte. A $5.000 por megabyte, isso ainda é muito caro para várias utilizações, mesmo sem o custo adicional de hashing de dados.
+
+A solução é fazer hash repetidamente de diferentes subconjuntos dos dados. Para os dados que você não precisa enviar, você pode apenas enviar um hash. Você pode fazer isso usando uma árvore de Merkle, uma estrutura de dados de árvore em que cada nó é um hash dos nós abaixo:
+
+![Árvores de Merkle](tree.png)
+
+O hash raiz é a única parte que precisa ser armazenada na cadeia. Para comprovar um determinado valor, forneça todos os hashes que precisam ser combinados com ele para obter a raiz. Por exemplo, para provar `C` você fornece `D`, `(H-B)`, e `H(E-H)`.
+
+![Prova do valor de C](proof-c.png)
+
+## Implementação {#implementation}
+
+[O código de exemplo é fornecido aqui](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity).
+
+### Código fora da cadeia {#off-chain-code}
+
+Neste artigo, usamos JavaScript para os cálculos fora da cadeia. A maioria dos aplicativos descentralizados tem seu componente off-chain em JavaScript.
+
+#### Criando a raiz Merkle {#creating-the-merkle-root}
+
+Primeiro, precisamos fornecer a raiz Merkle à cadeia.
+
+```javascript
+const ethers = require("ethers")
+```
+
+[Usamos a função hash do pacote ethers](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256).
+
+```javascript
+// The raw data whose integrity we have to verify. The first two bytes a
+// are a user identifier, and the last two bytes the amount of tokens the
+// user owns at present.
+const dataArray = [
+ 0x0bad0010, 0x60a70020, 0xbeef0030, 0xdead0040, 0xca110050, 0x0e660060,
+ 0xface0070, 0xbad00080, 0x060d0091,
+]
+```
+
+Codificar cada entrada em um único inteiro de 256 bits resulta em um código menos legível que o JSON, por exemplo. No entanto, isso significa um processamento significativamente menor para recuperar os dados contidos no contrato, portanto, custos de gás muito menores. [Você pode ler o JSON na cadeia](https://github.com/chrisdotn/jsmnSol), porém, isso é uma má ideia e evite fazer isso se puder.
+
+```javascript
+// The array of hash values, as BigInts
+const hashArray = dataArray
+```
+
+Nesse caso, para começar, nossos dados têm um valor 256 bits. Portanto, não é necessário qualquer tipo de processamento. Se usarmos uma estrutura de dados mais complicada, como cadeias de caracteres, precisamos ter certeza de que fazemos primeiro o hash dos dados para obter uma matriz de hashes. Observe que isso também é devido ao fato de não nos importarmos se usuários conhecem as informações de outros usuários. Caso contrário, teríamos tido que fazer um hash, para que o usuário 1 não saiba o valor para o usuário 0, ao usuário 2 que não saberá o valor para o usuário 3, etc.
+
+```javascript
+// Convert between the string the hash function expects and the
+// BigInt we use everywhere else.
+const hash = (x) =>
+ BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0)))
+```
+
+A função hash de ethers espera obter uma cadeia de caracteres em JavaScript com um número hexadecimal, como `0x60A7`, e responde com outra cadeia de caracteres com a mesma estrutura. No entanto, para o resto do código, é mais fácil usar `BigInt`, então convertemos em uma cadeia de caracteres hexadecimal e de volta novamente.
+
+```javascript
+// Symmetrical hash of a pair so we won't care if the order is reversed.
+const pairHash = (a, b) => hash(hash(a) ^ hash(b))
+```
+
+Essa função é simétrica (hash de um [xor](https://en.wikipedia.org/wiki/Exclusive_or) b). Isto significa que quando verificamos a prova de Merkle, não precisamos nos preocupar se devemos colocar o valor da prova antes ou depois do valor calculado. A verificação da prova de Merkle é feita na cadeia, portanto, quanto menos precisarmos fazer lá, melhor.
+
+Atenção: A criptografia é mais difícil do que parece. A versão inicial deste artigo tinha a função hash `hash(a^b)`. Essa foi uma **má** ideia, porque significava que se você conhecesse os valores legítimos de `a` e de `b`, você poderia usar `b' = a^b^a'` para provar qualquer valor `a'` desejado. Com essa função, você teria que calcular `b'`, de forma que `hash(a') ^ hash(b')` fosse igual a um valor conhecido (o próximo branch a caminho da raiz), o que é muito mais difícil.
+
+```javascript
+// The value to denote that a certain branch is empty, doesn't
+// have a value
+const empty = 0n
+```
+
+Quando o número de valores não é uma potência inteira de dois, precisamos lidar com branches vazios. O programa faz isso colocando zero como espaço reservado.
+
+![Árvore de Merkle com branches faltando](merkle-empty-hash.png)
+
+```javascript
+// Calculate one level up the tree of a hash array by taking the hash of
+// each pair in sequence
+const oneLevelUp = (inputArray) => {
+ var result = []
+ var inp = [...inputArray] // To avoid over writing the input // Add an empty value if necessary (we need all the leaves to be // paired)
+
+ if (inp.length % 2 === 1) inp.push(empty)
+
+ for (var i = 0; i < inp.length; i += 2)
+ result.push(pairHash(inp[i], inp[i + 1]))
+
+ return result
+} // oneLevelUp
+```
+
+Esta função “escala” um nível na árvore de Merkle, fazendo hash dos pares de valores na camada atual. Observe que esta não é a implementação mais eficiente. Poderíamos ter evitado copiar a entrada e apenas adicionar `hashEmpty` quando apropriado no loop, mas este código é otimizado para melhorar a legibilidade.
+
+```javascript
+const getMerkleRoot = (inputArray) => {
+ var result
+
+ result = [...inputArray] // Climb up the tree until there is only one value, that is the // root. // // If a layer has an odd number of entries the // code in oneLevelUp adds an empty value, so if we have, for example, // 10 leaves we'll have 5 branches in the second layer, 3 // branches in the third, 2 in the fourth and the root is the fifth
+
+ while (result.length > 1) result = oneLevelUp(result)
+
+ return result[0]
+}
+```
+
+Para obter a raiz, suba até que haja apenas um valor restante.
+
+#### Criando uma prova de Merkle {#creating-a-merkle-proof}
+
+Uma prova de Merkle é o conjunto de valores a fazer hash junto com o valor que está sendo provado para recuperar a raiz de Merkle. O valor a provar está frequentemente disponível a partir de outros dados, então eu prefiro fornecê-lo separadamente do que como parte do código.
+
+```javascript
+// A merkle proof consists of the value of the list of entries to
+// hash with. Because we use a symmetrical hash function, we don't
+// need the item's location to verify the proof, only to create it
+const getMerkleProof = (inputArray, n) => {
+ var result = [], currentLayer = [...inputArray], currentN = n
+
+ // Until we reach the top
+ while (currentLayer.length > 1) {
+ // No odd length layers
+ if (currentLayer.length % 2)
+ currentLayer.push(empty)
+
+ result.push(currentN % 2
+ // If currentN is odd, add with the value before it to the proof
+ ? currentLayer[currentN-1]
+ // If it is even, add the value after it
+ : currentLayer[currentN+1])
+
+```
+
+Fazemos o hash `(v[0],v[1])`, `(v[2],v[3])`, etc. Portanto, para valores pares, precisamos do próximo e, para valores ímpares, precisamos do anterior.
+
+```javascript
+ // Move to the next layer up
+ currentN = Math.floor(currentN/2)
+ currentLayer = oneLevelUp(currentLayer)
+ } // while currentLayer.length > 1
+
+ return result
+} // getMerkleProof
+```
+
+### Código on-chain {#on-chain-code}
+
+Por fim, temos o código que verifica a prova. O código on-chain é escrito em [Solidity](https://docs.soliditylang.org/en/v0.8.11/). A otimização é aqui muito mais importante, porque o gás é relativamente caro.
+
+```solidity
+//SPDX-License-Identifier: Public Domain
+pragma solidity ^0.8.0;
+
+import "hardhat/console.sol";
+```
+
+Escrevi isso usando o [ambiente de desenvolvimento de hardware](https://hardhat.org/), que nos permite ter [saída do console do Solidity](https://hardhat.org/tutorial/debugging-with-hardhat-network.html) em desenvolvimento.
+
+```solidity
+
+contract MerkleProof {
+ uint merkleRoot;
+
+ function getRoot() public view returns (uint) {
+ return merkleRoot;
+ }
+
+ // Extremely insecure, in production code access to
+ // this function MUST BE strictly limited, probably to an
+ // owner
+ function setRoot(uint _merkleRoot) external {
+ merkleRoot = _merkleRoot;
+ } // setRoot
+```
+
+Configure e obtenha funções para a raiz de Merkle. Deixar que todo mundo atualize a raiz de Merkle é uma _ideia extremamente má_ em um sistema de produção. Aqui, faço isso por uma questão de simplicidade no código de exemplo. **Não faça isso em um sistema no qual a integridade de dados realmente importa**.
+
+```solidity
+ function hash(uint _a) internal pure returns(uint) {
+ return uint(keccak256(abi.encode(_a)));
+ }
+
+ function pairHash(uint _a, uint _b) internal pure returns(uint) {
+ return hash(hash(_a) ^ hash(_b));
+ }
+```
+
+Essa função gera um par de hashes. Ela é simplesmente a tradução do Solidity do código em JavaScript para `hash` e `pairHash`.
+
+**Observação:** Este é outro caso de otimização para facilidade de leitura. Baseado em [a definição da função](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm), é possível armazenar os dados como um valor de [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) e evitar as conversões.
+
+```solidity
+ // Verify a Merkle proof
+ function verifyProof(uint _value, uint[] calldata _proof)
+ public view returns (bool) {
+ uint temp = _value;
+ uint i;
+
+ for(i=0; i<_proof.length; i++) {
+ temp = pairHash(temp, _proof[i]);
+ }
+
+ return temp == merkleRoot;
+ }
+
+} // MarkleProof
+```
+
+Na notação matemática, a verificação pela prova de Merkle tem esta aparência: `H(proof_n, H(proof_n-1, H(proof_n-2, ... H(prova_1, H(prova_0, valor)...)))`. Este código implementa-o.
+
+## Provas de Merkle e rollups não se misturam {#merkle-proofs-and-rollups}
+
+As provas de Merkle não funcionam bem com [rollups](/developers/docs/scaling/#rollups). O motivo é que os rollups escrevem todos os dados da transação no L1, mas são processadas no L2. O custo para enviar uma prova de Merkle com uma média de transação a 638 gás por camada (atualmente, um byte nos dados de chamadas custa 16 gás se não for zero, e 4 se for zero). Se temos 1024 palavras de dados, uma prova de Merkle requer dez camadas, ou um total de 6380 gás.
+
+Procurando um exemplo no [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m), escrever custos de gás L1 custa cerca de 100 gwei e escrever custos de gás L2 custa 0,001 gwei (esse é o preço normal, que pode aumentar com o congestionamento). Portanto, pelo custo de um gás L1 podemos gastar cem mil gás no processamento L2. Supondo que não sobrescrevamos o armazenamento, isso significa que podemos escrever cerca de cinco palavras para armazenamento na L2 pelo preço de um gás L1. Para uma única prova de Merkle, podemos escrever todas as 1024 palavras para armazenamento (assumindo que elas podem ser calculadas em cadeia para começar, em vez de serem fornecidos em uma transação) e ainda restam a maior parte do gás.
+
+## Conclusão {#conclusion}
+
+Na vida real, você pode nunca implementar Merkle por conta própria. Existem bibliotecas conhecidas e auditadas que você pode usar e, de um modo geral, é melhor não implementar primitivos criptográficos por conta própria. Mas espero que agora você compreenda melhor as provas de Merkle e que possa decidir quando é que vale a pena utilizar.
+
+Observe que, enquanto as provas de Merkle preservam a _integridade_, elas não preservam a disponibilidade __. Saber que mais ninguém pode tomar seus ativos é uma pequena consolação se o armazenamento de dados decidir impedir o acesso e você não pode construir uma Merkle para acessá-los também. Portanto, as árvores de Merkle são melhor usadas com algum tipo de armazenamento descentralizado, como IPFS.
diff --git a/public/content/translations/pt-br/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/pt-br/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
new file mode 100644
index 00000000000..8d7bc371bd1
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
@@ -0,0 +1,147 @@
+---
+title: Monitorando o Geth com InfluxDB e Grafana
+description:
+author: "Mário Havel"
+tags:
+ - "clientes"
+ - "nós"
+skill: intermediate
+lang: pt-br
+published: 2021-01-13
+---
+
+Esse tutorial ajudará você a configurar o monitoramento do seu Geth para você poder entender melhor o seu desempenho e identificar possíveis problemas.
+
+## Pré-Requisitos {#prerequisites}
+
+- Você já deveria estar executando uma instância de Geth.
+- A maioria dos passos e exemplos são para o ambiente Linux, o conhecimento básico sobre terminais será útil.
+- Confira este vídeo da visão geral da suíte de métricas do Geth: [Monitoring an Ethereum infrastructure by Péter Szilágyi](https://www.youtube.com/watch?v=cOBab8IJMYI).
+
+## Stack de monitoramento {#monitoring-stack}
+
+Um cliente Ethereum coleta muitos dados que podem ser lidos na forma de uma base de dados cronológica. Para facilitar o monitoramento, você pode inserir isso em um software de visualização de dados. Existem múltiplas opções disponíveis:
+
+- [Prometheus](https://prometheus.io/) (modelo pull)
+- [InfluxDB](https://www.influxdata.com/get-influxdb/) (modelo push)
+- [Telegraf](https://www.influxdata.com/get-influxdb/)
+- [Grafana](https://www.grafana.com/)
+- [Datadog](https://www.datadoghq.com/)
+- [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/)
+
+Também há o [Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter), uma opção pré-configurada com InfluxDB e Grafana. Você pode configurá-lo facilmente usando docker e [Ethbian OS](https://ethbian.org/index.html) para RPi 4.
+
+Neste tutorial, nós configuramos seu cliente Geth para enviar dados para o InfluxDB para criar um banco de dados e o Grafana para criar um gráfico de visualização dos dados. Fazer isso manualmente ajudará você a entender melhor o processo, alterá-lo e fazer deploy em diferentes ambientes.
+
+## Configurando o InfluxDB {#setting-up-influxdb}
+
+Primeiro, vamos baixar e instalar o InfluxDB. Várias opções de download podem ser encontradas na [página de release do Influxdata](https://portal.influxdata.com/downloads/). Escolha o que mais se adequa ao seu ambiente. Você também pode instalá-lo a partir de um [repositório](https://repos.influxdata.com/). Por exemplo, em uma distribuição baseada em Debian:
+
+```
+curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
+source /etc/lsb-release
+echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
+sudo apt update
+sudo apt install influxdb -y
+sudo systemctl enable influxdb
+sudo systemctl start influxdb
+sudo apt install influxdb-client
+```
+
+Após instalar o InfluxDB com sucesso, certifique-se de que ele está sendo executado em segundo plano. Por padrão, ele é acessível em `localhost:8086`. Antes de usar o cliente `influx` você tem que criar um novo usuário com privilégios de administrador. Este usuário servirá para gerenciamento de alto nível, criando bancos de dados e usuários.
+
+```
+curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"
+```
+
+Agora você pode usar o cliente influx para entrar no [shell do InfluxDB](https://docs.influxdata.com/influxdb/v1.8/tools/shell/) com este usuário.
+
+```
+influx -username 'username' -password 'password'
+```
+
+Comunificando diretamente com o InfluxDB em seu shell, você pode criar banco de dados e usuário para métricas do geth.
+
+```
+create database geth
+create user geth with password choosepassword
+```
+
+Verifique as entradas criadas com:
+
+```
+show databases
+show users
+```
+
+Saia do Shell InfluxDB.
+
+```
+exit
+```
+
+O InfluxDB está rodando e configurado para armazenar métricas do Geth.
+
+## Preparando o Geth {#preparing-geth}
+
+Depois de configurar o banco de dados, precisamos habilitar a coleção de métricas no Geth. Preste atenção em `METRICS AND STATS OPTIONS` com `geth --help`. Várias opções podem ser encontradas lá, neste caso queremos que o Geth envie dados para o InfluxDB. A configuração básica especifica o endpoint onde o InfluxDB é acessível e a autenticação para o banco de dados.
+
+```
+geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"
+```
+
+Estas flags podem ser anexadas a um comando que inicie o cliente ou salvas no arquivo de configuração.
+
+Você pode verificar que o Geth está fazendo push de dados com sucesso, por exemplo, listando as métricas no banco de dados. Saia do shell do InfluxDB:
+
+```
+use geth
+show measurements
+```
+
+## Configurando o Grafana {#setting-up-grafana}
+
+O próximo passo é instalar o Grafana que interpretará os dados graficamente. Siga o processo de instalação do seu ambiente na documentação do Grafana. Certifique-se de instalar a versão OSS se você não quiser o contrário. Etapas de instalação de exemplo para distribuições Debian usando o repositório:
+
+```
+curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
+echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
+sudo apt update
+sudo apt install grafana
+sudo systemctl enable grafana-server
+sudo systemctl start grafana-server
+```
+
+Quando você estiver rodando o Grafana, ele deve ser acessível em `localhost:3000`. Use seu navegador preferido para acessar esta URL e, em seguida, faça login com as credenciais padrão (usuário: `admin` e senha: `admin`). Quando solicitado, altere a senha padrão e salve.
+
+![](./grafana1.png)
+
+Você vai ser redirecionado para a página principal do Grafana. Primeiro, configure seu source data. Clique no ícone de configuração na barra esquerda e selecione "Data sources".
+
+![](./grafana2.png)
+
+Ainda não existem data sources criados, clique em "Add data source" para definir um.
+
+![](./grafana3.png)
+
+Para esta configuração, selecione "InfluxDB" e prossiga.
+
+![](./grafana4.png)
+
+A configuração do data source é bem simples se você estiver rodando ferramentas na mesma máquina. Você precisa configurar o endereço e os detalhes do InfluxDB para acessar o banco de dados. Consulte a imagem abaixo.
+
+![](./grafana5.png)
+
+Se tudo estiver completo e o InfluxDB estiver acessível, clique em "Save and test" e aguarde a confirmação aparecer.
+
+![](./grafana6.png)
+
+O Grafana está agora configurado para ler dados do InfluxDB. Agora você precisa criar um painel que o interprete e o exiba. As propriedades dos Dashboards são codificadas em arquivos JSON que podem ser criados por qualquer um e podem ser facilmente importados. Na barra esquerda, clique em "Create and Import".
+
+![](./grafana7.png)
+
+Para um dashboard de monitoramento do Geth, copie o ID [deste dashboard](https://grafana.com/grafana/dashboards/13877/) e cole-o em "Import page" no Grafana. Depois de salvar o dashboard, ele deve ficar assim:
+
+![](./grafana8.png)
+
+Você pode modificar seus dashboards. Cada dashboard pode ser editado, movido, removido ou adicionado. Você pode alterar suas configurações. É com você! Para saber mais sobre como os dashboards funcionam, consulte a [documentação do Grafana](https://grafana.com/docs/grafana/latest/dashboards/). Você também pode estar interessado sobre [Notificações / Alertas](https://grafana.com/docs/grafana/latest/alerting/). Isso permite configurar notificações de alerta para quando as métricas alcançarem certos valores. Vários canais de comunicação são suportados.
diff --git a/public/content/translations/pt-br/developers/tutorials/nft-minter/index.md b/public/content/translations/pt-br/developers/tutorials/nft-minter/index.md
new file mode 100644
index 00000000000..b5ef01302fc
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/nft-minter/index.md
@@ -0,0 +1,874 @@
+---
+title: Tutorial de criação de uma NFT
+description: Neste tutorial, você irá construir um minter NFT e, também, aprender a como criar um full stack dapp conectando seu contrato inteligente a um React frontend usando MetaMask e ferramentas Web3.
+author: "smudgil"
+tags:
+ - "solidity"
+ - "NFT"
+ - "alchemy"
+ - "contratos inteligentes"
+ - "front-end"
+ - "Pinata"
+skill: intermediate
+lang: pt-br
+published: 2021-10-06
+---
+
+Um dos maiores desafios para desenvolvedores vindos de um background Web2 é descobrir como conectar seu contrato inteligente a um projeto frontend e interagir com ele.
+
+Ao criar um minter NFT — uma simples UI onde você pode inserir um link para seu ativo digital, um título e uma descrição — você aprenderá a:
+
+- Conectar ao MetaMask através do seu projeto frontend
+- Chamar métodos de contrato inteligentes no seu frontend
+- Assine transações usando MetaMask
+
+Neste tutorial, usaremos o [React](https://reactjs.org/) como nossa estrutura de frontend. Como este tutorial está focado principalmente no desenvolvimento da Web3, nós não passaremos muito tempo detalhando os fundamentos do React. Em vez disso, nós focaremos em trazer funcionalidade para o nosso projeto.
+
+Como pré-requisito, você deve ter uma compreensão mínima do React – saber como funcionam componentes, props, useState/useEffect e chamadas de funções básicas. Se você nunca ouviu falar de nenhum desses termos antes, você pode querer conferir este [Intro to React tutorial](https://reactjs.org/tutorial/tutorial.html). Para os que apreciam mais visualidade, é altamente recomendável esta excelente série de vídeos [Full Modern React Tutorial](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-TvwTutorialfod2gaISzfRiP9d) por Net Ninja.
+
+E se você ainda não fez, você definitivamente precisará criar uma conta Alchemy para concluir este tutorial, bem como construir qualquer coisa no blockchain. Inscreva-se para uma conta gratuita [aqui](https://alchemy.com/).
+
+Sem mais delongas, vamos começar!
+
+## Criando NFTs 101 {#making-nfts-101}
+
+Antes de começarmos a olhar para qualquer código, é importante entender como funciona fazer uma NFT. Envolve duas etapas:
+
+### Publicar um contrato inteligente da NFT no blockchain Ethereum {#publish-nft}
+
+A maior diferença entre os dois padrões de contrato inteligente NFT é que o ERC-1155 é um padrão multi-token e inclui a funcionalidade de lote, enquanto o ERC-721 é um padrão de token único, portanto, suporta apenas a transferência de um token por vez.
+
+### Chamar a função mint {#minting-function}
+
+Normalmente, esta função mint requer que você passe duas variáveis como parâmetros, primeiro o destinatário `recipient`, que especifica o endereço que receberá a sua NFT recém-mintada, e segundo o `tokenURI` da NFT, uma string que indica a um documento JSON que descreve os metadados da NFT.
+
+Os metadados de uma NFT são o que realmente a torna realidade, permitindo que tenha propriedades configuráveis, como um nome, descrição, imagem (ou diferentes ativos digitais), e outros atributos. Aqui está [um exemplo de um tokenURI](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2), que contém os metadados de uma NFT.
+
+Neste tutorial, vamos nos concentrar na parte 2, chamando a função mint de contrato inteligente de uma NFT existente usando nossa interface do React.
+
+[Aqui está um link](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) para o contrato inteligente NFT ERC-721 que vamos chamar neste tutorial. Se você gostaria de saber como o fizemos, é altamente recomendável que você veja nosso outro tutorial, ["Como criar uma NFT"](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+
+Legal, agora que entendemos como fazer uma NFT funcionar, vamos clonar nossos arquivos iniciais!
+
+## Clonar os arquivos iniciais {#clone-the-starter-files}
+
+Primeiro, vá para o [repositório GitHub do nft-minter-tutorial](https://github.com/alchemyplatform/nft-minter-tutorial) para obter os arquivos iniciais para este projeto. Clone este repositório para o seu ambiente local.=
+
+Quando você abrir este repositório clonado `nft-minter-tutorial`, irá notar que ele contém duas pastas: `minter-starter-files` e `nft-minter`.
+
+- `minter-starter-files` contém os arquivos iniciais (essencialmente a interface do React) para este projeto. Neste tutorial, **trabalharemos nesse diretório**, enquanto você aprende a dar vida a sua interface do usuário, conectando-a à sua carteira Ethereum e a um contrato inteligente de NFT.
+- `nft-minter` contém o tutorial completo e serve para você como uma **referência** **se você ficar preso.**
+
+Em seguida, abra sua cópia de `minter-starter-files` no seu editor de código e navegue para a pasta `src`.
+
+Todo o código que vamos escrever será exibido na pasta `src`. Vamos editar o componente `Minter.js` e escrever arquivos javascript adicionais para dar funcionalidades Web3 ao nosso projeto.
+
+## Passo 2: Confira nossos arquivos iniciais {#step-2-check-out-our-starter-files}
+
+Antes de começarmos a codificar, é importante verificar o que já está fornecido para nós nos arquivos iniciais.
+
+### Tenha seu projeto React em execução {#get-your-react-project-running}
+
+Vamos começar executando o projeto React em nosso navegador. A beleza do React é que uma vez que nosso projeto esteja sendo executado no nosso navegador, qualquer alteração que salvarmos será atualizada ao vivo em nosso navegador.
+
+Para fazer com que o projeto funcione, navegue até o diretório raiz da pasta `minter-starter-files`, e execute`npm install` no seu terminal para instalar as dependências do projeto:
+
+```bash
+cd minter-starter-files
+npm install
+```
+
+Uma vez terminada a instalação, execute `npm start` em seu terminal:
+
+```bash
+npm start
+```
+
+Feito isso, você deve abrir http://localhost:3000/ no seu navegador, onde você verá o frontend do nosso projeto. Ele deve consistir de 3 campos: um local para inserir um link para o ativo do seu NFT, digite o nome da sua NFT e forneça uma descrição.
+
+Se você tentar clicar nos botões "Connectar Wallet" ou "Mint NFT", você notará que eles não funcionam — isso porque ainda precisamos programar a funcionalidade deles! :\)
+
+### O componente Minter.js {#minter-js}
+
+**NOTA:** Certifique-se de estar na pasta `minter-starter-files` e não na pasta `nft-minter`!
+
+Vamos voltar à pasta `src` no nosso editor e abrir o arquivo `Minter.js`. É muito importante que entendamos tudo neste arquivo, pois é o principal componente do React no qual vamos trabalhar.
+
+No topo do nosso arquivo, temos nossas variáveis de estado que serão atualizadas após eventos específicos.
+
+```javascript
+//State variables
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [name, setName] = useState("")
+const [description, setDescription] = useState("")
+const [url, setURL] = useState("")
+```
+
+Nunca ouviu falar de variáveis de estado do React ou State Hooks? Confira [está](https://reactjs.org/docs/hooks-state.html) documentação.
+
+Veja aqui o que cada uma das variáveis representa:
+
+- `walletAddress` - uma string que armazena o endereço da carteira do usuário
+- `status` - uma string que contém uma mensagem a ser exibida na parte inferior da interface do usuário
+- `name` - uma string que armazena o nome da NFT
+- `descrição` - uma string que armazena a descrição da NFT
+- `url` - uma string que é um link para o ativo digital da NFT
+
+Após as variáveis de estado, você verá três funções não implementadas: `useEffect`, `connectWalletPressed`, e `onMintPressed`. Você irá notar que todas essas funções são `async`, isso é porque iremos fazer chamadas assíncronas da API nelas! Os nomes delas são relacionadas com sua funcionalidade:
+
+```javascript
+useEffect(async () => {
+ //TODO: implement
+}, [])
+
+const connectWalletPressed = async () => {
+ //TODO: implement
+}
+
+const onMintPressed = async () => {
+ //TODO: implement
+}
+```
+
+- [`useEffect`](https://reactjs.org/docs/hooks-effect.html) - este é um React Hook que é chamado depois que seu componente é renderizado. Porque ele tem uma array vazia `[]` "prop" passada para ela (veja a linha 3), ela só será chamada na _primeira_ renderização do componente. Aqui vamos chamar nosso ouvinte de carteira e outra função de carteira para atualizar nossa interface de usuário para refletir se uma carteira já está conectada.
+- `connectWalletPressed` - esta função será chamada para conectar a carteira MetaMask do usuário ao nosso dapp.
+- `onMintPressed` - esta função será chamada para mintar a NFT do usuário.
+
+Perto do final desse arquivo, temos a interface de usuário do nosso componente. Se você escanear este código com cuidado, notará que atualizamos nossa `url`, `name`, e `description` variáveis de estado quando a entrada em seus campos de texto correspondentes muda.
+
+Você também verá que `connectWalletPressed` e `onMintPressed` são chamadas quando os botões com IDs `mintButton` e `walletButton` são clicados respectivamente.
+
+```javascript
+//the UI of our component
+return (
+
+
+
+
+
🧙♂️ Alchemy NFT Minter
+
+ Simply add your asset's link, name, and description, then press "Mint."
+
+
+
+
{status}
+
+)
+```
+
+Finalmente, vamos endereçar onde esse componente Minter será adicionado.
+
+Se você for ao arquivo `App.js`, que é o componente principal do React que atua como um contêiner para todos os outros componentes, você verá que nosso componente Minter é injetado na linha 7.
+
+**Neste tutorial, vamos apenas editar o arquivo `Minter.js` e adicionar arquivos em nossa pasta `src`.**
+
+Agora que entendemos com o que estamos trabalhando, vamos configurar a nossa carteira Ethereum!
+
+## Configure sua carteira Ethereum {#set-up-your-ethereum-wallet}
+
+Para que os usuários possam interagir com o seu contrato inteligente, eles precisarão conectar a sua carteira Ethereum ao seu dapp.
+
+### Baixar MetaMask {#download-metamask}
+
+Para este tutorial, usaremos uma carteira virtual no navegador, a MetaMask, para gerenciar o endereço da sua conta Ethereum. Se você quiser entender mais sobre como as transações no Ethereum funcionam, confira [esta página](/developers/docs/transactions/) na Fundação Ethereum.
+
+Você pode baixar e criar uma conta MetaMask gratuitamente [neste link](https://metamask.io/download.html). Quando estiver criando uma conta, ou se já tiver uma, certifique-se de mudar para a "Ropsten Test Network", no canto superior direito (para não precisar lidar com dinheiro de verdade\).
+
+### Etapa: Adicionar Faucet ether {#add-ether-from-faucet}
+
+Para mintar as nossas NFT (ou assinar quaisquer transações no blockchain Ethereum), precisaremos de alguns Eth falsos. Para obter Eth você pode ir para o [faucet da Ropsten](https://faucet.ropsten.be/), inserir seu endereço de conta Ropsten e clicar em "Send Ropsten Eth." Em seguida, você deve ver Eth em sua conta Metamask!
+
+### Conferir o seu saldo {#check-your-balance}
+
+Para verificar novamente que tem saldo, vamos fazer uma solicitação através da ferramenta [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) fornecida pelo [compositor da Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Ela mostrará a quantidade de Eth na sua carteira. Depois de inserir o endereço da sua conta da MetaMask e clicar em "Send Request", você verá uma resposta como esta:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**NOTA:** Este resultado está em wei, não em ETH. Lembre-se de que "Wei" é a menor unidade de ether. A conversão de wei para eth é: 1 eth = 10¹⁸ wei. Então, se convertemos 0xde0b6b3a7640000 para decimal, temos 1\*10¹⁸ wei, que é igual a 1 eth.
+
+Ufa! Nosso dinheiro falso está todo lá!
+
+## Conecte o MetaMask à sua interface {#connect-metamask-to-your-UI}
+
+Agora que nossa carteira MetaMask está configurada, vamos conectar nosso dapp a ela!
+
+Como queremos prescrever conforme o paradigma [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), vamos criar um arquivo separado que contém nossas funções para gerenciar a lógica, dados e regras de nosso dapp, e então passar essas funções para nosso frontend (nosso componente Minter.js).
+
+### Função `connectWallet` {#connect-wallet-function}
+
+Para fazer isso, vamos criar uma nova pasta chamada `utils` em seu diretório `src` e adicionar um arquivo chamado `interact.js` dentro dele, que conterá todas as funções de nossa carteira e da interação com o contrato inteligente.
+
+No nosso arquivo `interact.js`, vamos escrever uma função `connectWallet`, que então importar e chamará nosso componente `Minter.js`.
+
+No seu arquivo`interact.js`, adicione o seguinte
+
+```javascript
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Vamos dividir o que este código faz:
+
+Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador.
+
+`window.ethereum` é uma API global injetada pela MetaMask e outros provedores de carteira que permitem que sites solicitem contas Ethereum dos usuários. Se aprovada, ela pode ler dados das blockchains ao qual o usuário está conectado e sugerir que o usuário assine mensagens e transações. Confira a [documentação da MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obter mais informações!
+
+Se `window.ethereum` _não está_ presente, então isso significa que o MetaMask não está instalado. Isso resulta em um objeto JSON sendo retornado, onde o `endereço` retornado é uma string vazia, e o `status` do objeto JSX repassa que o usuário deve instalar o MetaMask.
+
+**A maioria das funções que escrevermos retornarão objetos JSON que podemos usar para atualizar nossas variáveis de estado e interface de usuário.**
+
+Agora se `window.ethereum` _estiver_ presente, e é aí que as coisas ficam interessantes.
+
+Usando um loop de try/catch, tentaremos nos conectar a MetaMask chamando`[window.ethereum.request({ method: "eth_requestAccounts" });](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts)`. Chamando esta função o MetaMask irá abrir no navegador, onde o usuário será solicitado a conectar sua carteira ao seu dapp.
+
+- Se o usuário escolher conectar-se, `método: "eth_requestAccounts"` retornará um array que contém todos os endereços de conta do usuário que estão conectados ao dapp. No total, nossa função `connectWallet` retornará um objeto JSON que contém o _primeiro_ `address` desta matriz \(ver linha 9\) e uma mensagem `status` que pede que o usuário escreva uma mensagem para o contrato inteligente.
+- Se o usuário rejeitar a conexão, então o objeto JSON vai conter uma string vazia para o `address` retornado e uma mensagem de `status` que reflete que o usuário rejeitou a conexão.
+
+### Adicionar função connectWallet ao seu componente UI Minter.js {#add-connect-wallet}
+
+Agora que escrevemos esta função `connectWallet`, vamos conectá-la ao nosso componente `Minter.js.`.
+
+Primeiro, teremos que importar nossa função para o arquivo `Minter.js` adicionando `import { connectWallet } from "./utils/interact.js";` para o topo do arquivo `Minter.js`. Suas primeiras 11 linhas de `Minter.js` agora devem se parecer com isto:
+
+```javascript
+import { useEffect, useState } from "react";
+import { connectWallet } from "./utils/interact.js";
+
+const Minter = (props) => {
+
+ //State variables
+ const [walletAddress, setWallet] = useState("");
+ const [status, setStatus] = useState("");
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [url, setURL] = useState("");
+```
+
+Então, dentro da nossa função `connectWalletPressed`, vamos chamar nossa função importada `connectWallet`, assim:
+
+```javascript
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+Observe como a maior parte das nossas funcionalidades está abstraída do nosso componente `Minter.js` do arquivo `interact.js`? É assim que respeitamos o paradigma M-V-C!
+
+Em `connectWalletPressed`, simplesmente fazemos uma chamada de espera (await) para a função `connectWallet`, importada, e usando sua resposta, nós atualizaremos nossas variáveis `status` e `walletAddress` através de seus state hooks.
+
+Agora, vamos salvar os dois arquivos `Minter.js` e `interact.js` e testar nossa UI até agora.
+
+Abra seu navegador em localhost:3000, e pressione o botão "Conectar Carteira" no canto superior direito da página.
+
+Se você tiver o MetaMask instalado, você será solicitado a conectar sua carteira ao seu dapp. Aceite o convite para se conectar.
+
+Você verá que o botão da carteira agora reflete que seu endereço está conectado.
+
+Em seguida, tente atualizar a página... isso é estranho. Nosso botão de carteira está nos pedindo para conectar o MetaMask, mesmo que já esteja conectado...
+
+Mas não se preocupe! Nós podemos facilmente corrigir isso implementando uma função chamada `getCurrentWalletConnected`, que irá verificar se um endereço já está conectado ao nosso dapp e atualizará nossa interface do usuário adequadamente!
+
+### Função getCurrentWalletConnected {#get-current-wallet}
+
+Em seu arquivo `interact.js`, adicione a função`getCurrentWalletConnected`:
+
+```javascript
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+
+ ),
+ }
+ }
+}
+```
+
+Este código é _muito_ semelhante à função `connectWallet` que acabamos de escrever.
+
+A diferença principal é que, em vez de chamar o método `eth_requestAccounts`, que abre o MetaMask para o usuário conectar sua carteira, aqui chamamos o método `eth_accounts`, que simplesmente retorna uma matriz que contém os endereços MetaMask atualmente conectados ao nosso dapp.
+
+Para ver essa função em ação, vamos chamá-la na função `useEffect` do nosso componente `Minter.js`.
+
+Como fizemos para `connectWallet`, devemos importar essa função do nosso arquivo `interact.js` para o `Minter.js`, assim:
+
+```javascript
+import { useEffect, useState } from "react"
+import {
+ connectWallet,
+ getCurrentWalletConnected, //import here
+} from "./utils/interact.js"
+```
+
+Agora, simplesmente a chamamos em nossa função `useEffect`:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+Note que nós usamos a resposta da nossa chamada a `getCurrentWalletConnected` para atualizar nossa `walletAddress` e nossa variável de estado `status`.
+
+Depois de adicionar este código, tente atualizar a janela do navegador. O botão deve dizer que você está conectado e mostrar uma visualização do endereço de sua carteira conectada - mesmo depois de atualizar!
+
+### Implementar addWalletListener {#implement-add-wallet-listener}
+
+O passo final na configuração da nossa carteira dapp é implementar o ouvinte de carteira, para que nossa interface atualize quando o estado mudar, como quando o usuário desconecta ou troca de contas.
+
+No seu arquivo `Minter.js`, adicione a função `addWalletListener` que se parece com o seguinte:
+
+```javascript
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ )
+ }
+}
+```
+
+Vamos dividir rapidamente o que está acontecendo aqui:
+
+- Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador \(ex. MetaMask instalado\).
+ - Caso contrário, nós simplesmente configuramos a variável de estado `status` para uma JSX string que solicita o usuário instalar a MetaMask.
+ - Se estiver habilitado, configuramos o ouvinte `window.ethereum.on("accountsChanged")` na linha 3 que houve mudança de estado na carteira MetaMask, inclusive quando o usuário conecta uma conta adicional ao dapp, troca de conta ou desconecta uma conta. Se houver pelo menos uma conta conectada, a variável de estado `walletAddress` é atualizada como a primeira conta no array `accounts` retornada pelo ouvinte. Caso contrário, `walletAddress` é definida como uma string vazia.
+
+Finalmente, nós devemos chamá-la em nossa função `useEffect`:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+E Voila! Concluímos a programação de toda a funcionalidade da nossa carteira! Agora que a nossa carteira está pronta, vamos descobrir como mintar nossa NFT!
+
+## Metadados NFT 101 {#nft-metadata-101}
+
+Lembra dos metadados da NFT que acabamos de falar no Passo 0 deste tutorial - ele dá vida a uma NFT, permitindo que tenha propriedades, como um ativo digital, nome, descrição e outros atributos.
+
+Vamos precisar configurar esse metadado como um objeto JSON e amarzena-lo, para que possamos passa-lo como parâmetro `tokenURI` quando chamarmos a função `mintNFT` do nosso contrato inteligente.
+
+No campo texto "Link to Asset", "Name", "Description" inclui as diferentes propriedades dos metadados de nosso NFT. Nós vamos formatar estes metadados como um objeto JSON, mas há algumas opções para onde podemos armazenar este objeto JSON:
+
+- Poderíamos armazená-lo no blockchain Ethereum; no entanto, fazê-lo seria muito caro.
+- Nós poderíamos armazená-lo em um servidor centralizado, como AWS ou Firebase. Mas isso iria contra nossa ética de descentralização.
+- Poderíamos usar o IPFS, um protocolo descentralizado e uma rede peer-to-peer para armazenar e compartilhar dados em um sistema de arquivos distribuído. Como este protocolo é descentralizado e gratuito, essa é a melhor opção!
+
+Para armazenar nossos metadados no IPFS, vamos usar [Pinata](https://pinata.cloud/), uma conveniente API IPFS e um conjunto de ferramentas. Na próxima etapa, vamos explicar exatamente como fazer isso!
+
+## Use o Pinata para fixar seus metadados no IPFS {#use-pinata-to-pin-your-metadata-to-IPFS}
+
+Se você não tem uma conta no [Pinata](https://pinata.cloud/), cadastre-se [aqui](https://pinata.cloud/) gratuitamente e conclua as etapas de confirmação do seu e-mail e conta.
+
+### Crie sua chave API do Pinata {#create-pinata-api-key}
+
+Navegue para a página[https://pinata.cloud/keys](https://pinata.cloud/keys), então selecione o botão "New Key" no topo da página, defina o Admin widget como ativado, e nomeie sua chave.
+
+Será mostrado a você um pop-up com as informações da sua API. Certifique-se de colocar isto num lugar seguro.
+
+Agora que a nossa chave está configurada, vamos adicioná-la ao nosso projeto para que possamos usá-la.
+
+### Criar o arquivo .env {#create-a-env}
+
+Podemos armazenar com segurança nossa chave e segredo do Pinata em um arquivo de ambiente. Vamos instalar o [pacote dotenv](https://www.npmjs.com/package/dotenv) no diretório do seu projeto.
+
+Abra uma nova aba no seu terminal \(separado do terminal executando o local host\) e certifique-se de estar na pasta `minter-starter-files`, então execute o seguinte comando no seu terminal:
+
+```text
+npm install dotenv --save
+```
+
+Em seguida, crie um arquivo `.env` no diretório raiz dos seus `minter-starter-files` inserindo o seguinte na sua linha de comando:
+
+```javascript
+vim.env
+```
+
+Isto abrirá seu arquivo `.env` no formato vim \(um editor de texto\). Para salvar, aperte "esc" + ":" + "q" no seu teclado nesta ordem.
+
+Em seguida, no VSCode, navegue até o seu arquivo `.env` e adicione sua chave de API Pinata e sua API secreta, assim:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+```
+
+Salve o arquivo e então você estará pronto para começar a escrever a função de enviar seus metadados JSON para IPFS!
+
+### Implementar pinJSONToIPFS {#pin-json-to-ipfs}
+
+Felizmente para nós, a Pinata tem uma API [especificamente para carregar dados JSON para o IPFS](https://pinata.cloud/documentation#PinJSONToIPFS) e um JavaScript conveniente com axios de exemplo que podemos usar, com algumas pequenas modificações.
+
+Na sua pasta `utils`, vamos criar outro arquivo chamado `pinata.js` e então importar nossa chave Pinata do arquivo .env assim:
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+```
+
+Em seguida, cole o código adicional abaixo no seu arquivo `pinata.js`. Não se preocupe, nós iremos clarificar o que tudo isso significa!
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+
+const axios = require("axios")
+
+export const pinJSONToIPFS = async (JSONBody) => {
+ const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS`
+ //making axios POST request to Pinata ⬇️
+ return axios
+ .post(url, JSONBody, {
+ headers: {
+ pinata_api_key: key,
+ pinata_secret_api_key: secret,
+ },
+ })
+ .then(function (response) {
+ return {
+ success: true,
+ pinataUrl:
+ "https://gateway.pinata.cloud/ipfs/" + response.data.IpfsHash,
+ }
+ })
+ .catch(function (error) {
+ console.log(error)
+ return {
+ success: false,
+ message: error.message,
+ }
+ })
+}
+```
+
+Então, o que esse código faz exatamente?
+
+Primeiro, importa [axios](https://www.npmjs.com/package/axios), a um cliente HTTP baseado em promessas para o navegador e node.js, que utilizaremos para fazer um pedido a Pinata.
+
+Em seguida, temos nossa função assíncrona `pinJSONToIPFS`, que recebe um `JSONBody` como sua entrada e a chave e senha do API Pinata em seu cabeçalho, tudo para fazer uma solicitação POST para sua API `pinJSONToIPFS`.
+
+- Se esta solicitação POST for bem sucedida, então nossa função retorna um objeto JSON com o valor booleano `sucess` como verdadeiro e a `pinataUrl` onde nossos metadados foram fixados. Nós usaremos a `pinataUrl` retornada, como entrada na `tokenURI` para a função mint do nosso contrato inteligente.
+- Se esta solicitação POST falhar, então, nossa função retorna um objeto JSON com o booleano `success` como falso e uma `message` que transmite nosso erro.
+
+Assim como na nossa função `connectWallet`retorna tipos, estamos retornando objetos JSON para que possamos usar seus parâmetros para atualizar nossas variáveis de estado e nossa interface de usuário.
+
+## Carregar seu contrato inteligente {#load-your-smart-contract}
+
+Agora que temos uma maneira de enviar nossos metadados NFT para IPFS através de nossa função de `pinJSONToIPFS`, vamos precisar de uma forma de carregar uma instância do nosso contrato inteligente para que possamos chamar a função `mintNFT`.
+
+Como mencionado anteriormente, neste tutorial usaremos [este é um contrato inteligente NFT existente](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE); no entanto, se você quer aprender como o fizemos ou como fazer um você mesmo, é altamente recomendável que você confira nosso outro tutorial, ["Como criar uma NFT.](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+
+### O contrato ABI {#contract-abi}
+
+Se você examinar de perto nossos arquivos, você notará que no nosso diretório `src`, há um arquivo `contract-abi.json`. Um ABI é necessário para especificar qual função um contrato irá invocar, como também garantir que a função retornará dados no formato que você espera.
+
+Também precisaremos de uma chave API Alchemy e da API Alchemy Web3 para conectar ao blockchain Ethereum e carregar o nosso contrato inteligente.
+
+### Crie a sua chave API Alchemy {#create-alchemy-api}
+
+Se ainda não tiver uma conta na Alchemy, você pode se cadastrar gratuitamente [neste link](https://alchemy.com/?a=eth-org-nft-minter)
+
+Assim que criar uma conta na Alchemy, você pode gerar uma chave de API criando um "app". Isso nos permitirá fazer solicitações à rede de testes Ropsten.
+
+Navegue até a pagina "Create App" no seu "Dashboard da Alchemy", passe o cursor sob "Apps" na barra de navegação e clique em “Create App”.
+
+Nomeie seu aplicativo; nós escolhemos "Minha primeira NFT!", faça uma breve descrição, selecione "Staging" para o ambiente (usado para a contabilidade do seu ‘app’) e escolha "Ropsten" para sua rede.
+
+Clique em "Create App", e é isso e tudo! Seu app deveria aparecer na tabela abaixo.
+
+Incrível agora que criamos a nossa URL de API Alchemy HTTP, copie-a para a sua área de transferência...
+
+…e então vamos adicioná-lo ao nosso arquivo `.env`. Ao todo, seu arquivo .env deve se parecer com isto:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/
+```
+
+Agora que temos nosso contrato ABI e nossa chave API do Alchemy, estamos prontos para carregar o nosso contrato inteligente usando [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
+
+### Configure seu Alchemy Web3 endpoint e contrato {#setup-alchemy-endpoint}
+
+Primeiro, se você ainda não tiver, você precisará instalar [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando até o diretório home: `nft-minter-tutorial` no terminal:
+
+```text
+cd ..
+yarn add @alch/alchemy-web3
+```
+
+Em seguida, voltaremos para o nosso arquivo `interact.js`. No topo do arquivo, adicione o seguinte código para importar a chave de Alchemy do seu arquivo .env e configure seu Alchemy Web3 endpoint:
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+```
+
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) é um invólucro em torno do [Web3.js](https://docs.web3js.org/), fornecendo métodos aprimorados da API e outros benefícios cruciais para tornar a sua vida de desenvolvedor da Web3 mais fácil. Ele foi projetado para exigir uma configuração mínima, para que você possa começar a usá-la no seu aplicativo imediatamente!
+
+Em seguida, vamos adicionar nosso contrato ABI e endereço do contrato ao nosso arquivo.
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE"
+```
+
+Assim que tivermos ambas as coisas, estaremos prontos para começar a codificar a nossa função "mint"!
+
+## Implementar a função mintNFT {#implement-the-mintnft-function}
+
+Dentro do seu arquivo `interact.js`, vamos definir nossa função, `mintNFT`, que deliberadamente vai criar nossa NFT.
+
+Porque vamos fazer numerosas chamadas assíncronas \(para o Pinata fixar nossos metadados para IPFS, Alchemy Web3 para carregar o nosso contrato inteligente, e MetaMask para assinar nossas transações\), nossa função também será assíncrona.
+
+As três entradas para nossa função serão a `url` do nosso ativo digital, `name`e `description`. Adicione a seguinte assinatura da função abaixo da função `connectWallet`:
+
+```javascript
+export const mintNFT = async (url, name, description) => {}
+```
+
+### Manipulação de erros de script {#input-error-handling}
+
+Naturalmente, faz sentido ter algum tipo de tratamento de erro de entrada no início da função, então vamos sair desta função se nossos parâmetros de entrada não estiverem corretos. Dentro da nossa função, vamos adicionar o seguinte código:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+}
+```
+
+Essencialmente, se algum dos parâmetros de entrada for uma string vazia, então retornamos um objeto JSON onde o valor booleano `success` é falso, e a string `status` repassa que todos os campos na nossa UI precisam estar completos.
+
+### Carregar os metadados para o IPFS {#upload-metadata-to-ipfs}
+
+Assim que soubermos que nossos metadados estão formatados corretamente, o próximo passo é envolvê-lo em um objeto JSON e enviá-lo para IPFS através do `pinJSONToIPFS` que escrevemos!
+
+Para fazer isso, precisamos primeiro importar a função `pinJSONToIPFS` para nosso arquivo `interact.js`. No topo do `interact.js`, vamos adicionar:
+
+```javascript
+import { pinJSONToIPFS } from "./pinata.js"
+```
+
+Lembre-se que `pinJSONToIPFS` recebe um corpo JSON. Então, antes de fazer a chamada, precisaremos formatar a nossa `url`, `name`e `description` parâmetros em um objeto JSON.
+
+Vamos atualizar nosso código para criar um objeto JSON chamado `metadada` e então fazer uma chamada para `pinJSONToIPFS` com este parâmetro `metadada`:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //make pinata call
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+}
+```
+
+Note, nós armazenamos a resposta de nossa chamada para `pinJSONToIPFS(metadada)` no objeto `pinataResponse`. Então, analisamos esse objeto para quaisquer erros.
+
+Se houver um erro, nós retornamos um objeto JSON onde o `sucess` booleano é falso e nossa string `status` relata que nossa chamada falhou. Caso contrário, nós extraímos a `pinataURL` da `pinataResponse` e armazenamos como nossa variável `tokenURI`.
+
+Agora é hora de carregar o nosso contrato inteligente usando a API da Alchemy Web3 que inicializamos no topo do nosso arquivo. Adicione a seguinte linha de código na parte inferior da função `mintNFT` para definir o contrato na `window.contract` variável global:
+
+```javascript
+window.contract = await new web3.eth.Contract(contractABI, contractAddress)
+```
+
+A última coisa a adicionar em nossa função `mintNFT` é a nossa transação Ethereum:
+
+```javascript
+//set up your Ethereum transaction
+const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+}
+
+//sign the transaction via MetaMask
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+} catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+}
+```
+
+Se você já está familiarizado com as transações na Ethereum, perceberá que a estrutura é bem parecida com a que você já viu.
+
+- Primeiro, nós configuramos nossos parâmetros de transações.
+ - `to` especificar o endereço do destinatário \(nosso contrato inteligente\)
+ - `from` especifica o signatário da transação \(o endereço conectado ao MetaMask: `window.ethereum.selectedAddress`\)
+ - `data` contém a chamada para nosso contrato inteligente do método `mintNFT`, que recebe nossa `tokenURI` e o endereço da carteira do usuário, `window.ethereum.selectedAddress` como entradas
+- Então, faremos uma chamada para, `window.ethereum.request,` onde pedimos ao MetaMask para assinar a transação. Note que nessa solicitação, estamos especificando nosso método eth \(eth_SentTransaction\) e passando em nossos `transactionParameters`. Neste ponto, a MetaMask irá abrir no navegador e pedirá que o usuário assine ou rejeite a transação.
+ - Se a transação for bem-sucedida, a função retornará um objeto JSON onde o booleano `success` é definido como verdadeiro e a string `status` pede que o usuário verifique o Etherscan para obter mais informações sobre sua transação.
+ - Se a transação falhar, a função retornará um objeto JSON onde o booleano `success` é definido como falso, `status` string retransmite a mensagem de erro.
+
+Ao todo, nossa função `mintNFT` deve-se parecer com isto:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //pinata pin request
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+
+ //load smart contract
+ window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract();
+
+ //set up your Ethereum transaction
+ const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+ }
+
+ //sign transaction via MetaMask
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+ } catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+ }
+}
+```
+
+Essa é uma função gigante! Agora, só precisamos conectar nossa função `mintNFT` com nosso componente `Minter.js`...
+
+## Conectando mintNFT ao nosso frontend Minter.js {#connect-our-frontend}
+
+Abra o seu arquivo `Minter.js` e atualize `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` a linha em cima deve ser:
+
+```javascript
+import {
+ connectWallet,
+ getCurrentWalletConnected,
+ mintNFT,
+} from "./utils/interact.js"
+```
+
+Finalmente, implemente a função `onMintPressed` para fazer a chamada(await call) para a função `mintNFT`importada e atualize a variável de estado `status` para refletir se nossa transação foi bem-sucedida ou falhou:
+
+```javascript
+const onMintPressed = async () => {
+ const { status } = await mintNFT(url, name, description)
+ setStatus(status)
+}
+```
+
+## Implante seu NFT a um site ao vivo {#deploy-your-NFT}
+
+Pronto para deixar seu projeto ao vivo para que usuários interajam? Confira [este tutorial](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online) para implantar seu Minter em um site ao vivo.
+
+Um último passo...
+
+## Leve o mundo blockchain numa enxurrada {#take-the-blockchain-world-by-storm}
+
+Só uma brincadeira, você chegou ao fim do tutorial!
+
+Para recapitular, construindo um minter NFT, você aprendeu com sucesso como:
+
+- Conectar ao MetaMask através do seu projeto frontend
+- Chamar métodos de contrato inteligentes no seu frontend
+- Assine transações usando MetaMask
+
+Provavelmente você gostaria de poder exibir seu NFT na sua carteira — então certifique-se de conferir [ a parte Como ver seu NFT na sua carteira](https://docs.alchemyapi.io/alchemy/tutorials/how-to-write-and-deploy-a-nft-smart-contract/how-to-view-your-nft-in-your-wallet)!
+
+E, como sempre, se você tiver alguma dúvida, estamos aqui para ajudar no [Alchemy Discord](https://discord.gg/gWuC7zB). Mal podemos esperar para ver como você aplicará os conceitos deste tutorial em seus projetos futuros!
diff --git a/public/content/translations/pt-br/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/pt-br/developers/tutorials/optimism-std-bridge-annotated-code/index.md
new file mode 100644
index 00000000000..4eb6f676681
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -0,0 +1,1277 @@
+---
+title: "Passo a passo do contrato de ponte padrão da Optimism"
+description: Como funciona a ponte padrão para a Optimism? Porque funciona desta maneira?
+author: Ori Pomerantz
+tags:
+ - "solidity"
+ - "ponte"
+ - "camada 2"
+skill: intermediate
+published: 2022-03-30
+lang: pt-br
+---
+
+[Optimism](https://www.optimism.io/) é uma [ Optimistic Rollup](/developers/docs/scaling/optimistic-rollups/). Optimistic rollups podem processar transações por um preço muito inferior ao Ethereum Mainnet (também conhecido como layer 1 ou L1) porque as transações são processadas apenas por alguns nós, em vez de cada nó na rede. Ao mesmo tempo, os dados são todos escritos em L1, de modo que tudo pode ser provado e reconstruído com todas as garantias de integridade e disponibilidade da rede principal.
+
+Para usar ativos L1 na Optimism (ou qualquer outra L2), os ativos precisam ser [enviados pela ponte](/bridges/#prerequisites). Uma maneira de conseguir isso é os usuários bloquearem ativos (ETH e [tokens ERC-20](/developers/docs/standards/tokens/erc-20/) são os mais comuns) na L1, e receber ativos equivalentes para usar na L2. Por fim, quem for que acabe com eles, talvez queira enviá-los de volta para a L1. Ao fazer isso, os ativos são queimados na L2 e, em seguida, liberados para o usuário na L1.
+
+É assim que a [ponte padrão Optimism](https://community.optimism.io/docs/developers/bridge/standard-bridge) funciona. Neste artigo, passamos pelo código-fonte para essa ponte para ver como ele funciona e estudá-lo como um exemplo de código Solidity bem escrito.
+
+## Fluxo de controle {#control-flows}
+
+A ponte tem dois fluxos principais:
+
+- Depósito (de L1 a L2)
+- Saque de (L2 para L1)
+
+### Fluxo de depósitos {#deposit-flow}
+
+#### Camada 1 {#deposit-flow-layer-1}
+
+1. Se depositar um ERC-20, o depositante dá à ponte uma permissão para gastar o valor que está sendo depositado
+2. O depositor chama a ponte L1(`depositERC20`, `depositERC20To`, `depositETH`, ou `depositETHTo`)
+3. A ponte L1 toma posse do ativo que está na ponte
+ - ETH: O ativo é transferido pelo depositante como parte da chamada
+ - ERC-20: O ativo é transferido pela ponte para si mesmo usando a permissão fornecida pelo depositante
+4. A ponte L1 usa o mecanismo de mensagem entre domínios para chamar `finalizeDeposit` na ponte L2
+
+#### Camada 2 {#deposit-flow-layer-2}
+
+5. A ponte L2 verifica que a chamada do `finalizeDeposit` é legítima:
+ - Se veio do contrato de mensagem entre domínios
+ - Era originalmente da ponte em L1
+6. A ponte L2 checa se o contrato do token ERC-20 na L2 é o correto:
+ - O contrato L2 reporta que sua contraparte L1 é a mesma de onde vieram os tokens da L1
+ - O contrato L2 reporta que suporta a interface correta ([usando ERC-165](https://eips.ethereum.org/EIPS/eip-165)).
+7. Se o contrato L2 é o correto, chame-o para cunhar o número apropriado de tokens para o endereço apropriado. Se não, comece o processo de retirada para permitir o usuário reclamar os tokens no L1.
+
+### Fluxo de retirada {#withdrawal-flow}
+
+#### Camada 2 {#withdrawl-flow-layer-2}
+
+1. O sacador chama a ponte L2 (`withdraw` ou `withdrawTo`)
+2. A ponte L2 queima o número apropriado de tokens pertencentes a `msg.sender`
+3. A ponte L2 usa o mecanismo de mensagens entre domínios para chamar `finalizeETHWithdrawal` ou `finalizeERC20Withdrawal` na ponte L1
+
+#### Camada 1 {#withdrawl-flow-layer-1}
+
+4. A ponte L1 verifica a chamada a `finalizeETHWithdrawal` ou `finalizeERC20Withdrawal` é legitima:
+ - Veio de um mecanismo de mensagens entre domínios
+ - Foi originada da ponte no L2
+5. A ponte L1 transfere o ativo apropriado (ETH ou ERC-20) para o endereço apropriado
+
+## Código Camada 1 {#layer-1-code}
+
+Este é o código que roda na L1, a Rede Principal do Ethereum.
+
+### IL1ERC20Bridge {#IL1ERC20Bridge}
+
+[Esta interface é definida aqui](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol). Ela inclui funções e definições exigidas para realizar a ponte de tokens ERC-20.
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+[Maioria do código da Optimism é lançada sob a licença MIT](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-).
+
+```solidity
+pragma solidity >0.5.0 <0.9.0;
+```
+
+Neste momento, a última versão do Solidity é 0.8.12. Até versão 0.9.0 ser lançada, nós não sabemos se este código é compatível com ele ou não.
+
+```solidity
+/**
+ * @title IL1ERC20Bridge
+ */
+interface IL1ERC20Bridge {
+ /**********
+ * Events *
+ **********/
+
+ event ERC20DepositInitiated(
+```
+
+Na terminologia de ponte Optimism _deposit_ significa transferência de L2 para L2, e _withdrawal_ significa uma transferência de L2 para L1.
+
+```solidity
+ address indexed _l1Token,
+ address indexed _l2Token,
+```
+
+Na maioria dos casos o endereço de um ERC-20 na L1 não é o mesmo endereço do equivalente ERC-20 na L2. [Você pode ver a lista de endereços de tokens aqui](https://static.optimism.io/optimism.tokenlist.json). O endereço com `chainId` 1 está na L1 (Mainnet) e o endereço com `chainId` 10 está na L2 (Optimism). Os outros dois valores `chainId` são para a rede de testes Kovan (42) e a rede de testes Optimistic Kovan (69).
+
+```solidity
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+É possível adicionar notas para transferências, caso no qual elas são adicionadas para os eventos que as reportam.
+
+```solidity
+ event ERC20WithdrawalFinalized(
+ address indexed _l1Token,
+ address indexed _l2Token,
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+O mesmo contrato de ponte manipula transferências em ambas as direções. No caso da ponte L1, isto significa inicialização de depósitos e finalização de retiradas.
+
+```solidity
+
+ /********************
+ * Public Functions *
+ ********************/
+
+ /**
+ * @dev get the address of the corresponding L2 bridge contract.
+ * @return Address of the corresponding L2 bridge contract.
+ */
+ function l2TokenBridge() external returns (address);
+```
+
+Esta função não é realmente necessária, porque na L2 ela é um contrato pré-implantado, então ela está sempre no endereço `0x4200000000000000000000000000000000000010`. Ela está aqui por simetria com a ponte L2, porque o endereço da ponte L1 _não_ é trivial de saber.
+
+```solidity
+ /**
+ * @dev deposit an amount of the ERC20 to the caller's balance on L2.
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _amount Amount of the ERC20 to deposit
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20(
+ address _l1Token,
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+O parâmetro `_l2Gas` é a quantidade de gas L2 que a transação tem permissão de gastar. [Até um certo (alto) limite, isto é grátis](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), portanto a menos que o contrato ERC-20 faça algo realmente estranho quando cunhando, isto não deveria ser um problema. Esta função cuida do cenário comum, onde um usuário faz a ponte dos ativos para o mesmo endereço em uma blockchain diferente.
+
+```solidity
+ /**
+ * @dev deposit an amount of ERC20 to a recipient's balance on L2.
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _to L2 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20To(
+ address _l1Token,
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+Esta função é quase idêntica a `depositERC20`, mas ela deixa você enviar o ERC-20 para diferentes endereços.
+
+```solidity
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ERC20 token.
+ * This call will fail if the initialized withdrawal from L2 has not been finalized.
+ *
+ * @param _l1Token Address of L1 token to finalizeWithdrawal for.
+ * @param _l2Token Address of L2 token where withdrawal was initiated.
+ * @param _from L2 address initiating the transfer.
+ * @param _to L1 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _data Data provided by the sender on L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+Saques (e outras mensagens de L2 para L1) na Optimism é um processo em duas etapas:
+
+1. Uma transação inicial no L2.
+2. Uma transação de finalização ou de reclamação na L1. Esta transação precisa acontecer depois do [período de desafio de falha](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) para a transação L2 terminar.
+
+### IL1StandardBridge {#il1standardbridge}
+
+[Esta interface é definida aqui](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol). Este arquivo contém definições de evento e função para ETH. Estas definições são muito similares com aquelas definidas em `IL1ERC20Bridge` acima para ERC-20.
+
+A ponte interface é dividida entre dois arquivos, porque alguns tokens ERC-20 requerem processamento customizado e não podem ser manipulados pela ponte padrão. Dessa maneira a ponte customizada que manipula este token pode implementar `IL1ERC20Bridge` e não ter que também fazer a ponte ETH.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+import "./IL1ERC20Bridge.sol";
+
+/**
+ * @title IL1StandardBridge
+ */
+interface IL1StandardBridge is IL1ERC20Bridge {
+ /**********
+ * Events *
+ **********/
+ event ETHDepositInitiated(
+ address indexed _from,
+ address indexed _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+Este evento é praticamente idêntico à versão ERC-20 (`ERC20DepositInitiated`), exceto por não ter os endereços de token L1 e L2. O mesmo é verdade para outros eventos e funções.
+
+```solidity
+ event ETHWithdrawalFinalized(
+ .
+ .
+ .
+ );
+
+ /********************
+ * Public Functions *
+ ********************/
+
+ /**
+ * @dev Deposit an amount of the ETH to the caller's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable;
+
+ /**
+ * @dev Deposit an amount of ETH to a recipient's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable;
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called
+ * before the withdrawal is finalized.
+ .
+ .
+ .
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+### CrossDomainEnabled {#crossdomainenabled}
+
+[Este contrato](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol) é herdado por ambas pontes ([L1](#the-l1-bridge-contract) e [L2](#the-l2-bridge-contract)) para enviar mensagens para a outra camada.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+/* Interface Imports */
+import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
+```
+
+[Esta interface](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol) mostra ao contrato como enviar mensagens para a outra camada, usando o mensageiro entre domínios. Este mensageiro entre domínios é todo um outro sistema, e merece um artigo próprio, que espero escrever no futuro.
+
+```solidity
+/**
+ * @title CrossDomainEnabled
+ * @dev Helper contract for contracts performing cross-domain communications
+ *
+ * Compiler used: defined by inheriting contract
+ */
+contract CrossDomainEnabled {
+ /*************
+ * Variables *
+ *************/
+
+ // Messenger contract used to send and receive messages from the other domain.
+ address public messenger;
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _messenger Address of the CrossDomainMessenger on the current layer.
+ */
+ constructor(address _messenger) {
+ messenger = _messenger;
+ }
+```
+
+O único parâmetro que o contrato precisa saber é o endereço do mensageiro entre domínios nessa camada. Este parâmetro é configurado uma vez, no construtor, e nunca muda.
+
+```solidity
+
+ /**********************
+ * Function Modifiers *
+ **********************/
+
+ /**
+ * Enforces that the modified function is only callable by a specific cross-domain account.
+ * @param _sourceDomainAccount The only account on the originating domain which is
+ * authenticated to call this function.
+ */
+ modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {
+```
+
+O mensageiro entre domínios é acessível por qualquer contrato na blockchain onde estiver rodando (seja Ethereum mainnet ou Optimism). Mas nós precisamos da ponte em cada lado para _apenas_ confiar em certas mensagens se eles vierem da ponte do outro lado.
+
+```solidity
+ require(
+ msg.sender == address(getCrossDomainMessenger()),
+ "OVM_XCHAIN: messenger contract unauthenticated"
+ );
+```
+
+Somente mensagens do mensageiro entre domínios apropriado (`messenger`, como você vê abaixo) pode ser confiado.
+
+```solidity
+
+ require(
+ getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,
+ "OVM_XCHAIN: wrong sender of cross-domain message"
+ );
+```
+
+A maneira que o mensageiro entre domínios fornece o endereço que enviou uma mensagem com a outra camada é [a função `.xDomainMessageSender()`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol#L122-L128). Enquanto ele for chamado na transação que foi iniciada pela mensagem, ele pode fornecer esta informação.
+
+Nós precisamos nos certificar que a mensagem que nós recebemos veio da outra ponte.
+
+```solidity
+
+ _;
+ }
+
+ /**********************
+ * Internal Functions *
+ **********************/
+
+ /**
+ * Gets the messenger, usually from storage. This function is exposed in case a child contract
+ * needs to override.
+ * @return The address of the cross-domain messenger contract which should be used.
+ */
+ function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {
+ return ICrossDomainMessenger(messenger);
+ }
+```
+
+Esta função retorna o mensageiro entre domínios. Nós usamos uma função ao invés da variável `messenger` para permitir contratos que herdam deste para usar um algoritmo para especificar qual mensageiro entre domínios usar.
+
+```solidity
+
+ /**
+ * Sends a message to an account on another domain
+ * @param _crossDomainTarget The intended recipient on the destination domain
+ * @param _message The data to send to the target (usually calldata to a function with
+ * `onlyFromCrossDomainAccount()`)
+ * @param _gasLimit The gasLimit for the receipt of the message on the target domain.
+ */
+ function sendCrossDomainMessage(
+ address _crossDomainTarget,
+ uint32 _gasLimit,
+ bytes memory _message
+```
+
+Finalmente, a função que envia a mensagem para a outra camada.
+
+```solidity
+ ) internal {
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+```
+
+[Slither](https://github.com/crytic/slither)é um analisador estático que a Optimism roda em cada contrato para procurar por vulnerabilidades e outros problemas em potencial. Nesse caso, as seguintes linhas disparam duas vulnerabilidades:
+
+1. [Eventos de reentrância](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3)
+2. [Reentrância Benigna](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2)
+
+```solidity
+ getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);
+ }
+}
+```
+
+Neste caso nós não estamos preocupados sobre reentrância. Nós sabemos que `getCrossDomainMessenger()` returna um endereço confiável, mesmo se Slither não tem como saber isso.
+
+### O contrato da ponte L1 {#the-l1-bridge-contract}
+
+[O código-fonte para este contrato está aqui](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol).
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+```
+
+A interface pode ser parte de outros contratos, então eles têm de suportar uma larga faixa de versões de Solidity. Mas a ponte por ela mesma é o nosso contrato, e nós podemos ser estritos sobre qual versão Solidity ela usa.
+
+```solidity
+/* Interface Imports */
+import { IL1StandardBridge } from "./IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol";
+```
+
+[IL1ERC20Bridge](#IL1ERC20Bridge) e [IL1StandardBridge](#IL1StandardBridge) são explicados acima.
+
+```solidity
+import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol";
+```
+
+[Esta interface](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) nos deixa criar mensagens para controlar a ponte padrão em L2.
+
+```solidity
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[Esta interface](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) nos deixa controlar contratos ERC-20. [Você pode ler mais sobre ela aqui](/developers/tutorials/erc20-annotated-code/#the-interface).
+
+```solidity
+/* Library Imports */
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+```
+
+[Como explicado acima](#crossdomainenabled), este contrato é usado para mensageria entre camadas.
+
+```solidity
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+```
+
+[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol) tem os endereços dos contratos L2 que sempre tem o mesmo endereço. Isto inclui a ponte padrão em L2.
+
+```solidity
+import { Address } from "@openzeppelin/contracts/utils/Address.sol";
+```
+
+[Utilitários de endereços OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol). Ele é usado para distinguir entre endereços de contrato e aqueles pertencentes a contas de propriedade externa (EOA).
+
+Note que isto não é a solução perfeita, porque não há como distinguir entre chamadas diretas e chamadas feitas de um construtor de contrato, mas pelo menos isto nos deixa identificar e evitar alguns erros comuns de usuário.
+
+```solidity
+import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+```
+
+[O padrão ERC-20 ](https://eips.ethereum.org/EIPS/eip-20) suporta duas maneiras para um contrato reportar falha:
+
+1. Revert
+2. Return `false`
+
+Gerenciar ambos casos faria nosso código mais complicado, então ao invés disso, usamos [OpenZeppelin `SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol), que garante [ que todas as falhas resultem num revert](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96).
+
+```solidity
+/**
+ * @title L1StandardBridge
+ * @dev The L1 ETH and ERC20 Bridge is a contract which stores deposited L1 funds and standard
+ * tokens that are in use on L2. It synchronizes a corresponding L2 Bridge, informing it of deposits
+ * and listening to it for newly finalized withdrawals.
+ *
+ */
+contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
+ using SafeERC20 for IERC20;
+```
+
+Esta linha é como especificamos para usar o wrapper `SafeERC20` cada vez que nós usamos a interface `IERC20`.
+
+```solidity
+
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l2TokenBridge;
+```
+
+O endereço de [L2StandardBridge](#the-l2-bridge-contract).
+
+```solidity
+
+ // Maps L1 token to L2 token to balance of the L1 token deposited
+ mapping(address => mapping(address => uint256)) public deposits;
+```
+
+Um [mapeamento](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) em dobro como este é a maneira de você definir uma [array esparsa bi-dimensional](https://en.wikipedia.org/wiki/Sparse_matrix). Valores nesta estrutura de dados são identificados como `deposit[L1 token addr][L2 token addr]`. O valor padrão é zero. Somente células que são configuradas para um valor diferente são escritas no storage.
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ // This contract lives behind a proxy, so the constructor parameters will go unused.
+ constructor() CrossDomainEnabled(address(0)) {}
+```
+
+Para querer ser capaz de atualizar este contrato sem ter que copiar todas as variáveis no storage. Para fazer isso, nós usamos um [`Proxy`](https://docs.openzeppelin.com/contracts/3.x/api/proxy), um contrato que usa [`delegatecall`](https://solidity-by-example.org/delegatecall/) para transferir chamadas para um contato separado cujo endereço é armazenado pelo contrato proxy (quando você atualiza, você diz ao proxy para mudar o endereço). Quando você usa `delegatecall` o storage permanece com o valor do contrato _chamador_, então os valores de todas as variáveis de estado do contrato não são afetadas.
+
+Um efeito deste padrão é que o storage do contrato que é _chamado_ pelo `delegatecall` não é usado, e portanto os valores do construtor passados para ele não importam. Esta é a razão pela qual nós podemos fornecer um valor sem sentido para o construtor `CrossDomainEnabled`. É também a razão que a inicialização abaixo é separada do construtor.
+
+```solidity
+ /******************
+ * Initialization *
+ ******************/
+
+ /**
+ * @param _l1messenger L1 Messenger address being used for cross-chain communications.
+ * @param _l2TokenBridge L2 standard bridge address.
+ */
+ // slither-disable-next-line external-function
+```
+
+Este [teste Slither](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) identifica funções que não são chamadas do código do contrato e poderiam portanto serem declaradas `external` ao invés de `public`. As funções de custo de gas `external` podem ser menores, porque elas podem ser fornecidas com parâmetros no calldata. Funções declaradas `public` têm de ser acessíveis de dentro do contrato. Contratos não podem modificar seus próprios calldata, então os parâmetros têm que estar na memória. Quando esta função é chamada externamente, é necessário copiar o calldata para a memória, que custa gas. Nesse caso a função é chamada somente uma vez, então a ineficiência não importa para nós.
+
+```solidity
+ function initialize(address _l1messenger, address _l2TokenBridge) public {
+ require(messenger == address(0), "Contract has already been initialized.");
+```
+
+A função `initialize` deve ser chamada só uma vez. Se o endereço do mensageiro entre domínios L1 ou se a ponte do token L2 mudam, nós criamos um novo proxy e uma nova ponte que chama ele. Isto é improvável de acontecer, exceto quando o sistema inteiro é atualizado, uma ocorrência muito rara.
+
+Note que esta função não tem nenhum mecanismo que restringe _quem_ pode chamá-la. Isto significa que em teoria um atacante poderia esperar até que nós implantassemos o proxy e a primeira versão da ponte e então [front-run](https://solidity-by-example.org/hacks/front-running/)para pegar a função `initialize` antes que o usuário legítimo o faça. Mas há dois métodos para evitar isso:
+
+1. Se o contrato for implantado não diretamente por um EOA mas [em uma transação que tem outro contrato criando eles,](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595) o processo inteiro pode ser atômico, e finalizar antes que qualquer outra transação seja executada.
+2. Se a chamada legítima para `initialize` falhar, é sempre possível ignorar o proxy recém-criado e fazer a ponte para criar outros novos.
+
+```solidity
+ messenger = _l1messenger;
+ l2TokenBridge = _l2TokenBridge;
+ }
+```
+
+Estes são dois parâmetros que a ponte precisa conhecer.
+
+```solidity
+
+ /**************
+ * Depositing *
+ **************/
+
+ /** @dev Modifier requiring sender to be EOA. This check could be bypassed by a malicious
+ * contract via initcode, but it takes care of the user error we want to avoid.
+ */
+ modifier onlyEOA() {
+ // Used to stop deposits from contracts (avoid accidentally lost tokens)
+ require(!Address.isContract(msg.sender), "Account not EOA");
+ _;
+ }
+```
+
+É por essa razão que precisamos de utilitários de `Address` do OpenZeppelin.
+
+```solidity
+ /**
+ * @dev This function can be called with no data
+ * to deposit an amount of ETH to the caller's balance on L2.
+ * Since the receive function doesn't take data, a conservative
+ * default amount is forwarded to L2.
+ */
+ receive() external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes(""));
+ }
+```
+
+A função existe para finalidade de testes. Note que ela não aparece nas definições de interface - não é para uso corrente.
+
+```solidity
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable {
+ _initiateETHDeposit(msg.sender, _to, _l2Gas, _data);
+ }
+```
+
+Estas duas funções são wrappers em volta do `_initiateETHDeposit`, a função que manipula o depósito do ETH real.
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by storing the ETH and informing the L2 ETH Gateway of
+ * the deposit.
+ * @param _from Account to pull the deposit from on L1.
+ * @param _to Account to give the deposit to on L2.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateETHDeposit(
+ address _from,
+ address _to,
+ uint32 _l2Gas,
+ bytes memory _data
+ ) internal {
+ // Construct calldata for finalizeDeposit call
+ bytes memory message = abi.encodeWithSelector(
+```
+
+A maneira que mensagens entre domínios trabalham é que o contrato de destino é chamado com a mensagem como o seu calldata. Contratos Solidity sempre interpretam seu calldata de acordo com [a especificação ABI](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html). A função Solidity [`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions) cria este calldata.
+
+```solidity
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ address(0),
+ Lib_PredeployAddresses.OVM_ETH,
+ _from,
+ _to,
+ msg.value,
+ _data
+ );
+```
+
+A mensagem aqui é chamar [a função `finalizeDeposit`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148) com estes parâmetros:
+
+| Parâmetro | Valores | Significado |
+| ----------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
+| \_l1Token | address(0) | Valor especial para o ETH (que não é um token ERC-20) na L1 |
+| \_l2Token | Lib_PredeployAddresses.OVM_ETH | O contrato L2 que gerencia ETH na Optimism, `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000` (este contrato é apenas para uso interno da Optimism) |
+| \_from | \_from | Os endereços na L1 que enviam o ETH |
+| \_to | \_to | O endereço na L2 que recebe o ETH |
+| amount | msg.value | Quantidade de wei enviado (que já foi enviado para a ponte) |
+| \_data | \_data | Dados adicionais para anexar ao depósito |
+
+```solidity
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+```
+
+Enviar a mensagem através de mensageiro entre domínios.
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ emit ETHDepositInitiated(_from, _to, msg.value, _data);
+ }
+```
+
+Emitir um evento para informar qualquer aplicação descentralizada que escuta esta transferência.
+
+```solidity
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20(
+ .
+ .
+ .
+ ) external virtual onlyEOA {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20To(
+ .
+ .
+ .
+ ) external virtual {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data);
+ }
+```
+
+Estas duas funções são wrappers em volta do `_initiateERC20Deposit`, a função que manipula o depósito real do ERC-20.
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by informing the L2 Deposited Token
+ * contract of the deposit and calling a handler to lock the L1 funds. (e.g. transferFrom)
+ *
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _from Account to pull the deposit from on L1
+ * @param _to Account to give the deposit to on L2
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateERC20Deposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) internal {
+```
+
+Esta função é similiar a `_initiateETHDeposit` acima, com algumas poucas diferenças importantes. A primeira diferença é que esta função recebe o endereço de token e a quantia a transferir como parâmetros. No caso do ETH, a chamada para a ponte já inclui a transferência do ativo para a conta da ponte (`msg.value`).
+
+```solidity
+ // When a deposit is initiated on L1, the L1 Bridge transfers the funds to itself for future
+ // withdrawals. safeTransferFrom also checks if the contract has code, so this will fail if
+ // _from is an EOA or address(0).
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
+```
+
+Transferências de tokens ERC-20 seguem um processo diferente do ETH:
+
+1. O usuário (`_from`) dá uma permissão para a ponte para transferir os tokens apropriados.
+2. O usuário chama a ponte com o endereço do contrato do token, a quantia, etc.
+3. A ponte transfere os tokens (para ela mesmo) como parte do processo de depósito.
+
+O primeiro passo pode acontecer em uma transação separada das últimas duas. Entretanto, front-running não é um problema porque as duas funções que chamam `_initiateERC20Deposit` (`depositERC20` e `depositERC20To`) somente chamam essa função com `msg.sender` como parâmetro `_from`.
+
+```solidity
+ // Construct calldata for _l2Token.finalizeDeposit(_to, _amount)
+ bytes memory message = abi.encodeWithSelector(
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ _l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+
+ // slither-disable-next-line reentrancy-benign
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount;
+```
+
+Adicione a quantia depositada de tokens para a estrutura de dados `deposits`. Pode haver múltiplos endereços em L2 que correspondam ao mesmo token ERC-20 L1, portanto não é suficiente usar saldo de ponte de token ERC-20 L1 para rastrear os depósitos.
+
+```solidity
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+A ponte L2 envia uma mensagem para o mensageiro entre domínios L2 que causa o mensageiro entre domínios L1 chamar esta função (uma vez que a [transação que finaliza a mensagem](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions) é submetida no L1, claro).
+
+```solidity
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+Certifique-se que isto é uma mensagem _legítima_, vinda do mensageiro entre domínios e originada com o token da ponte L2. Esta função é usada para retirar ETH da ponte, então nós temos que nos certificar que é somente chamada pelo chamador autorizado.
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ (bool success, ) = _to.call{ value: _amount }(new bytes(0));
+```
+
+A maneira de transferir ETH é chamar o recebedor com a quantia de wei no `msg.value`.
+
+```solidity
+ require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
+
+ // slither-disable-next-line reentrancy-events
+ emit ETHWithdrawalFinalized(_from, _to, _amount, _data);
+```
+
+Emitir um evento sobre o saque.
+
+```solidity
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+Esta função é similar a `finalizeETHWithdrawal` acima, com as mudanças necessárias para os tokens ERC-20.
+
+```solidity
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount;
+```
+
+Atualiza a estrutura de dados`deposits`.
+
+```solidity
+
+ // When a withdrawal is finalized on L1, the L1 Bridge transfers the funds to the withdrawer
+ // slither-disable-next-line reentrancy-events
+ IERC20(_l1Token).safeTransfer(_to, _amount);
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20WithdrawalFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+
+ /*****************************
+ * Temporary - Migrating ETH *
+ *****************************/
+
+ /**
+ * @dev Adds ETH balance to the account. This is meant to allow for ETH
+ * to be migrated from an old gateway to a new gateway.
+ * NOTE: This is left for one upgrade only so we are able to receive the migrated ETH from the
+ * old contract
+ */
+ function donateETH() external payable {}
+}
+```
+
+Houve uma implementação anterior dessa ponte. Quando nos movemos da implementação para esta ponte, tivemos que mover todos os ativos. Tokens ERC-20 podem serem simplesmente movidos. Entretanto, para transferir ETH para um contrato, você precisa da aprovação do contrato, que é o que `donateETH` nos fornece.
+
+## Tokens ERC-20 na L2 {#erc-20-tokens-on-l2}
+
+Para um token ERC-20 servir na ponte padrão, ele precisa permitir que a ponte padrão, e _somente_ a ponte padrão, cunhe token. Isto é necessário porque as pontes precisam garantir que o número de tokens circulando na Optimism é igual ao número de tokens travados dentro do contrato da ponte L1. Se houver tokens demais na L2, alguns usuários ficarão incapazes de usar a ponte de volta para os seus ativos para a L1. Ao invés de uma ponte confiável, nós iriamos essencialmente recriar [reserva fracionária bancária](https://www.investopedia.com/terms/f/fractionalreservebanking.asp). Se houver tokens demais em L1, alguns desses tokens estaria travados dentro do contrato da ponte para sempre, porque não há maneira de liberá-los sem queimar tokens L2.
+
+### IL2StandardERC20 {#il2standarderc20}
+
+Cada token ERC-20 na L2 que usa a ponte padrão precisa fornecer [esta interface](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol), que tem as funções e eventos que a ponte padrão necessita.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[A interface padrão ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) não inclui as funções `mint` e `burn`. Estes métodos não são necessários pelo [padrão ERC-20](https://eips.ethereum.org/EIPS/eip-20), que não deixa especificado os mecanismos para criar e destruir tokens.
+
+```solidity
+import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+```
+
+[A interface ERC-165 ](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol)é usada para especificar que funções um contrato fornece. [Você pode ler o padrão aqui](https://eips.ethereum.org/EIPS/eip-165).
+
+```solidity
+interface IL2StandardERC20 is IERC20, IERC165 {
+ function l1Token() external returns (address);
+```
+
+Esta função fornece o endereço do token L1 que usa a ponte para este contrato. Note que nós não temos uma função similar na direção oposta. Nós precisamos ser capazes de usar a ponte para qualquer token L1, independente se o suporte L2 foi planejado quando foi implementado ou não.
+
+```solidity
+
+ function mint(address _to, uint256 _amount) external;
+
+ function burn(address _from, uint256 _amount) external;
+
+ event Mint(address indexed _account, uint256 _amount);
+ event Burn(address indexed _account, uint256 _amount);
+}
+```
+
+Funções e eventos para cunhar (criar) e queimar (destruir) tokens. A ponte deveria ser a única entidade que pode rodar estas funções para garantir que o número de tokens esteja correto (igual ao número de tokens travados na L1).
+
+### L2StandardERC20 {#L2StandardERC20}
+
+[Essa é a nossa implementação da interface `IL2StandardERC20`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol). A não ser que você precise de algum tipo de lógica customizada, você deveria usar esta.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+```
+
+[O contrato ERC-20 OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). A Optimism não acredita em reinventar a roda, especialmente quando a roda é bem auditada e precisa ser estimada o suficiente para manter ativos.
+
+```solidity
+import "./IL2StandardERC20.sol";
+
+contract L2StandardERC20 is IL2StandardERC20, ERC20 {
+ address public l1Token;
+ address public l2Bridge;
+```
+
+Há dois parâmetros de configuração adicionais que nós precisamos, e um ERC-20 normalmente não precisa.
+
+```solidity
+
+ /**
+ * @param _l2Bridge Address of the L2 standard bridge.
+ * @param _l1Token Address of the corresponding L1 token.
+ * @param _name ERC20 name.
+ * @param _symbol ERC20 symbol.
+ */
+ constructor(
+ address _l2Bridge,
+ address _l1Token,
+ string memory _name,
+ string memory _symbol
+ ) ERC20(_name, _symbol) {
+ l1Token = _l1Token;
+ l2Bridge = _l2Bridge;
+ }
+```
+
+Primeiro chame o construtor do contrato que nós herdamos (`ERC20(_name, _symbol)`) e então configure suas próprias variáveis.
+
+```solidity
+
+ modifier onlyL2Bridge() {
+ require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
+ _;
+ }
+
+
+ // slither-disable-next-line external-function
+ function supportsInterface(bytes4 _interfaceId) public pure returns (bool) {
+ bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
+ bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^
+ IL2StandardERC20.mint.selector ^
+ IL2StandardERC20.burn.selector;
+ return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
+ }
+```
+
+Essa é a maneira que o[ERC-165](https://eips.ethereum.org/EIPS/eip-165) funciona. Cada interface é um número de funções suportadas, como identificadas no [ou exclusivo](https://en.wikipedia.org/wiki/Exclusive_or) dos [seletores de funções ABI](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector) destas funções.
+
+A ponte L2 usa ERC-165 como checagem de sanidade para garantir que o contrato ERC-20 para o qual ela envia ativos é um `IL2StandardERC20`.
+
+**Note:** Não há nada para evitar contratos trapaceiros de fornecer falsas respostas para `supportsInterface`, portanto isto é um mecanismo de checagem de sanidade, _não_ um mecanismo de segurança.
+
+```solidity
+ // slither-disable-next-line external-function
+ function mint(address _to, uint256 _amount) public virtual onlyL2Bridge {
+ _mint(_to, _amount);
+
+ emit Mint(_to, _amount);
+ }
+
+ // slither-disable-next-line external-function
+ function burn(address _from, uint256 _amount) public virtual onlyL2Bridge {
+ _burn(_from, _amount);
+
+ emit Burn(_from, _amount);
+ }
+}
+```
+
+Somente a ponte L2 pode cunhar e queimar ativos.
+
+`_mint` e `_burn` são na verdade definidos no [contrato ERC-20 OpenZeppelin](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn). Este contrato só não os expõem externamente, porque as condições para cunhar e queimar tokens são tão variadas como o número de maneiras de usar ERC-20.
+
+## Código da ponte L2 {#l2-bridge-code}
+
+Este é o código que roda na ponte na Optimism. [A fonte deste contrato é aqui](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol).
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+/* Interface Imports */
+import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol";
+import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol";
+```
+
+A interface [IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) é muito similar ao [equivalente L1](#IL1ERC20Bridge) que nós vimos acima. Há duas diferenças significantes:
+
+1. Na L1 você inicia depósitos e finaliza retiradas. Aqui você inicia retiradas e finaliza depósitos.
+2. Na L1 é necessário distinguir entre ETH e tokens ERC-20. Na L2 nós podemos usar as mesmas funções para ambos os casos porque internamente saldos ETH na Optimism são manipulados por um token ERC-20 com o endereço [0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000).
+
+```solidity
+/* Library Imports */
+import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+
+/* Contract Imports */
+import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol";
+
+/**
+ * @title L2StandardBridge
+ * @dev The L2 Standard bridge is a contract which works together with the L1 Standard bridge to
+ * enable ETH and ERC20 transitions between L1 and L2.
+ * This contract acts as a minter for new tokens when it hears about deposits into the L1 Standard
+ * bridge.
+ * This contract also acts as a burner of the tokens intended for withdrawal, informing the L1
+ * bridge to release L1 funds.
+ */
+contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l1TokenBridge;
+```
+
+Acompanhe o endereço da ponte L1. Observe que, em contraste com o equivalente L1, aqui _precisamos_ desta variável. O endereço da ponte L1 não é conhecido antecipadamente.
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _l2CrossDomainMessenger Cross-domain messenger used by this contract.
+ * @param _l1TokenBridge Address of the L1 bridge deployed to the main chain.
+ */
+ constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
+ CrossDomainEnabled(_l2CrossDomainMessenger)
+ {
+ l1TokenBridge = _l1TokenBridge;
+ }
+
+ /***************
+ * Withdrawing *
+ ***************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdraw(
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdrawTo(
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data);
+ }
+```
+
+Estas duas funções iniciam retiradas. Observe que não há necessidade de especificar o endereço do token L1. Espera-se que os tokens L2 nos digam o endereço do equivalente L1.
+
+```solidity
+
+ /**
+ * @dev Performs the logic for withdrawals by burning the token and informing
+ * the L1 token Gateway of the withdrawal.
+ * @param _l2Token Address of L2 token where withdrawal is initiated.
+ * @param _from Account to pull the withdrawal from on L2.
+ * @param _to Account to give the withdrawal to on L1.
+ * @param _amount Amount of the token to withdraw.
+ * @param _l1Gas Unused, but included for potential forward compatibility considerations.
+ * @param _data Optional data to forward to L1. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateWithdrawal(
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) internal {
+ // When a withdrawal is initiated, we burn the withdrawer's funds to prevent subsequent L2
+ // usage
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).burn(msg.sender, _amount);
+```
+
+Observe que _não_ estamos contando com o parâmetro `_from`, mas com o `msg.sender` que é muito mais difícil de falsificar (impossível, até onde eu sei).
+
+```solidity
+
+ // Construct calldata for l1TokenBridge.finalizeERC20Withdrawal(_to, _amount)
+ // slither-disable-next-line reentrancy-events
+ address l1Token = IL2StandardERC20(_l2Token).l1Token();
+ bytes memory message;
+
+ if (_l2Token == Lib_PredeployAddresses.OVM_ETH) {
+```
+
+Na L1 é necessário distinguir entre ETH e ERC-20.
+
+```solidity
+ message = abi.encodeWithSelector(
+ IL1StandardBridge.finalizeETHWithdrawal.selector,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ } else {
+ message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ }
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, _l1Gas, message);
+
+ // slither-disable-next-line reentrancy-events
+ emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data);
+ }
+
+ /************************************
+ * Cross-chain Function: Depositing *
+ ************************************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function finalizeDeposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+Essa função é chamada pelo `L1StandardBridge`.
+
+```solidity
+ ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) {
+```
+
+Certifique-se que a origem da mensagem é legítima. Isso é importante porque a função chama `_mint` e poderia ser usada para dar tokens que não foram cobertos pelos tokens que a ponte tem na L1.
+
+```solidity
+ // Check the target token is compliant and
+ // verify the deposited token on L1 matches the L2 deposited token representation here
+ if (
+ // slither-disable-next-line reentrancy-events
+ ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) &&
+ _l1Token == IL2StandardERC20(_l2Token).l1Token()
+```
+
+Verificações de sanidade:
+
+1. A interface correta é suportada
+2. O endereço L1 do contrato ERC-20 L2 bate com a fonte L1 dos tokens
+
+```solidity
+ ) {
+ // When a deposit is finalized, we credit the account on L2 with the same amount of
+ // tokens.
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).mint(_to, _amount);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+```
+
+Se a checagem de sanidade passar, finalize o depósito:
+
+1. Cunhe os tokens
+2. Emita o evento apropriado
+
+```solidity
+ } else {
+ // Either the L2 token which is being deposited-into disagrees about the correct address
+ // of its L1 token, or does not support the correct interface.
+ // This should only happen if there is a malicious L2 token, or if a user somehow
+ // specified the wrong L2 token address to deposit into.
+ // In either case, we stop the process here and construct a withdrawal
+ // message so that users can get their funds out in some cases.
+ // There is no way to prevent malicious token contracts altogether, but this does limit
+ // user error and mitigate some forms of malicious contract behavior.
+```
+
+Se um usuário fez um erro detectável usando o endereço de token L2 errado, nós queremos cancelar o depósito e retornar os tokens na L1. A única maneira que nós podemos fazer isso de L2 é enviar uma mensagem que irá ter que esperar pelo período de desafio de falha, mas isto é muito melhor para o usuário que perder seus tokens permanentemente.
+
+```solidity
+ bytes memory message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ _l1Token,
+ _l2Token,
+ _to, // switched the _to and _from here to bounce back the deposit to the sender
+ _from,
+ _amount,
+ _data
+ );
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, 0, message);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+ }
+}
+```
+
+## Conclusão {#conclusion}
+
+A ponte padrão é o mecanismo mais flexível para transferência de ativos. Porém, por ser genérico não é sempre o mecanismo mais fácil de usar. Especialmente para retiradas, a maioria dos usuários prefere usar [pontes de terceiros](https://www.optimism.io/apps/bridges) a esperar o período de desafio e também não precisar de uma prova de Merkle para finalizar a retirada.
+
+Estas pontes tipicamente funcionam tendo ativos na L1, que elas fornecem imediatamente por uma taxa pequena (geralmente menor que o custo de gas para uma retirada de uma ponte padrão). Quando a ponte (ou as pessoas que a administram) antecipa a falta de ativos L1, ela transfere ativos suficientes da L2. Como estes são saques muito grandes, o custo do saque é amortizado por uma larga quantia e é um percentual muito menor.
+
+Esperamos que este artigo tenha ajudado você a entender mais sobre como a camada 2 funciona, e como escrever um código Solidity claro e seguro.
diff --git a/public/content/translations/pt-br/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/pt-br/developers/tutorials/reverse-engineering-a-contract/index.md
new file mode 100644
index 00000000000..fd8d52243ae
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -0,0 +1,744 @@
+---
+title: "Engenharia reversa de um contrato"
+description: Como entender um contrato quando você não tem o código-fonte
+author: Ori Pomerantz
+lang: pt-br
+tags:
+ - "evm"
+ - "códigos de operação"
+skill: advanced
+published: 2021-12-30
+---
+
+## Introdução {#introduction}
+
+_Não há segredos no blockchain_. Tudo o que acontece é consistente, verificável e está disponível publicamente. O ideal é que os contratos [tenham seu código-fonte publicado e verificado na Etherscan](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code). No entanto, [nem sempre isso acontece](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code). Neste artigo, você aprenderá a usar engenharia reversa em contratos analisando um contrato sem código-fonte, [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f).
+
+Existem compiladores reversos, mas eles nem sempre produzem [resultados utilizáveis](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f). Neste artigo, você aprenderá como usar engenharia reversa manualmente e entender um contrato dos [opcodes](https://github.com/wolflo/evm-opcodes), além de interpretar os resultados de um descompilador.
+
+Para entender este artigo, é preciso saber o básico de EVM e pelo menos estar um pouco familiarizado com a montagem de EVM. [Você pode ler sobre estes tópicos aqui](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e).
+
+## Preparar o Código Executável {#prepare-the-executable-code}
+
+Você pode obter os opcodes acessando o contrato no Etherscan clicando na guia **Contrato** e depois em **Alternar para a Visualização de Opcodes**. Você poderá visualizar um opcode por linha.
+
+![Visualização do Opcode no Etherscan](opcode-view.png)
+
+Para entender os saltos, no entanto, você precisa saber onde no código cada opcode está localizado. Uma maneira de fazer isso é abrir uma planilha do Google e colar os opcodes na coluna C. [Você pode pular as seguintes etapas ao fazer uma cópia desta planilha já preparada](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing).
+
+O próximo passo é obter os locais de código corretos para que possamos entender os saltos. Colocaremos o tamanho do opcode na coluna B e o local (em hexadecimal) na coluna A. Digite esta função na célula `B1` e então copie e cole para o resto da coluna B, até o final do código. Depois de fazer isso, você pode ocultar a coluna B.
+
+```
+=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0)
+```
+
+Primeiro essa função adiciona um byte no opcode em si e depois procura por `PUSH`. Opcodes de push são especiais porque eles precisam ter bytes adicionais para o valor que está sendo enviado. Se o opcode é um `PUSH`, extraímos o número de bytes e adicionamos isso.
+
+Em `A1` coloque o primeiro offset (descolamento de bits), para zero. Depois, em `A2`, insira esta função e copie e cole novamente para o resto da coluna A:
+
+```
+=dec2hex(hex2dec(A1)+B1)
+```
+
+Nós precisamos desta função, para nos dar o valor hexadecimal, porque os valores que são enviados antes dos saltos (`JUMP` e `JUMPI`) são dados a nós em hexadecimal.
+
+## O Ponto de Entrada (0x00) {#the-entry-point-0x00}
+
+Os contratos são sempre executados a partir do primeiro byte. Essa é a parte inicial do código:
+
+| Deslocamento | Código de Operação | Montante (depois do opcode) |
+| ------------:| ------------------ | --------------------------- |
+| 0 | PUSH1 0x80 | 0x80 |
+| 2 | PUSH1 0x40 | 0x40, 0x80 |
+| 4 | MSTORE | Vazio |
+| 5 | PUSH1 0x04 | 0x04 |
+| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
+| 8 | LT | CALLDATASIZE<4 |
+| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE<4 |
+| C | JUMPI | Vazio |
+
+Esse código faz duas coisas:
+
+1. Escreva 0x80 como um valor de 32 bytes para locais da memória 0x40-0x5F (0x80 é armazenado em 0x5F, e 0x40-0x5E são todos zeros).
+2. Leia o tamanho dos dados de chamada. Normalmente, os dados de chamada para um contrato Ethereum seguem [a ABI (interface binária do aplicativo)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html), o qual requer no mínimo quatro bytes para o seletor de função. Se o tamanho dos dados da chamada for menor que quatro, pule para 0x5E.
+
+![Fluxograma para esta parte](flowchart-entry.png)
+
+### O controlador em 0x5E (para dados de chamada não ABI) {#the-handler-at-0x5e-for-non-abi-call-data}
+
+| Deslocamento | Código de Operação |
+| ------------:| ------------------ |
+| 5E | JUMPDEST |
+| 5F | CALLDATASIZE |
+| 60 | PUSH2 0x007c |
+| 63 | JUMPI |
+
+Este trecho começa com um `JUMPDEST`. Os programas EVM (Máquina Virtual Ethereum) lançam uma exceção se você pular para um opcode que não for `JUMPDEST`. Então, ele examina o CALLDATASIZE e, se for "verdadeiro" (ou seja, não for zero), pula para 0x7C. Veremos isso abaixo.
+
+| Deslocamento | Código de Operação | Montante (depois do opcode) |
+| ------------:| ------------------ | ----------------------------------------------------------------------------- |
+| 64 | CALLVALUE | [Wei](/glossary/#wei) fornecido pela chamada. Chamado `msg.value` no Solidity |
+| 65 | PUSH1 0x06 | 6 CALLVALUE |
+| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
+| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
+| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
+| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
+
+Portanto, quando não há dados de chamada, nós lemos o valor de Storage[6]. Ainda não sabemos que valor é esse, mas podemos buscar as transações que o contrato recebeu sem nenhum dado de chamada. Transações que apenas transferem ETH sem nenhum dado de chamada (e, portanto, nenhum método) têm no Etherscan o método `Transfer`. De fato, [a primeira transação que o contrato recebeu](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) é uma transferência.
+
+Se nós olharmos nessa transação e clicarmos em **Clique para ver mais**, veremos que os dados da chamada, chamados de dados de entrada, estão de fato vazios (`0x`). Observe também que o valor é 1.559 ETH, que será relevante mais tarde.
+
+![Os dados da chamada estão vazios](calldata-empty.png)
+
+Em seguida, clique na guia o **Estado** e expanda o contrato que estamos fazendo engenharia reversa (0x2510...). Você pode ver que `Storage[6]` (armazenamento) mudou durante a transação e, se você alterar Hex para **Número**, verá que se tornou 1.559.000.000.000.000.000, o valor transferido em wei (adicionei as vírgulas para maior clareza), que corresponde ao próximo valor do contrato.
+
+![A mudança no Armazenamento[6]](storage6.png)
+
+Se observarmos as mudanças de estado causadas por [outras transações de `Transfer` (transferência) do mesmo período](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange), vemos que `Storage[6]` rastreou o valor do contrato por um tempo. Por enquanto, vamos chamá-lo de `Value*` (valor). O asterisco (`*`) nos lembra que não _sabemos_ o que esta variável faz, ainda, mas não pode ser apenas para rastrear o valor do contrato porque não há necessidade de usar armazenamento, o que é muito caro, quando você pode obter o saldo de suas contas usando `ADDRESS BALANCE`. O primeiro opcode envia o próprio endereço do contrato. O segundo lê o endereço no topo da pilha e o substitui com o saldo desse endereço.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | --------------------------------------------- |
+| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
+| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
+| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 74 | JUMP | |
+
+Nós continuaremos a rastrear esse código no destino do salto (desvio).
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------------------- |
+| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+
+O `NOT` é bit a bit, portanto, ele inverte o valor de cada bit no valor da chamada.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------------------------------------- |
+| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AE | ISZERO | Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AF | PUSH2 0x01df | 0x01DF Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1B2 | JUMPI | |
+
+Nós pulamos se `Value*` (o valor) for menor que 2^256-CALLVALUE-1 ou igual a ele. Isso parece lógico para evitar vazamento (overflow). E, de fato, vemos que depois de algumas operações sem sentido (escrever na memória que está prestes a ser excluída, por exemplo) no deslocamento 0x01DE, o contrato é revertido se o vazamento for detectado, o que é um comportamento normal.
+
+Note que esse vazamento é extremamente improvável, porque exigiria que o valor da chamada mais o `Value*` fosse comparável a 2^256 wei, em torno de 10^59 ETH. [O suprimento total de ETH, no momento desta redação, é inferior a duzentos milhões](https://etherscan.io/stat/supply).
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------- |
+| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
+| 1E3 | JUMP | |
+
+Se chegamos aqui, pegue `Value* + CALLVALUE` e salte para o offset 0x75.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | --------------------------------- |
+| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
+| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
+| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
+| 78 | SSTORE | 0 CALLVALUE |
+
+Se nós chegarmos aqui (o que requer que os dados da chamada estejam vazios), adicionamos o `Value*` ao valor da chamada. Isso é consistente com o que dizemos que as transações de `Transfer` fazem.
+
+| Deslocamento | Código de Operação |
+| ------------:| ------------------ |
+| 79 | POP |
+| 7A | POP |
+| 7B | STOP |
+
+Finalmente, limpe a pilha (o que não é necessário) e sinalize o fim bem-sucedido da transação.
+
+Para simplificar tudo, aqui está um fluxograma para o código inicial.
+
+![Fluxograma do ponto de entrada](flowchart-entry.png)
+
+## O Controlador em 0x7C {#the-handler-at-0x7c}
+
+Eu propositalmente não coloquei no cabeçalho o que esse controlador faz. O propósito não é ensinar como esse contrato específico funciona, mas como fazer engenharia reversa de contratos. Você irá aprender o que ele faz da mesma forma que eu, seguindo o código.
+
+Nós chegamos aqui a partir de vários locais:
+
+- Se houver dados de chamada de 1, 2 ou 3 bytes (a partir do deslocamento 0x63)
+- Se a assinatura do método for desconhecida (dos offsets 0x42 e 0x5D)
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------- |
+| 7C | JUMPDEST | |
+| 7D | PUSH1 0x00 | 0x00 |
+| 7F | PUSH2 0x009d | 0x9D 0x00 |
+| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
+| 84 | SLOAD | Storage[3] 0x9D 0x00 |
+
+Esta é outra célula de armazenamento, que não poderia encontrar em nenhuma transação, portanto, é mais difícil saber o que significa. O código abaixo deixará isso mais claro.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------------------------------------- | ------------------------------- |
+| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
+| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
+
+Esses opcodes truncam o valor que lemos do Armazenamento[3] para 160 bits, o tamanho de um endereço Ethereum.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------- |
+| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
+| 9C | JUMP | Storage[3]-as-address 0x00 |
+
+Este salto é supérfluo, pois estamos indo para o próximo opcode. Esse código não é tão eficiente em relação ao consumo de gás quanto ele poderia ser.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------- |
+| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
+| 9E | SWAP1 | 0x00 Storage[3]-as-address |
+| 9F | POP | Storage[3]-as-address |
+| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
+| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
+
+Bem no início do código, definimos Mem[0x40] como 0x80. Se procurarmos 0x40 posteriormente, veremos que nós não o alteramos - então podemos assumir que é 0x80.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------- |
+| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
+| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
+
+Copie todos os dados da chamada para a memória, começando por 0x80.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------------------------------------------------------------------- |
+| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
+| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
+| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AF | DELEGATE_CALL | |
+
+Agora as coisas estão muito mais claras. Este contrato pode atuar como um [proxy](https://blog.openzeppelin.com/proxy-patterns/), chamando o endereço no Armazenamento[3] para fazer o trabalho real. `DELEGATE_CALL` chama um contrato separado, mas permanece no mesmo armazenamento. Isto significa que o contrato delegado, aquele para o qual somos proxy, acessa o mesmo espaço de armazenamento. Os parâmetros para a chamada são:
+
+- _Gas_: Todo o gas restante
+- _Endereço chamado_: Armazenamento[3] como endereço
+- _Dados da chamada_: Os bytes CALLDATASIZE começando em 0x80, que é onde colocamos os dados originais da chamada
+- _Dados de retorno_: Nenhum (0x00 - 0x00) Nós vamos obter os dados de retorno por outros meios (veja abaixo)
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | --------------------------------------------------------------------------------------------- |
+| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+
+Aqui copiamos todos os dados de retorno para o buffer de memória começando em 0x80.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
+| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BF | RETURN | |
+
+Então, após a chamada, nós copiamos os dados de retorno para o buffer 0x80 - 0x80+RETURNDATASIZE e, se a chamada for bem-sucedida, nós então fazemos o `RETURN` com exatamente este buffer.
+
+### DELEGATECALL falhou {#delegatecall-failed}
+
+Se chegarmos aqui, para 0xC0, significa que o contrato que chamamos foi revertido. Como somos apenas um proxy para esse contrato, queremos retornar os mesmos dados e também reverter.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
+| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C3 | REVERT | |
+
+Portanto, fazemos o `REVERT` com o mesmo buffer que usamos para o `RETURN` anteriormente: 0x80 - 0x80+RETURNDATASIZE
+
+![Fluxograma de chamada ao proxy](flowchart-proxy.png)
+
+## Chamadas da ABI {#abi-calls}
+
+Se o tamanho dos dados da chamada for quatro bytes ou mais, pode ser uma chamada ABI válida.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------- |
+| D | PUSH1 0x00 | 0x00 |
+| F | CALLDATALOAD | (((First word (256 bits) of the call data))) |
+| 10 | PUSH1 0xe0 | 0xE0 (((First word (256 bits) of the call data))) |
+| 12 | SHR | (((first 32 bits (4 bytes) of the call data))) |
+
+O Etherscan nos conta que `1C` é um opcode desconhecido, porque [ele foi adicionado depois que o Etherscan escreveu essa funcionalidade](https://eips.ethereum.org/EIPS/eip-145) e eles não o atualizaram. An [up to date opcode table](https://github.com/wolflo/evm-opcodes) shows us that this is shift right
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------------------------------------------------------------------------------------------- |
+| 13 | DUP1 | (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
+| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
+| 19 | GT | 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1D | JUMPI | (((first 32 bits (4 bytes) of the call data))) |
+
+Ao dividir os testes de correspondência da assinatura do método em dois, dessa forma, economiza metade dos testes, em média. O código que segue imediatamente e o código em 0x43 seguem o mesmo padrão: `DUP1` os primeiros 32 bits dos dados da chamada, `PUSH4 (((method signature>`, executa `EQ` para verificar a igualdade e, então, fazer o `JUMPI` se a assinatura do método corresponder. Aqui estão as assinaturas de método, seus endereços e, se conhecido [a definição de método correspondente](https://www.4byte.directory/):
+
+| Método | Assinatura do método | Deslocamento por salto |
+| -------------------------------------------------------------------------------------- | -------------------- | ---------------------- |
+| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
+| ??? | 0x81e580d3 | 0x0138 |
+| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
+| ??? | 0x1f135823 | 0x00C4 |
+| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
+
+Se nenhuma combinação for encontrada, o código pula para [o controlador do proxy em 0x7C](#the-handler-at-0x7c), na esperança de que o contrato para o qual somos um proxy tenha uma correspondência.
+
+![Fluxograma de chamadas ABI](flowchart-abi.png)
+
+## splitter() {#splitter}
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ----------------------------- |
+| 103 | JUMPDEST | |
+| 104 | CALLVALUE | CALLVALUE |
+| 105 | DUP1 | CALLVALUE CALLVALUE |
+| 106 | ISZERO | CALLVALUE==0 CALLVALUE |
+| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE |
+| 10A | JUMPI | CALLVALUE |
+| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
+| 10D | DUP1 | 0x00 0x00 CALLVALUE |
+| 10E | REVERT | |
+
+A primeira coisa que esta função faz é verificar que a chamada não enviou nenhum ETH. Esta função não é [`payable`](https://solidity-by-example.org/payable/) pagável. Se alguém nos enviou ETH, isso deve ser um erro, e queremos fazer o `REVERT` para evitar ter esse ETH que eles não possam recuperá-lo.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------------------------------------- | --------------------------------------------------------------------------- |
+| 10F | JUMPDEST | |
+| 110 | POP | |
+| 111 | PUSH1 0x03 | 0x03 |
+| 113 | SLOAD | (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 114 | PUSH1 0x40 | 0x40 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 116 | MLOAD | 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12C | SWAP1 | 0x80 0xFF...FF (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12D | SWAP2 | (((Storage[3] a.k.a the contract for which we are a proxy))) 0xFF...FF 0x80 |
+| 12E | AND | ProxyAddr 0x80 |
+| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
+| 130 | MSTORE | 0x80 |
+
+E 0x80 agora contém o endereço do proxy
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | --------- |
+| 131 | PUSH1 0x20 | 0x20 0x80 |
+| 133 | ADD | 0xA0 |
+| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
+| 137 | JUMP | 0xA0 |
+
+### O código E4 {#the-e4-code}
+
+Essa é a primeira vez que vemos essas linhas, mas elas são compartilhadas com outros métodos (veja abaixo). Então, vamos chamar o valor na pilha de X, e lembre-se que em `splitter()` o valor desse X é 0xA0.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ----------- |
+| E4 | JUMPDEST | X |
+| E5 | PUSH1 0x40 | 0x40 X |
+| E7 | MLOAD | 0x80 X |
+| E8 | DUP1 | 0x80 0x80 X |
+| E9 | SWAP2 | X 0x80 0x80 |
+| EA | SUB | X-0x80 0x80 |
+| EB | SWAP1 | 0x80 X-0x80 |
+| EC | RETURN | |
+
+Portanto, esse código recebe um ponteiro de memória no montante (X) e faz com que o contrato faça o `RETURN` com um buffer que é 0x80 - X.
+
+No caso do `splitter()`, isto retorna o endereço do qual somos um proxy. O `RETURN` devolve o buffer em 0x80-0x9F, que é onde escrevemos esses dados (offset 0x130 acima).
+
+## currentWindow() {#currentwindow}
+
+O código nos deslocamentos 0x158-0x163 é idêntico ao que vimos em 0x103-0x10E em `splitter()` (que não seja o destino `JUMPI`), então sabemos que `currentWindow()` também não é `payable` (pagável).
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------- |
+| 164 | JUMPDEST | |
+| 165 | POP | |
+| 166 | PUSH2 0x00da | 0xDA |
+| 169 | PUSH1 0x01 | 0x01 0xDA |
+| 16B | SLOAD | Storage[1] 0xDA |
+| 16C | DUP2 | 0xDA Storage[1] 0xDA |
+| 16D | JUMP | Storage[1] 0xDA |
+
+### O código DA {#the-da-code}
+
+Esse código também é compartilhado com outros métodos. Então, chamaremos o valor na pilha de Y e lembre-se de que em `currentWindow()` o valor desse Y é o Armazenamento[1].
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ---------------- |
+| DA | JUMPDEST | Y 0xDA |
+| DB | PUSH1 0x40 | 0x40 Y 0xDA |
+| DD | MLOAD | 0x80 Y 0xDA |
+| DE | SWAP1 | Y 0x80 0xDA |
+| DF | DUP2 | 0x80 Y 0x80 0xDA |
+| E0 | MSTORE | 0x80 0xDA |
+
+Escreva Y em 0x80-0x9F.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------- |
+| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
+| E3 | ADD | 0xA0 0xDA |
+
+E o resto já está explicado conforme [acima](#the-e4-code). Portanto, salte para 0xDA, escreva no topo da pilha (Y) para 0x80-0x9F e retorne esse valor. No caso de `currentWindow()`, retorne o Armazenamento[1].
+
+## merkleRoot() {#merkleroot}
+
+O código nos deslocamentos 0xED-0xF8 é idêntico ao que vimos em 0x103-0x10E em `splitter()` (além do alvo `JUMPI`), então sabemos `merkleRoot()` também não é `payable`.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------- |
+| F9 | JUMPDEST | |
+| FA | POP | |
+| FB | PUSH2 0x00da | 0xDA |
+| FE | PUSH1 0x00 | 0x00 0xDA |
+| 100 | SLOAD | Storage[0] 0xDA |
+| 101 | DUP2 | 0xDA Storage[0] 0xDA |
+| 102 | JUMP | Storage[0] 0xDA |
+
+O que acontece após o salto [já descobrimos](#the-da-code). Portanto, `merkleRoot()` retorna o Armazenamento[0].
+
+## 0x81e580d3 {#0x81e580d3}
+
+O código nos deslocamentos 0x138-0x143 é idêntico ao que vimos em 0x103-0x10E em `splitter()` (além do alvo `JUMPI`), então sabemos que esta função também é não `payable`.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ------------------------------------------------------------ |
+| 144 | JUMPDEST | |
+| 145 | POP | |
+| 146 | PUSH2 0x00da | 0xDA |
+| 149 | PUSH2 0x0153 | 0x0153 0xDA |
+| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
+| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
+| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 197 | SLT | CALLDATASIZE-4<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+
+Parece que esta função leva ao menos 32 bytes (uma palavra) de dados da chamada.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | -------------------------------------------- |
+| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19F | REVERT | |
+
+Se não obtiver os dados da chamada, a transação é revertida sem nenhum dado de retorno.
+
+Vamos ver o que acontece se a função _obtiver_ os dados de chamada necessários.
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ---------------------------------------- |
+| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA |
+
+`calldataload(4)` é a primeira palavra dos dados da chamada _após_ a assinatura do método
+
+| Deslocamento | Código de Operação | Pilha |
+| ------------:| ------------------ | ---------------------------------------------------------------------------- |
+| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA |
+| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA |
+| 1A5 | POP | 0x0153 calldataload(4) 0xDA |
+| 1A6 | JUMP | calldataload(4) 0xDA |
+| 153 | JUMPDEST | calldataload(4) 0xDA |
+| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA |
+| 157 | JUMP | calldataload(4) 0xDA |
+| 16E | JUMPDEST | calldataload(4) 0xDA |
+| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA |
+| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA |
+| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA |
+| 173 | SLOAD | Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 174 | DUP2 | calldataload(4) Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 175 | LT | calldataload(4))`, e outro é `isClaimed()`, então parece como um contrato airdrop. Em vez de passar pelo restante opcode por opcode, podemos [tentar o descompilador](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), que produz resultados uteis para três funções deste contrato. A engenharia reversa dos outros é deixada como um exercício para o leitor.
+
+### scaleAmountByPercentage {#scaleamountbypercentage}
+
+Isso é o que o descompilador nos fornece para essa função:
+
+```python
+def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable:
+ require calldata.size - 4 >=′ 64
+ if _param1 and _param2 > -1 / _param1:
+ revert with 0, 17
+ return (_param1 * _param2 / 100 * 10^6)
+```
+
+O primeiro `require` testa que os dados da chamada tenham, além dos quatro bytes da assinatura da função, ao menos 64 bytes, suficientes para os dois parâmetros. Do contrário, obviamente, há algo errado.
+
+A instrução `if` da sentença parece verificar que `_param1` não é zero e que `_param1 * _param2` não é negativo. Provavelmente, isso é para evitar casos de desvios.
+
+Finalmente, a função retorna um valor em escala.
+
+### Reivindicação {#claim}
+
+O código que o descompilador cria é complexo, e nem todo ele é relevante para nós. Vou pular algumas partes para focar nas linhas que acredito fornecerem informações úteis
+
+```python
+def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable:
+ ...
+ require _param2 == addr(_param2)
+ ...
+ if currentWindow <= _param1:
+ revert with 0, 'cannot claim for a future window'
+```
+
+Vemos aqui duas coisas importantes:
+
+- `_param2`, embora esteja declarado como um `uint256`, é na verdade um endereço
+- `_param1` é a janela que está sendo reivindicada, o qual tem de ser `currentWindow` ou a anterior.
+
+```python
+ ...
+ if stor5[_claimWindow][addr(_claimFor)]:
+ revert with 0, 'Account already claimed the given window'
+```
+
+Ou seja, agora sabemos que Armazenamento[5] é uma matriz de janelas e endereços e se o endereço reivindicou a recompensa por essa janela.
+
+```python
+ ...
+ idx = 0
+ s = 0
+ while idx < _param4.length:
+ ...
+ if s + sha3(mem[(32 * _param4.length) + 328 len mem[(32 * _param4.length) + 296]]) > mem[(32 * idx) + 296]:
+ mem[mem[64] + 32] = mem[(32 * idx) + 296]
+ ...
+ s = sha3(mem[_62 + 32 len mem[_62]])
+ continue
+ ...
+ s = sha3(mem[_66 + 32 len mem[_66]])
+ continue
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+```
+
+Sabemos que `unknown2eb4a7ab` é na verdade a função `merkleRoot()`, então este código parece estar verificando um [prova de merkle](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5). Isso significa que `_param4` é uma prova de merkle.
+
+```python
+ call addr(_param2) with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+ gas 30000 wei
+```
+
+É assim que um contrato transfere seu próprio ETH para outro endereço (de contrato ou de propriedade externa). Ele o chama com um valor que é a quantidade a ser transferida. Logo, parece que isso é um airdrop do ETH.
+
+```python
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+```
+
+As duas linhas mais abaixo nos dizem que o Armazenamento[2] também é um contrato que chamamos. Se nós [olharmos a transação do construtor](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange), veremos que este contrato é o [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), um contrato de Ether encapsulado [cujo código-fonte foi carregado no Etherscan](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code).
+
+Assim, parece que os contratos tentam enviar ETH para `_param2`. Se puder fazer isso, ótimo. Se não, ele tenta enviar [WETH](https://weth.io/). Se `_param2` for uma conta de propriedade externa (EOA), então ele sempre pode receber ETH, mas os contratos podem se recusar a receber ETH. No entanto, WETH é ERC-20 e os contratos não podem se recusar a aceitar isso.
+
+```python
+ ...
+ log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success)
+```
+
+No final da função, nós vemos uma entrada de log sendo gerada. [Veja as entradas de log geradas](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) e filtre pelo tópico que começa com `0xdbd5...`. Se nós [clicarmos em uma das transações que gerou tal entrada](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274), veremos que realmente parece uma reivindicação - a conta enviou uma mensagem para o contrato, que estamos fazendo engenharia reversa e, em troca, recebemos ETH.
+
+![Uma transação de reivindicação](claim-tx.png)
+
+### 1e7df9d3 {#1e7df9d3}
+
+Esta função é muito semelhante à [`claim`](#claim) (reinvidicação) acima. Ela também verifica uma prova de merkle, que tenta transferir ETH para o primeiro e produz o mesmo tipo de entrada de log.
+
+```python
+def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
+ ...
+ idx = 0
+ s = 0
+ while idx < _param3.length:
+ if idx >= mem[96]:
+ revert with 0, 50
+ _55 = mem[(32 * idx) + 128]
+ if s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) > mem[(32 * idx) + 128]:
+ ...
+ s = sha3(mem[_58 + 32 len mem[_58]])
+ continue
+ mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]])
+ ...
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+ ...
+ call addr(_param1) with:
+ value s wei
+ gas 30000 wei
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value s wei
+ gas gas_remaining wei
+ ...
+ log 0xdbd5389f: addr(_param1), s, bool(ext_call.success)
+```
+
+A principal diferença é que o primeiro parâmetro, a janela para retirada, não está lá. Em vez disso, há um loop em todas as janelas que podem ser reivindicadas.
+
+```python
+ idx = 0
+ s = 0
+ while idx < currentWindow:
+ ...
+ if stor5[mem[0]]:
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s
+ continue
+ ...
+ stor5[idx][addr(_param1)] = 1
+ if idx >= unknown81e580d3.length:
+ revert with 0, 50
+ mem[0] = 4
+ if unknown81e580d3[idx] and _param2 > -1 / unknown81e580d3[idx]:
+ revert with 0, 17
+ if s > !(unknown81e580d3[idx] * _param2 / 100 * 10^6):
+ revert with 0, 17
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s + (unknown81e580d3[idx] * _param2 / 100 * 10^6)
+ continue
+```
+
+Portanto, parece uma variante da `claim` que reivindica todas as janelas.
+
+## Conclusão {#conclusion}
+
+A esta altura, você já deveria saber como entender os contratos cujo código-fonte não está disponível, usando os opcodes ou (quando funciona) o descompilador. Como é evidente na extensão deste artigo, a engenharia reversa de um contrato não é trivial, mas em um sistema em que a segurança é essencial, é uma habilidade importante ser capaz de verificar se os contratos funcionam como prometido.
diff --git a/public/content/translations/pt-br/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/pt-br/developers/tutorials/run-node-raspberry-pi/index.md
index 668e366fb63..94b31639d96 100644
--- a/public/content/translations/pt-br/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/run-node-raspberry-pi/index.md
@@ -1,6 +1,6 @@
---
title: Como transformar o Raspberry Pi 4 em um nó apenas instalando o cartão MicroSD
-description: Formate seu Raspberry Pi 4, conecte um cabo de ethernet e um disco SSD, e ligue o dispositivo. Desta maneira, você terá transformado seu Raspberry Pi 4 em um full node de Ethereum, executando a camada de execução, ou a camada de consendo (Beacon Chain/validador)
+description: Piscar seu Raspberry Pi 4, plugar em um cabo ethernet, conectar o disco SSD e ligar o dispositivo para transformar o Raspberry Pi 4 em um nó Ethereum completo + validador
author: "EthereumOnArm"
tags:
- "clientes"
@@ -9,258 +9,177 @@ tags:
- "nós"
lang: pt-br
skill: intermediate
-published: 2020-05-07
-source: r/ethereum
-sourceUrl: https://www.reddit.com/r/ethereum/comments/gf3nhg/ethereum_on_arm_raspberry_pi_4_images_release/
+published: 2022-06-10
+source: Ethereum on ARM
+sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
---
-**TL;DR**: formate seu Raspberry Pi 4, conecte um cabo de rede e um disco SSD, e ligue o dispositivo. Desta maneira, você terá transformado seu Raspberry Pi 4 em um nó completo do Ethereum, executando a camada de execução, ou a camada de consenso (Beacon Chain/validador)
+**A Ethereum on Arm é uma imagem personalizada de Linux que pode transformar um Raspberry Pi em um nó Ethereum.**
-[Aprenda sobre as implementações no Ethereum](/roadmap/)
+Para usar Ethereum on Arm para transformar um Raspberry Pi em um nó Ethereum, recomenda-se o seguinte hardware:
-Um pouco de contexto primeiro. Como você sabe, tivemos alguns problemas de memória [[1]](/developers/tutorials/run-node-raspberry-pi/#references) com a imagem do Raspberry Pi 4, já que o Raspbian OS ainda está em 32 bits [[2]](/developers/tutorials/run-node-raspberry-pi/#references) (pelo menos no nível de usuário). Embora preferíssemos manter o sistema operacional oficial, chegamos à conclusão que, para resolver esses problemas, precisamos migrar para um sistema operacional nativo de 64 bits.
-
-Além disso, os clientes de consenso não suportam binários de 32 bits, então usar o sistema operacional Raspbian impediria que o Raspberry Pi executasse um nó da camada de consenso (e também a possibilidade de fazer staking).
-
-Portanto, após vários testes, estamos lançando 2 imagens diferentes baseadas no Ubuntu 20.04 de 64 bits [[3]](/developers/tutorials/run-node-raspberry-pi/#references): edições para a camada de execução e para camada de consenso.
-
-Basicamente, ambos são a mesma imagem e incluem as mesmas funcionalidades das imagens baseadas em Raspbian. Mas elas estão configuradas para executar o “software” da camada de execução ou da camada de consenso por padrão.
-
-**As imagens cuidam de todos os passos necessários**, desde configurar o ambiente e formatar o disco SSD até instalar e executar o “software” Ethereum, bem como iniciar a sincronização da blockchain.
-
-## Principais recursos {#main-features}
-
-- Baseado no Ubuntu 20.04 de 64 bits
-- Particionamento e formatação automáticas do disco USB
-- Adiciona memória de troca (módulo de “kernel” ZRAM + um arquivo de troca) com base no trabalho do Armbian [[7]](/developers/tutorials/run-node-raspberry-pi/#references)
-- Muda o nome do computador para algo como "ethnode-e2a3e6fe" baseado no hash MAC
-- Executa o “software” como um serviço systemd e começa a sincronizar a Blockchain
-- Inclui um repositório APT para instalar e atualizar o “software” Ethereum
-- Inclui um painel de monitoramento baseado no Grafana/Prometheus
-
-## Software incluído {#software-included}
-
-Ambas as imagens incluem os mesmos pacotes, a única diferença entre elas é que, por padrão, a versão de execução executa o Geth e a versão de consenso executa o Prysm Beacon Chain.
-
-### Clientes de execução {#execution-clients}
-
-- Geth [[8]](/developers/tutorials/run-node-raspberry-pi/#references): 1.9.13 (binário oficial)
-- Parity [[9]](/developers/tutorials/run-node-raspberry-pi/#references): 2.7.2 (compilação cruzada)
-- Nethermind [[10]](/developers/tutorials/run-node-raspberry-pi/#references): 1.8.28 (compilação cruzada)
-- Hyperledger Besu [[11]](/developers/tutorials/run-node-raspberry-pi/#references): 1.4.4 (compilado)
-
-### Clientes de consenso {#consensus-clients}
-
-- Prysm [[12]](/developers/tutorials/run-node-raspberry-pi/#references): 1.0.0-alpha6 (binário oficial)
-- Lighthouse [[13]](/developers/tutorials/run-node-raspberry-pi/#references): 0.1.1 (compilado)
-
-### Estrutura Ethereum {#ethereum-framework}
-
-- Swarm [[14]](/developers/tutorials/run-node-raspberry-pi/#references): 0.5.7 (binário oficial)
-- Raiden Network[[15]](/developers/tutorials/run-node-raspberry-pi/#references): 0.200.0~rc1 (binário oficial)
-- IPFS [[16]](/developers/tutorials/run-node-raspberry-pi/#references): 0.5.0 (binário oficial)
-- Statusd [[17]](/developers/tutorials/run-node-raspberry-pi/#references): 0.52.3 (compilado)
-- Vipnode [[18]](/developers/tutorials/run-node-raspberry-pi/#references): 2.3.3 (binário oficial)
-
-## Guia de instalação e uso {#installation-guide-and-usage}
-
-### Configuração e equipamentos recomendados {#recommended-hardware-and-setup}
-
-- Raspberry 4 (modelo B) - 4GB
+- Raspberry 4 (modelo B 8 GB), placa mãe Odroid M1 ou Rock 5B (8 GB/16 GB RAM)
- Cartão MicroSD (mínimo 16 GB Classe 10)
-- Disco SSD 3.0 (ver seção de armazenamento)
+- 2 TB SSD minimum USB 3.0 disk ou um SSD com USB para SATA case.
- Fonte de alimentação
-- Cabo de rede
-- Redirecionamento da porta 30303 (camada de execução) e da porta 13000 (camada de consenso) [[4]](/developers/tutorials/run-node-raspberry-pi/#references)
-- Um gabinete com dissipador de calor e ventilador (opcional, mas altamente recomendado)
-- Teclado USB, Monitor e cabo HDMI (microHDMI) (opcional)
+- Cabo da Ethernet
+- Encaminhamento de porta (consulte os clientes para obter mais informações)
+- Uma case com dissipador de calor e cooler
+- Teclado USB, Monitor e cabo HDMI (micro-HDMI) (Opcional)
-## Armazenamento {#storage}
+## Por que executar Ethereum no ARM? {#why-run-ethereum-on-arm}
-Você precisará de um SSD para executar os clientes Ethereum (sem um drive SSD não há absolutamente nenhuma chance de sincronizar a blockchain Ethereum). Existem 2 opções:
+Os painéis ARM são computadores muito acessíveis, flexíveis e pequenos. Eles são boas escolhas para rodar os nós do Ethereum porque são baratos, configurados de forma que todos os recursos foquem em apenas um nó, tornando-os mais eficiente; eles consomem energia e são fisicamente menores, assim cabendo em qualquer casa. Também é muito fácil de rodar nós porque o cartão de memória do Raspberry Pi pode simplesmente ser ligado com uma imagem pré montada, sem precisar de download ou software de montagem.
-- Use um disco SSD portátil USB, como o SSD Portátil Samsung T5.
-- Use um disco externo USB 3.0 com um disco SSD. No nosso caso, utilizamos um disco rígido de 2,5 polegadas Inateck FE2011. Certifique-se de comprar um "case" com um chip compatível com UAS, particularmente, um desses: JMicron (JMS567 or JMS578) ou ASMedia (ASM1153E).
+## Como funciona? {#how-does-it-work}
-Em ambos os casos, evite obter discos SSD de baixa qualidade, pois é um componente fundamental do seu nó e pode afetar drasticamente o desempenho (e o tempo de sincronização).
+O cartão de memória do Raspberry Pi já vem com uma imagem pré montada. Esta imagem contém tudo o que é necessário para executar um nó da Ethereum. Com um cartão flash, tudo o que o usuário precisa fazer é ligar o Raspberry Pi. Todos os processos necessários para executar o nó são iniciados automaticamente. Isso funciona porque o cartão de memória contém um sistema operacional baseado no Linux (OS) na qual os processos em nível de sistema rodam automaticamente e se tornam a unidade em um nó de Ethereum.
-Tenha em mente que você precisa conectar o disco a uma porta USB 3.0 (azul)
+O Ethereum não pode rodar usando o popular Raspberry Pi Linux "Raspbian" porque o Raspbian ainda usa uma arquitetura de 32 bits que leva os Usuários do Ethereum a ter problemas com memória e o cliente de consenso não suporta binários de 32-bits. Para superar isso, a Ethereum on Arm migrou para um OS nativo de 64 bits chamado "Armbian".
-## Download e instalação de imagens {#image-download-and-installation}
+**As imagens cuidam de todos os passos necessários**, desde configurar o ambiente e formatar o disco SSD até instalar e executar o “software” Ethereum, bem como iniciar a sincronização da blockchain.
+
+## Execução de acoplamento e clientes de consenso {#note-on-execution-and-consensus-clients}
+
+A imagem do Ethereum on Arm incluí uma execução pré construída e o cliente de consenso como serviços. Um nó Ethereum exige que ambos os clientes estejam sincronizados e executados. Você só precisa fazer o download, instalar a imagem flash e iniciar os serviços. A imagem é pré carregada com os seguintes clientes de execução:
-### 1. Baixar as imagens das camadas de execução e de consenso {#1-download-execution-or-consensus-images}
+- Geth
+- Nethermind
+- Besu
-
- Baixar imagem da camada de execução
-
+e os seguintes clientes de consenso:
-sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c
+- Lighthouse
+- Nimbus
+- Prysm
+- Teku
-
- Baixar imagem da camada de consenso
-
+Você deve escolher um de cada para executar - todos os clientes de execução são compatíveis com todos os clientes de consenso. Se você não selecionar explicitamente um cliente, o nó vai voltar aos seus padrões - Geth e Lighthouse - e executá-los automaticamente quando o quadro estiver ligado. Você precisa abrir a porta 30303 no seu roteador para o Geth Encontrar e conectar-se aos pares.
-sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e
+## Baixando imagem {#downloading-the-image}
-### 2. Instalar a imagem {#2-flash-the-image}
+A imagem Ethereum Raspberry Pi 4 é uma imagem "plug and play" que vai instalar automaticamente e configurar ambos clientes de consenso e de execução, configurando-os para conversarem entre si e conectarem-se à rede Ethereum. Tudo o que o usuário precisa fazer é iniciar seus processos usando um simples comando.
-Insira o microSD no seu computador e baixe o arquivo (camada de execução, por exemplo):
+Baixe a imagem do Raspberry Pi em [Ethereum no Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) e verifique o hash SHA256:
-```bash
-wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstaladod-server-arm64+raspi-eth1.img.zip
+```sh
+# From directory containing the downloaded image
+shasum -a 256 ethonarm_22.04.00.img.zip
+# Hash should output: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f
```
-Nota: Se você não estiver cômodo com a linha de comando ou se estiver executando o Windows, você pode usar o [Etcher](https://etcher.io)
+Note que as imagens para as placas Rock 5B e Odroid M1 estão disponíveis no Ethereum-On-Arm [página de downloads](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html).
-Abra um terminal e verifique o nome do seu MicroSD em execução:
+## Instalando o MicroSD {#flashing-the-microsd}
-```bash
-sudo fdisk -l
-```
+O cartão MicroSD que vai ser usado no Raspberry Pi deve ser primeiro inserido em um desktop ou laptop para que seja instalado. Em seguida, os seguintes comandos do terminal instalarão a imagem baixada no cartão SD:
-Você deve ver um dispositivo chamado mmcblk0 ou sdd. Descompactar e instalar a imagem:
+```shell
+# check the MicroSD card name
+sudo fdisk -l
-```bash
-unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync
+>> sdxxx
```
-### 3. Insira o MicroSD no Raspberry Pi 4. Conecte um cabo de rede e conecte o disco SSD USB (certifique-se de estar usando uma porta azul). {#3-insert-the-microsd-into-the-raspberry-pi-4-connect-an-ethernet-cable-and-attach-the-usb-ssd-disk-make-sure-you-are-using-a-blue-port}
-
-### 4. Ligue o dispositivo {#4-power-on-the-device}
+É muito importante se atentar ao nome correto pois o próximo comando inclui`dd` que apaga completamente o conteúdo existente do cartão antes de instalar a imagem dentro nele. Para continuar, navegue até o diretório que contém a imagem compactada:
-O sistema operacional Ubuntu se iniciará em menos de um minuto, mas **você precisará esperar aproximadamente 10 minutos** para permitir que o script execute as tarefas necessárias para transformar o dispositivo em um nó Ethereum e reiniciar o Raspberry.
+```shell
+# unzip and flash image
+unzip ethonarm_22.04.00.img.zip
+sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/ conv=fdatasync status=progress
+```
-Dependendo da imagem, você estará executando:
+O cartão esta instalado, para que seja inserido no Raspberry Pi.
-- Cliente de execução: Geth como o cliente padrão que sincroniza a blockchain
-- Cliente de consenso: Prysm como cliente padrão que sincroniza a Beacon Chain (rede de teste Goerli)
+## Inicie o nó {#start-the-node}
-### 5. Iniciar sessão {#5-log-in}
+Com o cartão SD inserido no Raspberry Pi, conecte o cabo Ethernet e SSD e então ligue o aparelho. O OS vai iniciar e automaticamente começará a executar as tarefas pré-configuradas que transformam o Raspberry Pi em um nó de Ethereum, incluindo a instalação e construção de um software cliente. Isso levará provavelmente 10-15 minutos.
-Você pode fazer login através do SSH ou usando o console (se você tiver um monitor e teclado conectados)
+Assim que tudo estiver instalado e configurado, faça login no dispositivo via uma conecção ssh ou usando o terminal diretamente se um monitor e teclado estiverem conectados à placa. Use a conta `ethereum` para logar, pois isso tem as permissões necessárioas para iniciar o nó.
-```bash
+```shell
Usuário: ethereum
Senha: Ethereum
```
-Você será solicitado a alterar a senha no primeiro login, então você precisará se conectar duas vezes.
-
-### 6. Abra a porta 30303 para Geth e 13000 se estiver executando a Beacon Chain Prysm. Se você não sabe como fazer isso, faça uma busca no Google de "encaminhamento de porta", seguido pelo seu modelo de roteador. {#6-open-30303-port-for-geth-and-13000-if-you-are-running-prysm-beacon-chain-if-you-dont-know-how-to-do-this-google-port-forwarding-followed-by-your-router-model}
-
-### 7. Ver a saída no console {#7-get-console-output}
-
-Você pode ver o que está acontecendo em segundo plano digitando:
+O cliente de execução padrão, Geth, irá iniciar automaticamente. Você pode confirmar isso checando os logs usando o seguinte comando no terminal:
-```bash
-sudo tail -f /var/log/syslog
+```sh
+sudo journalctl -u geth -f
```
-**Parabéns. Agora você está executando um nó Ethereum completo no seu Raspberry Pi 4.**
-
-## Sincronizando a Blockchain {#syncing-the-blockchain}
-
-Agora você precisa esperar que a blockchain seja sincronizada. No caso da camada de execução, esse processo levará alguns dias dependendo de vários fatores, mas você pode esperar algo entre 5 – 7 dias.
-
-Se está executando a rede de teste Goerli para a camada de consenso, você pode esperar entre 1–2 dias para a sincronização da Beacon Chain. Lembre-se de que precisará configurar o validador mais tarde para iniciar o processo de apostas. [Como executar o validador da camada de consenso](/developers/tutorials/run-node-raspberry-pi/#validator)
-
-## Painéis de monitoramento {#monitoring-dashboards}
-
-Para esta primeira versão, incluímos 3 dashboards de monitoramento com base no Prometheus [[5]](/developers/tutorials/run-node-raspberry-pi/#references) / Grafana [[6]](/developers/tutorials/run-node-raspberry-pi/#references) para monitorar os dados do nó e dos clientes (Geth e Besu). Você pode acessar através do seu navegador:
+O cliente de consenso precisa de ser iniciado explicitamente. Para fazer isso, primeiro abra a porta 9000 no seu roteador para que o farol possa encontrar e se conectar a pares. Então habilite e inicie o serviço de lighthouse:
-```bash
-URL: http://your_raspberrypi_IP:3000
-Usuário: admin
-Senha: ethereum
+```sh
+sudo systemctl enable lighthouse-beacon
+sudo systemctl start lighthouse-beacon
```
-## Alternando clientes {#switching-clients}
+Verifique o cliente usando os logs:
-Todos os clientes são executados como um serviço systemd. Isto é importante porque, se surgir um problema, o sistema recomeçará automaticamente o processo.
-
-Geth and Prysm beacon chain run by default (depending on what you are synchronizing, execution layer or consensus layer) so, if you want to switch to other clients (from Geth to Nethermind, for instance), you need to stop and disable Geth first, and enable and start the other client:
-
-```bash
-sudo systemctl stop geth && sudo systemctl disable geth
+```sh
+sudo journalctl -u lighthouse-beacon
```
-Comandos para habilitar e iniciar cada cliente de execução:
+Observe que o cliente de consenso irá sincronizar em alguns minutos porque ele usa a sincronização do ponto de controle. O cliente de execução vai levar mais tempo - Potencialmente algumas horas, e ele não vai executar até que o cliente de consenso termine de sincronizar (isso porque o cliente de execução precisa de um alvo para sincronizar, que o cliente de consenso sincronizado fornece).
-```bash
-sudo systemctl habilita besu && sudo systemctl start besu
-sudo systemctl enable nethermind && sudo systemctl start nethermind
-sudo systemctl enable parity && sudo systemctl start parity
-```
+Com os serviços Geth e Lighthouse sincronizados e rodando, seu Raspberry Pi agora é um nó de Ethereum! É mais comum interagir com a rede Ethereum utilizando o console Javascript do Geth, que pode ser anexado ao cliente Geth na porta 8545. Também é possível enviar comandos formatados como objetos JSON usando uma ferramenta de solicitação como o Curl. Veja mais em [Documentação Geth](https://geth.ethereum.org/).
-Clientes de consenso:
+Geth é pré configurado para enviar relatórios pro painel Grafana, que pode ser visto no seu navegador. Usuários mais avançados podem querer usar este recurso para monitorar a saúde do seu nó navegando para `ipaddress.3000`, passing`usuário: admin` e `senha:ethereum`.
-```bash
-sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beacon
-sudo systemctl start lighthouse && sudo systemctl enable light thouse
-```
+## Validadores {#validators}
-## Modificando parâmetros {#changing-parameters}
+Um validador também pode ser opcionalmente adicionado ao cliente de consenso. O software validador permite seu nó de participar ativamente no consenso e fornece a rede com segurança criptoeconomica. Você será recompensado por este trabalho em ETH. Para rodar um validador, você precisa primeiro ter 32 ETH, que precisa ser depositado em um contrato de depósito. **Este é um termo de compromisso a longo prazo - ainda não é possível sacar este ETH!**. O depósito pode ser feito seguindo o passo a passo no [Launchpad](https://launchpad.ethereum.org/). Faça isso em um desktop/laptop, mas não gere chaves — isso pode ser feito diretamente no Raspberry Pi.
-Os arquivos de configuração do cliente estão localizados no diretório /etc/ethereum/. Você pode editar esses arquivos e reiniciar o serviço do sistema para que as alterações tenham efeito. A única exceção é o Nethermind que, além disso, tem um arquivo de configuração Mainnet localizado aqui:
+Abra um terminal no Raspberry Pi e execute o seguinte comando para gerar as chaves de depósito:
-```bash
-/etc/nethermind/configs/mainnet.cfg
```
-
-Os dados dos clientes Blockchain são armazenados no diretório inicial da conta Ethereum do seguinte modo (observe o ponto antes do nome do diretório):
-
-### Camada de execução {#execution-layer}
-
-```bash
-/home/ethereum/.geth
-/home/ethereum/.parity
-/home/ethereum/.besu
-/home/ethereum/.nethermind
+sudo apt-get update
+sudo apt-get install staking-deposit-cli
+cd && deposit new-mnemonic --num_validators 1
```
-### Camada de consenso {#consensus-layer}
+Mantenha a frase mnemônica segura! O comando acima gerou dois arquivos no keystore: as chaves validadoras e um arquivo de dados de depósito. Os dados do depósito precisam ser carregados no launchpad, portanto, devem ser copiados do Raspberry Pi para o desktop/laptop. Isso pode ser feito usando uma conexão ssh ou qualquer outro método de copiar/colar.
-```bash
-/home/ethereum/.eth2
-/home/ethereum/.eth2validators
-/home/ethereum/.lighthouse
-```
+Uma vez que o arquivo de dados do depósito estiver disponível no computador que executa o launchpad, ele pode ser arrastado e solto no `+` na tela do launchpad. Siga as instruções na tela para enviar uma transação para o contrato de depósito.
-## Nethermind e Hyperledger Besu {#nethermind-and-hyperledger-besu}
+De volta ao Raspberry Pi, um validador pode ser iniciado. Isso requer importar as chaves do validador, definir o endereço para coletar recompensas e, em seguida, iniciar o processo do validador pré-configurado. O exemplo abaixo é para o Lighthouse - instruções para outros clientes de consenso estão disponíveis na [Ethereum on Arm docs](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/):
-Estes 2 grandes clientes de execução tornaram-se uma ótima alternativa ao Geth e Parity. Quanto maior a diversidade na rede melhor. Testá-los contribui para a integridade da rede.
+```shell
+# import the validator keys
+lighthouse account validator import --directory=/home/ethereum/validator_keys
-Ambos precisam de mais testes, por isso sinta-se livre para testá-los e compartilhar suas impressões.
+# set the reward address
+sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf
-## Como gerenciar o validador do consenso (staking) {#validator}
+# start the validator
+sudo systemctl start lighthouse-validator
+```
-Uma vez que a Beacon Chain da rede de teste Goerli for sincronizada, você vai poder executar um validador no mesmo dispositivo. Você precisará seguir [essas etapas de participação](https://prylabs.net/participate).
+Parabéns, agora você tem um nó Ethereum completo e um validador rodando em um Raspberry Pi!
-Na primeira vez, você precisa criar uma conta manualmente executando o binário "validador" e configurando uma senha. Depois de concluir esta etapa, você pode adicionar a senha a `/etc/ethereum/prysm-validator.conf` e iniciar o validador como um serviço systemd.
+## Mais detalhes {#more-details}
-## Agradecemos o feedback {#feedback-appreciated}
+Esta página deu uma visão geral de como configurar um nó e validador Geth-Lighthouse usando Raspberry Pi. Instruções mais detalhadas estão disponíveis no [site Ethereum-on-Arm](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
-Nos esforçamos muito para configurar o Raspberry Pi 4 como um nó Ethereum completo, pois sabemos que a base de usuários massiva deste dispositivo pode causar um impacto muito positivo na rede.
+## Agradecemos o feedback {#feedback-appreciated}
-Como esta é a primeira imagem baseada no Ubuntu 20.04, pode haver alguns erros. Caso haja, informe o problema no [GitHub](https://github.com/diglos/ethereumonarm) ou entre em contato conosco no [Twitter](https://twitter.com/EthereumOnARM).
+Sabemos que o Raspberry Pi tem uma enorme base de usuários, que pode ter um impacto muito positivo na saúde da rede Ethereum. Por favor, explore os detalhes deste tutorial, tente rodar em redes de teste, confira o Ethereum on Arm pelo GitHub, dê feedback, levante questões e pull requests e ajude a avançar a tecnologia e a documentação!
## Referências {#references}
-1. [geth falha repetidamente com SIGSEGV](https://github.com/ethereum/go-ethereum/issues/20190)
-2. [https://github.com/diglos/ethereumonarm](https://github.com/diglos/ethereumonarm)
-3. https://ubuntu.com/download/raspberry-pi
-4. https://wikipedia.org/wiki/Port_forwarding
-5. https://prometheus.io
-6. https://grafana.com
-7. https://forum.armbian.com/topic/5565-zram-vs-swap/
-8. https://geth.ethereum.org
-9. **Note que o OpenEthereum [foi descontinuado](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e não está mais sendo mantido.** Use-o com cuidado e de preferência mude para outra implementação de cliente.
-10. https://nethermind.io
-11. https://www.hyperledger.org/projects/besu
-12. https://github.com/prysmaticlabs/prysm
-13. https://lighthouse.sigmaprime.io
-14. https://ethersphere.github.io/swarm-home
-15. https://raiden.network
-16. https://ipfs.io
-17. https://status.im
-18. https://vipnode.org
+1. https://ubuntu.com/download/raspberry-pi
+2. https://wikipedia.org/wiki/Port_forwarding
+3. https://prometheus.io
+4. https://grafana.com
+5. https://forum.armbian.com/topic/5565-zram-vs-swap/
+6. https://geth.ethereum.org
+7. https://nethermind.io
+8. https://www.hyperledger.org/projects/besu
+9. https://github.com/prysmaticlabs/prysm
+10. https://lighthouse.sigmaprime.io
+11. https://ethersphere.github.io/swarm-home
+12. https://raiden.network
+13. https://ipfs.io
+14. https://status.im
+15. https://vipnode.org
diff --git a/public/content/translations/pt-br/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/pt-br/developers/tutorials/secure-development-workflow/index.md
new file mode 100644
index 00000000000..4a20bad7f85
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/secure-development-workflow/index.md
@@ -0,0 +1,56 @@
+---
+title: Checklist de segurança para smart contracts
+description: Um workflow sugerido para escrever smart contracts seguros
+author: "Trailofbits"
+tags:
+ - "contratos inteligentes"
+ - "segurança"
+ - "solidity"
+skill: intermediate
+lang: pt-br
+published: 2020-09-07
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md
+---
+
+## Processo de desenvolvimento do contrato inteligente {#smart-contract-development-checklist}
+
+Aqui temos um processo de alto nível que recomendamos seguir enquanto você escreve seus contratos inteligentes.
+
+Verificar problemas de segurança conhecidos:
+
+- Reveja seus contratos com o [Slither](https://github.com/crytic/slither). Tem mais de 40 detectores internos para vulnerabilidades comuns. Execute em cada check-in com um novo código e certifique-se de que ele recebe um relatório limpo (ou use o modo de triagem para silenciar certos problemas).
+- Reveja seus contratos com o [Crytic](https://crytic.io/). Ele verifica 50 problemas que o Slither não tem. O Crytic também pode ajudar sua equipe a se manter atualizada, resolvendo problemas de segurança facilmente nas solicitações de pull no GitHub.
+
+Considere as características especiais do seu contrato:
+
+- Os seus contratos são atualizáveis? Verifique se há defeitos em seu código de capacidade de atualização com o [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) ou [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/). Documentamos 17 situações em que as atualizações podem correr mal.
+- Seus contratos pretendem estar em conformidade com os ERCs? Verifique com [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance). Esta ferramenta identifica instantaneamente desvios de seis especificações comuns.
+- Você tem testes de unidade no Truffle? Verifique com [`slither-check-erc`](https://github.com/crytic/slither/wiki/Property-generation). Ele gera automaticamente um robusto conjunto de propriedades de segurança para recursos do ERC20 com base no seu código específico.
+- Você faz integrações com tokens de outras empresas? Revise nossa [lista de verificação de integração de tokens](/developers/tutorials/token-integration-checklist/) antes de confiar em contratos externos.
+
+Visualmente inspecione recursos críticos de segurança com seu código:
+
+- Analise o printer [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) do Slither. Evite problemas de linearização de sombras e C3 involuntários.
+- Analise o printer [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) do Slither. Reporta a visibilidade da função e os controles de acesso.
+- Analise o printer [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) do Slither. Ele relata os controles de acesso às variáveis de estado.
+
+Propriedades de segurança críticas do documento e use geradores de testes automatizados para avaliá-las:
+
+- Aprenda com [as propriedades de segurança de documentos para o seu código](/developers/tutorials/guide-to-smart-contract-security-tools/). É difícil no início, mas é a atividade mais importante para alcançar um bom resultado. Também é um pré-requisito para usar qualquer uma das técnicas avançadas neste tutorial.
+- Defina as propriedades de segurança no Solidity, para usar com [Echidna](https://github.com/crytic/echidna) e [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html). Concentre-se na sua máquina do estado, controles de acesso, operações aritméticas, interações externas e padrões de conformidade.
+- Defina as propriedades de segurança com [API Python do Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/). Concentre-se na herança, nas dependências variáveis, nos controles de acesso e em outras questões estruturais.
+- Execute seus testes de propriedade em cada commit com [Crytic](https://crytic.io). Critica pode consumir e avaliar testes de propriedade de segurança para que todos na sua equipe possam facilmente ver que eles passam no GitHub. Os testes que falharam podem bloquear os commits.
+
+Finalmente, esteja atento a questões que as ferramentas automatizadas não conseguem facilmente encontrar:
+
+- Falta de privacidade: todos os outros podem ver suas transações enquanto são enfileiradas no pool
+- Transações principais em execução
+- Operações criptográficas
+- Interações arriscadas com componentes externos de DeFi
+
+## Pedir ajuda {#ask-for-help}
+
+[Horário de escritório Ethereum](https://calendly.com/dan-trailofbits/ethereum-office-hours) executa todas as terças da tarde. Essas sessões presenciais de uma hora são uma oportunidade para você nos fazer quaisquer perguntas que sobre segurança, solucionar problemas usando nossas ferramentas e obter comentários de especialistas sobre sua abordagem atual. Vamos ajudá-lo a trabalhar neste guia.
+
+Junte-se ao nosso Slack: [Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw). Sempre estaremos disponíveis nos canais #crytic e #ethereum caso tenha alguma dúvida.
diff --git a/public/content/translations/it/developers/tutorials/sending-tokens-using-ethersjs/index.md b/public/content/translations/pt-br/developers/tutorials/send-token-ethersjs/index.md
similarity index 59%
rename from public/content/translations/it/developers/tutorials/sending-tokens-using-ethersjs/index.md
rename to public/content/translations/pt-br/developers/tutorials/send-token-ethersjs/index.md
index 0f9979626fc..f57529f2ef8 100644
--- a/public/content/translations/it/developers/tutorials/sending-tokens-using-ethersjs/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/send-token-ethersjs/index.md
@@ -1,35 +1,35 @@
---
-title: Invio di token utilizzando ethers.js
-description: Guida per principianti per l'invio di token utilizzando ethers.js.
+title: Envio de fichas usando ethers.js
+description: Guia amigo para iniciantes enviarem tokens usando ethers.js.
author: Kim YongJun
tags:
- "ETHERS.JS"
- "ERC-20"
- - "TOKEN"
+ - "TOKENS"
skill: beginner
-lang: it
+lang: pt-br
published: 2021-04-06
---
-## Invio di token utilizzando ethers.js(5.0) {#send-token}
+## Enviar Token usando ethers.js(5.0) {#send-token}
-### In questo tutorial imparerai come {#you-learn-about}
+### Neste tutorial, você aprenderá {#you-learn-about}
-- Importare ethers.js
-- Trasferire token
-- Impostare il prezzo del gas in base alla situazione del traffico di rete
+- Importar ethers.js
+- Transferência de tokens
+- Defina o preço do gás de acordo com a situação do tráfego de rede
-### Per iniziare {#to-get-started}
+### Iniciado {#to-get-started}
-Per iniziare, dobbiamo prima importare la libreria di ethers.js nel nostro javascript. `Include ethers.js(5.0)`
+Para começar, primeiro devemos importar a biblioteca ethers.js para nossa javascript Incluir ethers.js(5.0)
-### Installazione {#install-ethersjs}
+### Instalando {#install-ethersjs}
```shell
/home/ricmoo> npm install --save ethers
```
-ES6 nel browser
+ES6 no Navegador
```html
```
-ES3(UMD) nel browser
+ES3(UMD) no Navegador
```html
```
-### Parametri {#param}
+### Parâmetros {#param}
-1. **`contract_address`**: Indirizzo del contratto del token (l'indirizzo del contratto è necessario quando il token che vuoi trasferire non è ether)
-2. **`send_token_amount`**: L'importo che vuoi inviare al destinatario
-3. **`to_address`**: L'indirizzo del destinatario
-4. **`send_account`**: L'indirizzo del mittente
-5. **`private_key`**: La chiave privata del mittente per firmare la transazione e trasferire realmente i token
+1. **`contract_address`**: Endereço do contrato do token (o endereço do contrato é necessário quando o token que você deseja transferir não for ether)
+2. **`send_token_amount`**: A quantia que você deseja enviar para o destinatário
+3. **`to_address`**: O endereço do destinatário
+4. **`to_address`**: O endereço do destinatário
+5. **`private_key`**: Chave privada do remetente para assinar a transação e realmente transferir os tokens
-## Avviso {#notice}
+## Nota {#notice}
-`signTransaction(tx)` è rimossa perché `sendTransaction()` lo fa internamente.
+`signTransaction(tx)` foi removido porque `sendTransaction()` fez isso internamente.
-## Invio delle procedure {#procedure}
+## Enviando Procedimentos {#procedure}
-### 1. Connettiti alla rete (rete di prova) {#connect-to-network}
+### 1. Conectar à rede (testnet) {#connect-to-network}
-#### Imposta il provider (Infura) {#set-provider}
+#### Definir Provedor (Infura) {#set-provider}
-Connettiti alla rete di prova di Ropsten
+Conecte-se à rede de teste Ropsten
```javascript
-window.provider = new InfuraProvider("ropsten")
+window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
```
-### 2. Crea il portafoglio {#create-wallet}
+### 2. Criar Carteira {#create-wallet}
```javascript
let wallet = new ethers.Wallet(private_key)
```
-### 3. Connetti il portafoglio alla rete {#connect-wallet-to-net}
+### 3. Conectar carteira à rede {#connect-wallet-to-net}
```javascript
let walletSigner = wallet.connect(window.ethersProvider)
```
-### 4. Ottieni il prezzo corrente del gas {#get-gas}
+### 4. Obter o atual preço do gás {#get-gas}
```javascript
window.ethersProvider.getGasPrice() // gasPrice
```
-### 5. Definisci la transazione {#define-transaction}
+### 5. Definir a Transação {#define-transaction}
-Queste variabili definite di seguito dipendono da `send_token()`
+Essas variáveis definidas abaixo dependem de `send_token()`
-### Parametri della transazione {#transaction-params}
+### Parâmetros de transação {#transaction-params}
-1. **`send_account`**: indirizzo del mittente del token
-2. **`to_address`**: indirizzo del destinatario del token
-3. **`send_token_amount`**: l'importo di token da inviare
-4. **`gas_limit`**: limite di gas
-5. **`gas_price`**: prezzo del gas
+1. **`send_account`**: endereço do remetente do token
+2. **`to_address`**: endereço do receptor do token
+3. **`send_token_amount`**: a quantidade de tokens a serem enviados
+4. **`gas_limit`**: limite de gas
+5. **`gas_price`**: preço do gas
-[Vedi sotto come usarli](#how-to-use)
+[Veja abaixo como usar](#how-to-use)
```javascript
const tx = {
@@ -114,7 +114,7 @@ const tx = {
}
```
-### 6. Trasferimento {#transfer}
+### 6. Transferir {#transfer}
```javascript
walletSigner.sendTransaction(tx).then((transaction) => {
@@ -123,7 +123,7 @@ walletSigner.sendTransaction(tx).then((transaction) => {
})
```
-## Come usarlo {#how-to-use}
+## Como usar {#how-to-use}
```javascript
let private_key =
@@ -146,9 +146,9 @@ send_token(
)
```
-### Fatto! {#success}
+### Sucesso! {#success}
-![immagine della transazione eseguita correttamente](./successful-transaction.png)
+![imagem da transação realizada com sucesso](./successful-transaction.png)
## send_token() {#send-token-method}
diff --git a/public/content/translations/pt-br/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/pt-br/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
new file mode 100644
index 00000000000..0e1b489cdc3
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -0,0 +1,206 @@
+---
+title: Enviando transações usando Web3
+description: "Este é um guia amigável para iniciantes enviarem transações Ethereum usando web3. Existem três etapas principais para enviar uma transação para a blockchain Ethereum: criar, assinar e transmitir. Analisaremos todas as três."
+author: "Elan Halpern"
+tags:
+ - "transações"
+ - "web3.js"
+ - "alchemy"
+skill: intermediate
+lang: pt-br
+published: 2020-11-04
+source: Documentação do Alchemy
+sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
+---
+
+Este é um guia amigável para iniciantes enviarem transações Ethereum usando web3. Existem três etapas principais para enviar uma transação para a blockchain Ethereum: criar, assinar e transmitir. Analisaremos todas as três, esperamos responder a quaisquer perguntas que você possa ter! Neste tutorial, estaremos usando [Alchemy](https://www.alchemy.com/) para enviar as nossas transações para a cadeia Ethereum. Você pode [criar uma conta Alchemy grátis aqui](https://auth.alchemyapi.io/signup).
+
+**NOTA:** Este guia é para assinar suas transações no _back-end_ do seu aplicativo. Se você quer integrar a assinatura de suas transações no front-end, verifique a integração [Web3 com um provedor de navegador](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
+
+## O básico {#the-basics}
+
+Como a maioria dos desenvolvedores blockchain quando iniciam, você pode ter feito algumas pesquisas sobre como enviar uma transação (algo que deve ser bem simples) e encontrado com uma infinidade de guias, cada um deles diz coisas diferentes e te deixa um pouco sobrecarregado e confuso. Se você está naquele barco, não se preocupe, todos estivemos em algum momento! Então, antes de começarmos, vamos ver algumas coisas certas:
+
+### 1\. Alchemy não armazena suas chaves privadas {#alchemy-does-not-store-your-private-keys}
+
+- Isso significa que Alchemy não pode assinar e enviar transações em seu nome. A razão para isso é a questão da segurança. Alchemy nunca vai te pedir para compartilhar sua chave privada, e você nunca deve compartilhar sua chave privada com um nó hospedado (ou alguém para isso).
+- Você pode ler a partir da blockchain usando a API principal do Alchemy, mas para gravar nela, você precisará usar outra coisa para assinar suas transações antes de enviá-las por meio do Alchemy (assim como para qualquer outro [serviço de nó](/developers/docs/nodes-and-clients/nodes-as-a-service/)).
+
+### 2\. O que é um “assinante”? {#what-is-a-signer}
+
+- Assinantes assinarão transações para você usando sua chave privada. Neste tutorial iremos utilizar [Alchemy web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) para assinar a nossa transação, mas também poderia utilizar qualquer outra biblioteca web3.
+- No front-end, um bom exemplo de assinante seria o [MetaMask](https://metamask.io/), que assinará e enviará transações em seu nome.
+
+### 3\. Por que preciso assinar minhas transações? {#why-do-i-need-to-sign-my-transactions}
+
+- Cada usuário que desejar enviar uma transação na rede Ethereum deve assinar a transação (usando sua chave privada), a fim de validar a autenticidade da origem da transação.
+- É super importante proteger esta chave privada, uma vez que o acesso a ela concede controle total sobre a sua conta Ethereum, permitindo que você (ou qualquer um com acesso) realize transações em seu nome.
+
+### 4\. Como eu protejo minha chave privada? {#how-do-i-protect-my-private-key}
+
+- Há muitas maneiras de proteger a sua chave privada e usá-la para enviar transações. Neste tutorial, usaremos um arquivo `.env`. No entanto, você também pode usar um provedor separado que armazena chaves privadas, usa um arquivo de keystore ou outras opções.
+
+### 5\. Qual é a diferença entre `eth_sendTransaction` e `eth_sendRawTransaction`? {#difference-between-send-and-send-raw}
+
+`eth_sendTransaction` e `eth_sendRawTransaction` são ambas funções da API da Ethereum que transmitem uma transação para a rede Ethereum, então ela será adicionada a um bloco futuro. Eles diferem na forma como lidam com a assinatura das transações.
+
+- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) é usado para enviar _transações_ não assinadas, o que significa que o nó que você está enviando deve gerenciar a sua chave privada para que possa assinar a transação antes de transmiti-la para a cadeia. Como o Alchemy não possui as chaves privadas do usuário, eles não oferecem suporte a esse método.
+- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) é usado para transmitir transações que já foram assinadas. Isso significa que você deve primeiro usar [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction), e então transmitir o resultado para `eth_sendRawTransaction`.
+
+Ao usar o web3, `eth_sendRawTransaction` é acessado ao chamar a função [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction).
+
+Isso é o que nós usaremos neste tutorial.
+
+### 6\. Qual é a biblioteca de web3? {#what-is-the-web3-library}
+
+- Web3.js é uma biblioteca wrapper em torno das chamadas JSON-RPC padrão que é bastante comum de usar no desenvolvimento de Ethereum.
+- Há várias bibliotecas Web3 para diferentes tipos de linguagem. Neste tutorial, estaremos usando [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) que está escrito em JavaScript. Você pode verificar outras opções [aqui](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) como [ethers.js](https://docs.ethers.org/v5/).
+
+Ok, agora que temos esclarecemos esses pontos, passemos para o tutorial. Sinta-se à vontade para fazer perguntas a qualquer momento no [discord](https://discord.gg/gWuC7zB) do Alchemy!
+
+### 7\. Como enviar transações seguras, otimizadas de gás e privadas? {how-to-send-secure-gas-optimized-and-private-transactions}
+
+- [Alchemy tem um conjunto de APIs para Transações](https://docs.alchemy.com/reference/transact-api-quickstart). Você pode usá-los para reforçar transações, simular transações antes que elas aconteçam, enviar transações privadas e enviar transações otimizadas de gás
+- Você também pode usar a [API de notificação](https://docs.alchemy.com/docs/alchemy-notify) para ser alertado quando sua transação for retirada do mempool e adicionada à cadeia
+
+**NOTA:** Este guia requer uma conta Alchemy, um endereço Ethereum ou carteira MetaMask, NodeJs e npm instalados. Se não, siga estes passos:
+
+1. [Crie uma conta gratuita em Alchemy](https://auth.alchemyapi.io/signup)
+2. [Crie uma conta MetaMask](https://metamask.io/) (ou obtenha um endereço Ethereum)
+3. [Siga estes passos para instalar o NodeJs e NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
+
+## Passos para enviar sua transação {#steps-to-sending-your-transaction}
+
+### 1\. Crie um aplicativo Alchemy na rede de testes Sepolia {#create-an-alchemy-app-on-the-sepolia-testnet}
+
+Navegue até o seu [Painel da Alchemy](https://dashboard.alchemyapi.io/) e crie um novo aplicativo, escolhendo Sepolia (ou qualquer outra rede de teste) para sua rede.
+
+### 2\. Solicite ETH do faucet Sepolia {#request-eth-from-sepolia-faucet}
+
+Siga as instruções na [torneira Sepolia da Alchemy](https://www.sepoliafaucet.com/) para receber ETH. Certifique-se de incluir seu endereço do Ethereum **Sepolia** (da MetaMask) e não outra rede. Após seguir as instruções, verifique novamente se você recebeu o ETH em sua carteira.
+
+### 3\. Crie um novo diretório do projeto e insira `cd` {#create-a-new-project-direction}
+
+Crie um novo diretório de projetos a partir da linha de comando (terminal para macs) e navegue até ele:
+
+```
+mkdir sendtx-example
+cd sendtx-example
+```
+
+### 4\. Instale o Alchemy Web3 (ou qualquer biblioteca web3) {#install-alchemy-web3}
+
+Execute o seguinte comando em seu diretório do projeto para instalar [Alchemy Web3](https://docs.alchemy.com/reference/api-overview):
+
+Note que, se você quiser usar a biblioteca ethers.js, [siga as instruções aqui](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum).
+
+```
+yarn add @alch/alchemy-web3
+```
+
+### 5\. Instale o dotenv {#install-dotenv}
+
+Usaremos um arquivo `.env` para armazenar com segurança nossa chave de API e a chave privada.
+
+```
+npm install dotenv --save
+```
+
+### 6\. Crie o arquivo `.env` {#create-the-dotenv-file}
+
+Crie um arquivo `.env` no diretório de seu projeto e adicione o seguinte (substituindo “`your-api-url`" e "`your-private-key` ")
+
+- Para encontrar o URL da API de Alchemy, navegue até a página de detalhes do aplicativo que você acabou de criar no seu painel, clique em "Ver Chave" no canto superior direito e pegue a URL HTTP.
+- Para encontrar sua chave privada usando MetaMask, confira este [guia](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key).
+
+```
+API_URL = "your-api-url"
+PRIVATE_KEY = "your-private-key"
+```
+
+
+No faça commit do .env! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env ao arquivo gitignore
+
+
+### 7\. Crie um arquivo `iframe.ts` {#create-sendtx-js}
+
+Ótimo, agora que temos nossos dados confidenciais protegidos em um arquivo `.env`, vamos começar a codificar. Para nosso exemplo de envio de transação, enviaremos ETH de volta para o faucet Sepolia.
+
+Criar um `sendTx. s` arquivo, que é onde vamos configurar e enviar nossa transação de exemplo, e adicionar as seguintes linhas de código a ele:
+
+```
+async function main() {
+ require('dotenv').config();
+ const { API_URL, PRIVATE_KEY } = process.env;
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
+ const web3 = createAlchemyWeb3(API_URL);
+ const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
+
+ const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
+
+ const transaction = {
+ 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
+ 'value': 1000000000000000000, // 1 ETH
+ 'gas': 30000,
+ 'nonce': nonce,
+ // optional data field to send message or execute smart contract
+ };
+
+ const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
+
+ web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
+ if (!error) {
+ console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
+ } else {
+ console.log("❗Something went wrong while submitting your transaction:", error)
+ }
+ });
+}
+
+main();
+```
+
+Certifique-se de substituir o endereço na **linha 6** pelo seu próprio endereço público.
+
+Agora, antes de nós começarmos a executar este código, vamos falar sobre alguns dos componentes aqui.
+
+- `nonce` : A especificação nonce é usada para acompanhar o número de transações enviadas a partir do seu endereço. Precisamos disso para fins de segurança e para evitar [replay de ataques](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para obter o número de transações enviadas a partir do seu endereço, usamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
+- `transação`: O objeto da transação tem alguns aspectos que precisamos especificar
+ - `para`: Este é o endereço para o qual queremos enviar ETH. Nesse caso, reenviamos ETH para o [faucet Sepolia](https://sepoliafaucet.com/) no qual fizemos a solicitação inicialmente.
+ - `valor`: Este é o valor que desejamos enviar, especificado em Wei onde 10^18 Wei = 1 ETH
+ - `gás`: Há muitas maneiras de determinar a quantidade de gás certa a ser incluída na sua transação. Alchemy até tem um [webhook de preço de gás](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) para notificá-lo quando o preço do gás cai dentro de um determinado limiar. Para transações na Mainnet, é uma boa prática verificar um estimador de gás como [ETH Gas Station](https://ethgasstation.info/), para determinar a quantidade certa de gás a incluir. 21000 é a quantidade mínima de gás que uma operação na Ethereum usará. Portanto, para garantir que nossa transação será executada, colocamos 30000 aqui.
+ - `nonce`: ver acima nonce definição. Nonce começa a contagem de zero.
+ - Dados [OPTATIVOS]: Usados para enviar informações adicionais com a sua transferência, ou para chamar um contrato inteligente, não necessário para transferências de saldo, confira a nota abaixo.
+- `signedTx`: Para assinar nosso objeto de transação, usaremos o método `signTransaction` com nosso `PRIVATE_KEY`
+- `sendSignedTransação`: Uma vez assinada, teremos uma transação assinada. podemos enviá-lo para ser incluído em um bloco subsequente usando `sendSignedTransaction`
+
+**Uma observação sobre os dados** Existem dois tipos principais de transações que podem ser enviadas ao Ethereum.
+
+- Transferência de saldo: Envie ETH de um endereço para outro. Não é necessário campo de dados, no entanto, se você quiser enviar informações adicionais junto com sua transação, você pode incluir essas informações no formato HEX neste campo.
+ - Por exemplo, digamos que nós queríamos escrever o hash de um documento IPFS para a cadeia Ethereum, para dar a ele um timestamp (registro de data e hora) imutável. Nosso campo de dados deveria se parecer com data: `web3.utils.toHex('IPFS hash')`. E agora, qualquer pessoa pode consultar a cadeia e ver quando esse documento foi adicionado.
+- Transação de contrato inteligente: Execute algum código de contrato inteligente na cadeia. Nesse caso, o campo de dados deveria conter a função inteligente, que você deseja executar, juntamente com quaisquer parâmetros.
+ - Para um exemplo prático, confira a Etapa 8 neste [Tutorial Olá Mundo](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction).
+
+### 8\. Execute o código usando `node sendTx.js` {#run-the-code-using-node-sendtx-js}
+
+Navegue de volta ao seu terminal ou linha de comando e execute:
+
+```
+node sendTx.js
+```
+
+### 9\. Consultar suas transações no Mempool {#see-your-transaction-in-the-mempool}
+
+Abra a página de [Mempool](https://dashboard.alchemyapi.io/mempool) no painel de controle de Alchemy e filtre pelo app que você criou para encontrar sua transação. É aqui que podemos assistir nossa transição de um estado pendente para um estado minerado (se bem-sucedida) ou estado descartado em caso de falha. Certifique-se de mantê-lo em "Todos" para capturar as transações "mineradas", "pendentes", e "descartadas". Também é possível procurar sua transação procurando por transações enviadas para o endereço `0x31b98d14007bdee637298086988a0bbd31184523`.
+
+Para ver os detalhes da sua transação assim que encontrá-la, selecione o hash tx, que deve levar você a uma visão que se parece com isso:
+
+![Captura do observador Mempool](./mempool.png)
+
+A partir daí, você pode ver sua transação no Etherscan clicando no ícone circulado em vermelho!
+
+**Eba! Você acabou de enviar a sua primeira transação Ethereum usando Alchemy 🎉**
+
+_Para enviar comentários e sugestões sobre este guia, entre em contato com Elan no [Discord da Alchemy](https://discord.gg/A39JVCM)!_
+
+_Publicado originalmente em [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy)_
diff --git a/public/content/translations/pt-br/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/pt-br/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
new file mode 100644
index 00000000000..04b61740046
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -0,0 +1,94 @@
+---
+title: Configure o web3.js para usar a Ethereum blockchain em JavaScript
+description: Como usar um contrato inteligente para interagir com um token usando a linguagem Solidity
+author: "jdourlens"
+tags:
+ - "web3.js"
+ - "javascript"
+skill: intermediate
+lang: pt-br
+published: 2020-04-11
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+Neste tutorial, vamos ver como começar com [web3.js](https://web3js.readthedocs.io/) para interagir com a blockchain Ethereum. Web3.js podem ser usados em frontend e backends para ler dados da blockchain, fazer transações e até mesmo implantar contratos inteligentes.
+
+O primeiro passo é incluir web3.js no seu projeto. Para usá-la em uma página da web, você pode importar a biblioteca diretamente usando um CDN como JSDeliver.
+
+```html
+
+```
+
+Se você preferir instalar a biblioteca para usar em seu backend ou um projeto do frontend que usa build, você pode instalá-la usando o npm:
+
+```bash
+npm install web3 --save
+```
+
+Em seguida, para importar o Web3.js em um script Node.js ou projeto front-end do Browserify, você pode usar a seguinte linha de JavaScript:
+
+```js
+const Web3 = require("web3")
+```
+
+Agora que incluímos a biblioteca no projeto, precisamos inicializá-la. Seu projeto precisa ser capaz de se comunicar com a blockchain. A maioria das bibliotecas Ethereum se comunicam com um [nó](/developers/docs/nodes-and-clients/) através de chamadas RPC. Para iniciar nosso provedor Web3, nós criaremos uma instância Web3 passando como construtor a URL do provedor. Se você tiver uma instância de um nó ou [ganache executando no seu computador](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/) será parecido com isto:
+
+```js
+const web3 = new Web3("http://localhost:8545")
+```
+
+Se você deseja acessar diretamente um nó hospedado, poderá encontrar opções em [nós como um serviço](/developers/docs/nodes-and-clients/nodes-as-a-service).
+
+```js
+const web3 = new Web3("https://cloudflare-eth.com")
+```
+
+Para testar se configuramos corretamente nossa instância Web3, tentaremos recuperar o número do último bloco usando a função `getBlockNumber`. Esta função aceita uma chamada de callback como parâmetro e retorna o número do bloco como um inteiro.
+
+```js
+var Web3 = require("web3")
+const web3 = new Web3("https://cloudflare-eth.com")
+
+web3.eth.getBlockNumber(function (error, result) {
+ console.log(result)
+})
+```
+
+Se você executar este programa, ele simplesmente imprimirá o bloco mais recente: o topo do blockchain. Você também pode usar chamadas de função `await/async` para evitar aninhar (encadear por identação) chamadas de callback em seu código:
+
+```js
+async function getBlockNumber() {
+ const latestBlockNumber = await web3.eth.getBlockNumber()
+ console.log(latestBlockNumber)
+ return latestBlockNumber
+}
+
+getBlockNumber()
+```
+
+Você pode ver todas as funções disponíveis da instância Web3 na [documentação oficial do web3.js](https://docs.web3js.org/).
+
+A maioria das bibliotecas Web3 são assíncronas porque em segundo plano a biblioteca faz chamadas JSON RPC para o nó que envia os resultados.
+
+
+
+Se você estiver trabalhando no navegador, algumas carteiras injetam diretamente uma instância Web3, e você deveria tentar usá-la sempre que possível, especialmente se planeja interagir com o endereço Ethereum do usuário para fazer transações.
+
+Aqui está o trecho de código para detectar se uma carteira MetaMask está disponível e tentar habilitá-la se estiver. Isso permitirá mais tarde você ler o saldo do usuário e permitir-lhe-á validar as transações que gostaria de fazer na blockchain Ethereum:
+
+```js
+if (window.ethereum != null) {
+ state.web3 = new Web3(window.ethereum)
+ try {
+ // Request account access if needed
+ await window.ethereum.enable()
+ // Accounts now exposed
+ } catch (error) {
+ // User denied account access...
+ }
+}
+```
+
+Alternativas para web3.js como [Ethers.js](https://docs.ethers.io/) existem e também são comumente usadas. No próximo tutorial, veremos [como escutar facilmente novos blocos recebidos na blockchain e ver o que eles contêm](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/).
diff --git a/public/content/translations/pt-br/developers/tutorials/short-abi/index.md b/public/content/translations/pt-br/developers/tutorials/short-abi/index.md
new file mode 100644
index 00000000000..4ce396e010e
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/short-abi/index.md
@@ -0,0 +1,550 @@
+---
+title: "ABIs curtos para otimização de dados de chamada"
+description: Otimizando contratos inteligentes para Rollups Otimistas
+author: Ori Pomerantz
+lang: pt-br
+tags:
+ - "camada 2"
+skill: intermediate
+published: 2022-04-01
+---
+
+## Introdução {#introduction}
+
+Neste artigo, você aprenderá sobre [optimistic rollups](/developers/docs/scaling/optimistic-rollups), os custos das transações e como essa estrutura de custos diferente nos obriga a otimizar coisas diferentes do que fazemos na Ethereum Mainnet. Você também aprenderá como implementar essa otimização.
+
+### Divulgação completa {#full-disclosure}
+
+Eu sou funcionário em tempo integral da [Optimism](https://www.optimism.io/), então os exemplos neste artigo serão executados na Optimism. No entanto, a técnica explicada aqui deve funcionar para outras rollups também.
+
+### Terminologia {#terminology}
+
+Quando se discute rollups, o termo 'camada 1' (L1) é usado para a Mainnet, a rede Ethereum de produção. O termo 'camada 2' (L2) é usado para a rollup ou qualquer outro sistema que depende do L1 para segurança, mas faz a maior parte de seu processamento fora da cadeia
+
+## Como podemos reduzir ainda mais o custo das transações L2? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
+
+[Optimistic rollups](/developers/docs/scaling/optimistic-rollups) tem que preservar um registro de cada transação histórica para que qualquer pessoa possa passar por elas e verificar se o estado atual está correto. A forma mais barata de obter dados na Ethereum Mainnet é escrevê-los como calldata. Esta solução foi escolhida por ambos [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) e [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups).
+
+### Custo das transações L2 {#cost-of-l2-transactions}
+
+O custo das transações L2 é composto por dois componentes:
+
+1. Processamento L2, que geralmente é extremamente barato
+2. Armazenamento L1, vinculado aos custos de gas da Mainnet
+
+No momento em que escrevo isso, no Optimism, o custo do gas L2 é de 0,001 [Gwei](/developers/docs/gas/#pre-london). O custo do gas na L1 é de aproximadamente 40 gwei. [Você pode ver os preços atuais aqui](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m).
+
+Um byte de dado da chamada custa, ou 4 gas (se for zero), ou 16 gas (se for qualquer outro valor). Uma das operações mais caras no EVM é escrever no storage. O custo máximo de escrever uma palavra de 32 bytes para armazenamento na L2 é de 22100 gas. Atualmente, isso é 22.1 gwei. Portanto, se nós pudermos salvar um único byte zero de calldata, poderemos gravar cerca de 200 bytes no armazenamento e ainda sairemos ganhando.
+
+### O ABI {#the-abi}
+
+A grande maioria das transações acessa um contrato de uma conta de propriedade externa. A maioria dos contratos é escrita em Solidity e interpreta seu campo de dados de acordo com a [interface binária do aplicativo (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+
+No entanto, a ABI foi projetada para L1, em que um byte de dados da chamada custa aproximadamente o mesmo que quatro operações aritméticas, não para L2, em que um byte de dados da chamada custa mais de mil operações aritméticas. Por exemplo, [aqui está uma transação de transferência ERC-20](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998). Os dados da chamada são divididos da seguinte forma:
+
+| Seção | Comprimento | Bytes | Bytes gastos | Gas gasto | Bytes necessários | Gas necessário |
+| ------------------- | -----------:| -----:| ------------:| ---------:| -----------------:| --------------:|
+| Seletor de função | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| Zeros | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| Endereço de destino | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| Quantidade | 32 | 16-35 | 17 | 64 | 15 | 240 |
+| Total | 68 | | | 576 | | 576 |
+
+Explicação:
+
+- **Seletor de funções**: O contrato tem menos de 256 funções, portanto podemos distingui-las com um único byte. Esses bytes são tipicamente diferentes de zero e, portanto, [custam dezesseis gás](https://eips.ethereum.org/EIPS/eip-2028).
+- **Zeros**: Esses bytes são sempre zero porque um endereço de vinte bytes não requer uma palavra de trinta e dois bytes para usá-lo. Bytes que possuem zero custam quatro gas ([consulte o yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf), Apêndice G, pág. 27, o valor para `G``txdatazero`).
+- **Quantia**: Se nós assumirmos que neste contrato `decimais` são dezoito (o valor normal) e o valor máximo de tokens que nós transferimos será 1018, nós temos uma quantia máxima de 1036. 25615 > 1036, então quinze bytes são suficientes.
+
+Um gasto de 160 gas na L1 é normalmente insignificante. Uma transação custa pelo menos [21.000 gas](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), então um extra de 0,8% não importa. Entretanto, na L2, as coisas são diferentes. Quase o custo inteiro da transação é escrevendo-o na L1. Em adição ao calldata da transação, há 109 bytes de cabeçalho de transação (endereço de destino, assinatura, etc.). O custo total é portanto `109*16+576+160=2480`, e nós estamos desperdiçando cerca de 6,5% disso.
+
+## Reduzindo custos quando você não controla o destino {#reducing-costs-when-you-dont-control-the-destination}
+
+Assumindo que você não tem controle sobre o contrato de destino, você pode ainda usar uma solução similar a [esta](https://github.com/qbzzt/ethereum.org-20220330-shortABI). Vamos passar pelos arquivos relevantes.
+
+### Token.sol {#token-sol}
+
+[Este é o contrato destino](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol). É um contrato ERC-20 padrão, com um recurso adicional. Esta função `faucet` permite qualquer usuário obter algum token para usar. Ele faria o contrato de produção ERC-20 inútil, mas ele facilita a vida quando um ERC-20 existe somente para facilitar o teste.
+
+```solidity
+ /**
+ * @dev Gives the caller 1000 tokens to play with
+ */
+ function faucet() external {
+ _mint(msg.sender, 1000);
+ } // function faucet
+```
+
+[Você pode ver um exemplo deste contrato sendo implantado aqui](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol}
+
+[Este é o contrato que transações devem chamar com calldata menor](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol). Vamos passar por ele linha a linha.
+
+```solidity
+//SPDX-License-Identifier: Unlicense
+pragma solidity ^0.8.0;
+
+
+import { OrisUselessToken } from "./Token.sol";
+```
+
+Nós precisamos da função do token para saber como chamá-lo.
+
+```solidity
+contract CalldataInterpreter {
+
+ OrisUselessToken public immutable token;
+```
+
+O endereço do token para o qual nós somos um proxy.
+
+```solidity
+
+ /**
+ * @dev Specify the token address
+ * @param tokenAddr_ ERC-20 contract address
+ */
+ constructor(
+ address tokenAddr_
+ ) {
+ token = OrisUselessToken(tokenAddr_);
+ } // constructor
+```
+
+O endereço do token é o único parâmetro que nós precisamos especificar.
+
+```solidity
+ function calldataVal(uint startByte, uint length)
+ private pure returns (uint) {
+```
+
+Ler um valor do calldata.
+
+```solidity
+ uint _retVal;
+
+ require(length < 0x21,
+ "calldataVal length limit is 32 bytes");
+
+ require(length + startByte <= msg.data.length,
+ "calldataVal trying to read beyond calldatasize");
+```
+
+Nós iremos carregar uma simples palavra de 32-bytes (256-bit) para a memória e remover os bytes que não são parte do campo que nós queremos. Este algoritmo não funciona para valores maiores que 32 bytes, e claro, não podemos ler depois do fim do calldata. Na L1 pode ser necessário pular estes testes para economizar gas, mas na L2 o gas é extremamente barato, o que permite qualquer checagem de sanidade que possamos pensar.
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+Nós poderiamos ter copiado os dados da chamada ao `fallback()` (veja abaixo), mas é mais fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), a linguagem de montagem da EVM.
+
+Aqui nós usamos [o opcode CALLDATALOAD](https://www.evm.codes/#35) para ler bytes `startByte` até `startByte+31` na pilha. Em geral, a sintaxe de um opcode em Yul é `(,...)`.
+
+```solidity
+
+ _retVal = _retVal >> (256-length*8);
+```
+
+Somente os bytes mais `length` significantes são parte do campo, então nós fazemos [right-shift](https://en.wikipedia.org/wiki/Logical_shift) para se livrar dos outros valores. Isto tem a vantagem adicional de mover o valor para a direita do campo, então é o valor por ele mesmo, ao invés do valor vezes 256alguma coisa.
+
+```solidity
+
+ return _retVal;
+ }
+
+
+ fallback() external {
+```
+
+Quando uma chamada a um contrato Solidity não encontra nenhuma das assinaturas de função, ela chama a função [the `fallback()`](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) (assumindo que exista uma). No caso de `CalldataInterpreter`, _qualquer_ chamada chega aqui porque não há outras funções `external` ou `public`.
+
+```solidity
+ uint _func;
+
+ _func = calldataVal(0, 1);
+```
+
+Leia o primeiro byte do calldata, que nos conta a função. Há duas razões porque uma função não estaria disponível aqui:
+
+1. Funções que são `pure` ou `view` não mudam seu estado e não custam gas (quando chamadas off-chain). Não faz sentido tentar reduzir seus custos de gas.
+2. Funções que confiam em [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties). O valor de `msg.sender` será o endereço do `CalldataInterpreter`, não o chamador.
+
+Infelizmente, [olhando as especificações do ERC-20](https://eips.ethereum.org/EIPS/eip-20), isto deixa apenas uma função, `transfer`. Isto nos deixa com somente duas funções: `transfer` (porque nós podemos chamar `transferFrom`) e `faucet` (porque nós podemos transferir os tokens de volta a quem quer tenha nos chamado).
+
+```solidity
+
+ // Call the state changing methods of token using
+ // information from the calldata
+
+ // faucet
+ if (_func == 1) {
+```
+
+Uma chamada para `faucet()`, que não tem parâmetros.
+
+```solidity
+ token.faucet();
+ token.transfer(msg.sender,
+ token.balanceOf(address(this)));
+ }
+```
+
+Depois que nós chamamos `token.faucet()` nós obtivemos tokens. Entretanto, como o contrato proxy, nós não **precisamos** de tokens. O EOA (externally owned account) ou contrato que nos chamou o faz. Então nós transferimos todos nossos tokens para quem quer tenha nos chamado.
+
+```solidity
+ // transfer (assume we have an allowance for it)
+ if (_func == 2) {
+```
+
+Transferir tokens requer dois parâmetros: o endereço de destino e a quantidade.
+
+```solidity
+ token.transferFrom(
+ msg.sender,
+```
+
+Nós apenas permitimos chamadores transferir tokens que eles possuam
+
+```solidity
+ address(uint160(calldataVal(1, 20))),
+```
+
+O endereço de destino começa no byte 1 (o byte 0 é a função). Como um endereço, ele tem 20-bytes de comprimento.
+
+```solidity
+ calldataVal(21, 2)
+```
+
+Para esse contrato em particular nós assumimos que o número máximo de tokens que qualquer um poderia querer transferir cabe em dois bytes (menos que 65536).
+
+```solidity
+ );
+ }
+```
+
+Em geral, uma transferência pega 35 bytes de calldata:
+
+| Seção | Comprimento | Bytes |
+| ------------------- | -----------:| -----:|
+| Seletor de função | 1 | 0 |
+| Endereço de destino | 32 | 1-32 |
+| Quantidade | 2 | 33-34 |
+
+```solidity
+ } // fallback
+
+} // contract CalldataInterpreter
+```
+
+### test.js {#test-js}
+
+[Este teste unitário JavaScript](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) nos mostra como usar este mecanismo (e como verificar que ele trabalha corretamente). Parto do princípio que você entendeu [chai](https://www.chaijs.com/) e [ethers](https://docs.ethers.io/v5/) e apenas explicar as partes que especificamente se aplicam ao contrato.
+
+```js
+const { expect } = require("chai");
+
+describe("CalldataInterpreter", function () {
+ it("Should let us use tokens", async function () {
+ const Token = await ethers.getContractFactory("OrisUselessToken")
+ const token = await Token.deploy()
+ await token.deployed()
+ console.log("Token addr:", token.address)
+
+ const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+ const cdi = await Cdi.deploy(token.address)
+ await cdi.deployed()
+ console.log("CalldataInterpreter addr:", cdi.address)
+
+ const signer = await ethers.getSigner()
+```
+
+Nós começamos por implantar ambos contratos.
+
+```javascript
+ // Get tokens to play with
+ const faucetTx = {
+```
+
+Nós não podemos usar funções de alto nível que nós normalmente usamos (como `token.faucet()`) para criar transações, porque nós não seguimos o ABI. Ao invés disso, nós temos que construir a transação nós mesmos e enviá-la.
+
+```javascript
+ to: cdi.address,
+ data: "0x01"
+```
+
+Há dois parâmetros que nós precisamos fornecer para a transação:
+
+1. `to`, o endereço de destino. Isto é o contrato interpretador do calldata.
+2. `data`, o calldata a enviar. No caso de uma chamada de faucet, o dado é um único byte, `0x01`.
+
+```javascript
+
+ }
+ await (await signer.sendTransaction(faucetTx)).wait()
+```
+
+Nós chamamos o método `sendTransaction` do [assinante](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) porque nós já especificamos o destino (`faucetTx.to`) e nós precisamos que a transação seja assinada.
+
+```javascript
+// Check the faucet provides the tokens correctly
+expect(await token.balanceOf(signer.address)).to.equal(1000)
+```
+
+Aqui nós verificamos o saldo. Não há necessidade de economizar gas em funções `view`, então nós só as rodamos normalmente.
+
+```javascript
+// Give the CDI an allowance (approvals cannot be proxied)
+const approveTX = await token.approve(cdi.address, 10000)
+await approveTX.wait()
+expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
+```
+
+Dar ao intérprete calldata uma permissão para ser capaz de fazer transferências.
+
+```javascript
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+```
+
+Criar uma transação de transferência. O primeiro byte é "0x02", seguido pelo endereço de destino, e finalmente a quantia (0x0100, que é 256 em decimal).
+
+```javascript
+ await (await signer.sendTransaction(transferTx)).wait()
+
+ // Check that we have 256 tokens less
+ expect (await token.balanceOf(signer.address)).to.equal(1000-256)
+
+ // And that our destination got them
+ expect (await token.balanceOf(destAddr)).to.equal(256)
+ }) // it
+}) // describe
+```
+
+### Exemplo {#example}
+
+Se você quiser ver estes arquivos em ação sem precisar rodá-los, siga estes links:
+
+1. [Implantação de `OrisUselessToken`](https://kovan-optimistic.etherscan.io/tx/1410744) no [endereço `0x950c753c0edbde44a74d3793db738a318e9c8ce8`](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+2. [Implantação de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1410745) no [endereço `0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55`](https://kovan-optimistic.etherscan.io/address/0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55).
+3. [Chamada para `faucet()`](https://kovan-optimistic.etherscan.io/tx/1410746).
+4. [Chamada para `OrisUselessToken.approve()`](https://kovan-optimistic.etherscan.io/tx/1410747). Esta chamada tem de ir diretamente para o contrato do token porque o processamento confia no `msg.sender`.
+5. [Chamada para `transfer()`](https://kovan-optimistic.etherscan.io/tx/1410748).
+
+## Reduzindo o custo quando você controla o contrato destino {#reducing-the-cost-when-you-do-control-the-destination-contract}
+
+Se você realmente tem controle sobre o contrato destino, você pode criar funções que ignoram as checagens do `msg.sender` porque eles acreditam no intérprete do calldata. [Você pode ver um exemplo de como isto funciona aqui, no branch `control-contract`](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract).
+
+Se o contrato estiver respondendo somente para transações externas, nós poderíamos ter apenas um contrato. Entretanto, isso iria quebrar [a capacidade de composição](/developers/docs/smart-contracts/composability/). É bem melhor ter um contrato que responda a chamadas ERC-20 normais, e outro contrato que responda a transações com chamadas curtas de dados.
+
+### Token.sol {#token-sol-2}
+
+Neste exemplo nós podemos modificar `Token.sol`. Isto nos deixa ter um número de funções que somente o proxy pode chamar. Eis aqui as novas partes:
+
+```solidity
+ // The only address allowed to specify the CalldataInterpreter address
+ address owner;
+
+ // The CalldataInterpreter address
+ address proxy = address(0);
+```
+
+O contrato ERC-20 precisa saber a identidade do proxy autorizado. Entretanto, nós não podemos configurar esta variável no construtor, porque nós não sabemos o valor ainda. Este contrato é instanciado primeiro porque o proxy espera o endereço do token no seu construtor.
+
+```solidity
+ /**
+ * @dev Calls the ERC20 constructor.
+ */
+ constructor(
+ ) ERC20("Oris useless token-2", "OUT-2") {
+ owner = msg.sender;
+ }
+```
+
+O endereço do criador (chamado`owner`) é armazenado aqui porque este é o único endereço permitido para configurar o proxy.
+
+```solidity
+ /**
+ * @dev set the address for the proxy (the CalldataInterpreter).
+ * Can only be called once by the owner
+ */
+ function setProxy(address _proxy) external {
+ require(msg.sender == owner, "Can only be called by owner");
+ require(proxy == address(0), "Proxy is already set");
+
+ proxy = _proxy;
+ } // function setProxy
+```
+
+O proxy tem acesso privilegiado, porque ele pode ignorar checagens de segurança. Para garantir que nós podemos acreditar no proxy, nós somente deixamos `owner` chamar esta função, e somente uma vez. Uma vez que `proxy` tenha um valor real (não zero), este valor não pode mudar, então mesmo se o proprietário decide se tornar trapaceiro, ou caso o mnemônico seja revelado a ele, nós ainda estamos seguros.
+
+```solidity
+ /**
+ * @dev Some functions may only be called by the proxy.
+ */
+ modifier onlyProxy {
+```
+
+Isto é uma função [`modifier`](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), ela modifica a maneira que outras funções trabalham.
+
+```solidity
+ require(msg.sender == proxy);
+```
+
+Primeiro, verifique que nós fomos chamados pelo proxy e ninguém mais. Se não, `revert`.
+
+```solidity
+ _;
+ }
+```
+
+Neste caso, rode a função que nós modificamos.
+
+```solidity
+ /* Functions that allow the proxy to actually proxy for accounts */
+
+ function transferProxy(address from, address to, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _transfer(from, to, amount);
+ return true;
+ }
+
+ function approveProxy(address from, address spender, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _approve(from, spender, amount);
+ return true;
+ }
+
+ function transferFromProxy(
+ address spender,
+ address from,
+ address to,
+ uint256 amount
+ ) public virtual onlyProxy() returns (bool)
+ {
+ _spendAllowance(from, spender, amount);
+ _transfer(from, to, amount);
+ return true;
+ }
+```
+
+Há três operações que normalmente requerem que a mensagem venha direto da entidade transferindo tokens ou aprovando uma permissão. Aqui nós temos uma versão de proxy destas operações que:
+
+1. É modificada pelo `onlyProxy()`, de modo que ninguém mais tem permissão de controlá-los.
+2. Pega o endereço que seria normalmente `msg.sender` como um parâmetro extra.
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol-2}
+
+O interpretador calldata é praticamente idêntico ao acima, exceto que as funções com proxy recebem um parâmetro `msg.sender` e não há necessidade de permissão `transfer`.
+
+```solidity
+ // transfer (no need for allowance)
+ if (_func == 2) {
+ token.transferProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // approve
+ if (_func == 3) {
+ token.approveProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // transferFrom
+ if (_func == 4) {
+ token.transferFromProxy(
+ msg.sender,
+ address(uint160(calldataVal( 1, 20))),
+ address(uint160(calldataVal(21, 20))),
+ calldataVal(41, 2)
+ );
+ }
+```
+
+### Test.js {#test-js-2}
+
+Há pequenas mudanças entre o código de teste anterior e este.
+
+```js
+const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+const cdi = await Cdi.deploy(token.address)
+await cdi.deployed()
+await token.setProxy(cdi.address)
+```
+
+Nós precisamos contar ao contrato ERC-20 qual proxy acreditar
+
+```js
+console.log("CalldataInterpreter addr:", cdi.address)
+
+// Need two signers to verify allowances
+const signers = await ethers.getSigners()
+const signer = signers[0]
+const poorSigner = signers[1]
+```
+
+Para checar `approve()` e `transferFrom()` nós precisamos de um segundo assinante. Nós o chamamos de `poorSigner` porque ele não pega nenhum de nossos tokens (ele precisa ter ETH, claro).
+
+```js
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+await (await signer.sendTransaction(transferTx)).wait()
+```
+
+Como o contrato ERC-20 confia no proxy (`cdi`), nós não precisamos de uma permissão para confiar em transferências.
+
+```js
+// approval and transferFrom
+const approveTx = {
+ to: cdi.address,
+ data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
+}
+await (await signer.sendTransaction(approveTx)).wait()
+
+const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206"
+
+const transferFromTx = {
+ to: cdi.address,
+ data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF",
+}
+await (await poorSigner.sendTransaction(transferFromTx)).wait()
+
+// Check the approve / transferFrom combo was done correctly
+expect(await token.balanceOf(destAddr2)).to.equal(255)
+```
+
+Teste as duas novas funções. Note que `transferFromTx` requer dois parâmetros de endereço: o que deu a permissão e o recebedor.
+
+### Exemplo {#example-2}
+
+Se você quiser ver estes arquivos em ação sem precisar rodá-los, siga estes links:
+
+1. [Implantação de `OrisUselessToken-2`](https://kovan-optimistic.etherscan.io/tx/1475397) no endereço [`0xb47c1f550d8af70b339970c673bbdb2594011696`](https://kovan-optimistic.etherscan.io/address/0xb47c1f550d8af70b339970c673bbdb2594011696).
+2. [Implantação de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1475400) no endereço [`0x0dccfd03e3aaba2f8c4ea4008487fd0380815892`](https://kovan-optimistic.etherscan.io/address/0x0dccfd03e3aaba2f8c4ea4008487fd0380815892).
+3. [Chamada para `transfer()`](https://kovan-optimistic.etherscan.io/tx/1475402).
+4. [Chamada para `faucet()`](https://kovan-optimistic.etherscan.io/tx/1475409).
+5. [Chamada para `transferProxy()`](https://kovan-optimistic.etherscan.io/tx/1475416).
+6. [Chamada para `approveProxy()`](https://kovan-optimistic.etherscan.io/tx/1475419).
+7. [Chamada para `transferFromFProxy()`](https://kovan-optimistic.etherscan.io/tx/1475421). Note que esta chamada vem de um endereço diferente dos outros, `poorSigner` ao invés de `signer`.
+
+## Conclusão {#conclusion}
+
+Ambos [Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) e [Arbitrum](https://developer.offchainlabs.com/docs/special_features) estão procurando por maneiras de reduzir o tamanho do calldata escrito no L1 e portanto o custo das transações. Entretanto, como provedores de infraestrutura procurando por soluções genéricas, nossas habilidades são limitadas. Como desenvolvedor dapp, você tem conhecimento específico de aplicações, o que te leva a otimizar seu calldata muito melhor do que nós poderíamos com uma solução genérica. Esperamos que este artigo ajude você a encontrar a solução ideal para as suas necessidades.
diff --git a/public/content/translations/pt-br/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/pt-br/developers/tutorials/smart-contract-security-guidelines/index.md
new file mode 100644
index 00000000000..6053257ce85
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -0,0 +1,94 @@
+---
+title: Diretrizes de segurança do contrato inteligente
+description: Uma lista de verificações de diretrizes de segurança a considerar ao construir seu dapp
+author: "Trailofbits"
+tags:
+ - "solidity"
+ - "contratos inteligentes"
+ - "segurança"
+skill: intermediate
+lang: pt-br
+published: 2020-09-06
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md
+---
+
+Siga estas recomendações de alto nível para construir contratos inteligentes mais seguros.
+
+## Padrões de design {#design-guidelines}
+
+O design do contrato deve ser discutido antecipadamente, antes de escrever qualquer linha de código.
+
+### Documentação e especificações {#documentation-and-specifications}
+
+A documentação pode ser escrita em diferentes níveis, e deve ser atualizada durante a implementação dos contratos:
+
+- **Uma descrição simples em inglês do sistema**, descrevendo o que os contratos fazem e qualquer suposição no código.
+- **Esquemas e diagramas arquitetônicos**, incluindo as interações de contratos e a máquina de estado do sistema. [Impressoras do Slither](https://github.com/crytic/slither/wiki/Printer-documentation) podem ajudar a gerar esses esquemas.
+- **Documentação de código Thorough**, o [formato Natspec](https://solidity.readthedocs.io/en/develop/natspec-format.html) pode ser usado para Solidity.
+
+### Computação on-chain vs off-chain {#on-chain-vs-off-chain-computation}
+
+- **Mantenha o máximo de código que puder off-chain (fora da cadeia).** Mantenha a menor camada on-chain (dentro da cadeia). Pré-processe dados com código off-chain de tal forma que a verificação on-chain torne-se simples. Você precisa de uma lista ordenada? Ordene a lista off-chain, então apenas verifique a ordem on-chain.
+
+### Capacidade de Atualização {#upgradeability}
+
+Nós discutimos as diferentes soluções de atualização em [nosso blog](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/). Faça ou não uma escolha deliberada para apoiar a capacidade de atualização antes de escrever qualquer código. A decisão irá influenciar como você estrutura nosso código. Em geral, recomendamos:
+
+- **Favorecer a [migração do contrato](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) sobre a atualização.** O sistema de migração tem muitas das mesmas vantagens do que ser atualizável, sem suas desvantagens.
+- **Usando o padrão de separação de dados sobre o proxy delegatecallproxy.** Se o seu projeto tem uma separação de abstração clara, a atualizabilidade usando a separação de dados exigirá apenas alguns ajustes. O delegatecallproxy exige conhecimento de EVM e é altamente susceptível de erros.
+- **Documentar o procedimento de migração/atualização antes da implantação.** Se você tiver que reagir sob o estresse sem quaisquer diretrizes, você cometerá erros. Escreva o procedimento a seguir com antecedência. Ele deve incluir:
+ - As exigências que iniciam os novos contratos
+ - Onde são armazenadas as chaves e como acessá-las
+ - Como verificar a implantação de arquivos! Desenvolva e teste um script de pós-implantação.
+
+## Orientações de implementação {#implementation-guidelines}
+
+**Esforço pela simplicidade.** Sempre use a solução mais simples que se encaixa em seu propósito. Qualquer membro da sua equipe deve ser capaz de entender a sua solução.
+
+### Composição de funções {#function-composition}
+
+A arquitetura da sua base de código deve facilitar a revisão do seu código. Evite escolhas arquitetônicas que diminuam a capacidade de raciocínio sobre sua exatidão.
+
+- **Divida a lógica do seu sistema**, seja por meio de vários contratos ou agrupando funções semelhantes juntas (por exemplo, autenticação, aritmética, ...).
+- **Escreva funções pequenas, com um propósito claro.** Isso facilitará uma revisão mais tranquila e permitirá o teste de componentes individuais.
+
+### Herança {#inheritance}
+
+- **Mantenha a herança gerenciável.** A herança deve ser usada para dividir a lógica, no entanto, seu projeto deve visar minimizar a profundidade e a largura da árvore de herança.
+- **Use a [impressora de herança de Slither](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) para verificar a hierarquia dos contratos.** A impressora de herança irá ajudá-lo a rever o tamanho da hierarquia.
+
+### Eventos {#events}
+
+- **Registre todas as operações cruciais.** Os eventos ajudarão a depurar o contrato durante o desenvolvimento e a monitorá-lo após a implantação.
+
+### Evite armadilhas conhecidas {#avoid-known-pitfalls}
+
+- **Esteja ciente dos problemas de segurança mais comuns.** Há muitos recursos on-line para aprender sobre problemas comuns, como [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture o Ether](https://capturetheether.com/), ou [ contratos não tão inteligentes](https://github.com/crytic/not-so-smart-contracts/).
+- **Esteja ciente das seções de avisos na [documentação Solidity](https://solidity.readthedocs.io/en/latest/)** As seções de avisos irão informá-lo sobre comportamentos não óbvios da linguagem.
+
+### Dependências {#dependencies}
+
+- **Use bibliotecas testadas.** A importação de código de bibliotecas testadas reduzirá a probabilidade de você escrever código com erros. Se você deseja escrever um contrato ERC20, use [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
+- **Use um gerenciador de dependências; evite "copiar-e-colar" códigos.** Se você estiver contando com uma fonte externa, então você deve mantê-lo atualizado com a fonte original.
+
+### Teste e Validação {#testing-and-verification}
+
+- **Escreva testes unitários completos.** Um conjunto extenso de testes é crucial para construir softwares de alta qualidade.
+- **Escreva propriedades e verificações personalizadas com [Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) e [Manticore](https://github.com/trailofbits/manticore).** Ferramentas automatizadas ajudarão a garantir que o seu contrato é seguro. Revise o resto deste guia para aprender a escrever propriedades e verificações eficientes.
+- **Use o [crytic.io](https://crytic.io/).** O Critic integra-se ao Github, fornece acesso a detectores privados do Slither e executa verificações de propriedade personalizadas pelo Echidna.
+
+### Solidity {#solidity}
+
+- **Favoreça a Solidity 0.5 em vez de 0.4 e 0.6.** Em nossa opinião, a Solidity 0.5 é mais seguro e tem melhores práticas incorporadas que a 0.4. A Solidity 0.6 provou ser demasiado instável para produção e precisa de tempo para amadurecer.
+- **Use um lançamento estável para compilar; use a versão mais recente para verificar se há avisos.** Verifique se o seu código não relatou problemas com a versão mais recente do compilador. No entanto, a Solidity tem um ciclo de lançamento rápido e tem um histórico de erros do compilador, então não recomendamos a versão mais recente para implantar (veja a [recomendação de versão solc do Slither](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33)).
+- **Não use montagem embutida.** A montagem requer experiência em EVM. Não escreva o código EVM se você não tiver _dominado_ o Yellow Paper da Ethereum.
+
+## Orientações de implantação {#deployment-guidelines}
+
+Uma vez que o contrato tenha sido desenvolvido e implantado:
+
+- **Monitore seus contratos.** Observe os acessos e esteja pronto para reagir em caso de comprometimento do contrato ou da carteira.
+- **Adicione suas informações de contato em [contatos de segurança da blockchain](https://github.com/crytic/blockchain-security-contacts).** Essa lista ajuda a terceiros a entrar em contato com você caso uma falha de segurança seja descoberta.
+- **Proteja as carteiras de usuários privilegiados.** Siga nossas [melhores práticas](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) se você armazenar chaves em carteiras físicas (hardware).
+- **Tenha uma resposta ao plano de incidentes.** Considere que seus contratos inteligentes possam ser comprometidos. Mesmo que seus contratos estejam livres de erros, um invasor pode assumir o controle das chaves do proprietário do contrato.
diff --git a/public/content/translations/pt-br/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/public/content/translations/pt-br/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
new file mode 100644
index 00000000000..df50e1e3c93
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
@@ -0,0 +1,194 @@
+---
+title: "Configuração contínua de integração Solidity e Truffle"
+description: Como configurar o Travis ou Circle CI para testes deTruffle, juntamente com plugins úteis
+author: Markus Waas
+lang: pt-br
+tags:
+ - "solidez"
+ - "contratos inteligentes"
+ - "testando"
+ - "truffle"
+ - "ganache"
+skill: intermediate
+published: 2020-06-05
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/continuous-integration
+---
+
+A integração contínua (CI) com o Truffle é excelente para desenvolvimento assim que você tiver um conjunto básico de testes implementados. Isso permite que você execute testes muito longos, garantir que todos os testes passem antes de mesclar um [pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) e para manter o controle de várias estatísticas usando ferramentas adicionais.
+
+Usaremos o [Truffle Metacoin Box](https://www.trufflesuite.com/boxes/metacoin) para configurar nossa integração contínua. Você pode escolher o Travis CI ou o Circle CI.
+
+## Configurando Travis CI {#setting-up-travis-ci}
+
+Adicionando [Travis CI](https://travis-ci.org/) é reta. Você só precisará adicionar um arquivo de configuração `.travis.yml` na pasta raiz do projeto:
+
+```yml
+language: node_js
+node_js:
+ - 10
+
+cache: npm
+
+before_script:
+ - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
+
+script:
+ - npm test
+```
+
+Nós estamos mantendo tudo simples por enquanto e estamos executando apenas o script de teste que executa os testes de unidade Truffle. Mas temos um problema, não haverá uma blockchain disponível na máquina Travis CI. Uma correção simples para isso é `npm install ganache-cli` e simplesmente executá-lo antes do teste. Você pode fazer isso adicionando um bash script com a linha npx `ganache-cli > /dev/null` e antes da chamada `npx truffle`. O [script bash completo de exemplo](https://github.com/gorgos/Truffle-CI-Example/blob/master/scripts/run_tests.sh).
+
+## Configurando o Circle CI {#setting-up-circle-ci}
+
+[CircleCi](https://circleci.com/) requer um arquivo de configuração mais longo. O comando adicional [`npm ci`](https://docs.npmjs.com/cli/ci.html) é feito automaticamente no Travis. Ele instala as dependências mais rápido e mais seguro do que o `npm install` faz. Nós usamos novamente o mesmo script da versão de Travis para rodar ganache-cli antes dos testes.
+
+```yml
+version: 2
+
+aliases:
+ - &defaults
+ docker:
+ - image: circleci/node:10
+
+ - &cache_key_node_modules
+ key: v1-node_modules-{{ checksum "package-lock.json" }}
+
+jobs:
+ dependencies:
+ <<: *defaults
+ steps:
+ - checkout
+ - restore_cache:
+ <<: *cache_key_node_modules
+ - run:
+ name: Install npm dependencies
+ command: |
+ if [ ! -d node_modules ]; then
+ npm ci
+ fi
+ - persist_to_workspace:
+ root: .
+ paths:
+ - node_modules
+ - build
+ - save_cache:
+ paths:
+ - node_modules
+ <<: *cache_key_node_modules
+
+ test:
+ <<: *defaults
+ steps:
+ - checkout
+ - attach_workspace:
+ at: .
+ - run:
+ name: Unit tests
+ command: npm test
+
+workflows:
+ version: 2
+ everything:
+ jobs:
+ - dependencies
+ - test:
+ requires:
+ - dependencies
+```
+
+## Adicionando o plugin eth-gas-reportter {#adding-the-eth-gas-reporter-plugin}
+
+O plugin eth-gas-reportter é bastante útil para manter o controle dos custos de gas de suas funções de contrato inteligente. Tê-lo em seu CI será mais útil para mostrar diffs ao adicionar pull requests.
+
+### Passo 1: Instale o plugin eth-gas-reportter e as verificações de código {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks}
+
+```bash
+npm install --save-dev eth-gas-reporter
+npm install --save-dev @codechecks/client
+```
+
+### Etapa 2: Adicione o plugin nas configurações do mocha dentro do arquivo truffle-config.js {#step-2-add-the-plugin-to-the-mocha-settings-inside-your-truffle-configjs}
+
+[Ver opções](https://github.com/cgewecke/eth-gas-reporter#options)
+
+```js
+module.exports = {
+ networks: { ... },
+ mocha: {
+ reporter: 'eth-gas-reporter',
+ reporterOptions: {
+ excludeContracts: ['Migrations']
+ }
+ }
+};
+```
+
+### Passo 3: Adicione um codechecks.yml ao diretório raiz do seu projeto {#step-3-add-a-codechecksyml-to-your-projects-root-directory}
+
+```yml
+checks:
+ - name: eth-gas-reporter/codechecks
+```
+
+### Passo 4: Execute verificações de código após o comando de teste {#step-4-run-codechecks-after-the-test-command}
+
+```bash
+- npm test
+- npx codechecks
+```
+
+### Passo 5: Crie uma conta no Codechecks {#step-5-create-a-codechecks-account}
+
+- Crie uma conta com [Codechecks](http://codechecks.io/).
+- Adicionar o repositório do Github a ele.
+- Copie o segredo e adicione o `CC_SECRET=SEGRET COPIADO` ao seu CI (veja aqui para [Travis](https://docs.travis-ci.com/user/environment-variables/),, aqui para [CircleCi](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project)).
+- Agora vá em frente e crie um pull request.
+
+É isso. Agora você vai encontrar um bom relatório sobre mudanças nos custos de gas do seu pull request.
+
+![Exemplos de relatórios de gas](./gas-reports.png)
+
+## Adicionando o plugin Solidity-coverage {#adding-the-solidity-coverage-plugin}
+
+Com o plugin Solidity-coverage, você pode verificar a quantidade de caminhos de seu código cobertos por seus testes. Adicionar isto à sua criação de CI é muito conveniente quando for criado.
+
+### Passo 1: Crie um projeto metacoin e instale ferramentas de cobertura {#step-1-create-a-metacoin-project-and-install-coverage-tools}
+
+```bash
+npm install --save-dev truffle coveralls solidity-coverage
+```
+
+### Etapa 2: Adicionar solidity-coverage para o array de plugins em truffle-config.js {#step-2-add-solidity-coverage-to-the-plugins-array-in-truffle-configjs}
+
+```js
+module.exports = {
+ networks: {...},
+ plugins: ["solidity-coverage"]
+}
+```
+
+### Passo 3: Adicione os comandos de cobertura ao arquivo .travis.yml ou Circle CI config.yml {#step-3-add-the-coverage-commands-to-the-travisyml-or-circle-ci-configyml}
+
+```bash
+- npx truffle run coverage
+- cat coverage/lcov.info | npx coveralls
+```
+
+A cobertura da Solidity começa seu próprio ganache-cli, então não precisamos nos preocupar com isso. Não substitua o comando de teste regular, porém, a cobertura de ganache-cli funciona de forma diferente e, portanto, não é substituto para a execução de testes de unidade regulares.
+
+### Passo 4: Adicionar repositório às coberturas {#step-4-add-repository-to-coveralls}
+
+- Crie uma conta com [Codechecks](https://coveralls.io/).
+- Adicionar o repositório do Github a ele.
+- Agora vá em frente e crie um pull request.
+
+![Exemplo de cobertura](./coverall.png)
+
+## Mais idéias {#further-ideas}
+
+- [MitX](https://mythx.io/): Com MythX você pode analisar automaticamente a segurança de seu contrato inteligente. Então faz muito sentido [adicionar isto ao seu CI](https://blog.mythx.io/howto/mythx-and-continuous-integration-part-1-circleci/).
+- [Linting](https://wikipedia.org/wiki/Lint_%28software%29): Um bom código pode ser aplicado até certo ponto com ferramentas de linting. [Eslint](https://eslint.org/) funciona muito bem para JavaScript, é [ fácil de configurar](https://eslint.org/docs/user-guide/getting-started), enquanto [Solhint](https://protofire.github.io/solhint/) pode ser usado para Solidity.
+- Testes longos: Às vezes, você pode querer adicionar testes extremos, por exemplo, testar contratos com centenas de usuários. Isto leva muito tempo. Em vez de executar aqueles em cada execução de teste, adicione-os ao CI.
+
+Aí está o que tem. A integração contínua é uma estratégia muito útil para os seus desenvolvimentos. Você pode conferir um exemplo completo em [Truffle-CI-Example](https://github.com/gorgos/Truffle-CI-Example). Basta remover o Circle-CI ou Travis, um é suficiente!
diff --git a/public/content/translations/pt-br/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/public/content/translations/pt-br/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
new file mode 100644
index 00000000000..8e3afcb9a68
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
@@ -0,0 +1,1138 @@
+---
+title: Testando tokens ERC-20 com Waffle
+description: Aprenda como testar contratos inteligentes do Solidity e usar "matchers" de contratos inteligentes com o Waffle.
+author: Vladislav Starostenko
+tags:
+ - "waffle"
+ - "contratos inteligentes"
+ - "solidity"
+ - "testando"
+ - "erc-20"
+skill: intermediate
+lang: pt-br
+published: 2020-10-16
+---
+
+Neste tutorial, você aprenderá:
+
+- Crie testes para contratos inteligentes com Waffle
+- Use alguns matchers populares para testar contratos inteligentes com Waffle
+
+Pressupostos:
+
+- você pode conseguir em um terminal,
+- você pode criar um novo projeto de `JavaScript`,
+- você escreveu algumas linhas de código `Solidity`,
+- você escreveu alguns testes em `JavaScript`,
+- você usou `yarn` or `npm`, o instalador de pacotes de JavaScript.
+
+Novamente. Caso algum desse tópicos não se apliquem, ou você não planeja reproduzir o código desse artigo, você provavelmente vai conseguir acompanhar o que vem a seguir.
+
+## Algumas palavras sobre Waffle {#a-few-words-about-waffle}
+
+[Waffle](https://getwaffle.io) é a biblioteca mais avançada para escrever e testar contratos inteligentes.
+
+Funciona com a [API JavaScript](/developers/docs/apis/javascript/) ethers-js.
+
+Você pode ler mais detalhes na [documentação Waffle](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)!
+
+## O tutorial rápido {#the-quick-tutorial}
+
+Primeiro as coisas primeiras, crie um novo projeto de `JavaScript` ou `TypeScript` (Vou usar `TS`, mas se você usa `JS` não é um problema) :
+
+Alguma coisa como esta :
+
+
+package.json
+
+ {
+ "name": "tutorial",
+ "version": "1.0.0",
+ "main": "index.js",
+ "license": "MIT",
+ "scripts": {
+ "test": "export NODE_ENV=test && mocha",
+ "lint": "eslint '{src,test}/**/*.ts'",
+ "lint:fix": "eslint --fix '{src,test}/**/*.ts'",
+ "build": "waffle"
+ },
+ "devDependencies": {
+ "@types/mocha": "^5.2.7",
+ "@typescript-eslint/eslint-plugin": "^2.30.0",
+ "@typescript-eslint/parser": "^2.30.0",
+ "eslint": "^6.8.0",
+ "eslint-plugin-import": "^2.20.2",
+ "ethers": "^5.0.17",
+ "mocha": "^7.1.2",
+ "ts-node": "^8.9.1",
+ "typescript": "^3.8.3"
+ }
+ }
+
+
+
+
+tsconfig.json
+
+ {
+ "compilerOptions": {
+ "declaration": true,
+ "esModuleInterop": true,
+ "lib": [
+ "ES2018"
+ ],
+ "module": "CommonJS",
+ "moduleResolution": "node",
+ "outDir": "dist",
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "target": "ES2018"
+ }
+ }
+
+
+
+
+.gitignore
+
+ node_modules
+ build
+
+
+
+
+.eslintrc.js
+
+ module.exports = {
+ "env": {
+ "es6": true
+ },
+ "extends": [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:import/typescript"
+ ],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "project": "./tsconfig.json",
+ "sourceType": "module"
+ },
+ "rules": {
+ "@typescript-eslint/camelcase": "off",
+ "@typescript-eslint/explicit-function-return-type": "off",
+ "@typescript-eslint/explicit-member-accessibility": [
+ "error",
+ {
+ "accessibility": "no-public",
+ "overrides": {
+ "parameterProperties": "off"
+ }
+ }
+ ],
+ "@typescript-eslint/indent": [
+ "error",
+ 2,
+ {
+ "ArrayExpression": 1,
+ "CallExpression": {
+ "arguments": 1
+ },
+ "FunctionDeclaration": {
+ "body": 1,
+ "parameters": 1
+ },
+ "FunctionExpression": {
+ "body": 1,
+ "parameters": 1
+ },
+ "ImportDeclaration": 1,
+ "MemberExpression": 1,
+ "ObjectExpression": 1,
+ "SwitchCase": 1,
+ "VariableDeclarator": 1,
+ "flatTernaryExpressions": false,
+ "ignoreComments": false,
+ "outerIIFEBody": 1
+ }
+ ],
+ "@typescript-eslint/interface-name-prefix": "off",
+ "@typescript-eslint/member-delimiter-style": [
+ "error",
+ {
+ "multiline": {
+ "delimiter": "semi",
+ "requireLast": true
+ },
+ "singleline": {
+ "delimiter": "semi",
+ "requireLast": false
+ }
+ }
+ ],
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-parameter-properties": "off",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ "args": "none",
+ "ignoreRestSiblings": true,
+ "vars": "all"
+ }
+ ],
+ "@typescript-eslint/no-use-before-define": "off",
+ "@typescript-eslint/no-useless-constructor": "error",
+ "@typescript-eslint/no-var-requires": "warn",
+ "accessor-pairs": "error",
+ "array-bracket-spacing": [
+ "error",
+ "never"
+ ],
+ "arrow-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "block-spacing": [
+ "error",
+ "always"
+ ],
+ "brace-style": [
+ "error",
+ "1tbs",
+ {
+ "allowSingleLine": true
+ }
+ ],
+ "camelcase": "off",
+ "comma-dangle": [
+ "error",
+ {
+ "arrays": "never",
+ "exports": "never",
+ "functions": "never",
+ "imports": "never",
+ "objects": "never"
+ }
+ ],
+ "comma-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "comma-style": [
+ "error",
+ "last"
+ ],
+ "computed-property-spacing": [
+ "error",
+ "never"
+ ],
+ "constructor-super": "error",
+ "curly": [
+ "error",
+ "multi-line"
+ ],
+ "dot-location": [
+ "error",
+ "property"
+ ],
+ "eol-last": "error",
+ "eqeqeq": [
+ "error",
+ "always",
+ {
+ "null": "ignore"
+ }
+ ],
+ "func-call-spacing": [
+ "error",
+ "never"
+ ],
+ "generator-star-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "handle-callback-err": [
+ "error",
+ "^(err|error)$"
+ ],
+ "import/default": "off",
+ "import/named": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": false
+ }
+ ],
+ "import/no-unresolved": "off",
+ "indent": "off",
+ "key-spacing": [
+ "error",
+ {
+ "afterColon": true,
+ "beforeColon": false
+ }
+ ],
+ "keyword-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "lines-between-class-members": [
+ "error",
+ "always",
+ {
+ "exceptAfterSingleLine": true
+ }
+ ],
+ "max-len": [
+ "error",
+ {
+ "code": 120
+ }
+ ],
+ "new-cap": [
+ "error",
+ {
+ "capIsNew": false,
+ "newIsCap": true
+ }
+ ],
+ "new-parens": "error",
+ "no-array-constructor": "error",
+ "no-async-promise-executor": "error",
+ "no-caller": "error",
+ "no-class-assign": "error",
+ "no-compare-neg-zero": "error",
+ "no-cond-assign": "error",
+ "no-const-assign": "error",
+ "no-constant-condition": [
+ "error",
+ {
+ "checkLoops": false
+ }
+ ],
+ "no-control-regex": "error",
+ "no-debugger": "error",
+ "no-delete-var": "error",
+ "no-dupe-args": "error",
+ "no-dupe-keys": "error",
+ "no-duplicate-case": "error",
+ "no-empty-character-class": "error",
+ "no-empty-pattern": "error",
+ "no-eval": "error",
+ "no-ex-assign": "error",
+ "no-extend-native": "error",
+ "no-extra-bind": "error",
+ "no-extra-boolean-cast": "error",
+ "no-extra-parens": [
+ "error",
+ "functions"
+ ],
+ "no-fallthrough": "error",
+ "no-floating-decimal": "error",
+ "no-func-assign": "error",
+ "no-global-assign": "error",
+ "no-implied-eval": "error",
+ "no-inner-declarations": [
+ "error",
+ "functions"
+ ],
+ "no-invalid-regexp": "error",
+ "no-irregular-whitespace": "error",
+ "no-iterator": "error",
+ "no-label-var": "error",
+ "no-labels": [
+ "error",
+ {
+ "allowLoop": false,
+ "allowSwitch": false
+ }
+ ],
+ "no-lone-blocks": "error",
+ "no-misleading-character-class": "error",
+ "no-mixed-operators": [
+ "error",
+ {
+ "allowSamePrecedence": true,
+ "groups": [
+ [
+ "==",
+ "!=",
+ "===",
+ "!==",
+ ">",
+ ">=",
+ "<",
+ "<="
+ ],
+ [
+ "&&",
+ "||"
+ ],
+ [
+ "in",
+ "instanceof"
+ ]
+ ]
+ }
+ ],
+ "no-mixed-spaces-and-tabs": "error",
+ "no-multi-spaces": "error",
+ "no-multi-str": "error",
+ "no-multiple-empty-lines": [
+ "error",
+ {
+ "max": 1,
+ "maxEOF": 0
+ }
+ ],
+ "no-negated-in-lhs": "error",
+ "no-new": "error",
+ "no-new-func": "error",
+ "no-new-object": "error",
+ "no-new-require": "error",
+ "no-new-symbol": "error",
+ "no-new-wrappers": "error",
+ "no-obj-calls": "error",
+ "no-octal": "error",
+ "no-octal-escape": "error",
+ "no-path-concat": "error",
+ "no-proto": "error",
+ "no-prototype-builtins": "error",
+ "no-redeclare": [
+ "error",
+ {
+ "builtinGlobals": false
+ }
+ ],
+ "no-regex-spaces": "error",
+ "no-return-assign": [
+ "error",
+ "except-parens"
+ ],
+ "no-return-await": "error",
+ "no-self-assign": "error",
+ "no-self-compare": "error",
+ "no-sequences": "error",
+ "no-shadow-restricted-names": "error",
+ "no-sparse-arrays": "error",
+ "no-tabs": "error",
+ "no-template-curly-in-string": "error",
+ "no-this-before-super": "error",
+ "no-throw-literal": "error",
+ "no-trailing-spaces": "error",
+ "no-unexpected-multiline": "error",
+ "no-unmodified-loop-condition": "error",
+ "no-unneeded-ternary": [
+ "error",
+ {
+ "defaultAssignment": false
+ }
+ ],
+ "no-unreachable": "error",
+ "no-unsafe-finally": "error",
+ "no-unsafe-negation": "error",
+ "no-use-before-define": [
+ "error",
+ {
+ "classes": false,
+ "functions": false,
+ "variables": false
+ }
+ ],
+ "no-useless-call": "error",
+ "no-useless-catch": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-escape": "error",
+ "no-useless-rename": "error",
+ "no-useless-return": "error",
+ "no-whitespace-before-property": "error",
+ "no-with": "error",
+ "object-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "object-property-newline": [
+ "error",
+ {
+ "allowMultiplePropertiesPerLine": true
+ }
+ ],
+ "one-var": [
+ "error",
+ {
+ "initialized": "never"
+ }
+ ],
+ "operator-linebreak": [
+ "error",
+ "after",
+ {
+ "overrides": {
+ ":": "before",
+ "?": "before"
+ }
+ }
+ ],
+ "padded-blocks": [
+ "error",
+ {
+ "blocks": "never",
+ "classes": "never",
+ "switches": "never"
+ }
+ ],
+ "prefer-const": [
+ "error",
+ {
+ "destructuring": "all"
+ }
+ ],
+ "prefer-promise-reject-errors": "error",
+ "quote-props": [
+ "error",
+ "as-needed"
+ ],
+ "quotes": [
+ "error",
+ "single"
+ ],
+ "rest-spread-spacing": [
+ "error",
+ "never"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "semi-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "space-before-blocks": [
+ "error",
+ "always"
+ ],
+ "space-before-function-paren": [
+ "error",
+ {
+ "anonymous": "always",
+ "named": "never",
+ "asyncArrow": "always"
+ }
+ ],
+ "space-in-parens": [
+ "error",
+ "never"
+ ],
+ "space-infix-ops": "error",
+ "space-unary-ops": [
+ "error",
+ {
+ "nonwords": false,
+ "words": true
+ }
+ ],
+ "spaced-comment": [
+ "error",
+ "always",
+ {
+ "block": {
+ "balanced": true,
+ "exceptions": [
+ "*"
+ ],
+ "markers": [
+ "*package",
+ "!",
+ ",",
+ ":",
+ "::",
+ "flow-include"
+ ]
+ },
+ "line": {
+ "markers": [
+ "*package",
+ "!",
+ "/",
+ ",",
+ "="
+ ]
+ }
+ }
+ ],
+ "symbol-description": "error",
+ "template-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "template-tag-spacing": [
+ "error",
+ "never"
+ ],
+ "unicode-bom": [
+ "error",
+ "never"
+ ],
+ "use-isnan": "error",
+ "valid-typeof": [
+ "error",
+ {
+ "requireStringLiterals": true
+ }
+ ],
+ "wrap-iife": [
+ "error",
+ "any",
+ {
+ "functionPrototypeMethods": true
+ }
+ ],
+ "yield-star-spacing": [
+ "error",
+ "both"
+ ],
+ "yoda": [
+ "error",
+ "never"
+ ]
+ },
+ "overrides": [
+ {
+ "files": [
+ "test/**/*.ts"
+ ],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-non-null-assertion": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "no-unused-expressions": "off",
+ "prefer-promise-reject-errors": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": true
+ }
+ ]
+ }
+ }
+ ]
+ }
+
+
+
+## Passo #1: Instale o waffle no seu projeto [Link para o documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) {#step-1-install-waffle-in-your-project}
+
+To get started, install `ethereum-waffle`. Neste tutorial, eu usarei `yarn`, então para instalar `ethereum-waffle` executar:
+
+```bash
+ yarn add --dev ethereum-waffle
+```
+
+## Passo #2: Escreva um contrato inteligente [Link para documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract) {#step-2-write-a-smart-contract}
+
+Neste tutorial, usarei o [ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/ded2b0a55c9c13731963ab7b85a70c8e73504bab/contracts/token/ERC20/ERC20.sol) token de [OpenZeppelin](https://openzeppelin.com).
+
+Então, adicione `OpenZeppelin` instalando-o com `yarn`:
+
+```bash
+ yarn add @openzeppelin/contracts -D
+```
+
+Em seguida, crie o contrato `BasicToken.sol` no diretório `src`:
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+// Example class - a mock class using delivering from ERC20
+contract BasicToken is ERC20 {
+ constructor(uint256 initialBalance) ERC20("Basic", "BSC") public {
+ _mint(msg.sender, initialBalance);
+ }
+}
+
+```
+
+## Passo #3: Escreva um contrato inteligente [Link para documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) {#step-3-compile-your-smart-contract}
+
+Para compilar seu contrato inteligente, adicione a seguinte entrada no `package.json` do seu projeto:
+
+```json
+{
+ "scripts": {
+ "test": "jest"
+ }
+}
+```
+
+Além disso, adicione o arquivo `waffle.json` na pasta principal do seu projeto.
+
+Um exemplo da configuração do `waffle.json`:
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./contracts",
+ "outputDirectory": "./build"
+}
+```
+
+Leia mais sobre a configuração do Waffle [aqui](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration).
+
+Em seguida, execute `yarn build` para compilar seu contrato inteligente.
+
+Você deve ver que Waffle compilou seu contrato e colocou a saída JSON resultante dentro da pasta `compilação`.
+
+
+BasicToken.json
+
+ {
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "initialBalance",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "addedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "increaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "evm": {
+ "bytecode": {
+ "linkReferences": {},
+ "object": "60806040523480156200001157600080fd5b506040516200153938038062001539833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600581526020017f42617369630000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42534300000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000389565b508060049080519060200190620000e592919062000389565b506012600560006101000a81548160ff021916908360ff16021790555050506200011633826200011d60201b60201c565b5062000438565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001d560008383620002fb60201b60201c565b620001f1816002546200030060201b62000f2d1790919060201c565b6002819055506200024f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200030060201b62000f2d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200037f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003cc57805160ff1916838001178555620003fd565b82800160010185558215620003fd579182015b82811115620003fc578251825591602001919060010190620003df565b5b5090506200040c919062000410565b5090565b6200043591905b808211156200043157600081600090555060010162000417565b5090565b90565b6110f180620004486000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1539 CODESIZE SUB DUP1 PUSH3 0x1539 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4261736963000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4253430000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xCC SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xE5 SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH3 0x116 CALLER DUP3 PUSH3 0x11D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x438 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x1C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1D5 PUSH1 0x0 DUP4 DUP4 PUSH3 0x2FB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1F1 DUP2 PUSH1 0x2 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH3 0x24F DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x37F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x3CC JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3FD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3FD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3FC JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3DF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x40C SWAP2 SWAP1 PUSH3 0x410 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x435 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x431 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x417 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10F1 DUP1 PUSH3 0x448 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xFAB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122081C8 BLOCKHASH CREATE DUP8 0xCE 0xF9 0x2F 0xEC 0xCB SUB STATICCALL 0xDC PUSH8 0x8B2708C331896EC5 NUMBER 0x2B 0x5D 0x4C PUSH8 0x5F27B6D3E664736F PUSH13 0x63430006020033000000000000 ",
+ "sourceMap": "142:152:5:-:0;;;177:115;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:115:5;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;177:115:5;;;;;;;;;;;;;;;;2013:141:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:4;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;252:33:5::1;258:10;270:14;252:5;;;:33;;:::i;:::-;177:115:::0;142:152;;7835:370:2;7937:1;7918:21;;:7;:21;;;;7910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:49;8015:1;8019:7;8028:6;7986:20;;;:49;;:::i;:::-;8061:24;8078:6;8061:12;;:16;;;;;;:24;;;;:::i;:::-;8046:12;:39;;;;8116:30;8139:6;8116:9;:18;8126:7;8116:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8095:9;:18;8105:7;8095:18;;;;;;;;;;;;;;;:51;;;;8182:7;8161:37;;8178:1;8161:37;;;8191:6;8161:37;;;;;;;;;;;;;;;;;;7835:370;;:::o;10695:92::-;;;;:::o;874:176:1:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;142:152:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
+ },
+ "deployedBytecode": {
+ "linkReferences": {},
+ "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 P
+
+
+
+## Passo #4: Escreva um contrato inteligente [Link para documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
+
+### Passo #4.1: Instale o waffle no seu projeto [Link para o documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
+
+Depois de criarmos com sucesso um Contrato Inteligente, podemos testá-lo. Vamos usar o `Waffle` para fazer isso.
+
+Os testes em `Waffle` são escritos usando `Mocha` juntamente com `Chai`. Podemos usar um ambiente de teste diferente mas `Waffle` matchers só trabalham com `Chai`.
+
+Então, precisamos adicionar `Chai` a nossas dependências :
+
+```bash
+ yarn add --dev mocha chai
+```
+
+### Passo #4.2: Escreva um contrato inteligente [Link para documento](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-2}
+
+Para escrever nosso teste precisamos criar o arquivo `BasicToken.test.ts` em nosso diretório de teste.
+
+```ts
+import { expect, use } from "chai"
+import { Contract } from "ethers"
+import { deployContract, MockProvider, solidity } from "ethereum-waffle"
+import BasicToken from "../build/BasicToken.json"
+
+use(solidity)
+
+describe("BasicToken", () => {
+ const [wallet, walletTo] = new MockProvider().getWallets()
+ let token: Contract
+
+ beforeEach(async () => {
+ token = await deployContract(wallet, BasicToken, [1000])
+ })
+})
+```
+
+Então, usamos o `deployContract` método de `Waffle`para publicar nosso token. Como argumentos, devemos passar a carteira ``, o arquivo json compilado de nosso contrato e saldo padrão.
+
+`Waffle` também nos permite criar uma `carteira`, o que facilita a implantação de um contrato.
+
+Você pode ler mais sobre a `carteira` [aqui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets) e pode ler mais sobre a função de implantação [aqui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts).
+
+Vamos escrever um teste simples para verificar o saldo da nossa carteira. Desde que enviamos o valor 1000 durante a implantação do nosso contrato, o saldo de nossa carteira deve ser 1000 tokens, que podemos fazer check-in no primeiro teste.
+
+```ts
+it("Assigns initial balance", async () => {
+ expect(await token.balanceOf(wallet.address)).to.equal(1000)
+})
+```
+
+Para executar o teste, use `yarn test`
+
+### Passo #4.3 Emitindo eventos [Link para o documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
+
+Neste tutorial, eu quero mostrar a você as correspondências mais úteis do `Waffle`, então vamos começar com o primeiro.
+
+`Waffle` nos permite testar quais eventos foram emitidos.
+
+Neste tutorial, vou testar o método de `transfer` do nosso contrato.
+
+Neste teste, farei uma transferência de uma carteira para outra e verificarei se o evento `transfer` foi chamado.
+
+```ts
+it("Transfer emits event", async () => {
+ await expect(token.transfer(walletTo.address, 7))
+ .to.emit(token, "Transfer")
+ .withArgs(wallet.address, walletTo.address, 7)
+})
+```
+
+Além disso, uma grande vantagem desse "matcher" é que podemos verificar com quais argumentos este evento foi chamado adicionando `withArgs` ao teste.
+
+Isso permitir-nos-á ter a certeza de que a nossa função está a ser chamada corretamente!
+
+### Passo #4.4 Emitindo eventos [Link para o documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
+
+`Waffle` nos permite testar quais eventos foram emitidos.
+
+Usaremos `revertedWith` "matcher" em nosso teste para verificar.
+
+Podemos escrever um teste no qual realizaremos uma transferência por um valor maior do que o que fizemos na nossa carteira. E então verificaremos se a transação reverteu com a mensagem exata!
+
+```ts
+it("Can not transfer above the amount", async () => {
+ await expect(token.transfer(walletTo.address, 1007)).to.be.revertedWith(
+ "VM Exception while processing transaction: revert ERC20: transfer amount exceeds balance"
+ )
+})
+```
+
+### Passo #4.5 Emitindo eventos [Link para o documento](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance) {#step-4-5}
+
+`Waffle` nos permite verificar se há mudanças nos saldos das carteiras!
+
+Podemos usar o matcher `changeTokenBalance` para verificar a mudança do saldo ou o `changeTokenBalances` para uma conta múltipla.
+
+O matcher pode aceitar `números`, `strings` e `BigNumbers` como uma alteração de saldo, enquanto o endereço deve ser especificado como uma carteira ou um contrato.
+
+Vamos escrever o próximo teste:
+
+```ts
+it("Send transaction changes receiver balance", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalance(walletTo, 200)
+})
+```
+
+O teste acima é um teste para uma única carteira.
+
+E a próxima para múltiplas carteiras:
+
+```ts
+it("Send transaction changes receiver balance", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalance(walletTo, 200)
+})
+```
+
+A transação é esperada para ser passada como um callback (precisamos verificar o saldo antes da chamada) ou como uma resposta de transação.
+
+## Parabéns {#congratulations}
+
+**Parabéns! Você o fez através do meu tutorial. Você deu o seu primeiro grande passo para testar contratos inteligentes com Waffle.**
+
+**O código deste tutorial que você pode encontrar [aqui](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website).**
+
+**Mais documentação sobre `Waffle` disponível [aqui](https://getwaffle.io).**
diff --git a/public/content/translations/pt-br/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/public/content/translations/pt-br/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
new file mode 100644
index 00000000000..d87753ec150
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
@@ -0,0 +1,313 @@
+---
+title: "The Graph: Consertando a consulta de dados da Web3"
+description: Blockchain é como um banco de dados, mas sem SQL. Todos os dados estão lá, mas não há maneira de acessá-los. Deixe-me mostrar a você como consertar isso com The Graph e GraphQL.
+author: Markus Waas
+lang: pt-br
+tags:
+ - "solidez"
+ - "smart contracts"
+ - "consultando"
+ - "the Graph"
+ - "create-eth-app"
+ - "react"
+skill: intermediate
+published: 2020-09-06
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/thegraph
+---
+
+Dessa vez, daremos uma olhada mais de perto no The Graph que essencialmente se tornou parte do stack padrão para o desenvolvimento de Dapps no último ano. Primeiro, vamos ver como faríamos as coisas da maneira tradicional...
+
+## Sem The Graph... {#without-the-graph}
+
+Então vamos começar com um exemplo simples para propósitos ilustrativos. Todos nós gostamos de jogos, então imagine um jogo simples com os usuários fazendo apostas:
+
+```solidity
+pragma solidity 0.7.1;
+
+contract Game {
+ uint256 totalGamesPlayerWon = 0;
+ uint256 totalGamesPlayerLost = 0;
+ event BetPlaced(address player, uint256 value, bool hasWon);
+
+ function placeBet() external payable {
+ bool hasWon = evaluateBetForPlayer(msg.sender);
+
+ if (hasWon) {
+ (bool success, ) = msg.sender.call{ value: msg.value * 2 }('');
+ require(success, "Transfer failed");
+ totalGamesPlayerWon++;
+ } else {
+ totalGamesPlayerLost++;
+ }
+
+ emit BetPlaced(msg.sender, msg.value, hasWon);
+ }
+}
+```
+
+Agora, digamos em nosso dapp, queremos exibir as apostas totais, os jogos perdidos/ganhos e também atualizá-lo sempre que alguém jogar novamente. A abordagem seria:
+
+1. Busca `totalGamesPlayerWon`.
+2. Busca `totalGamesPlayerWon`.
+3. Inscreva-se nos eventos `BetPlaced`.
+
+Nós podemos escutar [evento na Web3](https://docs.web3js.org/api/web3/class/Contract#events) como mostrado à direita, mas isso requer manipular alguns casos.
+
+```solidity
+AmeContract.events.BetPlaced({
+ fromBlock: 0
+}, function(error, event) { console.log(event); })
+.on('data', function(event) {
+ // event fired
+})
+.on('changed', function(event) {
+ // event was removed again
+})
+.on('error', function(error, receipt) {
+ // tx rejected
+});
+```
+
+Por hora está de bom tamanho nosso simples exemplo. Mas digamos que queremos exibir as quantidades das apostas perdidas/ganhas apenas para o jogador atual. Se estivermos sem sorte, você pode implantar um novo contrato que armazena esses valores e busca. E agora imagine um contrato inteligente e um Dapp muito mais complicados. As coisas podem ficar confusas rapidamente.
+
+![Não basta uma simples consulta](./one-does-not-simply-query.jpg)
+
+Você pode ver que isso não é ideal:
+
+- Não funciona para contratos já implementados.
+- Custos de gas adicionais para armazenar esses valores.
+- Requer outra chamada para obter os dados para um nó Ethereum.
+
+![Não é bom o suficiente](./not-good-enough.jpg)
+
+Agora vamos ver uma solução melhor.
+
+## Deixe-me apresentá-lo ao GraphQL {#let-me-introduce-to-you-graphql}
+
+Primeiro, vamos falar sobre GraphQL, originalmente projetado e implementado pelo Facebook. Você deve estar familiarizado com o modelo tradicional da Rest API. Agora imagine que você poderia escrever uma consulta para exatamente os dados que você queria:
+
+![GraphQL API vs. REST API](./graphql.jpg)
+
+
+
+As duas imagens capturam praticamente a essência do GraphQL. Com a consulta à direita, podemos definir exactamente quais os dados que queremos, assim aí temos tudo ao alcance e nada mais do que aquilo de que precisamos. Um servidor GraphQL lida com a busca de todos os dados necessários, então é incrivelmente fácil para o lado frontend do consumidor. [Esta é uma bela explicação](https://www.apollographql.com/blog/graphql-explained-5844742f195e/) de como exatamente o servidor lida com uma consulta se estiver interessado.
+
+Agora com esse conhecimento, vamos finalmente adentrar o espaço da blockchain e The Graph.
+
+## O que é The Graph? {#what-is-the-graph}
+
+Um blockchain é um banco de dados descentralizado, mas em contraste com o que é geralmente o caso, nós não temos uma linguagem de consulta para esse banco de dados. Soluções para a obtenção de dados são dolorosas ou completamente impossíveis. The Graph é um protocolo descentralizado para indexação e consulta de dados da blockchain. E você pode ter adivinhado, ele está usando GraphQL como idioma de consulta.
+
+![The Graph](./thegraph.png)
+
+Os exemplos são sempre os melhores para entender algo, então vamos usar The Graph para o nosso exemplo de GameContract.
+
+## Como criar um Subgraph {#how-to-create-a-subgraph}
+
+A definição de como indexar dados é chamada de subgráfico. Requer três componentes:
+
+1. Manifesto (`subgraph.yaml`)
+2. Esquema (`schema.graphql`)
+3. Mapping (`mapping.ts`)
+
+### Manifesto (`subgraph.yaml`) {#manifest}
+
+O manifesto é nosso arquivo de configuração e define:
+
+- que contratos inteligentes indexar (endereço, rede, ABI...)
+- quais eventos ouvir
+- outras coisas para ouvir como chamadas de função ou blocos
+- as fnções de mapping sendo chamadas (conferir `mapping.ts` below)
+
+Aqui você pode definir vários contratos e manipuladores. Uma configuração típica teria uma pasta de subgráfico dentro do projeto Truffle/Hardhat com seu próprio repositório. Então você pode facilmente se referir ao ABI.
+
+Por conveniência você também pode querer usar uma ferramenta modelo tipo um bigode. Em seguida, você cria um `subgraph.template.yaml` e insere os endereços com base nas mais recentes implantações. Para uma configuração de exemplo mais avançada, veja, por exemplo, o [repositório de subgráfico Aave](https://github.com/aave/aave-protocol/tree/master/thegraph).
+
+E a documentação completa pode ser vista [aqui](https://thegraph.com/docs/en/developing/creating-a-subgraph/#the-subgraph-manifest).
+
+```yaml
+specVersion: 0.0.1
+description: Placing Bets on Ethereum
+repository: - GitHub link -
+schema:
+ file: ./schema.graphql
+dataSources:
+ - kind: ethereum/contract
+ name: GameContract
+ network: mainnet
+ source:
+ address: '0x2E6454...cf77eC'
+ abi: GameContract
+ startBlock: 6175244
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.1
+ language: wasm/assemblyscript
+ entities:
+ - GameContract
+ abis:
+ - name: GameContract
+ file: ../build/contracts/GameContract.json
+ eventHandlers:
+ - event: PlacedBet(address,uint256,bool)
+ handler: handleNewBet
+ file: ./src/mapping.ts
+```
+
+### Esquema (`schema.graphql`) {#schema}
+
+O esquema é a definição de dados do GraphQL. Permitirá que você defina quais entidades existem e seus tipos. Tipos suportados do The Graph são
+
+- Bytes
+- ID
+- String
+- Booleano
+- Int
+- BigInt
+- BigDecimal
+
+Você também pode usar entidades como tipo para definir relações. No nosso exemplo, definimos uma relação entre 1 e muitos entre jogadores e apostas. O ! significa que o valor não pode ser vazio. A documentação completa pode ser vista [aqui](https://thegraph.com/docs/en/developing/creating-a-subgraph/#the-subgraph-manifest).
+
+```graphql
+type Bet @entity {
+ id: ID!
+ player: Player!
+ playerHasWon: Boolean!
+ time: Int!
+}
+
+type Player @entity {
+ id: ID!
+ totalPlayedCount: Int
+ hasWonCount: Int
+ hasLostCount: Int
+ bets: [Bet]!
+}
+```
+
+### Mapping (`mapping.ts`) {#mapping}
+
+O arquivo de mapeamento no The Graph define nossas funções que transformam eventos recebidos em entidades. É escrito em AssemblyScript, um subconjunto de Typescript. Isto significa que pode ser compilado em WASM (WebAssembly) para uma execução mais eficiente e portátil do mapeamento.
+
+Você precisará definir cada função nomeada no arquivo `subgraph.yaml`, portanto, no nosso caso, precisamos apenas uma: `handleNewBet`. Primeiro, tentamos carregar a entidade Jogador a partir do endereço do remetente como id. Se não existir, nós criamos uma nova entidade e a preenchemos com os valores iniciais.
+
+Em seguida, criamos uma nova entidade Bet. O ID para isso sempre `event.transaction.hash.toHex() + "-" + event.logIndex.toString()` garantirá um valor exclusivo. Usar somente o hash não é o suficiente porque alguém pode chamar a função placeBet várias vezes em uma transação através de um contrato inteligente.
+
+Finalmente, nós podemos atualizar a entidade "Player" com todos os dados. Arrays não podem ser empurrados diretamente, mas precisam ser atualizados como mostrado aqui. Usamos o id para fazer referência à aposta. E `.save()` é necessário no final para armazenar uma entidade.
+
+A documentação completa pode ser vista aqui: https://thegraph.com/docs/en/developing/creating-a-subgraph/#writing-mappings. Você também pode adicionar a saída do log ao arquivo de mapeamento, consultando [aqui](https://thegraph.com/docs/assemblyscript-api#api-reference).
+
+```typescript
+import { Bet, Player } from "../generated/schema"
+import { PlacedBet } from "../generated/GameContract/GameContract"
+
+export function handleNewBet(event: PlacedBet): void {
+ let player = Player.load(event.transaction.from.toHex())
+
+ if (player == null) {
+ // create if doesn't exist yet
+ player = new Player(event.transaction.from.toHex())
+ player.bets = new Array(0)
+ player.totalPlayedCount = 0
+ player.hasWonCount = 0
+ player.hasLostCount = 0
+ }
+
+ let bet = new Bet(
+ event.transaction.hash.toHex() + "-" + event.logIndex.toString()
+ )
+ bet.player = player.id
+ bet.playerHasWon = event.params.hasWon
+ bet.time = event.block.timestamp
+ bet.save()
+
+ player.totalPlayedCount++
+ if (event.params.hasWon) {
+ player.hasWonCount++
+ } else {
+ player.hasLostCount++
+ }
+
+ // update array like this
+ let bets = player.bets
+ bets.push(bet.id)
+ player.bets = bets
+
+ player.save()
+}
+```
+
+## Usando isso no Frontend {#using-it-in-the-frontend}
+
+Usando algo como Apollo Boost, você pode facilmente integrar o The Graph em seu React Dapp (ou Apollo-Vue). Especialmente ao usar React hooks e Apollo, buscar dados é tão simples quanto escrever uma única consulta GraphQl no seu componente. Uma típica configuração pode se parecer com isso:
+
+```javascript
+// See all subgraphs: https://thegraph.com/explorer/
+const client = new ApolloClient({
+ uri: "{{ subgraphUrl }}",
+})
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById("root")
+)
+```
+
+E agora podemos escrever, por exemplo, uma consulta como esta. Isso vai nos ajudar
+
+- quantas vezes o usuário atual ganhou
+- quantas vezes o usuário atual perdeu
+- uma lista de horários com todas as suas apostas anteriores
+
+Tudo em um único pedido para o servidor do GraphQL.
+
+```javascript
+const myGraphQlQuery = gql`
+ players(where: { id: $currentUser }) {
+ totalPlayedCount
+ hasWonCount
+ hasLostCount
+ bets {
+ time
+ }
+ }
+`
+
+const { loading, error, data } = useQuery(myGraphQlQuery)
+
+React.useEffect(() => {
+ if (!loading && !error && data) {
+ console.log({ data })
+ }
+}, [loading, error, data])
+```
+
+![Magic](./magic.jpg)
+
+Mas precisamos de uma última peça do quebra-cabeças: o servidor. Você pode também executá-lo por conta própria ou usar o serviço hospedado.
+
+## Servidor The Graph {#the-graph-server}
+
+### Graph Explorer: o serviço hospedado {#graph-explorer-the-hosted-service}
+
+O jeito mais fácil é usar o serviço hospedado. Siga as instruções [aqui](https://thegraph.com/docs/en/deploying/deploying-a-subgraph-to-hosted/) para publicar um subgráfico. Para muitos projetos, você pode encontrar subgrafos existentes no [explorer](https://thegraph.com/explorer/).
+
+![O Graph-Explorer](./thegraph-explorer.png)
+
+### Executando seu próprio nó {#running-your-own-node}
+
+Como alternativa, você pode executar seu próprio nó. Documentação [aqui](https://github.com/graphprotocol/graph-node#quick-start). Uma das razões para isso: você pode estar usando uma rede não suportada pelo serviço hospedado. As redes que contam atualmente com suporte [podem ser encontradas aqui](https://thegraph.com/docs/en/developing/supported-networks/).
+
+## O futuro descentralizado {#the-decentralized-future}
+
+GraphQL também suporta streams para os próximos eventos. Elas tem suporte no grafo por meio de [Subfluxos](https://thegraph.com/docs/en/substreams/), que se encontram atualmente em versão beta de código aberto.
+
+Em [2021](https://thegraph.com/blog/mainnet-migration/) O Grafo iniciou sua transição para uma rede de indexação descentralizada. Leia mais sobre a arquitetura dessa rede de indexação descentralizada [aqui](https://thegraph.com/docs/en/network/explorer/).
+
+Dois aspectos fundamentais são:
+
+1. Os usuários pagam aos indexadores pelas perguntas.
+2. Os indexadores fazem stake dos Graph Tokens (GRT).
diff --git a/public/content/translations/pt-br/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/pt-br/developers/tutorials/token-integration-checklist/index.md
new file mode 100644
index 00000000000..e8b891a158a
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/token-integration-checklist/index.md
@@ -0,0 +1,84 @@
+---
+title: Checklist de integração do token
+description: Uma lista de coisas a considerar ao interagir com tokens
+author: "Trailofbits"
+lang: pt-br
+tags:
+ - "solidity"
+ - "contratos inteligentes"
+ - "segurança"
+ - "tokens"
+skill: intermediate
+published: 2020-08-13
+source: Construindo contratos seguros
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
+---
+
+Siga este checklist ao interagir com tokens arbitrários. Certifique-se de que você entende os riscos associados a cada item e justifique qualquer exceção a essas regras.
+
+Por conveniência, todos os [utilitários](https://github.com/crytic/slither#tools) do Slither podem ser executados diretamente em um endereço de token, como:
+
+[Usando Tutorial do Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+
+```bash
+slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken
+```
+
+Para seguir esta lista de verificação, você vai querer ter essa saída do Slither para o token:
+
+```bash
+- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
+- slither [target] --print human-summary
+- slither [target] --print contract-summary
+- slither-prop . --contract ContractName # requer configuração, e uso de Echidna e Manticore
+```
+
+## Considerações gerais {#general-considerations}
+
+- **O contrato tem uma revisão de segurança.** Evite interagir com contratos que não tenham uma revisão de segurança. Verifique a duração da avaliação (também conhecida como "nível de esforço"), a reputação da empresa de segurança e o número e a gravidade das descobertas.
+- **Você entrou em contato com os desenvolvedores.** Talvez você precise alertar sua equipe para um incidente. Procure por contatos apropriados em [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts).
+- **Eles têm uma lista de e-mails de segurança para anúncios críticos.** Sua equipe deve aconselhar usuários (como você!) quando são encontrados problemas críticos ou quando ocorrem atualizações.
+
+## Conformidade do ERC {#erc-conformity}
+
+O Slither inclui um utilitário, [slither-check-erc](https://github.com/crytic/slither/wiki/ERC-Conformance), que analisa a conformidade de um token com vários padrões de ERC relacionados. Use slither-check-erc para revisar que:
+
+- **Transfer e transferFrom retornam um booleano.** Vários tokens não retornam um booleano nessas funções. Como resultado, suas chamadas no contrato podem falhar.
+- **As funções "name", "decimals" e "symbol" estão presentes se usados.** Essas funções são opcionais no padrão do ERC20 e podem não estar presentes.
+- **"Decimals" retorna um uint8.** Vários tokens retornam uma uint256 incorretamente. Se este for o caso, certifique-se de que o valor retornado é inferior a 255.
+- **O token mitiga a conhecida condição de corrida do [ERC20](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729).** O padrão ERC20 possui uma condição de corrida conhecida do ERC20 que deve ser mitigada para evitar que invasores roubem tokens.
+- **O token não é um token ERC777 e não tem nenhuma chamada de função externa na "transfer" e "transferFrom".** Chamadas externas nas funções de transferência podem levar a reentradas.
+
+O Slither inclui um utilitário, [slither-prop](https://github.com/crytic/slither/wiki/Property-generation), que gera testes unitários e propriedades de segurança que podem descobrir muitas falhas comuns do ERC. Use slither-check-erc para revisar que:
+
+- **O contrato passa em todos os testes unitários e propriedades de segurança do slither-prop.** Execute os testes unitários gerados e então verifique as propriedades com [Echidna](https://github.com/crytic/echidna) e [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html).
+
+Por último, há certas características que são difíceis de identificar automaticamente. Revisão destas condições manualmente:
+
+- **"Transfer" e "transferFrom" não devem cobrar taxas.** Os tokens deflacionários podem levar a um comportamento inesperado.
+- **Os potenciais juros obtidos com os token são retirados da conta.** Alguns tokens distribuem juros para os titulares (holders) de tokens. Estes juros podem estar atados ao contrato caso não tenham sido retirados da conta.
+
+## Composição do contrato {#contract-composition}
+
+- **O contrato evita a complexidade desnecessária.** O token deve ser um contrato simples; um token com código complexo requer um padrão de revisão mais alto. Use o [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary) do Slither para identificar um código complexo.
+- **O contrato usa SafeMath.** Contratos que não usam SafeMath requerem um padrão de revisão mais elevado. Inspecione o contrato manualmente para uso de SafeMath.
+- **O contrato tem apenas algumas funções "non–token-related".** Funções "non–token-related" aumentam a probabilidade de ocorrência de problemas no contrato. Use o [contract-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) do Slither para revisar amplamente o código usado no contrato.
+- **O token tem apenas um endereço.** Tokens com vários pontos de entrada para atualizações de saldo podem quebrar a contabilidade interna com base no endereço (Ex.: `balances[token_address][msg.sender]` pode não refletir o saldo atual).
+
+## Privilégios do proprietário {#owner-privileges}
+
+- **O token não é atualizável.** Contratos atualizáveis podem mudar suas regras ao longo do tempo. Use a impressora de [resumo-humano do Slither](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) para identificar um código complexo.
+- **O proprietário tem capacidades limitadas de cunhagem.** Os proprietários maliciosos ou comprometidos podem abusar das capacidades de cunhagem. Use a impressora [de resumo humano do Sliter](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) para revisar as capacidades de cunhagem e considere revisar manualmente o código.
+- **O token não é pausável.** Os proprietários maliciosos ou comprometidos podem capturar contratos que dependem de tokens pausáveis. Identifique o código pauseável à mão.
+- **O proprietário não pode bloquear o contrato.** Donos maliciosos ou comprometidos podem prender contratos dependendo de tokens com uma lista negra. Identifique os recursos da lista negra à mão.
+- **A equipe por trás do token é conhecida e pode ser considerada responsável por abusos.** Contratos com equipes de desenvolvimento anônimas, ou que residam em abrigos legais devem exigir um padrão de revisão mais elevado.
+
+## Escassez de token {#token-scarcity}
+
+Revisões de problemas de escassez de tokens requerem revisão manual. Verifique estas condições:
+
+- **Nenhum usuário é dono da maior parte do abastecimento.** Se alguns usuários possuem a maioria dos tokens, eles podem influenciar operações baseadas na repartição do token.
+- **A oferta total é suficiente.** Tokens com uma oferta baixa podem ser facilmente manipulados.
+- **Os tokens estão localizados em mais de algumas trocas.** Se todos os tokens estiverem em uma troca, um compromisso da troca pode comprometer o contrato que depende do token.
+- **Os usuários entendem os riscos associados a grandes fundos ou flash loans.** Contratos que dependem do saldo do token devem levar cuidadosamente em consideração ataques com grandes fundos ou ataques por meio de flash loans.
+- **O token não permite flash minting**. O "Flash minting" pode levar a oscilações substanciais na balança e no fornecimento total, o que exige verificações de overflow rigorosas e abrangentes na operação do token.
diff --git a/public/content/translations/pt-br/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/pt-br/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 64d2f3820c0..6426998c4ea 100644
--- a/public/content/translations/pt-br/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -6,7 +6,6 @@ tags:
- "contratos inteligentes"
- "tokens"
- "solidity"
- - "introdução"
- "erc-20"
skill: intermediate
lang: pt-br
@@ -18,7 +17,7 @@ address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
No tutorial anterior, estudamos [a estrutura de um token ERC-20 no Solidity](/developers/tutorials/understand-the-erc-20-token-smart-contract/)usado na blockchain Ethereum. Nesse artigo, veremos como usar um contrato inteligente para interagir com um token usando a linguagem Solidity.
-Para esse contrato inteligente, vamos criar uma troca descentralizada realmente robusta na qual o usuário pode negociar o Ethereum com o nosso recém-implantado [token ERC-20](/developers/docs/standards/tokens/erc-20/).
+Para este contrato inteligente, nós criaremos uma corretora descentralizada realmente fictícia, na qual um usuário pode trocar ether por nosso [token ERC-20](/developers/docs/standards/tokens/erc-20/) recém-implantado.
Para este tutorial, usaremos o código que escrevemos no tutorial anterior como uma base. Nosso DEX instanciará um contrato em seu construtor e realizará as operações de:
@@ -141,7 +140,7 @@ Vamos programar a função de compra. Primeiro, precisaremos verificar a quantid
Observe que, se chamarmos a função `require` em caso de um erro, o ether enviado será diretamente revertido e retornado para o usuário.
-To keep things simple, we just exchange 1 token for 1 Wei.
+Para simplificar, apenas trocamos 1 "token" por 1 "Wei".
```solidity
function buy() payable public {
@@ -160,7 +159,7 @@ No caso de a compra ser bem-sucedida, devemos ver dois eventos na transação: o
## A função de venda {#the-sell-function}
-A função responsável pela venda primeiro exigirá que o usuário tenha aprovado o valor, chamando a função approve antecipadamente. Approving the transfer requires the ERC20Basic token instantiated by the DEX to be called by the user. This can be achieved by first calling the DEX contract's `token()` function to retrieve the address where DEX deployed the ERC20Basic contract called `token`. Then we create an instance of that contract in our session and call its `approve` function. Then we are able to call the DEX's `sell` function and swap our tokens back for ether. For example, this is how this looks in an interactive brownie session:
+A função responsável pela venda primeiro exigirá que o usuário tenha aprovado o valor, chamando a função `approve` antecipadamente. Aprovar a transferência requer que o token ERC20Basic instanciado pelo DEX seja chamado pelo usuário. Isso pode ser feito chamando a função `token()` do contrato da DEX para recuperar o endereço onde a DEX implantou o contrato ERC20Basic chamado `token`. Em seguida, criamos uma instância desse contrato em nossa sessão e chamamos sua função `approve`. Então podemos chamar a função `sell` da DEX e trocar nossos tokens de volta por ether. Por exemplo, é assim que fica em uma sessão interativa usando brownie:
```python
#### Python in interactive brownie console...
@@ -184,7 +183,7 @@ token.approve(dex.address, 3e18, {'from':account2})
```
-Então quando a função `sell` é chamada, verificamos se a transferência do endereço do remetente para o endereço do contrato foi bem-sucedida e depois enviamos os Ethers para o endereço de chamada.
+Então quando a função sell é chamada, verificamos se a transferência do endereço do remetente para o endereço do contrato foi bem-sucedida e depois enviamos os Ethers para o endereço de chamada.
```solidity
function sell(uint256 amount) public {
@@ -197,7 +196,7 @@ function sell(uint256 amount) public {
}
```
-Se tudo funcionar, você deve ver 2 eventos (um `Transfer` e `Sold`) na transação, e o seu saldo de token e saldo de Ethereum atualizados.
+Se tudo funcionar, você deverá ver 2 eventos (uma `Transferência` e `Vendido`) na transação e seu saldo de token e saldo de ether atualizados.
![Dois eventos na transação: transferência e venda](./transfer-and-sold-events.png)
@@ -205,7 +204,7 @@ Se tudo funcionar, você deve ver 2 eventos (um `Transfer` e `Sold`) na transaç
Neste tutorial, vimos como verificar o saldo e a dedução de um token ERC-20 e também como chamar a `Transfer` e `TransferFrom` de um contrato inteligente ERC20 usando a interface.
-Once you make a transaction we have a JavaScript tutorial to [wait and get details about the transactions](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/) that were made to your contract and a [tutorial to decode events generated by token transfers or any other events](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/) as long as you have the ABI.
+Uma vez feita a transação, temos um tutorial JavaScript [esperando e pegando detalhes de uma transação](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/) feitas para seu contrato e um [tutorial para decodificar eventos gerados em transferências de tokens e outros eventos](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/) desde que você tenha um ABI.
Aqui está o código completo para o tutorial:
diff --git a/public/content/translations/pt-br/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/pt-br/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
index 2c7b488b713..655f1f643c2 100644
--- a/public/content/translations/pt-br/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
@@ -7,7 +7,7 @@ tags:
- "tokens"
- "solidity"
- "erc-20"
-skill: beginner
+skill: intermediate
lang: pt-br
published: 2020-04-05
source: EthereumDev
diff --git a/public/content/translations/pt-br/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/pt-br/developers/tutorials/uniswap-v2-annotated-code/index.md
index b49ae45db1a..6e7dc1e351c 100644
--- a/public/content/translations/pt-br/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/pt-br/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -202,13 +202,13 @@ A forma como o par de troca decide sobre a taxa de câmbio entre o token0 e o to
Veja um exemplo. Note que para manter a simplicidade a tabela mostra apenas três dígitos após a vírgula decimal e ignoramos a taxa de negociação de 0,3%, portanto os números não são precisos.
| Evento | reserve0 | reserve1 | reserve0 \* reserve1 | Taxa de câmbio média (token1 / token0) |
-| ------------------------------------------- | --------: | --------: | -------------------: | -------------------------------------- |
-| Configuração Inicial | 1.000,000 | 1.000,000 | 1.000.000 | |
-| Trader A troca 50 token0 por 47,619 token1 | 1.050,000 | 952,381 | 1.000.000 | 0,952 |
-| Trader B troca 10 token0 por 8,984 token1 | 1.060,000 | 943,396 | 1.000.000 | 0,898 |
-| Trader C troca 40 token0 por 34,305 token1 | 1.100,000 | 909,090 | 1.000.000 | 0,858 |
-| Trader D troca 100 token1 por 109,01 token0 | 990,990 | 1.009,090 | 1.000.000 | 0,917 |
-| Trader E troca 10 token0 por 10,079 token1 | 1.000,990 | 999,010 | 1.000.000 | 1,008 |
+| ------------------------------------------- | ---------:| ---------:| ----------------------:| -------------------------------------- |
+| Configuração Inicial | 1.000,000 | 1.000,000 | 1.000.000 | |
+| Trader A troca 50 token0 por 47,619 token1 | 1.050,000 | 952,381 | 1.000.000 | 0,952 |
+| Trader B troca 10 token0 por 8,984 token1 | 1.060,000 | 943,396 | 1.000.000 | 0,898 |
+| Trader C troca 40 token0 por 34,305 token1 | 1.100,000 | 909,090 | 1.000.000 | 0,858 |
+| Trader D troca 100 token1 por 109,01 token0 | 990,990 | 1.009,090 | 1.000.000 | 0,917 |
+| Trader E troca 10 token0 por 10,079 token1 | 1.000,990 | 999,010 | 1.000.000 | 1,008 |
À medida que os traders fornecem mais token0, o valor relativo do token1 aumenta, e vice-versa, baseado na oferta e na demanda.
@@ -362,12 +362,12 @@ Se o tempo decorrido não for zero, isso significa que somos a primeira transaç
}
```
-Cada acumulador de custo é atualizado com o último custo (reserva do outro token/reserva desse token) vezes o tempo decorrido em segundos. Para obter um preço médio, deve-se ler o preço cumulativo de dois pontos no tempo e dividir pela diferença de tempo entre eles. Por exemplo, suponha esta sequência de eventos:
+Cada acumulador de custo é atualizado com o último custo (reserva do outro token/reserva desse token) vezes o tempo decorrido em segundos. Para obter um preço médio, tome o preço acumulado em dois pontos no tempo e divida-o pela diferença de tempo entre eles. Por exemplo, suponha esta sequência de eventos:
-| Evento | reserva0 | reserva1 | carimbo de data/hora | Taxa de câmbio marginal (reserve1 / reserve0) | price0CumulativeLast |
-| ----------------------------------------------------- | --------: | --------: | -------------------- | --------------------------------------------: | -------------------------: |
-| Configuração Inicial | 1.000,000 | 1.000,000 | 5.000 | 1.000 | 0 |
-| Trader A deposita 50 token0 e recebe 47,619 token1 | 1.050,000 | 952,381 | 5.020 | 0,907 | 20 |
+| Evento | reserva0 | reserva1 | carimbo de data/hora | Taxa de câmbio marginal (reserve1 / reserve0) | price0CumulativeLast |
+| ----------------------------------------------------- | ---------:| ---------:| -------------------- | ---------------------------------------------:| ----------------------------:|
+| Configuração Inicial | 1.000,000 | 1.000,000 | 5.000 | 1.000 | 0 |
+| Trader A deposita 50 token0 e recebe 47,619 token1 | 1.050,000 | 952,381 | 5.020 | 0,907 | 20 |
| Trader B deposita 10 token0 e recebe 8,984 token1 | 1.060,000 | 943,396 | 5.030 | 0,890 | 20+10\*0,907 = 29,07 |
| Trader C deposita 40 token0 e recebe 34,305 token1 | 1.100,000 | 909,090 | 5.100 | 0,826 | 29,07+70\*0,890 = 91,37 |
| Trader D deposita 100 token1 e recupera 109,01 token0 | 990,990 | 1.009,090 | 5.110 | 1.018 | 91,37+10\*0,826 = 99,63 |
@@ -499,9 +499,9 @@ No momento do primeiro depósito, não sabemos o valor relativo dos dois tokens,
Podemos confiar nisso, pois é do interesse do depositante oferecer o mesmo valor para evitar perda de valor por arbitragem. Digamos que o valor dos dois tokens é idêntico, mas nosso depositante depositou quatro vezes mais o **Token1** do que o **Token0**. Um trader pode usar o fato de que o par de troca pensa que o **Token0** é mais valioso para extrair valor dessa situação.
| Evento | reserva0 | reserva1 | reserva0 \* reserva1 | Valor do pool (reserve0 + reserve1) |
-| -------------------------------------------------------------- | -------: | -------: | -------------------: | ----------------------------------: |
-| Configuração Inicial | 8 | 32 | 256 | 40 |
-| O trader deposita 8 tokens **Token0** e recupera 16 **Token1** | 16 | 16 | 256 | 32 |
+| -------------------------------------------------------------- | --------:| --------:| ----------------------:| -----------------------------------:|
+| Configuração Inicial | 8 | 32 | 256 | 40 |
+| O trader deposita 8 tokens **Token0** e recupera 16 **Token1** | 16 | 16 | 256 | 32 |
Como você pode ver, o trader ganhou 8 tokens extra, que vêm de uma redução do valor do pool, prejudicando o depositante que a possui.
@@ -515,12 +515,12 @@ Em todos os depósitos subsequentes, já conhecemos a taxa de câmbio entre os d
Seja um depósito inicial, seja um depósito subsequente, o número de tokens de liquidez que fornecemos é igual à raiz quadradada da alteração em `reserve0*reserve1` e o valor do token de liquidez não muda (a menos que obtenhamos um depósito com valores diferentes nos dois tipos, então, neste caso, a "multa" é distribuída). Aqui está outro exemplo com dois tokens que têm o mesmo valor, com três depósitos bons e um ruim (depósito de apenas um tipo de token, portanto, ele não produz nenhum token de liquidez).
| Evento | reserva0 | reserva1 | reserva0 \* reserva1 | Valor do Pool (reserve0 + reserve1) | Tokens de liquidez cunhados para este depósito | Total de tokens de liquidez | valor de cada token de liquidez |
-| ------------------------------- | -------: | -------: | -------------------: | ----------------------------------: | ---------------------------------------------: | --------------------------: | ------------------------------: |
-| Configuração Inicial | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
-| Depósito de quatro de cada tipo | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
-| Depósito de dois de cada tipo | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
-| Depósito de valores desiguais | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
-| Após a arbitragem | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
+| ------------------------------- | --------:| --------:| ----------------------:| -----------------------------------:| ----------------------------------------------:| ---------------------------:| -------------------------------:|
+| Configuração Inicial | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
+| Depósito de quatro de cada tipo | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
+| Depósito de dois de cada tipo | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
+| Depósito de valores desiguais | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
+| Após a arbitragem | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
```solidity
}
@@ -743,7 +743,7 @@ Essa é a função principal da fábrica, para criar um par de troca entre dois
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Queremos que o endereço da nova troca seja determinante, para poder ser calculado antecipadamente fora da cadeia (isso pode ser útil para [transações com camada 2](/developers/docs/layer-2-scaling/)). Para isso, precisamos ter uma ordem consistente dos endereços dos tokens, independente da ordem na qual nós os recebemos, então os classificamos aqui.
+Queremos que o endereço da nova troca seja determinante, para poder ser calculado antecipadamente fora da cadeia (isso pode ser útil para [transações com camada 2](/developers/docs/scaling/)). Para isso, precisamos ter uma ordem consistente dos endereços dos tokens, independente da ordem na qual nós os recebemos, então os classificamos aqui.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
@@ -985,7 +985,7 @@ Provedores de liquidez especificam um mínimo, geralmente porque querem limitar
Por exemplo, imagine um caso em que a taxa de câmbio é de um para um, e o provedor de liquidez especifica esses valores:
| Parâmetro | Valor |
-| -------------- | ----: |
+| -------------- | -----:|
| amountADesired | 1.000 |
| amountBDesired | 1.000 |
| amountAMin | 900 |
diff --git a/public/content/translations/pt-br/developers/tutorials/using-websockets/index.md b/public/content/translations/pt-br/developers/tutorials/using-websockets/index.md
new file mode 100644
index 00000000000..15e52f84e95
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/using-websockets/index.md
@@ -0,0 +1,249 @@
+---
+title: Usando WebSockets
+description: Guia para usar WebSockets e Alchemy para fazer solicitações JSON-RPC e escutar eventos.
+author: "Elan Halpern"
+lang: pt-br
+tags:
+ - "alchemy"
+ - "websocket"
+ - "consultando"
+ - "javascript"
+skill: intermediate
+source: Docs Alchemy
+sourceUrl: https://docs.alchemyapi.io/guides/using-websockets
+published: 2020-12-01
+---
+
+Este é um guia de nível de entrada para usar WebSockets e Alchemy para fazer solicitações para a blockchain Ethereum.
+
+## WebSockets vs. HTTP {#websockets-vs-http}
+
+Ao contrário da HTTP, com WebSockets, você não precisa continuamente fazer solicitações quando quiser informações específicas. WebSockets mantêm uma conexão de rede para você (se for feito corretamente) e ouvem por mudanças.
+
+Como em qualquer conexão de rede, você não deve assumir que um WebSocket permanecerá aberto para sempre sem interrupção, mas o processamento correto de conexões descartadas e reconexão à mão podem ser desafiadores pra acertar. Outro lado negativo dos WebSockets é que você não obtém códigos de status HTTP na resposta, mas apenas a mensagem de erro.
+
+£[Alquimia Web3](https://docs.alchemy.com/reference/api-overview) adiciona automaticamente manipulação em falhas de WebSocket e obtém sem a configuração necessária.
+
+## Experimente {#try-it-out}
+
+A maneira mais fácil de testar WebSockets é instalar uma ferramenta de linha de comando para fazer solicitações de WebSocket como [wscat](https://github.com/websockets/wscat). Usando o wscat, você pode enviar solicitações da seguinte forma:
+
+_Nota: se você tem uma conta da Alchemy, você pode substituir `demo` com sua própria chave de API. [Cadastre-se para uma conta de Alquimia gratuita aqui!](https://auth.alchemyapi.io/signup)_
+
+```
+wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
+
+> {"jsonrpc": "2.0", "id": 0, "method": "eth_gasPrice"}
+
+< {"jsonrpc": "2.0", "result": "0xb2d05e00", "id": 0}
+
+```
+
+## Como usar WebSockets {#how-to-use-websockets}
+
+Para começar, abra um WebSocket usando a URL de WebSocket para seu aplicativo. Você pode encontrar a URL de WebSocket do seu aplicativo abrindo a página do aplicativo no [seu painel](https://dashboard.alchemyapi.io/) e clicando em "Visualizar chave". Note que a URL do seu aplicativo para WebSockets é diferente da URL para solicitações HTTP, mas ambos podem ser encontrados clicando em "Ver Chave".
+
+![Onde encontrar a sua URL de WebSocket no seu painel Alchemy](./use-websockets.gif)
+
+Qualquer uma das APIs listadas na [Referência API do Alquimia](https://docs.alchemyapi.io/documentation/alchemy-api-reference/) pode ser usada via WebSocket. Para fazer isso, use o mesmo payload que seria enviado como corpo de uma solicitação HTTP POST, mas ao invés disso, envie esse payload através do WebSocket.
+
+## Com Web3 {#with-web3}
+
+A transição para WebSockets enquanto se usa uma biblioteca de clientes como a Web3 é simples. Simplesmente passe a URL de WebSocket em vez da URL HTTP ao instanciar seu cliente Web3. Por exemplo:
+
+```js
+const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key")
+
+web3.eth.getBlockNumber().then(console.log) // -> 7946893
+```
+
+## Assinatura {#subscription-api}
+
+Quando conectado através de um WebSocket, você pode usar dois métodos adicionais: `eth_subscribe` e `eth_unsubscribe`. Esses métodos permitirão que você ouça eventos específicos e seja notificado imediatamente.
+
+### `eth_subscribe` {#eth-subscribe}
+
+Cria uma nova assinatura para eventos específicos. [Saiba mais sobre `eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe).
+
+#### Parâmetros {#parameters}
+
+1. Tipos de assinatura
+2. Parâmetros opcionais
+
+O primeiro argumento especifica o tipo de evento para o qual ouvir. O segundo argumento contém opções adicionais que dependem do primeiro argumento. Os diferentes tipos de descrição, suas opções e suas cargas de evento são descritos abaixo.
+
+#### Retorna {#returns}
+
+O ID de subscrição: Este ID será anexado a qualquer evento recebido, e também pode ser usado para cancelar a assinatura usando `eth_unsubscribe`.
+
+#### Eventos de assinatura {#subscription-events}
+
+Enquanto a assinatura estiver ativa, você receberá eventos que são objetos com os seguintes campos:
+
+- `jsonrpc`: Sempre "2.0"
+- `método`: Sempre "eth_subscription"
+- `params`: Um objeto com os seguintes campos:
+ - `subscription`: O ID de assinatura retornado pela chamada `eth_subscription` que criou essa assinatura.
+ - `resultado`: Um objeto cujo conteúdo varia dependendo do tipo de assinatura.
+
+#### Tipos de assinatura {#subscription-types}
+
+1. `alchemy_newFullPendingTransactions`
+
+Retorna as informações de transação para todas as transações que são adicionadas ao estado pendente. Este tipo de assinatura se inscreve em transações pendentes, similar à chamada Web3 padrão `web3.eth. ubscribe("pendingTransações")`, mas difere do que emite _informações completas de transação_ ao invés de apenas hashes de transação.
+
+Exemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["alchemy_newFullPendingTransactions"]}
+
+< {"id":1,"result":"0x9a52eeddc2b289f985c0e23a7d8427c8","jsonrpc":"2.0"}
+< {
+ "jsonrpc":"2.0",
+ "method":"eth_subscription",
+ "params":{
+ "result":{
+ "blockHash":null,
+ "blockNumber":null,
+ "from":"0xa36452fc31f6f482ad823cd1cf5515177d57667f",
+ "gas":"0x1adb0",
+ "gasPrice":"0x7735c4d40",
+ "hash":"0x50bff0736c713458c92dd1848d12f3354149be1363123dae35e94e0f2a9d56bf",
+"input":"0xa9059cbb0000000000000000000000000d0707963952f2fba59dd06f2b425ace40b492fe0000000000000000000000000000000000000000000015b1111266cfca100000",
+ "nonce":"0x0",
+ "to":"0xea38eaa3c86c8f9b751533ba2e562deb9acded40",
+ "transactionIndex":null,
+ "value":"0x0",
+ "v":"0x26",
+ "r":"0x195c2c1ed126088e12d290aa93541677d3e3b1d10f137e11f86b1b9227f01e3b",
+ "s":"0x60fc4edbf1527832a2a36dbc1e63ed6193a6eee654472fbebbf88ef1750b5344"},
+ "subscription":"0x9a52eeddc2b289f985c0e23a7d8427c8"
+ }
+ }
+
+```
+
+2. `newHeads`
+
+Emite um evento a qualquer momento que um novo cabeçalho seja adicionado à cadeia, incluindo durante uma reorganização em cadeia.
+
+Quando ocorre uma reorganização da cadeia, esta assinatura emitirá um evento contendo todos os novos cabeçalhos da nova cadeia. Em particular, isso significa que você pode ver vários cabeçalhos emitidos com a mesma altura, e quando isso acontecer, o cabeçalho mais recente deve ser tomado como o correto após uma reorganização.
+
+Exemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]}
+
+< {"jsonrpc":"2.0","id":2,"result":"0x9ce59a13059e417087c02d3236a0b1cc"}
+< {
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "result": {
+ "extraData": "0xd983010305844765746887676f312e342e328777696e646f7773",
+ "gasLimit": "0x47e7c4",
+ "gasUsed": "0x38658",
+ "logsBloom":
+"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x084149998194cc5f",
+ "number": "0x1348c9",
+ "parentHash": "0x7736fab79e05dc611604d22470dadad26f56fe494421b5b333de816ce1f25701",
+ "receiptRoot": "0x2fab35823ad00c7bb388595cb46652fe7886e00660a01e867824d3dceb1c8d36",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "stateRoot": "0xb3346685172db67de536d8765c43c31009d0eb3bd9c501c9be3229203f15f378",
+ "timestamp": "0x56ffeff8",
+ "transactionsRoot": "0x0167ffa60e3ebc0b080cdb95f7c0087dd6c0e61413140e39d94d3468d7c9689f"
+ },
+ "subscription": "0x9ce59a13059e417087c02d3236a0b1cc"
+ }
+}
+
+```
+
+3. `logs`
+
+Emite logs que fazem parte dos blocos recém-adicionados que correspondem aos critérios de filtro especificado.
+
+Quando ocorre uma reorganização da cadeia, logs que fazem parte dos blocos da cadeia antiga serão emitidos novamente com a propriedade `removido` definido como `verdadeiro`. Além disso, são emitidos registros que fazem parte dos blocos da nova cadeia, significando que é possível ver logs para a mesma transação várias vezes no caso de uma reorganização.
+
+Parâmetros
+
+1. Um objeto com os seguintes campos:
+ - `endereço` (opcional): ou uma string representanda por um endereço, ou um array de tais strings.
+ - Somente logs criados a partir de um desses endereços serão emitidos.
+ - `Tópicos`: um array de especificadores de tópicos.
+ - Cada especialista de tópico é `null` uma string que representa um tópico, ou uma matriz de strings.
+ - Cada posição no array que não é `nulo` restringe os logs emitidos para apenas aqueles que têm um dos tópicos indicados nessa posição.
+
+Alguns exemplos de especificações de tópico:
+
+- `[]`: Qualquer tópico permitido.
+- `[A]`: A na primeira posição (e qualquer coisa depois).
+- `[null, B]`: Qualquer coisa na primeira posição e B na segunda posição (e qualquer coisa depois).
+- `[null, B]`: Qualquer coisa na primeira posição e B na segunda posição (e qualquer coisa depois).
+- .`[[A, B], [A, B]]`: (A or B) na primeira posição e (A or B) na segunda posição (e nada depois).
+
+Exemplo:
+
+```json
+> {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]}
+
+< {"jsonrpc":"2.0","id":2,"result":"0x4a8a4c0517381924f9838102c5a4dcb7"}
+< {
+ "jsonrpc": "2.0",
+ "method": "eth_subscription",
+ "params": {
+ "subscription": "0x4a8a4c0517381924f9838102c5a4dcb7",
+ "result": {
+ "address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd",
+ "blockHash": "0x61cdb2a09ab99abf791d474f20c2ea89bf8de2923a2d42bb49944c8c993cbf04",
+ "blockNumber": "0x29e87",
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003",
+ "logIndex":"0x0",
+ "topics":["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"],
+ "transactionHash": "0xe044554a0a55067caafd07f8020ab9f2af60bdfe337e395ecd84b4877a3d1ab4",
+ "transactionIndex": "0x0"
+ }
+ }
+}
+
+```
+
+### `eth_unsubscribe` {#eth-unsubscribe}
+
+Cancela uma assinatura existente para que não sejam enviados mais eventos.
+
+Parâmetros
+
+1. Inscrição ID, como retornado anteriormente de uma chamada de `eth_subscribe`.
+
+Retornos
+
+`true` se uma assinatura foi cancelada com sucesso, ou `false` se não existir nenhuma assinatura com o ID fornecido.
+
+Exemplo:
+
+**Requisição**
+
+```
+curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
+-X POST
+-H "Content-Type: application/json"
+-d '{"id": 1, "method": "eth_unsubscribe", "params": ["0x9cef478923ff08bf67fde6c64013158d"]}'
+
+
+```
+
+**Resultado**
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": true
+}
+```
+
+---
+
+[Cadastre-se com o Alchemy](https://auth.alchemyapi.io/signup) gratuitamente, confira [a nossa documentação](https://docs.alchemyapi.io/), e para receber as últimas notícias, siga-nos no [Twitter](https://twitter.com/AlchemyPlatform).
diff --git a/public/content/translations/pt-br/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/pt-br/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
new file mode 100644
index 00000000000..651f49afe6a
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -0,0 +1,298 @@
+---
+title: "Waffle: simulações dinâmicas e testando chamadas de contrato"
+description: Tutorial avançado de Waffle para usar simulação dinâmica e testar chamadas contratuais
+author: "Daniel Izdebski"
+tags:
+ - "waffle"
+ - "Contratos Inteligentes"
+ - "solidity"
+ - "Testes"
+ - "simulando"
+skill: intermediate
+lang: pt-br
+published: 2020-11-14
+---
+
+## Do que se trata esse tutorial? {#what-is-this-tutorial-about}
+
+Neste tutorial, você aprenderá:
+
+- use simulação dinâmica
+- testar interações entre contratos inteligentes
+
+Pressupostos:
+
+- você já sabe como escrever um contrato inteligente simples em `Solidity`
+- você conhece o seu `JavaScript` e `TypeScript`
+- você fez outros `tutoriais` do Waffle ou sabe alguma coisa sobre isso
+
+## Simulação dinâmica {#dynamic-mocking}
+
+Por que a simulação dinâmica é útil? Bem, isso permite-nos escrever testes unitários em vez de testes de integração. O que isso significa? Isso significa que não precisamos nos preocupar com as dependências dos contratos inteligentes, assim podemos testar todos eles em total isolamento. Deixe-me te mostrar como exatamente você pode fazer isso.
+
+### **1. Projeto** {#1-project}
+
+Antes de começar, precisamos preparar um projeto simples no node.js:
+
+```bash
+mkdir dynamic-mocking
+cd dynamic-mocking
+mkdir contracts src
+
+yarn init
+# or if you're using npm
+npm init
+```
+
+Vamos começar adicionando typescript e testes de dependências - mocha & chai:
+
+```bash
+yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript
+# or if you're using npm
+npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev
+```
+
+Agora vamos adicionar `Waffle` e `ethers`:
+
+```bash
+yarn add --dev ethereum-waffle ethers
+# or if you're using npm
+npm install ethereum-waffle ethers --save-dev
+```
+
+A nossa estrutura de projetos deverá ficar assim:
+
+```
+.
+├── contracts
+├── package.json
+└── test
+```
+
+### **2. Contrato inteligente** {#2-smart-contract}
+
+Para iniciar uma simulação dinâmica, precisamos de um contrato inteligente com dependências. Não se preocupe, nós ajudamos você!
+
+Aqui está um simples contrato inteligente escrito na `Solidity` cujo único objetivo é conferir se somos ricos. Ele usa o token ERC20 para verificar se temos tokens suficientes. Coloque em `./contracts/AmIRichAlready.sol`.
+
+```solidity
+pragma solidity ^0.6.2;
+
+interface IERC20 {
+ function balanceOf(address account) external view returns (uint256);
+}
+
+contract AmIRichAlready {
+ IERC20 private tokenContract;
+ uint public richness = 1000000 * 10 ** 18;
+
+ constructor (IERC20 _tokenContract) public {
+ tokenContract = _tokenContract;
+ }
+
+ function check() public view returns (bool) {
+ uint balance = tokenContract.balanceOf(msg.sender);
+ return balance > richness;
+ }
+}
+```
+
+Como queremos usar simulação dinâmica, não precisamos de todo o ERC20, é por isso que estamos usando a interface IERC20 com apenas uma função.
+
+É hora de construir este contrato! Para isso, usaremos o `Waffle`. Primeiro, vamos criar um arquivo de configuração simples `waffle.json` que especifica as opções de compilação.
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./contracts",
+ "outputDirectory": "./build"
+}
+```
+
+Agora estamos prontos para construir o contrato com Waffle:
+
+```bash
+npx waffle
+```
+
+Fácil, certo? Na pasta `de compilação/` dois arquivos correspondentes ao contrato e a interface apareceu. Nós os utilizaremos mais tarde para testar.
+
+### **3. Testando** {#3-testing}
+
+Vamos criar um arquivo chamado `AmIRichAlready.test.ts` para os testes reais. Em primeiro lugar, temos de lidar com as importações. Nós precisaremos deles para mais tarde:
+
+```typescript
+import { expect, use } from "chai"
+import { Contract, utils, Wallet } from "ethers"
+import {
+ deployContract,
+ deployMockContract,
+ MockProvider,
+ solidity,
+} from "ethereum-waffle"
+```
+
+Exceto para dependências JS, precisamos importar nossa interface e contrato construídos:
+
+```typescript
+import IERC20 from "../build/IERC20.json"
+import AmIRichAlready from "../build/AmIRichAlready.json"
+```
+
+Waffle usa `chai` para testes. No entanto, antes de podermos usá-lo, temos que injetar os "matchers" de Waffle em si mesmo:
+
+```typescript
+use(solidity)
+```
+
+Precisamos implementar a função `beforeEach()` que irá redefinir o estado do contrato antes de cada teste. Primeiro, vamos pensar no que precisamos lá. Para implantar um contrato, precisamos de duas coisas: uma carteira e um contrato ERC20 implementado para passá-la como um argumento para o contrato `AmIRichalready`.
+
+Em primeiro lugar, criamos uma carteira:
+
+```typescript
+const [wallet] = new MockProvider().getWallets()
+```
+
+Depois, precisamos de implantar um contrato do ERC20. Aqui está a parte complicada - nós temos apenas uma interface. Esta é a parte em que Waffle vem nos salvar. Waffle tem uma função mágica `deployMockContract()` que cria um contrato usando apenas o _abi_ da interface:
+
+```typescript
+const mockERC20 = await deployMockContract(wallet, IERC20.abi)
+```
+
+Agora com a carteira e o ERC20 implantados, podemos ir em frente e implantar o contrato `AmIRichalready` (Contrato:
+
+```typescript
+const contract = await deployContract(wallet, AmIRichAlready, [
+ mockERC20.address,
+])
+```
+
+Com tudo isso, nossa função `beforeEach()` está terminada. Até agora o seu arquivo `AmIRichAlready.test.ts` deve se parecer com isto:
+
+```typescript
+import { expect, use } from "chai"
+import { Contract, utils, Wallet } from "ethers"
+import {
+ deployContract,
+ deployMockContract,
+ MockProvider,
+ solidity,
+} from "ethereum-waffle"
+
+import IERC20 from "../build/IERC20.json"
+import AmIRichAlready from "../build/AmIRichAlready.json"
+
+use(solidity)
+
+describe("Am I Rich Already", () => {
+ let mockERC20: Contract
+ let contract: Contract
+ let wallet: Wallet
+
+ beforeEach(async () => {
+ ;[wallet] = new MockProvider().getWallets()
+ mockERC20 = await deployMockContract(wallet, IERC20.abi)
+ contract = await deployContract(wallet, AmIRichAlready, [mockERC20.address])
+ })
+})
+```
+
+Vamos fazer o primeiro teste para o contrato `AmIRichalready`. Sobre o que acha que o nosso teste deveria ser? Sim, você tem razão! Deveríamos verificar se já somos ricos :)
+
+Um, pera um segundo. Como o nosso contrato simulado saberá quais valores retornar? Não implementamos nenhuma lógica para a função `balanceOf()`. Mais uma vez, Waffle pode ajudar aqui. Nosso contrato simulado tem algumas coisas novas e bonitas agora:
+
+```typescript
+await mockERC20.mock..returns()
+await mockERC20.mock..withArgs().returns()
+```
+
+Com esse conhecimento, podemos finalmente escrever nosso primeiro teste:
+
+```typescript
+it("returns false if the wallet has less than 1000000 tokens", async () => {
+ await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
+ expect(await contract.check()).to.be.equal(false)
+})
+```
+
+Vamos travar esse teste em partes:
+
+1. Definimos nosso contrato simulado no ERC20 para sempre devolver o saldo de tokens de 9999999999.
+2. Verifique se o método `contract.check()` retorna `false`.
+
+Nós estamos prontos para disparar a fera:
+
+![Um test passando](test-one.png)
+
+Então o teste funciona, mas... ainda há espaço para melhorias. A função `saldoOf()` sempre retornará 99999. Podemos melhorá-la especificando uma carteira para a qual a função deve retornar algo - como um contrato de verdade:
+
+```typescript
+it("returns false if the wallet has less than 1000001 tokens", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("999999"))
+ expect(await contract.check()).to.be.equal(false)
+})
+```
+
+Até agora, nós testamos apenas o caso em que não estamos ricos o suficiente. Em vez disso, vamos testar o oposto:
+
+```typescript
+it("returns true if the wallet has at least 1000001 tokens", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("1000001"))
+ expect(await contract.check()).to.be.equal(true)
+})
+```
+
+Você executa os testes...
+
+![Dois testes passando](test-two.png)
+
+E aqui está você! Nosso contrato parece funcionar como pretendido :)
+
+## Testando chamadas de contrato {#testing-contract-calls}
+
+Vamos resumir o que fez até agora. Nós testamos a funcionalidade do nosso contrato de `AmIRichalready` e parece que ele está funcionando corretamente. Isso significa que estamos prontos, né? Não exatamente! Waffle permite-nos testar ainda mais o nosso contrato. Mas o quanto exatamente? Bem, no arsenal de Waffle há um `calledOnContract()` e `calledOnContractWith()` correspondentes. Eles nos permitirão verificar se nosso contrato chamado de simulação (mock, em inglês) do ERC20. Aqui está um teste básico com um desses matchers:
+
+```typescript
+it("checks if contract called balanceOf on the ERC20 token", async () => {
+ await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
+ await contract.check()
+ expect("balanceOf").to.be.calledOnContract(mockERC20)
+})
+```
+
+Podemos ir ainda mais longe e melhorar este teste com o outro "matcher" que eu te falei:
+
+```typescript
+it("checks if contract called balanceOf with certain wallet on the ERC20 token", async () => {
+ await mockERC20.mock.balanceOf
+ .withArgs(wallet.address)
+ .returns(utils.parseEther("999999"))
+ await contract.check()
+ expect("balanceOf").to.be.calledOnContractWith(mockERC20, [wallet.address])
+})
+```
+
+Vamos verificar se os testes estão corretos:
+
+![Três testes passando](test-three.png)
+
+Ótimo, todos os testes são verdes.
+
+Testar chamadas de contrato com Waffle é super fácil. E aqui está a melhor parte. Esses "matchers" trabalham com contratos normais e simulados! É porque o Waffle registra e filtra chamadas EVM em vez de injetar código, como é no caso de bibliotecas de teste populares de outras tecnologias.
+
+## A Linha de Chegada {#the-finish-line}
+
+Parabéns! Agora você sabe como usar Waffle para testar chamadas de contrato e contratos simulados dinamicamente. Há características muito mais interessantes para descobrir. Recomendo mergulhar na documentação do Waffle.
+
+A documentação do Waffle está disponível [aqui](https://ethereum-waffle.readthedocs.io/).
+
+O código fonte deste tutorial pode ser encontrado [aqui](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls).
+
+Você pode também estar interessado em:
+
+- [Testando contratos inteligentes com Waffle](/developers/tutorials/waffle-test-simple-smart-contract/)
diff --git a/public/content/translations/pt-br/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/public/content/translations/pt-br/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
new file mode 100644
index 00000000000..851cb979840
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
@@ -0,0 +1,202 @@
+---
+title: "Tutorial Waffle diz hello world com hardhat e ethers"
+description: Faça seu primeiro projeto Waffle com hardhat e ethers.js
+author: "MiZiet"
+tags:
+ - "waffle"
+ - "contratos inteligentes"
+ - "solidity"
+ - "testando"
+ - "hardhat"
+ - "ethers.js"
+skill: intermediate
+lang: pt-br
+published: 2020-10-16
+---
+
+Neste [tutorial do Waffle](https://ethereum-waffle.readthedocs.io), aprenderemos como criar um simples projeto de contrato inteligente "Hello world", usando [hardhat](https://hardhat.org/) e [ethers. s](https://docs.ethers.io/v5/). Em seguida, aprenderemos como adicionar uma nova funcionalidade ao nosso contrato inteligente e como testá-lo com Waffle.
+
+Vamos começar criando um novo projeto:
+
+```bash
+yarn init
+```
+
+ou
+
+```bash
+npm init
+```
+
+e instalando os pacotes necessários:
+
+```bash
+yarn add -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+ou
+
+```bash
+npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+O próximo passo é criar um projeto hardhat de amostra, executando `npx hardhat`.
+
+```bash
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.3 👷
+
+? O que você deseja fazer? …
+★ Crie um projeto de exemplo
+Crie um hardhat.config.js vazio
+Saia
+```
+
+Selecione `Create a sample project`
+
+A nossa estrutura de projetos deverá ficar assim:
+
+```
+MyWaffleProject
+├── contracts
+│ └── Greeter.sol
+├── node_modules
+├── scripts
+│ └── sample-script.js
+├── test
+│ └── sample-test.js
+├── .gitattributs
+├── .gitignore
+├── hardhat.config.js
+└── package.json
+```
+
+### Agora vamos falar sobre alguns desses arquivos: {#now-lets-talk}
+
+- Greeter.sol - nosso smart contract escrito em Solidity;
+
+```solidity
+contract Greeter {
+string greeting;
+
+constructor(string memory _greeting) public {
+console.log("Deploying a Greeter with greeting:", _greeting);
+greeting = _greeting;
+}
+
+function greet() public view returns (string memory) {
+return greeting;
+}
+
+function setGreeting(string memory _greeting) public {
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+}
+```
+
+Nosso contrato inteligente pode ser dividido em três partes:
+
+1. constructor - onde declaramos uma variável de tipo string chamada `greeting`,
+2. function greet - função que retornará `greeting` quando chamada,
+3. function setGreeting - uma função que nos permite alterar o valor da função `greeting`.
+
+- sample-test.js - nosso arquivo de testes
+
+```js
+describe("Greeter", function () {
+ it("Should return the new greeting once it's changed", async function () {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ expect(await greeter.greet()).to.equal("Hello, world!")
+
+ await greeter.setGreeting("Hola, mundo!")
+ expect(await greeter.greet()).to.equal("Hola, mundo!")
+ })
+})
+```
+
+### O próximo passo consiste em compilar nosso contrato e executar testes: {#compiling-and-testing}
+
+Testes de Waffle usam Mocha (um framework de teste) com Chai (uma biblioteca de asserção). Tudo o que você precisa fazer é executar `npx hardhat test` e esperar que a seguinte mensagem apareça.
+
+```bash
+✓ Deve retornar a nova saudação uma vez alterada
+```
+
+### Tudo parece ótimo até agora, vamos adicionar mais complexidade ao nosso projeto {#adding-complexity}
+
+Imagine uma situação quando alguém adiciona uma string vazia como saudação. Não seria uma saudação calorosa, né?
+Vamos nos certicar que isso não aconteça:
+
+Queremos usar o `revert` do Solidity quando alguém passar uma string vazia. Uma coisa boa é que podemos facilmente testar esta funcionalidade com o chai matcher do Waffle `to.be.revertedWith()`.
+
+```js
+it("Should revert when passing an empty string", async () => {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ await expect(greeter.setGreeting("")).to.be.revertedWith(
+ "Greeting should not be empty"
+ )
+})
+```
+
+Parece que o nosso novo teste não passou:
+
+```bash
+Implantando um Greeter com saudação: Olá, mundo!
+Mude de saudação de 'Hello, world!' para 'Hola, mundo!'
+ ✓ Deve devolver a nova saudação uma vez que ela tenha sido alterada (1514ms)
+Implantando um Greeter com saudação: Olá, mundo!
+Mudar saudação de 'Olá, mundo!' para ''
+ 1) Deve reverter quando passar uma seqüência vazia
+
+
+ 1 passagem (2s)
+ 1 falhando
+```
+
+Vamos implementar esta funcionalidade em nosso contrato inteligente:
+
+```solidity
+require(bytes(_greeting).length > 0, "Greeting message is empty");
+```
+
+Agora, nossa função setGreeting se parece com isso:
+
+```solidity
+function setGreeting(string memory _greeting) public {
+require(bytes(_greeting).length > 0, "Greeting should not be empty");
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+```
+
+Vamos executar os testes novamente:
+
+```bash
+✓ Deve retornar a nova saudação quando ela for alterada (1467ms)
+✓ Deve reverter quando passar uma string vazia (276ms)
+
+2 passagem (2s)
+```
+
+Parabéns! Você terminou :)
+
+### Conclusão {#conclusion}
+
+Fizemos um projeto simples com Waffle, Hardhat e ethers.js. Aprendemos como criar um projeto, adicionar um teste e implementar novas funcionalidades.
+
+Para mais combinações excelentes de chai para testar seus smart contracts, confira a [documentação oficial da Waffle](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).
diff --git a/public/content/translations/pt-br/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/pt-br/developers/tutorials/waffle-test-simple-smart-contract/index.md
new file mode 100644
index 00000000000..fbd8ef0174c
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -0,0 +1,203 @@
+---
+title: Testando um contrato inteligente simples com a biblioteca Waffle
+description: Tutorial para iniciantes
+author: Ewa Kowalska
+tags:
+ - "contratos inteligentes"
+ - "solidity"
+ - "Waffle"
+ - "testando"
+skill: intermediate
+lang: pt-br
+published: 2021-02-26
+---
+
+## Neste tutorial, você aprenderá como {#in-this-tutorial-youll-learn-how-to}
+
+- Testar as mudanças do saldo da carteira
+- Testar a emissão de eventos com argumentos especificados
+- Assegurar que uma transação foi revertida
+
+## Suposições {#assumptions}
+
+- Você pode criar um novo projeto JavaScript ou TypeScript
+- Você tem alguma experiência básica com testes em JavaScript
+- Você tem usado gerenciadores de pacotes como Yarn ou NPM
+- Você possui um conhecimento muito básico de contratos inteligentes e Solidity
+
+# Introdução {#getting-started}
+
+O tutorial demonstra a configuração do teste e a execução usando yarn, mas não há problema se você preferir npm - Eu fornecerei referências adequadas a [documentação](https://ethereum-waffle.readthedocs.io/en/latest/index.html) oficial do Waffle.
+
+## Instalando Dependências {#install-dependencies}
+
+[Adicione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) as dependências do ethereum-waffle e typescript às dependências de desenvolvimento do seu projeto.
+
+```bash
+yarn add --dev ethereum-waffle ts-node typescript @types/jest
+```
+
+## Exemplo de contrato inteligente {#example-smart-contract}
+
+Durante o tutorial, nós trabalharemos em um exemplo de contrato inteligente simples - EtherSplitter. Não faz nada de mais, além de permitir que qualquer um envie somas em wei e divida-as igualmente entre dois destinatários predefinidos. A função split exige que a quantidade de wei seja par, caso contrário, ela será anulada. Para ambos os destinatários, ela realiza uma transferência em wei, seguido da emissão do evento Transferir.
+
+Coloque o trecho de código EtherSplitter em `src/EtherSplitter.sol`.
+
+```solidity
+pragma solidity ^0.6.0;
+
+contract EtherSplitter {
+ address payable receiver1;
+ address payable receiver2;
+
+ event Transfer(address from, address to, uint256 amount);
+
+ constructor(address payable _address1, address payable _address2) public {
+ receiver1 = _address1;
+ receiver2 = _address2;
+ }
+
+ function split() public payable {
+ require(msg.value % 2 == 0, 'Uneven wei amount not allowed');
+ receiver1.transfer(msg.value / 2);
+ emit Transfer(msg.sender, receiver1, msg.value / 2);
+ receiver2.transfer(msg.value / 2);
+ emit Transfer(msg.sender, receiver2, msg.value / 2);
+ }
+}
+```
+
+## Compilar o contrato {#compile-the-contract}
+
+Para [compilar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) o contrato, adicione a seguinte entrada ao arquivo package.json:
+
+```json
+"scripts": {
+ "build": "waffle"
+ }
+```
+
+Em seguida, crie o arquivo de configuração do Waffle, no diretório raiz do projeto - `waffle.json` - e então cole a seguinte configuração lá:
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./contracts",
+ "outputDirectory": "./build"
+}
+```
+
+Execute `yarn build`. Como resultado, o diretório `build` aparecerá com o contrato compilado, EtherSplitter, no formato JSON.
+
+## Teste de configuração {#test-setup}
+
+Testar com Waffle requer usar os matchers (comparadores) Chai e Mocha, então você precisa [adicionar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) ao seu projeto. Atualize seu arquivo package.json e adicione a entrada `test` na parte de scripts:
+
+```json
+"scripts": {
+ "build": "waffle",
+ "test": "export NODE_ENV=test && mocha -r ts-node/register 'test/**/*.test.ts'"
+ }
+```
+
+Se você quiser [executar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#running-tests) seus testes, basta executar `yarn test`.
+
+# Testando {#testing}
+
+Agora crie o diretório `test` e crie o novo arquivo `test\EtherSplitter.test.ts`. Copie o trecho de código abaixo e cole-o em nosso arquivo de teste.
+
+```ts
+import { expect, use } from "chai"
+import { Contract } from "ethers"
+import { deployContract, MockProvider, solidity } from "ethereum-waffle"
+import EtherSplitter from "../build/EtherSplitter.json"
+
+use(solidity)
+
+describe("Ether Splitter", () => {
+ const [sender, receiver1, receiver2] = new MockProvider().getWallets()
+ let splitter: Contract
+
+ beforeEach(async () => {
+ splitter = await deployContract(sender, EtherSplitter, [
+ receiver1.address,
+ receiver2.address,
+ ])
+ })
+
+ // add the tests here
+})
+```
+
+Algumas palavras antes de começarmos. O `MockProvider` vem com uma versão em mock (simulada de um objeto real) da blockchain. Ele também fornece o mock de carteiras que nos servirão para testar o contrato EtherSplitter. Podemos obter até dez carteiras chamando o método `getWallets()` no provedor. No exemplo, nós obtemos três carteiras - para o remetente e duas para os destinatários.
+
+Em seguida, declaramos uma variável chamada 'splitter' - este é o nosso contrato mock EtherSplitter. Ele é criado antes de cada execução de um único teste pelo método `deployContract`. Este método simula a implantação de um contrato, da carteira passada como primeiro parâmetro (a carteira do remetente em nosso caso). O segundo parâmetro é a ABI e o bytecode do contrato testado — passamos para lá o arquivo json do contrato EtherSplitter compilado no diretório `build`. O terceiro parâmetro é uma matriz com os argumentos do construtor do contrato que, no nosso caso, são os dois endereços dos destinatários.
+
+## changeBalances {#changebalances}
+
+Primeiro, verificaremos se o método split realmente altera os saldos das carteiras dos destinatários. Se dividirmos 50 wei da conta do remetente, nós esperaríamos que os saldos de ambos os destinatários aumentassem em 25 wei. Nós usaremos o matcher `changeBalances` do Waffle:
+
+```ts
+it("Changes accounts balances", async () => {
+ await expect(() => splitter.split({ value: 50 })).to.changeBalances(
+ [receiver1, receiver2],
+ [25, 25]
+ )
+})
+```
+
+Como o primeiro parâmetro do matcher, nós passamos um array de carteiras dos destinatários e, como segundo - um array de aumentos esperados nas contas correspondentes. Se nós quiséssemos verificar o saldo de uma carteira específica, também poderíamos usar o matcher `changeBalance`, que não requer a passagem de arrays, como no exemplo abaixo:
+
+```ts
+it("Changes account balance", async () => {
+ await expect(() => splitter.split({ value: 50 })).to.changeBalance(
+ receiver1,
+ 25
+ )
+})
+```
+
+Observe que, em ambos os casos de `changeBalance` e de `changeBalances`, transmitimos a função split como um retorno de chamada, pois o comparador precisa acessar o estado dos saldos antes e depois da chamada.
+
+A seguir, testaremos se o evento Transfer foi emitido após cada transferência de wei. Vamos passar para outro comparador do Waffle:
+
+## Emit {#emit}
+
+```ts
+it("Emits event on the transfer to the first receiver", async () => {
+ await expect(splitter.split({ value: 50 }))
+ .to.emit(splitter, "Transfer")
+ .withArgs(sender.address, receiver1.address, 25)
+})
+
+it("Emits event on the transfer to the second receiver", async () => {
+ await expect(splitter.split({ value: 50 }))
+ .to.emit(splitter, "Transfer")
+ .withArgs(sender.address, receiver2.address, 25)
+})
+```
+
+O matcher `emit` nos permite verificar, se um contrato emitiu um evento ao chamar um método. Como parâmetros para o matcher `emit`, nós fornecemos o mock do contrato, que prevemos para emitir o evento, juntamente com o nome desse evento. Em nosso caso, o contrato simulado é o `splitter` e o nome do evento é `Transfer`. Nós também podemos verificar os valores precisos dos argumentos, com os quais o evento foi emitido - nós passamos tantos argumentos para o matcher `withArgs`, como espera a nossa declaração de evento. No caso do contrato EtherSplitter, passamos os endereços do remetente e do destinatário, juntamente com a quantia de wei transferida.
+
+## revertedWith {#revertedwith}
+
+Como último exemplo, nós verificaremos se a transação foi revertida, em caso de número desigual de wei. Usaremos o matcher `revertedWith`:
+
+```ts
+it("Reverts when Vei amount uneven", async () => {
+ await expect(splitter.split({ value: 51 })).to.be.revertedWith(
+ "Uneven wei amount not allowed"
+ )
+})
+```
+
+O teste, se aprovado, nos garantirá que a transação foi revertida de fato. No entanto, também deve haver uma correspondência exata entre as mensagens que passamos, na instrução `require` e a mensagem que esperamos em `revertedWith`. Se voltarmos ao código do contrato EtherSplitter, na declaração `require` para a quantidade wei, fornecemos a mensagem: 'Quantidade de wei desigual não permitida'. Isso corresponde à mensagem que esperamos em nosso teste. Se eles não fossem iguais, o teste falharia.
+
+# Parabéns! {#congratulations}
+
+Você acabou de dar seu primeiro grande passo para testar contratos inteligentes com Waffle! Caso esteja interessado em outros tutoriais do Waffle:
+
+- [Testando ERC20 com Waffle](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
+- [Waffle: simulações dinâmicas e testando chamadas de contrato](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
+- [Waffle diga olá mundo tutorial com capacete de segurança e ethers](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers//)
diff --git a/public/content/translations/pt-br/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/pt-br/developers/tutorials/yellow-paper-evm/index.md
new file mode 100644
index 00000000000..5aced52da90
--- /dev/null
+++ b/public/content/translations/pt-br/developers/tutorials/yellow-paper-evm/index.md
@@ -0,0 +1,264 @@
+---
+title: Entendendo as especificações do Yellow Paper da EVM
+description: Entendendo a parte do Yellow Paper, a especificação formal do Ethereum, você entenderá a Máquina Virtual Ethereum (EVM).
+author: "qbzzt"
+tags:
+ - "evm"
+skill: intermediate
+lang: pt-br
+published: 2022-05-15
+---
+
+[O Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) é uma especificação formal do Ethereum. Exceto onde alterado pelo [processo EIP](/eips/), ele contém a descrição exata de como tudo funciona. Ele foi escrito como um documento matemático, que inclui terminologia que programadores podem não achar familiar. Nesse documento você aprende como lê-lo, e por extensão outros documentos matemáticos relacionados.
+
+## Qual Yellow Paper? {#which-yellow-paper}
+
+Como quase tudo mais no Ethereum, o Yellow Paper evolui com o tempo. Para ser capaz de se referir a uma versão específica, eu fiz o upload [da versão atual](yellow-paper-berlin.pdf). A seção, página e números de equação que eu uso irão se referir a esta versão. É uma boa ideia tê-lo aberto em uma janela diferente enquanto você lê esse documento.
+
+### Por que a EVM? {#why-the-evm}
+
+O yellow paper original foi escrito logo no começo do desenvolvimento do Ethereum. Ele descreve o mecanismo de consenso original baseado em proof-of-work que foi originalmente usado para proteger a rede. Entretanto, o Ethereum desligou o proof-of-work e começou a usar consenso baseado em proof-of-stake em setembro de 2022. Este tutorial focará nas partes do yellow paper que definem a Máquina Virtual Ethereum. A EVM ficou inalterada pela transição para proof-of-stake (exceto pelo valor de retorno do opcode DIFFICULTY).
+
+## Modelo de execução 9 {#9-execution-model}
+
+Esta seção (pág. 12.14) inclui a maioria da definição da EVM.
+
+O termo _estado do sistema_ inclui tudo que você precisa saber sobre o sistema para rodá-lo. Em um computador comum, isto significa memória, conteúdo dos registradores, etc.
+
+Uma [máquina de Turing](https://en.wikipedia.org/wiki/Turing_machine) é um modelo computacional. Essencialmente, é uma versão simplificada de um computador, que comprovadamente tem a mesma habilidade de executar computações que um computador normal tem (tudo que um computador pode calcular, uma máquina de Turing pode calcular, e vice-versa). Este modelo facilita provar vários teoremas sobre o que é e o que não é computável.
+
+O termo [Turing-completo](https://en.wikipedia.org/wiki/Turing_completeness) significa um computador que pode rodar os mesmos cálculos que uma máquina de Turing. Máquinas de Turing pode entrar em laços infinitos, e a EVM não pode porque ela irá ficar sem gas, então é somente quase-Turing-completa.
+
+## Básico 9.1 {#91-basics}
+
+Esta seção fornece o básico sobre EVM e como ela se equipara a outros modelos computacionais.
+
+A [máquina de pilha](https://en.wikipedia.org/wiki/Stack_machine) é um computador que armazena dados intermediários não em registros, mas em uma [**pilha**](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). Esta é a arquitetura preferida para máquinas virtuais porque é fácil de implementar, significando que bugs e a vulnerabilidades de segurança são bem menos prováveis. A memória na pilha é dividida em palavras de 256-bit. Esta escolha foi tomada por ser a mais conveniente às operações criptográficas do núcleo do Ethereum, como as computações de hash Keccak-256 e curva elíptica. O tamanho máximo da pilha é 1.024 bytes. Quando opcodes são executados, eles geralmente estão pegando seus parâmetros da pilha. Há opcodes especificamente para reorganizar elementos na pilha, como `POP` (remove item do topo da pilha), `DUP_N` (N-ésimo item duplicado na pilha), etc.
+
+A EVM também tem um espaço volátil chamado **memory** que é usado para armazenar dados durante execução. Esta memória é organizada em palavras de 32-byte. Todas as locações de memória são inicializadas em zero. Se você executar este código [Yul](https://docs.soliditylang.org/en/latest/yul.html) para adicionar uma palavra na memória, ele irá preencher 32 bytes de memória preenchendo o espaço vazio na palavra com zeros, ou seja, ele cria uma palavra - com zeros nos locais 0-29, 0x60 a 30, e 0xA7 a 31.
+
+```yul
+mstore(0, 0x60A7)
+```
+
+`mstore` é um dos três opcodes que a EVM fornece para interação com a memória - ele carrega uma palavra na memória. Os outros dois são `mstore8`, que carrega um único byte na memória, e `mload`, que move uma palavra da memória para a pilha.
+
+A EVM também tem um modelo separado não volátil chamado **storage**, que é mantido como parte do estado do sistema - esta memória é organizada em arrays de palavras (ao contrário de arrays de byte endereçáveis por palavra na pilha). Esta storage é quando contratos mantém dados resistentes - um contrato pode somente interagir com o seu própria storage. Storage é organizado em mapeamentos chave-valor.
+
+Apesar de não ser mencionado nessa seção do Yellow Paper, é útil também saber que há um quarto tipo de memória. **Calldata** é uma memória endereçável por byte, somente de leitura, usada para armazenar o valor passado com o parâmetro `data` da transação. A EVM tem opcodes específicos para gerenciamento de `calldata`. `calldatasize` retorna o tamanho dos dados. `calldataload` carrega os dados na pilha. `calldatacopy` copia os dados na memória.
+
+A [arquitetura Von Neumann](https://en.wikipedia.org/wiki/Von_Neumann_architecture) armazena código e dados na mesma memória. A EVM não segue este padrão por razões de segurança - compartilhar memória volátil torna possível mudar o código do programa. Ao invés disso, o código é gravado na storage.
+
+Há apenas dois casos em que o código é executado da memória:
+
+- Quando um contrato cria outro contrato (usando [`CREATE`](https://www.evm.codes/#f0) ou [`CREATE2`](https://www.evm.codes/#f5)), o código do construtor do contrato vem da memória.
+- Durante a criação de _qualquer_ contrato, o código do construtor roda e então retorna com o código do contrato real, também da memória.
+
+O termo execução excepcional significa uma exceção que causa a interrupção da execução do contrato atual.
+
+## 9.2 Visão geral de taxas {#92-fees-overview}
+
+Esta seção explica como as taxas de gas são calculadas. Há três custos:
+
+### Custo de opcode {#opcode-cost}
+
+O custo herdado de um opcode específico. Para obter este valor, encontre o grupo de custo do opcode no apêndice H (p. 28, sob equação (327)), e encontre o grupo de custo na equação (324). Isto te dá uma função do custo, que na maioria dos casos usa parâmetros do apêndice G (p. 27).
+
+Por exemplo, o opcode [`CALLDATACOPY`](https://www.evm.codes/#37) é um membro do grupo _Wcopy_. O custo de opcode para este grupo é _Gverylow+Gcopy×⌈μs[2]÷32⌉_. Olhando no apêndice G, nós vemos que ambas constantes são 3, o que nos dá _3+3×⌈μs[2]÷32⌉_.
+
+Nós ainda precisamos decifrar a expressão _⌈μs[2]÷32⌉_. A parte mais de fora, _⌈ \ ⌉_ é a função ceiling, uma função em que é dado valor onde retorna o menor inteiro que ainda não é menor que o valor. Por exemplo, _⌈2.5⌉ = ⌈3⌉ = 3_. A parte mais interna é _μs[2]÷32_. Olhando na seção 3 (Convenções) na p. 3, _μ_ é o estado da máquina. O estado da máquina é definido na seção 9.4.1 na p. 13. De acordo com essa seção, um dos parâmetros do estado da máquina é _s_ para a pilha. Colocando tudo junto, parece que _μs[2]_ é a locação número 2 na pilha. Olhando o [opcode](https://www.evm.codes/#37), a locação número dois na pilha é o tamanho do dado em bytes. Olhando em outros opcodes do grupo Wcopy, [`CODECOPY`](https://www.evm.codes/#39) e [`RETURNDATACOPY`](https://www.evm.codes/#3e), eles também têm um tamanho de dado na mesma locação. Então,_⌈μs[2]÷32⌉_ é o número de 32 byte necessário para armazenar o dado sendo copiado. Colocando tudo junto, o custo herdado de [`CALLDATACOPY`](https://www.evm.codes/#37) é 3 gas mais 3 por palavra de dado sendo copiada.
+
+### Custo de execução {#running-cost}
+
+O custo de rodar o código que nós estamos chamando.
+
+- No caso do [`CREATE`](https://www.evm.codes/#f0) e [`CREATE2`](https://www.evm.codes/#f5), o construtor para o novo contrato.
+- No caso do [`CALL`](https://www.evm.codes/#f1), [`CALLCODE`](https://www.evm.codes/#f2), [`STATICCALL`](https://www.evm.codes/#fa), ou [`DELEGATECALL`](https://www.evm.codes/#f4), o contrato que nós chamamos.
+
+### Expandindo o custo de memória {#expanding-memory-cost}
+
+O custo de expandir a memória (se necessário).
+
+Na equação 324, este valor é escrito como _Cmem(μi')-Cmem(μi)_. Olhando na seção 9.4.1 novamente, nós vemos que _μi_ é o número de palavras na memória. Então, _μi_ é o número de palavras na memória antes do opcode e _μi'_ é o número de palavras na memória depois do opcode.
+
+A função _Cmem_ é definida na equação 326: _Cmem(a) = Gmemory × a + ⌊a2 ÷ 512⌋_. _⌊x⌋_ é a função floor, uma função que dado um valor, retorna o maior inteiro que ainda não é maior que o valor. Por exemplo, _⌊2.5⌋ = ⌊2⌋ = 2._ Quando_ a < √512_, _a2 < 512_, e o resultado da função floor é zero. Então para as primeiras 22 palavras (704 bytes), o custo sobe linearmente com o número de palavras na memória necessárias. Além desse ponto _⌊a2 ÷ 512⌋_ é positivo. Quando a memória necessária é grande o suficiente, o custo de gas é proporcional ao quadrado da quantidade de memória.
+
+**Note** que estes fatores somente influenciam o custo de gas _herdado_ - ele não leva em conta a taxa de mercado ou gorjetas aos validadores que determinam quanto um usuário final precisa pagar - isto é apenas o custo líquido de rodar uma operação particular na EVM.
+
+[Leia mais sobre gas](/developers/docs/gas/).
+
+## Ambiente de execução 9.3 {#93-execution-env}
+
+O ambiente de execução é uma tupla, _I_, que inclui informações que não são parte do estado do blockchain ou da EVM.
+
+| Parâmetro | Opcode para acessar o dado | Código Solidity para acessar o dado |
+| --------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
+| _Ia_ | [`ADDRESS`](https://www.evm.codes/#30) | `address(this)` |
+| _Io_ | [`ORIGIN`](https://www.evm.codes/#32) | `tx.origin` |
+| _Ip_ | [`GASPRICE`](https://www.evm.codes/#3a) | `tx.gasprice` |
+| _Id_ | [`CALLDATALOAD`](https://www.evm.codes/#35), etc. | `msg.data` |
+| _Is_ | [`CALLER`](https://www.evm.codes/#33) | `msg.sender` |
+| _Iv_ | [`CALLVALUE`](https://www.evm.codes/#34) | `msg.value` |
+| _Ib_ | [`CODECOPY`](https://www.evm.codes/#39) | `address(this).code` |
+| _IH_ | Campos do cabeçalho do bloco, como [`NUMBER`](https://www.evm.codes/#43) e [`DIFFICULTY`](https://www.evm.codes/#44) | `block.number`, `block.difficulty`, etc. |
+| _Ie_ | Profundidade da pilha de chamada para chamadas entre contratos (incluindo criação de contrato) | |
+| _Iw_ | A EVM tem permissão de mudar de estado, ou está rodando estaticamente | |
+
+Alguns outros poucos parâmetros são necessários para entender o resto da seção 9:
+
+| Parâmetro | Definido na seção | Significado |
+| --------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| _σ_ | 2 (p. 2, equação 1) | O estado do blockchain |
+| _g_ | 9.3 (p. 13) | Gas remanescente |
+| _A_ | 6.1 (p. 8) | Substrato acumulado (muda agendado para quando a transação termina) |
+| _o_ | 9.3 (p. 13) | Saída - o resultado retornado no caso de transação interna (quando um contrato chama outro) e chamadas para funções view (quando você está apenas perguntando por informação, então não há necessidade de esperar pela transação) |
+
+## Visão geral da execução 9.4 {#94-execution-overview}
+
+Agora que temos todas as preliminares, nós podemos finalmente começar a trabalhar como a EVM trabalha.
+
+Equações 137-142 nos dá as condições iniciais para rodar a EVM:
+
+| Símbolo | Valor inicial | Significado |
+| ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| _μg_ | _g_ | Gas remanescente |
+| _μpc_ | _0_ | Contador do programa, o endereço da próxima instrução para executar |
+| _μm_ | _(0, 0, ...)_ | Memória, inicializada toda com zeros |
+| _μi_ | _0_ | Maior locação de memória usada |
+| _μs_ | _()_ | A pilha, inicialmente vazia |
+| _μo_ | _∅_ | O resultado, conjunto vazio até e, a não ser que nós paremos ou com os dados de retorno ([`RETURN`](https://www.evm.codes/#f3) ou [`REVERT`](https://www.evm.codes/#fd)) ou sem ele ([`STOP`](https://www.evm.codes/#00) ou [`SELFDESTRUCT`](https://www.evm.codes/#ff)). |
+
+A equação 143 nos conta que há quatro condições possíveis em cada ponto no tempo durante a execução, e o que fazer com elas:
+
+1. `Z(σ,μ,A,I)`. Z representa uma função que testa se uma operação cria uma transição de estado inválida (veja [parada excepcional](#942-exceptional-halting)). Se ele for avaliado para True, o novo estado é idêntico ao antigo (exceto o gas que foi queimado) porque as mudanças não foram implementadas.
+2. Se o the opcode sendo executado é [`REVERT`](https://www.evm.codes/#fd), o novo estado é o mesmo que o antigo estado, algum gas é perdido.
+3. Se a sequência de operações for finalizada, como significa um [`RETURN`](https://www.evm.codes/#f3)), o estado é atualizado para o novo estado.
+4. Se não estivermos em uma das condições finais 1-3, continua rodando.
+
+## Estado da Máquina 9.4 {#941-machine-state}
+
+Esta seção explica o estado da máquina em maiores detalhes. Ela especifica que _w_ é o opcode atual. Se _μpc_ é menor que _||Ib||_, o tamanho do código, então aquele byte (_Ib[μpc]_) é o opcode. Caso contrário, o opcode é definido como [`STOP`](https://www.evm.codes/#00).
+
+Como esse é uma [máquina de pilha](https://en.wikipedia.org/wiki/Stack_machine), nós precisamos rastrear o número de itens que apareceram (_δ_) e empurraram em (_α_) por cada opcode.
+
+## Interrupção excepcional 9.4.2 {#942-exceptional-halt}
+
+Esta seção define a função _Z_, a qual especifica quando nós temos uma terminação anormal. Isto é uma função [booleana](https://en.wikipedia.org/wiki/Boolean_data_type), então ela usa [_∨_ para um ou lógico](https://en.wikipedia.org/wiki/Logical_disjunction) e [_∧_ para um e lógico](https://en.wikipedia.org/wiki/Logical_conjunction).
+
+Nós temos uma parada excepcional se qualquer destas condições for verdadeira:
+
+- **_μg < C(σ,μ,A,I)_** Como vimos na seção 9.2, _C_ é a função que especifica o custo de gas. Não há gas suficiente deixado para cobrir o próximo opcode.
+
+- **_δw=∅_** Se o número de itens que apareceram para um opcode é indefinido, então o opcode em si é indefinido.
+
+- **_|| μs || < δw_** Underflow de pilha, itens não suficientes na pilha para o opcode atual.
+
+- **_w = JUMP ∧ μs[0]∉D(Ib)_** O opcode é [`JUMP`](https://www.evm.codes/#56) e o endereço não é um [`JUMPDEST`](https://www.evm.codes/#5b). Saltos são _somente_ válidos quando o destino é um [`JUMPDEST`](https://www.evm.codes/#5b).
+
+- **_w = JUMPI ∧ μs[1]≠0 ∧ μs[0] ∉ D(Ib)_** O opcode é [`JUMPI`](https://www.evm.codes/#57), a condição é verdadeira (não zero) então o salto pode acontecer, e o endereço não é um [`JUMPDEST`](https://www.evm.codes/#5b). Saltos são _somente_ válidos quando o destino é um [`JUMPDEST`](https://www.evm.codes/#5b).
+
+- **_w = RETURNDATACOPY ∧ μs[1]+μs[2]>|| μo ||_** O opcode é [`RETURNDATACOPY`](https://www.evm.codes/#3e). Neste elemento da pilha de opcode _μs[1]_ é o offset de onde se lê no buffer de retorno de dados, e elemento da pilha _μs[2]_ é o tamanho do dado. A condição ocorre quando você tenta ler além do fim do buffer de dado de retorno. Note que não há uma condição similar para o calldata ou para o código ele mesmo. Quando você tentar ler além do fim destes buffers, você obtém somente zeros.
+
+- **_|| μs || - δw + αw > 1024_**
+
+ Overflow de pilha. Se rodando o opcode resultar em uma pilha com mais de 1.024 itens, aborte.
+
+- **_¬Iw ∧ W(w,μ)_** Estamos rodando estaticamente ([¬ é negação](https://en.wikipedia.org/wiki/Negation) e_Iw_ é verdade quando nós somos permitidos mudar o estado do blockchain)? Se sim, e nós estamos tentando mudar o estado da operação, ela pode acontecer.
+
+ A função _W(w,μ)_ é definida mais tarde na equação 150. _W(w,μ)_ é verdade se uma destas condições for verdadeira:
+
+ - **_w ∈ {CREATE, CREATE2, SSTORE, SELFDESTRUCT}_** Estes opcodes mudando o estado, ou criando um novo contrato, armazenando valor, ou destruindo o contrato atual.
+
+ - **_LOG0≤w ∧ w≤LOG4_** Se nãos formos chamados estaticamente, nós não podemos emitir entradas de log. Os opcodes de log estão todos na faixa entre [`LOG0` (A0)](https://www.evm.codes/#a0) e [`LOG4` (A4)](https://www.evm.codes/#a4). O número depois do opcode de log especifica quantos tópicos a entrada de log contém.
+ - **_w=CALL ∧ μs[2]≠0_** Você pode chamar um outro contrato quando você está estático, mas se você o fizer, você não pode transferir ETH para ele.
+
+- **_w = SSTORE ∧ μg ≤ Gcallstipend_** Você não pode rodar [`SSTORE`](https://www.evm.codes/#55) a não ser que você tenha mais que Gcallstipend (definido como 2300 no apêndice G) gas.
+
+## Validade do Destino do Salto 9.4.3 {#943-jump-dest-valid}
+
+Aqui nós definimos formalmente quais são os opcodes [`JUMPDEST`](https://www.evm.codes/#5b). Nós não podemos apenas procurar por valor de byte 0x5B, porque ele pode estar dentro de um PUSH (e, portanto, dado, não um opcode).
+
+Na equação (153) nós definimos a função, _N(i,w)_. O primeiro parâmetro, _i_, é a localização do opcode. A segunda, _w_, é o próprio opcode. Se _w∈[PUSH1, PUSH32]_ que significa que o opcode é um PUSH (colchetes definem uma faixa que inclui os endpoints). Se esse caso, o próximo opcode é em _i+2+(w−PUSH1)_. Para [`PUSH1`](https://www.evm.codes/#60) nós precisamos avançar dois bytes (o PUSH propriamente dito e o valor de um byte), para [`PUSH2`](https://www.evm.codes/#61) nós precisamos avançar três bytes porque é um valor de dois bytes, etc. Todos os outros opcodes EVM são apenas um byte de comprimento, então em todos os outros casos _N(i,w)=i+1_.
+
+Esta função é usada na equação (152) para definir _DJ(c,i)_, o qual é o [conjunto](https://en.wikipedia.org/wiki/Set_(mathematics)) de todos as destinações válidas de salto no código _c_, começando com a localização do opcode _i_. Esta função é definida recursivamente. Se _i≥||c||_, isto significa que nós estamos no fim do código ou depois dele. Nós não vamos descobrir mais nenhuma destinação de salto, então apenas retorna um conjunto vazio.
+
+Em todos os outros casos nós estamos olhando no resto do código indo para o próximo opcode e obtendo o conjunto iniciando dele. _c[i]_ é o opcode atual, então _N(i,c[i])_ é a localização do próximo opcode. _DJ(c,N(i,c[i]))_ é portanto o conjunto de destinos válidos de jump que começa no próximo opcode. Se o opcode atual não é um`JUMPDEST`, apenas retorne aquele conjunto. Se ele é `JUMPDEST`, inclua-o no conjunto de resultado e retorne-o.
+
+## Parada normal 9.4.4 {#944-normal-halt}
+
+A função halting _H_, pode retornar três tipos de valores.
+
+- Se nós não estivermos em um opcode halt, retorne _∅_, o conjunto vazio. Por convenção, este valor é interpretado como o falso booleano.
+- Se nós temos um opcode halt que não produz saída (seja um [`STOP`](https://www.evm.codes/#00) ou [`SELFDESTRUCT`](https://www.evm.codes/#ff)), retorna uma sequência de tamanho zero bytes como valor de retorno. Note que isto é muito diferente do conjunto vazio. Este valor significa que a EVM realmente parou, apenas não há dados de retorno para ler.
+- Se nós tivermos um opcode de halt que produz sim saída (seja [`RETURN`](https://www.evm.codes/#f3) ou [`REVERT`](https://www.evm.codes/#fd)), retorna a sequência de bytes especificada por este opcode. Esta sequência é pega da memória, o valor no topo da pilha (_μs[0]_) é o primeiro byte, e o valor depois dele (_μs[1]_) é o comprimento.
+
+## Conjunto de instruções H.2 {#h2-instruction-set}
+
+Antes de nós irmos para a subseção final da EVM, 9.5, vamos ver as instruções propriamente ditas. Elas estão definidas no apêndice H.2 que começa na página 29. Qualquer coisa que não esteja especificada como mudança com este específico opcode é esperada que continue o mesmo. Variáveis que realmente mudam são especificadas como \′.
+
+Por exemplo, vamos olhar o opcode [`ADD`](https://www.evm.codes/#01).
+
+| Valor | Mnemônico | δ | α | Descrição |
+| -----:| --------- | - | - | --------------------------------------------------------- |
+| 0x01 | ADD | 2 | 1 | Operação adição. |
+| | | | | _μ′s[0] ≡ μs[0] + μs[1]_ |
+
+_δ_ é o número de valores que nós pegamos da pilha. Neste caso dois, porque nós estamos adicionando no topo dois valores.
+
+_α_ é o número de valores que nós retrocedemos. Neste caso um, a soma.
+
+Então o novo topo da pilha (_μ′s[0]_) é a soma do velho topo da pilha (_μs[0]_) e o velho valor abaixo dele (_μs[1]_).
+
+Ao invés de passar por todos os opcodes com olhos vidrados na lista, este artigo explica somente aqueles opcodes que introduzem algo novo.
+
+| Valor | Mnemônico | δ | α | Descrição |
+| -----:| --------- | - | - | ---------------------------------------------------------------------------------------------------------- |
+| 0x20 | KECCAK256 | 2 | 1 | Computa o hash Keccak-256. |
+| | | | | _μ′s[0] ≡ KEC(μm[μs[0] . . . (μs[0] + μs[1] − 1)])_ |
+| | | | | _μ′i ≡ M(μi,μs[0],μs[1])_ |
+
+Este é o primeiro opcode que acessa memória (nesse caso, somente leitura). Entretanto, ele pode expandir além dos limites atuais de memória, portanto nós precisamos atualizar _μi._ Nós fazemos isso usando a função _M_ definida na equação 328 na pág. 29.
+
+| Valor | Mnemônico | δ | α | Descrição |
+| -----:| --------- | - | - | ---------------------------- |
+| 0x31 | BALANCE | 1 | 1 | Obtém o saldo de dada conta. |
+| | | | | ... |
+
+O endereço destes saldos que nós precisamos encontrar é _μs[0] mod 2160_. O topo da pilha é o endereço, mas por endereços serem somente 160 bits, nós calculamos o valor [modulo](https://en.wikipedia.org/wiki/Modulo_operation) 2160.
+
+Se _σ[μs[0] mod 2160] ≠ ∅_, isto significa que há informação sobre este endereço. Neste caso, _σ[μs[0] mod 2160]b_ é o saldo para aquele endereço. Se _σ[μs[0] mod 2160] = ∅_, significa que este endereço não está inicializado e que o saldo é zero. Você pode ver a lista de campos de informações de contas na seção 4.1 na página 4.
+
+A segunda equação, _A'a ≡ Aa ∪ {μs[0] mod 2160}_, é relacionada com a diferença no custo entre acesso à warm storage (storage que foi recenteimente acessada e é provável que esteja em cache) e cold storage (storage que não tem sido acessada e provavelmente esteja em uma storage mais lenta, que é mais cara para se recuperar). _Aa_ é a lista de endereços previamente acessados pela transação, que deveria, portanto ser de acesso mais barato, como definido na seção 6.1 na página 8. Você pode ler mais sobre este assunto em [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929).
+
+| Valor | Mnemônico | δ | α | Descrição |
+| -----:| --------- | -- | -- | --------------------------------------- |
+| 0x8F | DUP16 | 16 | 17 | Duplica o 16o item da pilha. |
+| | | | | _μ′s[0] ≡ μs[15]_ |
+
+Note que para usar qualquer item da pilha, nós precisamos pegá-lo, o que significa que nós também precisamos pegar todos os itens da pilha acima dele. No caso de [`DUP`](https://www.evm.codes/#8f) e [`SWAP`](https://www.evm.codes/#9f), isto significa ter que pegar e então empurrar os dezesseis valores.
+
+## O ciclo de execução 9.5 {#95-exec-cycle}
+
+Agora que nós temos todas as partes, nós podemos finalmente entender como o ciclo de execução da EVM é documentado.
+
+A equação (155) diz que dado o estado:
+
+- _σ_ (estado global do blockchain)
+- _μ_ (estado da EVM)
+- _A_ (sub-estado, mudanças a acontecer quando a transação terminar)
+- _I_ (ambiente de execução)
+
+O novo estado é _(σ', μ', A', I')_.
+
+Equações (156)-(158) definem a pilha e a mudança nela devido a um opcode (_μs_). Equação (159) é a mudança em gas (_μg_). Equação (160) é a mudança no contador do programa (_μpc_). Finalmente, equações (161)-(164) especificam que os outros parâmetros continuam iguais, salvo explicitamente mudados pelo opcode.
+
+Com isto, a EVM está totalmente definida.
+
+## Conclusão {#conclusion}
+
+Notação matemática é precisa e tem permitido o Yellow Paper especificar cada detalhe do Ethereum. Entretanto, ela tem realmente algumas desvantagens:
+
+- Ela só pode ser entendida por humanos, o que significa que [testes de conformidade](https://github.com/ethereum/tests) devem ser escritos manualmente.
+- Programadores entendem código de computador. Eles podem ou não entender notação matemática.
+
+Talvez por estas razões, a mais nova [especificação da camada de consenso](https://github.com/ethereum/consensus-specs/blob/dev/tests/core/pyspec/README.md) seja escrita em Python. Estas são [especificações da camada de execução em Python](https://ethereum.github.io/execution-specs), mas elas não estão completas. Até que, ou a não ser que, o Yellow Paper inteiro esteja também traduzido para Python ou linguagem similar, o Yellow Paper continuará em serviço, e é útil ser capaz de lê-lo.
diff --git a/public/content/translations/pt-br/enterprise/index.md b/public/content/translations/pt-br/enterprise/index.md
index 06041f03963..55796b31763 100644
--- a/public/content/translations/pt-br/enterprise/index.md
+++ b/public/content/translations/pt-br/enterprise/index.md
@@ -57,11 +57,13 @@ Diversas organizações trabalharam juntas para tornar o Ethereum amigável para
- O [Hyperledger Besu](https://www.hyperledger.org/use/besu) _é um cliente Ethereum de código aberto desenvolvido sob licença Apache 2.0 e escrito em Java_
- O [Infura](https://infura.io/) _é uma API escalável de acesso às redes Ethereum e IPFS_
- O [Kaleido](https://kaleido.io/) _é uma plataforma de desenvolvimento focada em empresas que oferece uma cadeia de blocos simplificada e aplicativos de ativos digitais_
+- [NodeReal](https://nodereal.io/) _fornece infraestrutura de blockchain escalável e a API do provedor de serviços para o ecossistema Web3_
- O [Provide](https://provide.services/) _fornece infraestrutura e APIs para aplicativos Web3 para empresas_
- O [QuickNode](https://www.quicknode.com/) _fornece nós confiáveis e rápidos com APIs de alto nível como NFT API, Token API, entre outras, enquanto entrega um pacote unificado de produtos e soluções de nível empresarial_
- [Tenderly](https://tenderly.co) _é uma plataforma de desenvolvimento Web3 que fornece blocos de depuração de infraestrutura, observação e construção para desenvolvimento, teste, monitoramento e operação de contratos inteligentes_
- A [Unibright](https://unibright.io/) _é uma equipe de especialistas, arquitetos, desenvolvedores e consultores da blockchain, com mais de 20 anos de experiência em processos de negócios e integração_
- [Zero Services GmbH](https://www.zeroservices.eu/) _é um provedor de serviços gerenciados espalhado por locais compartilhados na Europa e na Ásia. Opera e monitora seus nós de forma segura e confiável_
+- [Zeeve](https://www.zeeve.io/) _fornece uma variedade de produtos e ferramentas de criação no Ethereum, além de infraestrutura e APIs para aplicativos Web3 para empresas._
### Ferramentas e bibliotecas {#tooling-and-libraries}
diff --git a/public/content/translations/pt-br/enterprise/private-ethereum/index.md b/public/content/translations/pt-br/enterprise/private-ethereum/index.md
index cafab5463b4..88829be24b7 100644
--- a/public/content/translations/pt-br/enterprise/private-ethereum/index.md
+++ b/public/content/translations/pt-br/enterprise/private-ethereum/index.md
@@ -25,3 +25,4 @@ Diversas organizações trabalharam juntas para tornar o Ethereum amigável para
- [Hyperledger Burrow](https://www.hyperledger.org/projects/hyperledger-burrow) _cliente de cadeia de blocos modular com um intérprete de contratos inteligentes autorizados, parcialmente desenvolvido para a especificação da Máquina Virtual do Ethereum (EVM)_
- [Kaleido](https://kaleido.io/) _ é uma plataforma de pilha completa para construção e execução de ecossistemas empresariais multinuvem e híbridos_
- [Quorum](https://consensys.net/quorum/) _ é uma plataforma de cadeia de blocos para empresas de código aberto baseada em Ethereum, com recursos avançados de nível empresarial, oferecendo privacidade, permissões e desempenho_
+- [Zeeve](https://www.zeeve.io/) _fornece uma variedade de produtos e ferramentas de criação no Ethereum, além de infraestrutura e APIs para aplicativos Web3 para empresas_
diff --git a/public/content/translations/pt-br/foundation/index.md b/public/content/translations/pt-br/foundation/index.md
index 42fa4af0da1..2d62dcf90cf 100644
--- a/public/content/translations/pt-br/foundation/index.md
+++ b/public/content/translations/pt-br/foundation/index.md
@@ -27,7 +27,7 @@ Desde 2014, a Fundação Ethereum organiza a Devcon, uma conferência anual para
Você pode acessar todo o conteúdo de vídeo das conferências de cada ano em [archive.devcon.org](https://archive.devcon.org/).
-Saiba mais em [devcon.org](https://devcon.org/), confira o [Blog da Devcon](https://devcon.org/en/blogs/) ou siga [@efdevcon](https://twitter.com/EFDevcon) para ler os últimos comunicados.
+Saiba mais em [devcon.org](https://devcon.org/), confira o [Blog da Devcon](https://blog.ethereum.org/category/events/) ou siga [@efdevcon](https://twitter.com/EFDevcon) para ler os últimos comunicados.
### Programa de Bolsas {#fellowship-program}
diff --git a/public/content/translations/pt-br/history/index.md b/public/content/translations/pt-br/history/index.md
index c4793903270..ef2ab6670a3 100644
--- a/public/content/translations/pt-br/history/index.md
+++ b/public/content/translations/pt-br/history/index.md
@@ -13,7 +13,7 @@ Uma linha do tempo dos principais marcos, bifurcações e atualizações da bloc
Bifurcações ocorrem quando grandes atualizações ou alterações técnicas precisam ser feitas na rede, que geralmente são decorrentes de [Propostas de Melhoria do Ethereum (EIPs)] (/ eips /) e alteram as "regras" do protocolo.
-Quando é necessário atualizar um software tradicional, com controle centralizado, a empresa apenas publica uma nova versão para o usuário final. Blockchains funcionam de maneira diferente porque não há propriedade centralizada. [Clientes Ethereum](/developers/docs/nodes-and-clients/) devem atualizar seu software para implementar as novas regras da bifurcação. Além disso, os criadores de bloco (mineradores em um mundo com prova de trabalho, validadores em um mundo com prova de participação) e nós devem criar blocos e validá-los conforme as novas regras. [Mais sobre mecanismos de consenso](/developers/docs/consenus-mechanisms/)
+Quando é necessário atualizar um software tradicional, com controle centralizado, a empresa apenas publica uma nova versão para o usuário final. Blockchains funcionam de maneira diferente porque não há propriedade centralizada. [Clientes Ethereum](/developers/docs/nodes-and-clients/) devem atualizar seu software para implementar as novas regras da bifurcação. Além disso, os criadores de bloco (mineradores em um mundo com prova de trabalho, validadores em um mundo com prova de participação) e nós devem criar blocos e validá-los conforme as novas regras. [Mais sobre mecanismos de consenso](/developers/docs/consensus-mechanisms/)
Essas mudanças de regra podem criar uma divisão temporária na rede. Novos blocos podem ser produzidos conforme as novas regras ou as antigas. Geralmente, as bifurcações são acordadas antes do tempo, para que os clientes adotem as mudanças de uníssono e para que a bifurcação com as melhorias se torne a cadeia principal. No entanto, em casos raros, desacordos sobre as bifurcações podem fazer com que a rede seja dividida permanentemente. Esse foi notadamente o caso para a criação do Ethereum Classic com a [bifurcação DAO] (#dao-fork).
diff --git a/public/content/translations/pt-br/roadmap/account-abstraction/index.md b/public/content/translations/pt-br/roadmap/account-abstraction/index.md
index 88cdc8a6cca..b8d4f7fcfef 100644
--- a/public/content/translations/pt-br/roadmap/account-abstraction/index.md
+++ b/public/content/translations/pt-br/roadmap/account-abstraction/index.md
@@ -32,7 +32,7 @@ Se você perder as suas chaves, elas não poderão ser recuperadas, e as chaves
As carteiras de contratos inteligentes são a solução para esses problemas, mas atualmente são difíceis de programar porque, no final, qualquer lógica que elas implementem precisa ser traduzida em um conjunto de transações EOA antes que possam ser processadas pelo Ethereum. A abstração de conta permite que contratos inteligentes iniciem as próprias transações. Dessa forma, qualquer lógica que o usuário queira implementar poderá ser codificada na própria carteira de contrato inteligente e executada no Ethereum.
-Em última análise, a abstração de contas melhora o suporte a carteiras de contratos inteligentes, tornando-as mais fáceis de criar e mais seguras de usar. No final, com a abstração de conta, os usuários podem aproveitar todos os benefícios do Ethereum sem precisar conhecer ou se preocupar com a tecnologia subjacente.
+Na realidade, é a abstração de contas que melhora o suporte a carteiras de contratos inteligentes, tornando-as mais fáceis de criar e mais seguras de usar. No final, com a abstração de conta, os usuários podem aproveitar todos os benefícios do Ethereum sem precisar conhecer ou se preocupar com a tecnologia subjacente.
## Além das frases sementes {#beyond-seed-phrases}
@@ -47,8 +47,8 @@ Por exemplo, as chaves de backup podem ser adicionadas a uma carteira para que,
- **Autorização multisig**: você pode compartilhar credenciais de autorização entre várias pessoas ou dispositivos confiáveis. Em seguida, o contrato pode ser configurado de modo que as transações superiores a um valor predefinido exijam autorização de uma proporção específica (por exemplo, 3/5) das partes confiáveis. Por exemplo, transações de alto valor podem exigir a aprovação de um dispositivo móvel e de uma carteira de hardware, ou assinaturas de contas distribuídas a familiares confiáveis.
- **Congelamento de conta**: se um dispositivo for perdido ou comprometido, a conta pode ser bloqueada a partir de outro dispositivo autorizado, protegendo os ativos do usuário.
- **Recuperação de conta**: perdeu um dispositivo ou esqueceu uma senha? No paradigma atual, isso significa que os seus ativos podem ser congelados para sempre. Com uma carteira de contrato inteligente, você pode definir algumas contas pré-aprovadas que podem autorizar novos dispositivos e redefinir o acesso.
-- **Definir limites de transação**: especifique limites diários de quanto valor pode ser transferido da conta em um dia/semana/mês. Isso significa que, se um invasor obtiver acesso à sua conta, ele não poderá ficar com tudo de uma vez e você terá oportunidades de congelar e redefinir o acesso.
-- **Criar listas de permissões**: permita transações apenas para endereços específicos, que você sabe que são seguros. Isso significa que, _mesmo_ em caso de roubo da sua chave privada, o invasor não poderia enviar fundos para contas de destino não autorizadas. Essas listas de permissão exigiriam várias assinaturas para alterá-las, de modo que um invasor não poderia adicionar o endereço dele à lista, a menos que tivesse acesso a diversas das suas chaves de backup.
+- **Definição de limites de transações**: especifique limites diários de transferência de valores da conta em um dia/semana/mês. Isso significa que, se um invasor obtiver acesso à sua conta, ele não poderá ficar com tudo de uma vez e você terá oportunidades de congelar e redefinir o acesso.
+- **Criação de listas de permissões**: só permita transações para determinados endereços tidos como seguros. Isso significa que, _mesmo_ em caso de roubo da sua chave privada, o invasor não poderia enviar fundos para contas de destino não autorizadas. Essas listas de permissão exigiriam várias assinaturas para alterá-las, de modo que um invasor não poderia adicionar o endereço dele à lista, a menos que tivesse acesso a diversas das suas chaves de backup.
## Melhor experiência do usuário {#better-user-experience}
diff --git a/public/content/translations/pt-br/roadmap/beacon-chain/index.md b/public/content/translations/pt-br/roadmap/beacon-chain/index.md
index 1b334ff6b1e..281cee99397 100644
--- a/public/content/translations/pt-br/roadmap/beacon-chain/index.md
+++ b/public/content/translations/pt-br/roadmap/beacon-chain/index.md
@@ -20,7 +20,7 @@ Beacon Chain é o nome do blockchain de prova de participação original que foi
## O que a Beacon Chain faz? {#what-does-the-beacon-chain-do}
-Beacon Chain é o nome dado a um registro de contas que orientava e coordenava a rede de [stakers](/participantes/) do Ethereum antes que começassem a validar blocos reais do Ethereum. Entretanto, não processa transações nem interações de contratos inteligentes, pois isso é feito na camada de execução. A Beacon Chain é responsável por atividades como processamento de blocos e atestações, executação do algoritmo de escolha de bifurcação e gerenciamento de recompensas e penalidades. Leia mais em nossa [página de arquitetura de nós](/developers/docs/nodes-and-clients/node-architecture/#node-comparison).
+Beacon Chain é o nome dado a um registro de contas que orientava e coordenava a rede de [stakers](/staking/) do Ethereum antes que começassem a validar blocos reais do Ethereum. Entretanto, não processa transações nem interações de contratos inteligentes, pois isso é feito na camada de execução. A Beacon Chain é responsável por atividades como processamento de blocos e atestações, executação do algoritmo de escolha de bifurcação e gerenciamento de recompensas e penalidades. Leia mais em nossa [página de arquitetura de nós](/developers/docs/nodes-and-clients/node-architecture/#node-comparison).
## O impacto da Beacon Chain {#beacon-chain-features}
@@ -28,7 +28,7 @@ Beacon Chain é o nome dado a um registro de contas que orientava e coordenava a
A Beacon Chain introduziu a [prova de participação](/developers/docs/consensus-mechanisms/pos/) no Ethereum. Isso mantém o Ethereum protegido e os validadores recebem mais ETH no processo. Na prática, você precisará participar com os seus ETH para ativar o software de validador. Como participante, você executa o software que cria e valida novos blocos na cadeia.
-O processo de participação tem um objetivo semelhante ao da [mineração](/developers/docs/mining/), mas tem muitas diferenças. A mineração exigia grandes investimentos iniciais na forma de um hardware potente e consumo de energia, o que resultava em economias de escala e promovia a centralização. A mineração também não tem como garantia uma exigência de bloqueio de ativos, o que limita a capacidade do protocolo de punir os malfeitores após um ataque.
+O processo de participação tem um objetivo semelhante ao da [mineração](/developers/docs/consensus-mechanisms/pow/mining/), mas tem muitas diferenças. A mineração exigia grandes investimentos iniciais na forma de um hardware potente e consumo de energia, o que resultava em economias de escala e promovia a centralização. A mineração também não tem como garantia uma exigência de bloqueio de ativos, o que limita a capacidade do protocolo de punir os malfeitores após um ataque.
A transição para a prova de participação tornou o Ethereum consideravelmente mais seguro e descentralizado, em comparação com a prova de trabalho. Quanto mais pessoas participarem da rede, mais descentralizada e segura contra ataques ela será.
diff --git a/public/content/translations/pt-br/roadmap/index.md b/public/content/translations/pt-br/roadmap/index.md
index 22cdf38bada..3bab123ac1c 100644
--- a/public/content/translations/pt-br/roadmap/index.md
+++ b/public/content/translations/pt-br/roadmap/index.md
@@ -3,7 +3,7 @@ title: Planejamento Ethereum
description: O caminho para mais escalabilidade, segurança e sustentabilidade no Ethereum.
lang: pt-br
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Planejamento Ethereum"
summaryPoints:
buttons:
@@ -59,7 +59,7 @@ O Ethereum recebe melhorias regulares que aprimoram a escalabilidade, a seguran
-O planejamento é, em grande parte, o resultado de anos de trabalho de pesquisadores e desenvolvedores, pois o protocolo é muito técnico, mas qualquer pessoa motivada pode participar. As ideias geralmente começam como discussões em um fórum, como [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) ou no servidor Eth R&D no Discord. Elas podem ser respostas a novas vulnerabilidades constatadas, sugestões de organizações que trabalham na camada de aplicativos (como dApps e corretoras) ou de atritos conhecidos junto a usuários finais (como custos ou velocidades de transação). Quando essas ideias amadurecem, elas podem ser apresentadas como [Propostas de melhorias do Ethereum] (https://eips.ethereum.org/). Tudo isso é feito abertamente, e qualquer pessoa da comunidade pode dar sua opinião, a qualquer momento.
+O planejamento é, em grande parte, o resultado de anos de trabalho de pesquisadores e desenvolvedores, pois o protocolo é muito técnico, mas qualquer pessoa motivada pode participar. As ideias geralmente começam como discussões em um fórum, como [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://ethereum-magicians.org) ou no servidor Eth R&D no Discord. Elas podem ser respostas a novas vulnerabilidades constatadas, sugestões de organizações que trabalham na camada de aplicativos (como dApps e corretoras) ou de atritos conhecidos junto a usuários finais (como custos ou velocidades de transação). Quando essas ideias amadurecem, elas podem ser apresentadas como [Propostas de melhorias do Ethereum] (https://eips.ethereum.org/). Tudo isso é feito abertamente, e qualquer pessoa da comunidade pode dar sua opinião, a qualquer momento.
[Mais sobre a governança do Ethereum](/governance/)
diff --git a/public/content/translations/pt-br/roadmap/single-slot-finality/index.md b/public/content/translations/pt-br/roadmap/single-slot-finality/index.md
index 56a8f504565..ff826aae6d8 100644
--- a/public/content/translations/pt-br/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/pt-br/roadmap/single-slot-finality/index.md
@@ -37,7 +37,7 @@ Com o design do mecanismo atual, para reduzir o tempo de finalização, é neces
O mecanismo de consenso atual combina atestações de diversos validadores, conhecidos como "comitês", para reduzir o número de mensagens que cada validador precisa processar para validar um bloco. Cada validador tem a oportunidade de atestar em cada época (32 espaços), mas em cada espaço, apenas um subconjunto de validadores, conhecido como uma atestação de "comitê". Eles fazem isso ao se dividir em sub-redes, nas quais alguns validadores são selecionados para serem "agregadores". Esses agregadores combinam, em uma única assinatura agregada, todas as assinaturas que observam de outros validadores na respectiva sub-rede. O agregador que inclui o maior número de contribuições individuais passa a assinatura agregada ao proponente do bloco, que a inclui no bloco juntamente com a assinatura agregada dos demais comitês.
-Esse processo oferece capacidade suficiente para cada validador votar em cada época, porque "32 espaços _ 64 comitês _ 256 validadores por comitê = 524.288 validadores por época". No momento da redação deste artigo (fevereiro de 2023), há aproximadamente 513.000 validadores ativos.
+Esse processo oferece capacidade suficiente para cada validador votar em cada época, porque "32 espaços * 64 comitês * 256 validadores por comitê = 524.288 validadores por época". No momento da redação deste artigo (fevereiro de 2023), há aproximadamente 513.000 validadores ativos.
Nesse esquema, só é possível que cada validador vote em um bloco se distribuir as respectivas atestações por toda a época. Entretanto, há potencialmente maneiras de aprimorar o mecanismo para que _cada validador tenha a chance de atestar em cada espaço_.
@@ -58,7 +58,7 @@ O problema da escalabilidade da agregação por meio do aumento do número de va
## Progresso atual {#current-progress}
-A SSF está em fase de pesquisa. A implementação não deverá ocorrer por vários anos, provavelmente apenas após outras melhorias consideráveis, como [Verkle Trees](/roadmap/verkle-trees/) e [Danksharding](/roadmap/danksharding]).
+A SSF está em fase de pesquisa. A implementação não deverá ocorrer por vários anos, provavelmente apenas após outras melhorias consideráveis, como [Verkle Trees](/roadmap/verkle-trees/) e [Danksharding](/roadmap/danksharding/).
## Leitura adicional {#further-reading}
diff --git a/public/content/translations/pt-br/roadmap/statelessness/index.md b/public/content/translations/pt-br/roadmap/statelessness/index.md
index 4b19b709a66..56fc288c4f5 100644
--- a/public/content/translations/pt-br/roadmap/statelessness/index.md
+++ b/public/content/translations/pt-br/roadmap/statelessness/index.md
@@ -66,7 +66,7 @@ Sem estado fraco envolve alterações na maneira como os nós Ethereum verificam
**Em sem estado fraco, propor blocos exige acesso a dados de estado completos, mas verificar blocos não exige dados do estado**
-Para que isso aconteça, [Verkle Trees](/roadmap/verkle-trees) já devem ter sido implementadas nos clientes Ethereum. As Verkle Trees são uma estrutura de dados de substituição para armazenar dados de estado do Ethereum que permitem que "testemunhas" pequenas e de tamanho fixo dos dados sejam transmitidas entre pares e utilizadas para verificar blocos, em vez de verificar blocos com relação aos bancos de dados locais. A [separação entre proponente e construtor](/roadmap/pbs/) também é necessária, porque isso permite que os construtores de blocos sejam nós especializados com hardware mais poderoso, e esses são os que exigem acesso aos dados de estado completos.
+Para que isso aconteça, [Verkle Trees](/roadmap/verkle-trees/) já devem ter sido implementadas nos clientes Ethereum. As Verkle Trees são uma estrutura de dados de substituição para armazenar dados de estado do Ethereum que permitem que "testemunhas" pequenas e de tamanho fixo dos dados sejam transmitidas entre pares e utilizadas para verificar blocos, em vez de verificar blocos com relação aos bancos de dados locais. A [separação entre proponente e construtor](/roadmap/pbs/) também é necessária, porque isso permite que os construtores de blocos sejam nós especializados com hardware mais poderoso, e esses são os que exigem acesso aos dados de estado completos.
@@ -81,7 +81,7 @@ O conceito "sem estado fraco" está em um estado avançado de pesquisa, mas depe
### Sem estado forte {#strong-statelessness}
-O conceito "sem estado forte" remove a necessidade de armazenamento de dados do estado por qualquer bloco. Em vez disso, as transações são enviadas com testemunhas que podem ser agregadas pelos produtores de blocos. Portanto, os produtores de blocos serão responsáveis por armazenar apenas o estado necessário para gerar testemunhas para as contas relevantes. A responsabilidade pelo estado é quase totalmente transferida para os usuários, pois eles enviam testemunhas e "listas de acesso" para declarar com quais contas e chaves de armazenamento estão interagindo.
+O conceito "sem estado forte" remove a necessidade de armazenamento de dados do estado por qualquer bloco. Em vez disso, as transações são enviadas com testemunhas que podem ser agregadas pelos produtores de blocos. Portanto, os produtores de blocos serão responsáveis por armazenar apenas o estado necessário para gerar testemunhas para as contas relevantes. A responsabilidade pelo estado é quase totalmente transferida para os usuários, pois eles enviam testemunhas e "listas de acesso" para declarar com quais contas e chaves de armazenamento estão interagindo. Embora isso permitiria nódulos altamente leves, seria mais difícil realizar trtansações conm contratos inteligentes.
O conceito "sem estado forte" foi investigado por pesquisadores, mas atualmente não se espera que faça parte do planejamento do Ethereum. É mais provável que o sem estado fraco seja suficiente para as necessidades de escalabilidade do Ethereum.
diff --git a/public/content/translations/pt-br/whitepaper/index.md b/public/content/translations/pt-br/whitepaper/index.md
index 51924a1ce68..cc27215b19e 100644
--- a/public/content/translations/pt-br/whitepaper/index.md
+++ b/public/content/translations/pt-br/whitepaper/index.md
@@ -3,6 +3,7 @@ title: Whitepaper sobre o Ethereum
description: Um documento de introdução ao Ethereum, publicado em 2013 antes de seu lançamento.
lang: pt-br
sidebarDepth: 2
+hideEditButton: true
---
# Whitepaper do Ethereum {#ethereum-whitepaper}
@@ -11,7 +12,7 @@ _Este artigo de introdução foi publicado em 2014 por Vitalik Buterin, o fundad
_Apesar de já terem se passado alguns anos desde sua publicação, nós o mantivemos porque ele continua a ser uma referência útil e uma autêntica representação do Ethereum e de sua visão. Para aprender sobre os desenvolvimentos mais recentes do Ethereum e como as mudanças no protocolo são feitas, recomendamos [este manual](/learn/)._
-[Abra o whitepaper do Ethereum em PDF](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
+[Pesquisadores e acadêmicos que buscam uma versão histórica ou uma versão canônica do whitepaper [de Dezembro de 2014] devem usar este PDF.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
## Uma nova geração de contrato inteligente e plataforma de aplicativos descentralizada {#a-next-generation-smart-contract-and-decentralized-application-platform}
@@ -134,7 +135,7 @@ Mesmo sem nenhuma extensão, o protocolo Bitcoin realmente facilita uma versão
No entanto, o idioma de scripting conforme implementado no Bitcoin tem várias limitações importantes:
- **A falta de completude de Turing** - ou seja, embora haja um grande subconjunto de computação que a linguagem de script de Bitcoin suporta, ele nem de perto suporta tudo. A principal categoria que está faltando são laços (loops). Isso é feito para evitar loops infinitos durante a verificação da transação. Teoricamente é um obstáculo para programadores de script, já que qualquer loop pode ser simulado simplesmente repetindo o código, muitas vezes com uma instrução if, mas leva a scripts que são muito ineficientes em termos de espaço. Por exemplo, a implementação de um algoritmo alternativo de assinatura de curva elíptica provavelmente exigiria 256 rodadas de multiplicação repetidas, todas incluídas individualmente no código.
-- **Valor blindado** - não há como um script UTXO fornecer controle fino sobre o valor que pode ser sacado. Por exemplo, um caso de uso poderoso de um contrato Oracle seria um contrato de hedge, em que A e B colocam BTC 1000 e, após 30 dias, o script envia BTC 1000 para A e o restante para B. Isto exigiria um Oracle para determinar o valor de BTC 1 em USD, mesmo assim é uma grande melhoria em termos de confiança e requisitos de infraestrutura em relação às soluções totalmente centralizadas que estão disponíveis agora. No entanto, como UTXOs são tudo ou nada, a única maneira de conseguir isso é com o hack muito ineficiente de ter muitos UTXO de denominações variadas (por exemplo, um UTXO de 2k para todo k até 30) e fazendo com que O escolha qual UTXO enviar para A e qual para B.
+- **Valor blindado** - não há como um script UTXO fornecer controle fino sobre o valor que pode ser sacado. Por exemplo, um caso de uso poderoso de um contrato Oracle seria um contrato de hedge, em que A e B colocam BTC 1000 e, após 30 dias, o script envia BTC 1000 para A e o restante para B. Isto exigiria um Oracle para determinar o valor de BTC 1 em USD, mesmo assim é uma grande melhoria em termos de confiança e requisitos de infraestrutura em relação às soluções totalmente centralizadas que estão disponíveis agora. No entanto, como os UTXO são tudo ou nada, a única forma de alcançar isso é através do hack muito ineficiente de ter muitos UTXO de denominações variadas (por exemplo, um UTXO de 2k para cada k até 30) e fazer com que o oráculo escolha qual UTXO enviar para A e qual para B.
- **Falta de estado** - UTXOs podem ser gastos ou não. Contratos multiestados ou scripts que mantenham qualquer outro estado interno além disso não são possíveis. Isso dificulta a criação de contratos de opções multiestados, ofertas de troca descentralizadas ou protocolos de compromisso criptográfico de dois estágios (necessários para recompensas computacionais seguras). Isso também significa que o UTXO só pode ser usado para construir contratos pontuais simples e não contratos "com estado" mais complexos (como organizações descentralizadas) torna os meta-protocolos difíceis de implementar. O estado binário combinado com o valor blindado também significa que a importante aplicação de limites de retirada é possível.
- **Blockchain blindada** - o UTXO é blindado para os dados de blockchain, como nonce, carimbos de tempo e hashes de blocos anteriores. Isto limita extremamente as aplicações em jogos de azar e várias outras categorias, privando a linguagem de script de uma fonte potencialmente valiosa de aleatoriedade.
@@ -229,7 +230,7 @@ O código nos contratos Ethereum é escrito em linguagem bytecode "stack-based"
O código também pode acessar o valor, o remetente e os dados da mensagem entrante, bem como os dados do cabeçalho do bloco. Ele também pode retornar um array de bytes como resultado.
-O modelo de execução formal do código EVM é bem simples. Enquanto a máquina virtual Ethereum está em execução, seu estado computacional completo pode ser definido pela tupla `(block_state, transaction, message, code, memory, stack, pc, gas)`, em que `block_state` é o estado global que contém todas as contas e inclui saldos e armazenamento. No início de cada rodada de execução, a instrução atual é encontrada pegando o `pc`ésimo byte de `code` (ou 0 se `pc >= len(code)`), e cada instrução tem sua própria definição em termos de como ela afeta a tupla. Por exemplo, `ADD` retira dois itens do stack e adiciona a soma deles, reduz `gas` em 1, incrementa `pc` em 1 e `SSTORE` retira os dois itens do stack, finalmente insere o segundo item no armazenamento do contrato no índice especificado pelo primeiro item. Embora existam muitas maneiras de otimizar a execução da máquina virtual Ethereum por meio de compilação just-in-time, a implementação básica do Ethereum pode ser feita com poucas centenas de linhas de código.
+O modelo de execução formal do código EVM é bem simples. Enquanto a máquina virtual Ethereum está em execução, seu estado computacional completo pode ser definido pela tupla `(block_state, transaction, message, code, memory, stack, pc, gas)`, em que `block_state` é o estado global que contém todas as contas e inclui saldos e armazenamento. No início de cada rodada de execução, a instrução atual é encontrada pegando o `pc`ésimo byte de `code` (ou 0 se `pc >= len(code)`), e cada instrução tem sua própria definição em termos de como ela afeta a tupla. Por exemplo, `ADD` retira dois itens da pilha e coloca sua soma, reduz o `gás` em 1 e incrementa o `pc` em 1 e o ` SSTORE` remove os dois primeiros itens da pilha e insere o segundo item no armazenamento do contrato, no índice especificado pelo primeiro item. Embora existam muitas maneiras de otimizar a execução da máquina virtual Ethereum por meio de compilação just-in-time, a implementação básica do Ethereum pode ser feita com poucas centenas de linhas de código.
### Blocos e mineração {#blockchain-and-mining}
@@ -314,7 +315,7 @@ Um esboço geral de como codificar uma DAO é o seguinte: o design mais simples
- `[1,i]` para registrar um voto a favor da proposta `i`
- `[2,i]` para finalizar a proposta `i` se houver votos suficientes
-O contrato teria, então, cláusulas para cada uma dessas transações. Ele manteria um registro de todas as mudanças no armazenamento aberto, e uma lista de quem votou nelas. Haveria também uma lista de todos os membros. Quando qualquer alteração de armazenamento chega a dois terços dos membros votando nela, uma transação finalizada poderia executar a mudança. Um esqueleto mais sofisticado também teria capacidade de votação integrada para recursos como enviar uma transação, adicionar e remover membros e poderia até fornecer delegação de votos no estilo [democracia líquida](https://wikipedia.org/wiki/Delegative_democracy), em que qualquer um pode designar alguém para votar em seu lugar, e a designação é transitiva: se A designa B e B designa C, então C determina o voto de A. Este desenho faria a DAO crescer de forma orgânica como comunidade descentralizada, permitindo que pessoas eventualmente delegassem a tarefa de filtrar quem é um membro a especialistas, diferente do "sistema atual" em que especialistas podem aparecer e desaparecer ao longo do tempo à medida que os membros individuais da comunidade mudam seus alinhamentos.
+O contrato teria, então, cláusulas para cada uma dessas transações. Ele manteria um registro de todas as mudanças no armazenamento aberto, e uma lista de quem votou nelas. Haveria também uma lista de todos os membros. Quando qualquer alteração de armazenamento chega a dois terços dos membros votando nela, uma transação finalizada poderia executar a mudança. Um esqueleto mais sofisticado também teria a capacidade de votação integrada para recursos, como enviar uma transação, adicionar e remover membros, e poderia até fornecer uma delegação de votos no estilo [Democracia Líquida](https://wikipedia.org/wiki/Liquid_democracy) (ou seja, qualquer pessoa pode designar alguém para votar em seu lugar, e a designação é transitiva: se A designa B e B designa C, então C determina o voto de A). Este desenho faria a DAO crescer de forma orgânica como comunidade descentralizada, permitindo que pessoas eventualmente delegassem a tarefa de filtrar quem é um membro a especialistas, diferente do "sistema atual" em que especialistas podem aparecer e desaparecer ao longo do tempo à medida que os membros individuais da comunidade mudam seus alinhamentos.
Um modelo alternativo seria o de empresa descentralizada, onde qualquer conta pode ter zero ou mais ações, e dois terços das ações são necessários para se tomar uma decisão. Um esqueleto completo envolveria a funcionalidade de gerenciamento de ativos, a capacidade de fazer uma oferta de compra ou venda de ações, e a capacidade de aceitar ofertas (de preferência com um mecanismo de correspondência de pedidos dentro do contrato). A delegação também existiria no estilo democracia líquida, generalizando o conceito de "conselho de administração".
@@ -501,15 +502,15 @@ O conceito de uma função de transição de estado arbitrária implementada pel
10. [Whitepaper sobre moedas coloridas](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
11. [Whitepaper sobre Mastercoin](https://github.com/mastercoin-MSC/spec)
12. [Empresas autônomas descentralizadas, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
-13. [Verificação de pagamento simplificado](https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification)
+13. [Verificação de pagamento simplificado](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification)
14. [Árvores de Merkle](https://wikipedia.org/wiki/Merkle_tree)
15. [Árvores Patricia](https://wikipedia.org/wiki/Patricia_tree)
16. [GHOST](https://eprint.iacr.org/2013/881.pdf)
17. [StorJ e agentes autónomos, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
-18. [Mike Hearn fala sobre propriedades inteligentes no Festival de Turing](http://www.youtube.com/watch?v=Pu4PAMFPo5Y)
+18. [Mike Hearn fala sobre propriedades inteligentes no Festival de Turing](https://www.youtube.com/watch?v=MVyv4t0OKe4)
19. [Ethereum RLP](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)
20. [Árvores Ethereum Merkle Patricia](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
-21. [Pedro Todd sobre árvores da soma Merkle](http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
+21. [Pedro Todd sobre árvores da soma Merkle](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
_Para a história do whitepaper, veja [esta wiki](https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._
diff --git a/public/content/translations/pt-br/zero-knowledge-proofs/index.md b/public/content/translations/pt-br/zero-knowledge-proofs/index.md
index 6aafda6c72a..9c379a7d0cd 100644
--- a/public/content/translations/pt-br/zero-knowledge-proofs/index.md
+++ b/public/content/translations/pt-br/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Uma introdução não técnica às provas de conhecimento zero para
lang: pt-br
---
-## O que são provas de conhecimento zero? {#what-are-zk-proofs}
+# O que são provas de conhecimento zero? {#what-are-zk-proofs}
Uma prova de conhecimento zero é uma forma de provar a validade de uma afirmação sem a revelar. O “provador” é a parte que tenta provar uma reivindicação, enquanto o “verificador” é responsável pela validação da reivindicação.
diff --git a/public/content/translations/ro/community/events/index.md b/public/content/translations/ro/community/events/index.md
index dcea31a63e8..cdcfe13c902 100644
--- a/public/content/translations/ro/community/events/index.md
+++ b/public/content/translations/ro/community/events/index.md
@@ -4,7 +4,7 @@ description: Cum să vă implicați în comunitatea Ethereum.
lang: ro
---
-## Evenimente apropiate {#events}
+# Evenimente apropiate {#events}
**În fiecare lună au loc evenimenteEthereum majore în întreaga lume.** Gândiți-vă să participați la unul ce se desfășoară în apropiere, pentru a vă întâlni cu mai multe persoane din comunitate, pentru a afla despre oportunități de angajare și pentru a vă dezvolta noi competențe.
diff --git a/public/content/translations/ro/developers/docs/apis/backend/index.md b/public/content/translations/ro/developers/docs/apis/backend/index.md
index 693bccf354a..83c038457cd 100644
--- a/public/content/translations/ro/developers/docs/apis/backend/index.md
+++ b/public/content/translations/ro/developers/docs/apis/backend/index.md
@@ -12,7 +12,7 @@ Dacă vreţi să utilizaţi un anumit limbaj de programare pentru a vă conecta
## Condiții prealabile {#prerequisites}
-Ar putea fi util să înțelegeți [Stiva Ethereum](/developers/docs/ethereum-stack/) și [ Clienții Ethereum](/developers/docs/nodes-and-clients/).
+Ar putea fi util să înțelegeți [Stiva Ethereum](/developers/docs/ethereum-stack/) și [Clienții Ethereum](/developers/docs/nodes-and-clients/).
## De ce să folosiţi o bibliotecă? {#why-use-a-library}
diff --git a/public/content/translations/ro/developers/docs/apis/javascript/index.md b/public/content/translations/ro/developers/docs/apis/javascript/index.md
index 89e836dc565..2e8de5c88ad 100644
--- a/public/content/translations/ro/developers/docs/apis/javascript/index.md
+++ b/public/content/translations/ro/developers/docs/apis/javascript/index.md
@@ -6,7 +6,7 @@ lang: ro
Pentru ca o aplicație web să interacționeze cu blockchain-ul Ethereum (adică să citească datele blockchain-ului și/sau să trimită tranzacții către rețea), trebuie să se conecteze la un nod Ethereum.
-În acest scop, fiecare client Ethereum implementează specificația [JSON-RPC](/developers/docs/apis/json-rpc/), astfel încât să existe un set uniform de [endpoint-uri](/developers/docs/apis/json-rpc/endpoints/) pe care se pot baza aplicațiile.
+În acest scop, fiecare client Ethereum implementează specificația [JSON-RPC](/developers/docs/apis/json-rpc/), astfel încât să existe un set uniform de [endpoint-uri](/developers/docs/apis/json-rpc/) pe care se pot baza aplicațiile.
Dacă doriţi să utilizaţi JavaScript pentru a vă conecta la un nod Ethereum, puteţi să utilizaţi vanilla JavaScript, dar există mai multe biblioteci utile în ecosistem care facilitează mult acest lucru. Cu aceste biblioteci, programatorii pot scrie metode intuitive şi scurte pentru a inițializa cereri JSON RPC (în culise) care interacționează cu Ethereum.
diff --git a/public/content/translations/ro/developers/docs/mev/index.md b/public/content/translations/ro/developers/docs/mev/index.md
index 896b1f00315..2548fad0404 100644
--- a/public/content/translations/ro/developers/docs/mev/index.md
+++ b/public/content/translations/ro/developers/docs/mev/index.md
@@ -8,7 +8,7 @@ Maximal extractable value (MEV) refers to the maximum value that can be extracte
## Miner extractable value
-This concept was first applied under the context of [proof-of-work](/developers/docs/consensus-mechanisms/pow/), and was initially referred to as "miner extractable value." Aceasta deoarece în dovada-muncii (PoW), miner-ii controlează includerea, excluderea și ordonarea tranzacțiilor. However, after the transition to proof-of-stake via [The Merge](/updates/merge) validators will be responsible for these roles, and mining will no longer be applicable. The value extraction methods here will still persist after this transition, and thus a name change was needed. To keep the same acronym for continuity while maintaining the same fundamental meaning, "maximal extractable value" is now used as a more inclusive replacement.
+This concept was first applied under the context of [proof-of-work](/developers/docs/consensus-mechanisms/pow/), and was initially referred to as "miner extractable value." Aceasta deoarece în dovada-muncii (PoW), miner-ii controlează includerea, excluderea și ordonarea tranzacțiilor. However, after the transition to proof-of-stake via [The Merge](/roadmap/merge/) validators will be responsible for these roles, and mining will no longer be applicable. The value extraction methods here will still persist after this transition, and thus a name change was needed. To keep the same acronym for continuity while maintaining the same fundamental meaning, "maximal extractable value" is now used as a more inclusive replacement.
## Condiții prealabile {#prerequisites}
diff --git a/public/content/translations/ro/developers/docs/nodes-and-clients/index.md b/public/content/translations/ro/developers/docs/nodes-and-clients/index.md
index 23cec983ff8..17697acd678 100644
--- a/public/content/translations/ro/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/ro/developers/docs/nodes-and-clients/index.md
@@ -233,8 +233,6 @@ Verificați cu atenţie documentația sau pagina de ajutor a clientului pentru a
`geth --syncmode "light"`
-For further details, check out the tutorial on [running Geth light node](/developers/tutorials/run-light-node-geth/).
-
**Setting up full sync with archive in [Besu](https://besu.hyperledger.org/)**
`besu --sync-mode=FULL`
@@ -312,5 +310,4 @@ There is a lot of information about Ethereum clients on the internet. Here are f
## Tutoriale corelate {#related-tutorials}
-- [Rularea unui nod cu Geth](/developers/tutorials/run-light-node-geth/) _ – Cum se descarcă, se instalează şi se rulează Geth. Covering syncmodes, the JavaScript console, and more._
- [Transformați Raspberry Pi 4 într-un nod validator doar prin flash-area cardului MicroSD – Ghidul de instalare](/developers/tutorials/run-node-raspberry-pi/) _– Flash-ați Raspberry Pi 4, conectați un cablu ethernet, conectați discul SSD și porniți dispozitivul pentru a transforma Raspberry Pi 4 într-un nod Ethereum complet care rulează nivelul de execuție (Mainnet) și / sau nivelul de consens (Lanțul Beacon / validatorul)._
diff --git a/public/content/translations/ro/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/ro/developers/docs/nodes-and-clients/run-a-node/index.md
index 1704805c918..e71bbf5f883 100644
--- a/public/content/translations/ro/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/ro/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -88,7 +88,7 @@ Este bine ca, înainte de a porni software-ul client Ethereum, să efectuați o
- Data și ora sistemului sunt corecte.
- Routerul și firewall-ul acceptă conexiuni pe porturile de ascultare. Clienții Ethereum utilizează în mod implicit un port de ascultare (TCP) și un port de descoperire (UDP), ambele pe 30303 în mod implicit.
-Rulaţi mai întâi clientul pe un testnet, pentru a vă asigura că totul funcționează corect. [Dacă rulaţi un nod ușor Geth](/developers/tutorials/run-light-node-geth/), aceasta ar trebui să vă ajute. Toate setările de client ce nu sunt cele implicite trebuie să fie declarate de la început. You can use flags or the config file to declare your preferred configuration. Consultați documentația clientului dvs. pentru detalii Execuția clientului va iniția funcțiile sale de bază, endpoint-urile alese și va începe să caute partenerii. După ce a reuşit să descopere partenerii, clientul începe sincronizarea. Datele actualizate ale blockchain-ului vor fi disponibile după sincronizarea cu succes a clientului cu starea actuală.
+Rulaţi mai întâi clientul pe un testnet, pentru a vă asigura că totul funcționează corect. Dacă rulaţi un nod ușor Geth, aceasta ar trebui să vă ajute. Toate setările de client ce nu sunt cele implicite trebuie să fie declarate de la început. You can use flags or the config file to declare your preferred configuration. Consultați documentația clientului dvs. pentru detalii Execuția clientului va iniția funcțiile sale de bază, endpoint-urile alese și va începe să caute partenerii. După ce a reuşit să descopere partenerii, clientul începe sincronizarea. Datele actualizate ale blockchain-ului vor fi disponibile după sincronizarea cu succes a clientului cu starea actuală.
### Utilizarea clientului {#using-the-client}
diff --git a/public/content/translations/ro/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/ro/developers/docs/smart-contracts/deploying/index.md
index 3a1edf82da8..c6733389b46 100644
--- a/public/content/translations/ro/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/ro/developers/docs/smart-contracts/deploying/index.md
@@ -10,7 +10,7 @@ Pentru a implementa un contract inteligent, trebuie doar să trimiteţi o tranza
## Condiții prealabile {#prerequisites}
-Ar trebui să înțelegeţi [rețelele Ethereum](/developers/docs/networks/), [tranzacțiile](/developers/docs/transactions/) și [anatomia contractelor inteligente](/developers/docs/smart-contract/anatomy/) înainte de a implementa contracte inteligente.
+Ar trebui să înțelegeţi [rețelele Ethereum](/developers/docs/networks/), [tranzacțiile](/developers/docs/transactions/) și [anatomia contractelor inteligente](/developers/docs/smart-contracts/anatomy/) înainte de a implementa contracte inteligente.
Implementarea unui contract costă de asemenea ether (ETH), deci ar trebui să vă familiarizaţi cu [gazul și taxele](/developers/docs/gas/) pe Ethereum.
diff --git a/public/content/translations/ro/developers/docs/smart-contracts/testing/index.md b/public/content/translations/ro/developers/docs/smart-contracts/testing/index.md
index ed80a85e75f..2097c4979cb 100644
--- a/public/content/translations/ro/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/ro/developers/docs/smart-contracts/testing/index.md
@@ -42,7 +42,7 @@ incomplete: true
- [Configurare de integrare continuă cu Solidity și Truffle](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– Cum se configurează Travis sau Circle CI pentru testare Truffle împreună cu plugin-uri utile._
- [Prezentare generală a produselor de testare](/developers/tutorials/guide-to-smart-contract-security-tools/) _– O prezentare generală și o comparație a diferitelor produse de testare._
- [Cum se folosește Echidna pentru a testa contractele inteligente](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [Cum se folosește Manticore pentru a depista bug-uri în contractele inteligente](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [Cum se folosește Manticore pentru a depista bug-uri în contractele inteligente](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
- [Cum se folosește Slither pentru a depista bug-uri în contractele inteligente](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [Cum să simulaţi contracte Solidity pentru testare](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [Cum să migraţi de la Testele Truffle la mediul de testare OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
diff --git a/public/content/translations/ro/developers/docs/standards/tokens/index.md b/public/content/translations/ro/developers/docs/standards/tokens/index.md
index 3e72207e0ae..58fbf432d8c 100644
--- a/public/content/translations/ro/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/ro/developers/docs/standards/tokens/index.md
@@ -20,7 +20,7 @@ Iată câteva dintre cele mai populare standarde de token-uri pe Ethereum:
- [ERC-20](/developers/docs/standards/tokens/erc-20/) - O interfață standard pentru tokenuri fungibile (interschimbabile), cum ar fi tokenurile de vot, tokenurile de miză sau monedele virtuale.
- [ERC-721](/developers/docs/standards/tokens/erc-721/) - O interfață standard pentru tokenuri nefungibile, cum ar fi un act de proprietate pentru opere de artă sau o melodie.
-- [ERC-777](/developers/docs/docs/standards/tokens/erc-777/) - ERC-777 permite utilizatorilor să construiască funcționalități suplimentare pe lângă tokenuri, cum ar fi un contract de mixare, pentru o mai mare confidențialitate a tranzacțiilor, sau o funcție de recuperare de urgență ca să vă salveze dacă vă pierdeți cheile private.
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - ERC-777 permite utilizatorilor să construiască funcționalități suplimentare pe lângă tokenuri, cum ar fi un contract de mixare, pentru o mai mare confidențialitate a tranzacțiilor, sau o funcție de recuperare de urgență ca să vă salveze dacă vă pierdeți cheile private.
- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 permite efectuarea mai eficientă a tranzacțiilor și gruparea tranzacțiilor – economisind astfel costurile. Acest standard de tokenuri facilitează crearea de tokenuri de utilitate (cum ar fi $BNB sau $BAT) și de tokenuri nefungibile, cum ar fi CryptoPunks.
## Referințe suplimentare {#further-reading}
@@ -31,5 +31,5 @@ _Cunoașteți o resursă a comunității care v-a ajutat? Editaţi această pagi
- [Lista de verificare pentru integrarea tokenurilor](/developers/tutorials/token-integration-checklist/) _– O listă de verificare a elementelor de luat în considerare atunci când interacționaţi cu tokenurile._
- [Înțelegerea contractului inteligent de tokenuri ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– O introducere în implementarea primului dvs. contract inteligent într-o rețea de testare Ethereum._
-- [Transferuri și aprobare de tokenuri ERC20 dintr-un contract inteligent Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contracct/) _- Cum să utilizaţi un contract inteligent pentru a interacționa cu un token folosind limbajul Solidity._
+- [Transferuri și aprobare de tokenuri ERC20 dintr-un contract inteligent Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _- Cum să utilizaţi un contract inteligent pentru a interacționa cu un token folosind limbajul Solidity._
- [Implementarea unei piețe ERC721 [un ghid al modalităţilor de a o realiza]](/developers/tutorials/how-to-implement-an-erc721-market/) _– Cum să puneţi la vânzare articole tokenizate pe un panou de anunțuri descentralizate._
diff --git a/public/content/translations/ro/developers/tutorials/run-light-node-geth/index.md b/public/content/translations/ro/developers/tutorials/run-light-node-geth/index.md
deleted file mode 100644
index 0bd495f1355..00000000000
--- a/public/content/translations/ro/developers/tutorials/run-light-node-geth/index.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: Cum se execută un nod ușor cu Geth
-description: How to download, install and run a lightclient with Geth.
-author: "Brian Gu"
-tags:
- - "clienți"
- - "noduri"
-skill: beginner
-lang: ro
-published: 2022-03-04
----
-
-Poate sunteţi interesat să rulaţi un [nod Ethereum](/developers/docs/noses-and-clients/). Unul dintre cele mai simple moduri de a face acest lucru este să descărcați, să instalați și să rulați Geth. Utilizând Geth, putem pune în funcţiune un nod ușor în câteva minute.
-
-A light client requires less than 400MB of storage whilst still allowing full interactivity with the Ethereum state. Light clients retrieve data from remote peers, so some queries may take longer to respond in comparison to other sync modes.
-
-For an explanation of the differences between the different sync modes, read our [nodes and clients developer docs](/developers/docs/nodes-and-clients/#node-types).
-
-## Install and run {#install-and-run}
-
-First, [install Geth](https://geth.ethereum.org/docs/install-and-build/installing-geth).
-
-After installing Geth, you can run an Ethereum node in "light" mode by running the following command in a Terminal window:
-
-```bash
-geth --syncmode light
-```
-
-Once launched, Geth will begin connecting to other nodes on Ethereum - known as "peers". The process of connecting to peers may take a while.
-
-When your Geth node has enough peers, it will import headers from new blocks on the chain.
-
-When new block headers no longer have an "age", Geth will be synced to the chain's head.
-
-## Oprirea și repornirea nodului dvs. {#stopping-and-restarting-your-node}
-
-You can stop your node at any time by pressing CTRL+C.
-
-When restarting the node, Geth will take a few minutes to download block headers created since the node was last run.
-
-## Enable the HTTP-RPC server {#enable-the-http-rpc-server}
-
-Enabling the HTTP-RPC server lets you connect your Ethereum node to other software like wallets, browser extensions, or custom software libraries.
-
-You can enable the HTTP-RPC server by running the following command when launching Geth:
-
-```bash
-geth --syncmode light --http
-```
-
-Once enabled, run `curl http://127.0.0.1:8545`. This should report no error.
-
-### Allow remote connections {#allow-remote-connections}
-
-To allow remote hosts to connect to your node, launch Geth with the following command:
-
-```
-geth --syncmode light --http --http.addr 0.0.0.0
-```
-
-Note: this assumes that there is no process blocking requests to your localhost, such as a firewall.
-
-## Geth JavaScript console {#geth-javascript-console}
-
-Geth has a built-in JavaScript console and a JavaScript API called [web3js](https://github.com/ethereum/web3.js/) that you can use to interact with your node.
-
-To use the JavaScript console run:
-
-```bash
-geth attach
-```
-
-This console allows direct interaction with Ethereum. For example, running the `eth.blockNumber` command will print the latest known block number.
-
-[Full web3js documentation](http://web3js.readthedocs.io/)
-
-## Mainnet and testnets {#mainnet-and-testnets}
-
-Geth runs your node on [Ethereum Mainnet](/glossary/#mainnet) by default.
-
-It is also possible to use Geth to run a node on one of the [public test networks](/networks/#testnets), by running one of the following commands in Terminal:
-
-```bash
-geth --syncmode light --ropsten
-geth --syncmode light --rinkeby
-geth --syncmode light --goerli
-```
-
-## Unde sunt stocate datele de pe blockchain și EVM? {#where-is-the-blockchain-and-evm-data-stored}
-
-Directorul pe care îl utilizează Geth pentru a stoca datele brute de pe blockchain depinde de sistemul dvs. de operare. Upon running Geth, look for a message that looks like this:
-
-```bash
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-```
-
-Calea care urmează `„database=”` (baza de date) ar trebui să vă spună unde sunt stocate datele blockchain-ului pe mașină. Dacă rulaţi un nod complet, acest director va conține toate datele despre fiecare bloc care a fost vreodată alocat la blockchain. Din moment ce rulăm un nod ușor, acest director conține doar anteturile blocului.
-
-Merită subliniat aici că, la cel mai de jos nivel, aici locuieşte blockchain-ul. Conținutul complet al blockchain-ului și starea EVM sunt stocate pe fiecare nod complet din rețeaua Ethereum, în directoare care seamănă foarte mult cu cele de pe computerul dvs.
-
-## Referințe suplimentare {#further-reading}
-
-- [Aflaţi mai multe despre diferite rețele](/developers/docs/Networks/).
-- [Run a full node](/run-a-node/)
diff --git a/public/content/translations/ro/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/ro/developers/tutorials/uniswap-v2-annotated-code/index.md
index 9d3c48f1623..b22b23bcad6 100644
--- a/public/content/translations/ro/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/ro/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -743,7 +743,7 @@ Aceasta este funcția principală a fabricii, să creeze un schimb în pereche
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Vrem ca adresa noului schimb să fie deterministă, încât să poată fi calculată în avans off-chain (acest lucrul poate fi util pentru [tranzacțiile de nivel 2](/developers/docs/layer-2-scaling/)). Pentru a face aceasta, avem nevoie de o ordine consecventă a adreselor tokenurilor, indiferent de ordinea în care le-am primit, de aceea le sortăm aici.
+Vrem ca adresa noului schimb să fie deterministă, încât să poată fi calculată în avans off-chain (acest lucrul poate fi util pentru [tranzacțiile de nivel 2](/developers/docs/scaling/)). Pentru a face aceasta, avem nevoie de o ordine consecventă a adreselor tokenurilor, indiferent de ordinea în care le-am primit, de aceea le sortăm aici.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
diff --git a/public/content/translations/ro/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/ro/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 7dfe1274a9e..947d1d681bb 100644
--- a/public/content/translations/ro/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/ro/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -295,4 +295,4 @@ Codul sursă pentru acest tutorial se află [aici](https://github.com/EthWorks/W
Alte tutoriale care vă pot interesa:
-- [Testarea contractelor inteligente cu Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Testarea contractelor inteligente cu Waffle](/developers/tutorials/waffle-test-simple-smart-contract//)
diff --git a/public/content/translations/ro/enterprise/index.md b/public/content/translations/ro/enterprise/index.md
index 4abe4ebef2c..1a4828ca745 100644
--- a/public/content/translations/ro/enterprise/index.md
+++ b/public/content/translations/ro/enterprise/index.md
@@ -33,7 +33,7 @@ Multe companii și consorții au implementat blockchain-uri private autorizate p
Întreprinderile experimentează tehnologia blockchain încă din 2016, când au fost lansate proiectele Hyperledger, Quorum și Corda. S-au axat în mare parte pe blockchain-urile întreprinderilor private autorizate, dar începând din 2019 a avut loc o schimbare de concept în privinţa blockchain-urilor publice faţă de cele private pentru aplicațiile de afaceri. Un [sondaj](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf) realizat de Forrester a dezvăluit că „Respondenții la sondaj ... îşi dau seama de acest potențial, 75% afirmând că probabil vor valorifica blockchain-urile publice în viitor, iar aproape o treime declarând că acest lucru este foarte probabil”. Paul Brody de la EY a [vorbit](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668) despre avantajele construirii pe blockchain-ul public, care (în funcție de aplicație) pot include o mai mare securitate/imuabilitate şi transparență, costuri totale de proprietate mai mici și capacitatea de a interopera cu toate celelalte aplicații ce se află tot pe Mainnet (efecte de rețea). Partajarea unui cadru comun de referință între companii evită crearea inutilă a numeroase silozuri izolate care nu pot comunica și partaja sau sincroniza informații între ele.
-O altă evoluţie prin care atenţia se mută asupra blockchain-ului public este [Nivelul 2](/developers/docs/scaling/layer-2). Nivelul 2 este în primul rând o categorie de tehnologie de scalabilitate care face posibile aplicații cu randament ridicat pe lanțurile publice. Dar soluțiile de Nivelul 2 pot de asemenea [aborda unele dintre celelalte provocări care au determinat dezvoltatorii pentru înteprinderi să aleagă lanțuri private în trecut](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
+O altă evoluţie prin care atenţia se mută asupra blockchain-ului public este [Nivelul 2](/layer-2/). Nivelul 2 este în primul rând o categorie de tehnologie de scalabilitate care face posibile aplicații cu randament ridicat pe lanțurile publice. Dar soluțiile de Nivelul 2 pot de asemenea [aborda unele dintre celelalte provocări care au determinat dezvoltatorii pentru înteprinderi să aleagă lanțuri private în trecut](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/).
Protocolul Baseline este un proiect-cheie care definește un protocol ce permite colaborarea confidențială și complexă între întreprinderi fără a lăsa date sensibile pe lanț. A câștigat un [avânt](https://www.oasis-open.org/2020/08/26/baseline-protocol-achieves-key-milestone-with-release-of-v0-1-implementation-for-enterprise/) semnificativ pe cursul anului 2020.
@@ -71,7 +71,7 @@ Diverse organizații au depus eforturi comune pentru a creşte uşurinţa de uti
### Soluții de scalabilitate {#scalability-solutions}
-[Nivelul 2](/developers/docs/scaling/#layer-2-scaling) este un set de tehnologii sau sisteme care rulează peste Ethereum (Nivelul 1), moștenesc proprietăți de securitate din Nivelul 1 și oferă o capacitate mai mare de procesare a tranzacțiilor (transfer), taxe de tranzacție mai mici (cost de operare) și confirmări mai rapide ale tranzacțiilor decât Nivelul 1. Soluțiile de scalare de Nivelul 2 sunt securizate de Nivelul 1, dar permit aplicațiilor blockchain să gestioneze mai mulți utilizatori sau acțiuni sau date decât ar putea găzdui Nivelul 1. Multe dintre acestea valorifică progresele recente în criptografie și dovezile de zero-knowledge (ZK) pentru a maximiza performanța și securitatea.
+[Nivelul 2](/layer-2/) este un set de tehnologii sau sisteme care rulează peste Ethereum (Nivelul 1), moștenesc proprietăți de securitate din Nivelul 1 și oferă o capacitate mai mare de procesare a tranzacțiilor (transfer), taxe de tranzacție mai mici (cost de operare) și confirmări mai rapide ale tranzacțiilor decât Nivelul 1. Soluțiile de scalare de Nivelul 2 sunt securizate de Nivelul 1, dar permit aplicațiilor blockchain să gestioneze mai mulți utilizatori sau acțiuni sau date decât ar putea găzdui Nivelul 1. Multe dintre acestea valorifică progresele recente în criptografie și dovezile de zero-knowledge (ZK) pentru a maximiza performanța și securitatea.
Construirea aplicației dvs. pe o soluție de scalabilitate de Nivelul 2 poate ajuta la [soluționarea multor preocupări care anterior au determinat companiile să construiască pe blockchain-uri private](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/), dar păstrează avantajele construirii pe Mainnet.
diff --git a/public/content/translations/ro/history/index.md b/public/content/translations/ro/history/index.md
index ccdd92cc304..bd6425c180b 100644
--- a/public/content/translations/ro/history/index.md
+++ b/public/content/translations/ro/history/index.md
@@ -13,7 +13,7 @@ O cronologie a tuturor reperelor majore, a fork-urilor și actualizărilor block
Fork-urile apar atunci când trebuie făcute actualizări tehnice sau modificări majore în rețea – acestea provin de obicei din [Propunerile de îmbunătățire pentru Ethereum (EIP)](/eips/) și modifică „regulile” protocolului.
-Atunci când sunt necesare actualizări în software-ul tradițional, controlat central, compania doar va publica o nouă versiune pentru utilizatorul final. Blockchain-ul funcționează diferit, deoarece nu există proprietate centrală. [Clienții Ethereum](/developer/docs/nodes-and-clients/) trebuie să își actualizeze software-ul pentru a implementa noile reguli de fork-uri. În plus, creatorii de blocuri (miner-ii într-o lume a dovezii-muncii, validatorii într-o lume a dovezii-mizei) și nodurile trebuie să creeze blocuri și să valideze conform noilor reguli. [Mai multe despre mecanismele de consesn]/(developers/docs/consensus-mechanisms/)
+Atunci când sunt necesare actualizări în software-ul tradițional, controlat central, compania doar va publica o nouă versiune pentru utilizatorul final. Blockchain-ul funcționează diferit, deoarece nu există proprietate centrală. [Clienții Ethereum](/developers/docs/nodes-and-clients/) trebuie să își actualizeze software-ul pentru a implementa noile reguli de fork-uri. În plus, creatorii de blocuri (miner-ii într-o lume a dovezii-muncii, validatorii într-o lume a dovezii-mizei) și nodurile trebuie să creeze blocuri și să valideze conform noilor reguli. [Mai multe despre mecanismele de consesn]/(developers/docs/consensus-mechanisms/)
Aceste schimbări de reguli pot crea o separare temporară în rețea. Pot fi produse blocuri noi conform regulilor noi sau celor vechi. Se convine în avans asupra creării fork-urilor, astfel încât clienții să adopte schimbările la unison și fork-ul cu actualizările să devină lanțul principal. Cu toate acestea, în cazuri rare, dezacordurile asupra fork-urilor pot determina divizarea permanentă a rețelei – cea mai cunoscută fiind crearea lui Ethereum Classic cu [fork-ul DAO](#dao-fork).
diff --git a/public/content/translations/ro/roadmap/beacon-chain/index.md b/public/content/translations/ro/roadmap/beacon-chain/index.md
index 02813bd268d..6d9571a48cc 100644
--- a/public/content/translations/ro/roadmap/beacon-chain/index.md
+++ b/public/content/translations/ro/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ Lanțul Beacon a fost o componentă fundamentală pentru [securitatea, respectul
Lanțul Beacon a introdus [dovada mizei](/developers/docs/consensus-mechanisms/pos/) în Ethereum. Aceasta asigură securitatea Ethereum și generează mai mult ETH pentru validatori în cadrul procesului. În practică, mizarea implică mizarea ETH pentru activarea software-ului validatorului. În calitate de staker, rulați software-ul care creează și validează noile blocuri din lanț.
-Mizarea joacă același rol avut înainte de [minare](/developers/docs/mining/), dar diferă în multe moduri. Minarea necesita cheltuieli inițiale mari, sub forma unor echipamente hardware puternice și a unui consum mare de energie, ceea ce duce la economii de scalare și promovarea centralizării. De asemenea, minarea nu implica cerințe pentru blocarea activelor drept garanție, limitând capacitatea protocolului de a pedepsi actorii răi după un atac.
+Mizarea joacă același rol avut înainte de [minare](/developers/docs/consensus-mechanisms/pow/mining/), dar diferă în multe moduri. Minarea necesita cheltuieli inițiale mari, sub forma unor echipamente hardware puternice și a unui consum mare de energie, ceea ce duce la economii de scalare și promovarea centralizării. De asemenea, minarea nu implica cerințe pentru blocarea activelor drept garanție, limitând capacitatea protocolului de a pedepsi actorii răi după un atac.
Tranziția la dovada mizei a făcut ca Ethereum să fie mult mai sigur și mai descentralizat în comparație cu dovada muncii. Cu cât numărul de oameni din rețea este mai mare, cu atât mai descentralizată și mai sigură în caz de atacuri devine aceasta.
diff --git a/public/content/translations/ru/community/code-of-conduct/index.md b/public/content/translations/ru/community/code-of-conduct/index.md
index 0aba8eb2731..d88f9b9e47f 100644
--- a/public/content/translations/ru/community/code-of-conduct/index.md
+++ b/public/content/translations/ru/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Базовые стандарты, которых мы старае
lang: ru
---
+# Нормы поведения {#conduct-intro}
+
## Цель {#mission}
Разработать самый полный и доступный центр знаний об Ethereum и поддерживать его функционирование.
diff --git a/public/content/translations/ru/community/events/index.md b/public/content/translations/ru/community/events/index.md
index c05cdfaac04..14dfc31894b 100644
--- a/public/content/translations/ru/community/events/index.md
+++ b/public/content/translations/ru/community/events/index.md
@@ -5,7 +5,7 @@ lang: ru
hideEditButton: true
---
-## Предстоящие мероприятия {#events}
+# Предстоящие мероприятия {#events}
**Каждый месяц по всему миру проводятся крупные мероприятия Ethereum.** Посетите одно из ближайших к вам, чтобы познакомиться с другими участниками сообщества, узнать о возможностях трудоустройства и развить новые навыки.
diff --git a/public/content/translations/ru/community/get-involved/index.md b/public/content/translations/ru/community/get-involved/index.md
index 6acc443a8d5..58c4e3c7a0d 100644
--- a/public/content/translations/ru/community/get-involved/index.md
+++ b/public/content/translations/ru/community/get-involved/index.md
@@ -28,7 +28,7 @@ lang: ru
- Составьте или рассмотрите предложение по улучшению Ethereum (EIP)
- Составьте EIP
1. Представьте свою идею на [Ethereum Magicians](https://ethereum-magicians.org)
- 2. Прочтите [EIP-1](https://eip.ethereum.org/EIPS/eip-1) — **да, это _весь_ документ.**
+ 2. Прочтите [EIP-1](https://eips.ethereum.org/EIPS/eip-1). **Да, это _весь_ документ.**
3. Следуйте указаниям из документа EIP-1. Ссылайтесь на него при составлении черновика.
- Узнайте, как стать [редактором EIP](https://eips.ethereum.org/EIPS/eip-5069)
- Теперь вы можете рассматривать EIP других участников! Просматривайте [открытые запросы на включение изменений с тегом `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Давайте обратную связь относительно технических аспектов по ссылке `discussion-to`.
diff --git a/public/content/translations/ru/community/grants/index.md b/public/content/translations/ru/community/grants/index.md
index aa7cadd9287..1628070804f 100644
--- a/public/content/translations/ru/community/grants/index.md
+++ b/public/content/translations/ru/community/grants/index.md
@@ -1,5 +1,5 @@
---
-title: Фонд Ethereum и программы грантов сообщества
+title: Фонд Ethereum Foundation и программы грантов сообщества
description: Список программ грантов в рамках экосистемы Ethereum.
lang: ru
---
@@ -15,31 +15,27 @@ lang: ru
Эти программы поддерживают обширную экосистему Ethereum, предлагая гранты для широкого круга проектов. Они включают решения по масштабируемости, созданию сообществ, безопасности, конфиденциальности и не только. Эти гранты не относятся к какой-либо конкретной платформе Ethereum и являются хорошей отправной точкой, если вы не уверены в себе.
- [Программа поддержки экосистемы EF](https://esp.ethereum.foundation) — _финансирование проектов с открытым исходным кодом, которые приносят пользу Ethereum, с особым акцентом на универсальные инструменты, инфраструктуру, исследования и общественные блага_
-- [Запросы предложений (RFP) Ethereum](https://github.com/ethereum/requests-for-proposals) — _запросы предложений Фондом Ethereum для работы и проектов в экосистеме Ethereum_
-- [MetaCartel](https://www.metacartel.org/grants/) — _разработка децентрализованных приложений, создание DAO_
-- [Децентрализованная автономная организация (DAO) Moloch](https://www.molochdao.com/) — _конфиденциальность, масштабирование второго уровня, безопасность клиентов и многое другое_
-- [Открытые гранты](https://opengrants.com/explore)
-- [Гранты DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) — _таблица Google организаций, предлагающих гранты_
-- [Аналог Crunchbase для грантов по Web3](https://www.cryptoneur.xyz/web3-grants) — _отфильтровывайте и ищите гранты по категории, назначению, количеству и другим характеристикам. Внесите свой вклад, чтобы помочь другим найти нужный грант._
-- [Академические гранты](https://esp.ethereum.foundation/academic-grants) — _гранты на поддержку академической работы, связанной с Ethereum_
+- [MetaCartel](https://www.metacartel.org/grants/): _разработка децентрализованных приложений, создание DAO._
+- [DAO Moloch](https://www.molochdao.com/): _конфиденциальность, масштабирование второго уровня, безопасность клиентов и многое другое._
+- [Гранты DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0): _Google-таблица организаций, предлагающих гранты._
+- [Crunchbase для грантов по Web3](https://www.cryptoneur.xyz/web3-grants): _отфильтровывайте и ищите гранты по категории, назначению, количеству и другим характеристикам. Помогите другим найти нужный грант._
+- [Академические гранты](https://esp.ethereum.foundation/academic-grants): _гранты на поддержку академической работы, связанной с Ethereum._
+- [Blockworks Grantfarm](https://blockworks.co/grants/programs): _компания Blockworks составила полный каталог всех грантов, запросов предложений (RFP) и наград за найденные ошибки._
## Отдельные проекты {#project-specific}
В рамках этих проектов созданы их собственные гранты, направленные на разработку и тестирование собственных технологий.
- [Программа грантов Aave](https://aavegrants.org/) — _гранты DAO от [Aave](https://aave.com/)_
-- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) — _фонд экосистемы [Balancer](https://balancer.fi/)_
+- [Balancer](https://quark-ceres-740.notion.site/Balancer-Grants-938f1b979810427f8d903a904315da41): _фонд экосистемы [Balancer](https://balancer.fi/)._
- [Программа грантов Chainlink](https://chain.link/community/grants) — _гранты сообщества [Chainlink](https://chain.link/)_
-- [Программа грантов Compound](https://compoundgrants.org/) — _финансовая экосистема [Compound](https://compound.finance/)_
-- [ Программа грантов Decentraland](https://governance.decentraland.org/grants/) — _метавселенная децентрализованных автономных организаций (DAO) [Decentraland](https://decentraland.org/)_
-- [Организация грантов экосистемы Lido (LEGO)](https://lego.lido.fi/) — _финансовая экосистема [Lido](https://lido.fi/)_
-- [ Программа MetaMask](https://metamaskgrants.org/) — _децентрализованная автономная организация (DAO) по выдаче грантов, возглавляемая сотрудниками [MetaMask](https://metamask.io/)_
-- [Программа грантов mStable](https://docs.mstable.org/advanced/grants-program) — _сообщество [mStable](https://mstable.org/)_
-- [Программа грантов SKALE Network](https://skale.space/developers#grants) — _экосистема [SKALE Network](https://skale.space/)_
-- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) — _экосистема [The Graph](https://thegraph.com/)_
-- [Программа грантов UMA](https://grants.umaproject.org/) — _поддержка разработчиков [UMA](https://umaproject.org/)_
-- [Программа грантов Uniswap](https://www.unigrants.org/) — _сообщество [Uniswap](https://uniswap.org/)_
-- [Гранты по Web3](https://web3grants.net) — _большой список грантовых программ по Web3/криптовалютам_
+- [ Программа грантов Decentraland](https://governance.decentraland.org/grants/): _метавселенная DAO [Decentraland](https://decentraland.org/)._
+- [Организация грантов экосистемы Lido (LEGO)](https://lido.fi/lego): _финансовая экосистема [Lido](https://lido.fi/)._
+- [ Программа MetaMask](https://metamaskgrants.org/): _DAO по выдаче грантов под руководством сотрудников [MetaMask](https://metamask.io/)._
+- [Программа грантов SKALE Network](https://skale.space/developers#grants): _экосистема [SKALE Network](https://skale.space/)._
+- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm): _экосистема [The Graph](https://thegraph.com/)._
+- [Программа грантов Uniswap](https://www.uniswapfoundation.org/apply-for-a-grant): _сообщество [Uniswap](https://uniswap.org/)._
+- [Web3 Grants](https://web3grants.net): _обширный список грантов, связанных с web3/криптовалютами._
## Квадратичное финансирование {#quadratic-funding}
diff --git a/public/content/translations/ru/community/language-resources/index.md b/public/content/translations/ru/community/language-resources/index.md
index cd59f0875a1..bdd13c751e9 100644
--- a/public/content/translations/ru/community/language-resources/index.md
+++ b/public/content/translations/ru/community/language-resources/index.md
@@ -72,7 +72,7 @@ lang: ru
- [Gwei.cz](https://gwei.cz) — локальное сообщество на тему Web3, создает образовательный контент, организует очные и онлайн-мероприятия
- [Gwei.cz Příručka](https://prirucka.gwei.cz/) — руководство по Ethereum для начинающих
- [DAO Příručka](https://dao.gwei.cz/) — руководство для начинающих по DAO
-- [Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) — о тонкостях работы Ethereum на чешском языке
+- [Mastering Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) — о тонкостях работы Ethereum на чешском языке
### Французский {#fr}
diff --git a/public/content/translations/ru/community/online/index.md b/public/content/translations/ru/community/online/index.md
index 59daaa04008..5fb05c7d98f 100644
--- a/public/content/translations/ru/community/online/index.md
+++ b/public/content/translations/ru/community/online/index.md
@@ -24,10 +24,10 @@ lang: ru
Ethereum Cat Herders — сообщество, нацеленное на помощь с управлением проектами при разработке EthereumEthereum Hackers — чат Discord, управляемый ETHGlobal: онлайн-сообщество для хакеров Ethereum со всего мираCryptoDevs — сообщество Discord, сконцентрированное на разработке Ethereum
-Сообщество EthStaker на Discord — сообщество для образования, наставничества, поддержки и предоставления ресурсов для существующих и потенциальных стейкеров
+Сообщество EthStaker на Discord — сообщество для образования, наставничества, поддержки и предоставления ресурсов для существующих и потенциальных стейкеровКоманда сайта Ethereum.org — возможность решить проблемы и поговорить о разработке и дизайне ethereum.org с командой и членами сообществаMatos Discord — сообщество создателей Web3, где собираются разработчики, видные представители отрасли и энтузиасты Ethereum. Мы заинтересованы в разработке, дизайне и культуре Web3. Создавайте вместе с нами.
-Solidity Gitter — чат для разработки Solidity (Gitter)
+Solidity Gitter — чат для разработки Solidity (Gitter)Solidity Matrix — чат для разработки Solidity (Matrix)Ethereum Stack Exchange *— форум вопросов и ответов*Peeranha *— децентрализованный форум вопросов и ответов*
diff --git a/public/content/translations/ru/community/research/index.md b/public/content/translations/ru/community/research/index.md
index aa6914a9cbb..5fb2fab1cea 100644
--- a/public/content/translations/ru/community/research/index.md
+++ b/public/content/translations/ru/community/research/index.md
@@ -124,7 +124,7 @@ lang: ru
- [Введение в блокчейн-мосты](/bridges/)
- [Виталик о мостах](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
- [Статья о блокчейн-мостах](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8)
-- [Значения, заблокированные в мостах]()
+- [Значения, заблокированные в мостах](https://dune.com/eliasimos/Bridge-Away-(from-Ethereum))
#### Новейшие исследования {#recent-research-3}
@@ -156,7 +156,7 @@ lang: ru
#### Новейшие исследования {#recent-research-5}
-- [ecdsa в FGPA](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
+- [ECDSA на основе программируемых пользователем вентильных матриц (FPGA)](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738)
## Безопасность {#security}
@@ -346,7 +346,6 @@ lang: ru
- [Фреймворки для разработчиков](/developers/docs/frameworks/)
- [Список инструментов для разработчиков с использованием консенсуса](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Стандарты токенов](/developers/docs/standards/tokens/)
-- [Biastek: инструменты для Ethereum](https://biastek.com/ethereum-tools/)
- [CryptoDevHub: инструменты для EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
#### Новейшие исследования {#recent-research-17}
diff --git a/public/content/translations/ru/community/support/index.md b/public/content/translations/ru/community/support/index.md
index 55433b8d926..5e0de3f54bd 100644
--- a/public/content/translations/ru/community/support/index.md
+++ b/public/content/translations/ru/community/support/index.md
@@ -39,7 +39,7 @@ _Это не полный список. Нужна помощь в поиске
Этот процесс может быть сложным. Вот несколько ориентированных на разработку ресурсов с опытными разработчиками Ethereum, которые будут рады помочь.
- [Университет Alchemy](https://university.alchemy.com/#starter_code)
-- [CryptoDevs на платформе Discord](https://discord.gg/Z9TA39m8Yu)
+- [CryptoDevs на платформе Discord](https://discord.com/invite/5W5tVb3)
- [Ethereum StackExchange](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Университет Web3](https://www.web3.university/)
@@ -53,7 +53,7 @@ _Это не полный список. Нужна помощь в поиске
Вот примеры нескольких популярных.
-- [Solidity](https://gitter.im/ethereum/solidity)
+- [Solidity](https://gitter.im/ethereum/solidity/)
- [ethers.js](https://discord.gg/6jyGVDK6Jx)
- [web3.js](https://discord.gg/GsABYQu4sC)
- [Hardhat](https://discord.gg/xtrMGhmbfZ)
@@ -65,7 +65,7 @@ _Это не полный список. Нужна помощь в поиске
Если вы запускаете узел или валидатора, вот несколько сообществ, призванных помочь вам начать работу.
-- [EthStaker на платформе Discord](https://discord.io/ethstaker)
+- [EthStaker на платформе Discord](https://discord.gg/ethstaker)
- [EthStaker на платформе Reddit](https://www.reddit.com/r/ethstaker)
У большинства команд, разрабатывающих клиентов Ethereum, также есть специальные открытые площадки, где вы можете получить поддержку и задать вопросы.
diff --git a/public/content/translations/ru/developers/docs/blocks/index.md b/public/content/translations/ru/developers/docs/blocks/index.md
index b4556c44b50..336b353a754 100644
--- a/public/content/translations/ru/developers/docs/blocks/index.md
+++ b/public/content/translations/ru/developers/docs/blocks/index.md
@@ -1,6 +1,6 @@
---
title: Блоки
-description: "Обзор блоков в блокчейне Ethereum: их структура данных, почему они необходимы и как сделаны."
+description: 'Обзор блоков в блокчейне Ethereum: их структура данных, почему они необходимы и как сделаны.'
lang: ru
---
@@ -40,7 +40,7 @@ lang: ru
В блоке содержится много разной информации. На самом высоком уровне блок содержит следующие поля:
| Поле | Описание |
-| :--------------- | :------------------------------------------------- |
+|:---------------- |:-------------------------------------------------- |
| `ячейка` | слот, к которому относится блок |
| `proposer_index` | ID валидатора, который предлагает блок |
| `parent_root` | хэш предыдущего блока |
@@ -50,7 +50,7 @@ lang: ru
Блок `body` содержит в себе несколько собственных полей:
| Поле | Описание |
-| :------------------- | :-------------------------------------------------------------- |
+|:-------------------- |:--------------------------------------------------------------- |
| `randao_reveal` | значение, используемое для выбора следующего предлагающего блок |
| `eth1_data` | информация о депозитном контракте |
| `граффити` | случайные данные, используемые для пометки блоков |
@@ -65,7 +65,7 @@ lang: ru
Поле `attestations` содержит список всех свидетельств в блоке. У свидетельств есть собственный тип данных, который содержит несколько частичек данных. Каждое свидетельство содержит следующее:
| Поле | Описание |
-| :----------------- | :-------------------------------------------------------- |
+|:------------------ |:--------------------------------------------------------- |
| `aggregation_bits` | список валидаторов, участвовавших в этом свидетельстве |
| `данные` | контейнер с несколькими подполями |
| `подпись` | агрегированная подпись всех свидетельствующих валидаторов |
@@ -73,7 +73,7 @@ lang: ru
Поле `data` в свидетельстве `attestation` содержит следующие данные:
| Поле | Описание |
-| :------------------ | :---------------------------------------------------------- |
+|:------------------- |:----------------------------------------------------------- |
| `ячейка` | слот, к которому относится свидетельство |
| `index` | индексы свидетельствующих валидаторов |
| `beacon_block_root` | корневой хэш блока Beacon, в котором содержится этот объект |
@@ -85,7 +85,7 @@ lang: ru
`execution_payload_header` содержит следующие поля:
| Поле | Описание |
-| :------------------ | :---------------------------------------------------------------------- |
+|:------------------- |:----------------------------------------------------------------------- |
| `parent_hash` | хэш родительского блока |
| `fee_recipient` | адрес аккаунта для оплаты комиссий за транзакции |
| `state_root` | корневой хэш глобального состояния после внесения изменений в этот блок |
@@ -105,7 +105,7 @@ lang: ru
Сама по себе проверочная строка `execution_payload` содержит следующие данные (заметьте, что она идентична заголовку, если не учитывать, что, в отличие корневого хэша транзакций, она включает текущий список транзакций и информации о выводах):
| Поле | Описание |
-| :------------------ | :---------------------------------------------------------------------- |
+|:------------------- |:----------------------------------------------------------------------- |
| `parent_hash` | хэш родительского блока |
| `fee_recipient` | адрес аккаунта для оплаты комиссий за транзакции |
| `state_root` | корневой хэш глобального состояния после внесения изменений в этот блок |
@@ -125,7 +125,7 @@ lang: ru
Список `withdrawals` содержит объекты вывода `withdrawal`, структурированные следующим образом:
| Поле | Описание |
-| :--------------- | :-------------------------------------------- |
+|:---------------- |:--------------------------------------------- |
| `address` | адрес аккаунта, с которого производится вывод |
| `amount` | сумма вывода |
| `index` | значение индекса вывода |
diff --git a/public/content/translations/ru/developers/docs/evm/index.md b/public/content/translations/ru/developers/docs/evm/index.md
index 6532ffc2f12..ab5ecf8dd52 100644
--- a/public/content/translations/ru/developers/docs/evm/index.md
+++ b/public/content/translations/ru/developers/docs/evm/index.md
@@ -10,7 +10,7 @@ lang: ru
## Прежде чем начать {#prerequisites}
-Некоторые базовые знания в информатике, например термины [байт](https://wikipedia.org/wiki/Byte), [память](https://wikipedia.org/wiki/Computer_memory) и [стек](), необходимы для понимания работы EVM. Также было бы полезно ознакомиться с такими понятиями криптографии и блокчейна, как [хэш-функции](https://wikipedia.org/wiki/Cryptographic_hash_function) и [дерево Меркла](https://wikipedia.org/wiki/Merkle_tree).
+Некоторые базовые знания в информатике, например термины [байт](https://wikipedia.org/wiki/Byte), [память](https://wikipedia.org/wiki/Computer_memory) и [стек](https://wikipedia.org/wiki/Stack_(abstract_data_type)), необходимы для понимания работы EVM. Также было бы полезно ознакомиться с такими понятиями криптографии и блокчейна, как [хэш-функции](https://wikipedia.org/wiki/Cryptographic_hash_function) и [дерево Меркла](https://wikipedia.org/wiki/Merkle_tree).
## От реестра к машине состояний {#from-ledger-to-state-machine}
@@ -64,6 +64,7 @@ EVM работает как [стековая машина](https://wikipedia.or
- [evmone](https://github.com/ethereum/evmone) — _C++_
- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) — _JavaScript_
- [eEVM](https://github.com/microsoft/eevm) — _C++_
+- [revm](https://github.com/bluealloy/revm) - _Rust_
## Дополнительные ресурсы {#further-reading}
diff --git a/public/content/translations/ru/developers/docs/evm/opcodes/index.md b/public/content/translations/ru/developers/docs/evm/opcodes/index.md
index f71a5a63b99..363213979c7 100644
--- a/public/content/translations/ru/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/ru/developers/docs/evm/opcodes/index.md
@@ -14,157 +14,157 @@ lang: ru
💡 Небольшой совет: чтобы посмотреть строки целиком, используйте `[shift] + scroll` для горизонтальной прокрутки экрана.
-| Стек | Имя | Газ | Исходный стек | Итоговый стек | Память/хранилище | Примечания |
-| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
-| 00 | STOP | 0 | | | | halt execution |
-| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
-| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
-| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
-| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
-| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
-| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
-| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
-| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
-| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
-| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
-| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
-| 0C-0F | _invalid_ | | | | | |
-| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
-| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
-| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
-| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
-| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
-| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
-| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
-| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
-| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
-| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
-| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
-| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
-| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
-| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
-| 1E-1F | _invalid_ | | | | | |
-| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
-| 21-2F | _invalid_ | | | | | |
-| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
-| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
-| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
-| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
-| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
-| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
-| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
-| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
-| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
-| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
-| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
-| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
-| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
-| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
-| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
-| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `хэш` | | hash = addr.exists ? keccak256(addr.code) : 0 |
-| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
-| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
-| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
-| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
-| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
-| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
-| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
-| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
-| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
-| 49-4F | _invalid_ | | | | | |
-| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
-| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
-| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
-| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
-| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
-| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
-| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
-| 58 | PC | 2 | `.` | `$pc` | | program counter |
-| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
-| 5A | GAS | 2 | `.` | `gasRemaining` | | |
-| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
-| 5C-5E | _invalid_ | | | | | |
-| 5F | PUSH0 | 2 | `.` | `uint8` | | добавить постоянное значение 0 в стек |
-| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
-| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
-| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
-| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
-| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
-| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
-| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
-| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
-| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
-| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
-| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
-| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
-| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
-| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
-| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
-| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
-| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
-| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
-| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
-| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
-| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
-| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
-| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
-| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
-| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
-| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
-| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
-| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
-| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
-| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
-| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
-| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
-| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
-| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
-| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
-| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
-| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
-| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
-| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
-| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
-| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
-| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
-| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
-| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
-| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
-| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
-| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
-| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
-| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
-| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
-| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
-| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
-| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
-| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
-| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
-| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
-| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
-| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
-| A5-EF | _invalid_ | | | | | |
-| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
-| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Стек | Имя | Газ | Исходный стек | Итоговый стек | Память/хранилище | Примечания |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `хэш` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | добавить постоянное значение 0 в стек |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/ru/developers/docs/gas/index.md b/public/content/translations/ru/developers/docs/gas/index.md
index c0ef820186d..4c1aeaad058 100644
--- a/public/content/translations/ru/developers/docs/gas/index.md
+++ b/public/content/translations/ru/developers/docs/gas/index.md
@@ -55,7 +55,7 @@ lang: ru
Базовая комиссия рассчитывается по формуле, которая сравнивает размер предыдущего блока (количество газа, использованного для всех транзакций) с целевым размером. Базовая комиссия увеличится максимум на 12,5 % за блок, если размер целевого блока превышен. Этот экспоненциальный рост делает экономически нецелесообразным, чтобы размер блока оставался высоким на неопределенный срок.
| Номер блока | Включенный газ | Увеличение комиссии | Текущая базовая комиссия |
-| ----------- | -------------: | ------------------: | -----------------------: |
+| ----------- | --------------:| -------------------:| ------------------------:|
| 1 | 15 млн | 0 % | 100 gwei |
| 2 | 30 млн | 0 % | 100 gwei |
| 3 | 30 млн | 12,5 % | 112,5 gwei |
@@ -70,7 +70,7 @@ lang: ru
Также важно отметить, что сильные всплески серий полных блоков маловероятны из-за скорости, с которой базовая комиссия увеличивается перед полным блоком.
| Номер блока | Включенный газ | Увеличение комиссии | Текущая базовая комиссия |
-| ----------- | -------------: | ------------------: | -----------------------: |
+| ----------- | --------------:| -------------------:| ------------------------:|
| 30 | 30 млн | 12,5 % | 2705,6 gwei |
| ... | ... | 12,5 % | ... |
| 50 | 30 млн | 12,5 % | 28531,3 gwei |
diff --git a/public/content/translations/ru/developers/docs/networks/index.md b/public/content/translations/ru/developers/docs/networks/index.md
index 3aa643e2e57..bad5b4e680d 100644
--- a/public/content/translations/ru/developers/docs/networks/index.md
+++ b/public/content/translations/ru/developers/docs/networks/index.md
@@ -56,10 +56,11 @@ lang: ru
- [Кран QuickNode Sepolia](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [Кран PoW](https://sepolia-faucet.pk910.de/)
-- [Кран кошелька Coinbase Wallet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Кран кошелька Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
- [Кран Alchemy Sepolia](https://sepoliafaucet.com/)
- [Кран Infura Sepolia](https://www.infura.io/faucet)
- [Кран Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Кран тестовой сети | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(долгосрочная поддержка)_ {#goerli}
@@ -111,28 +112,36 @@ Goerli — тестовая сеть для проверки валидации
- [Кран Paradigm](https://faucet.paradigm.xyz/)
- [Кран Coinbase Wallet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Тестовая сеть для [Starknet](https://www.starknet.io).
+
+##### Краны
+
+- [Кран Starknet](https://faucet.goerli.starknet.io)
+
## Частные сети {#private-networks}
-Сеть Ethereum представляет собой частную сеть, если ее узлы не подключены к публичной сети (т. е. к основной или тестовой сети). В этом контексте «частная» означает только «зарезервированная» или «изолированная», а не «защищенная» или «безопасная».
+Сеть Ethereum представляет собой частную сеть, если ее узлы не подключены к общедоступной сети (т. е. к основной или тестовой сети). В этом контексте «частная» означает только «зарезервированная» или «изолированная», а не «защищенная» или «безопасная».
### Сети разработки {#development-networks}
-Чтобы разработать приложение Ethereum, вам нужно запустить его в частной сети и увидеть, как оно работает, прежде чем развертывать. Подобно тому, как вы создаете локальный сервер на своем компьютере для веб-разработки, вы можете создать локальный экземпляр блокчейна для тестирования своего децентрализованного приложения. Это позволяет выполнять итерацию намного быстрее, чем в публичной тестовой сети.
+При разработке приложения Ethereum вам нужно запустить его в частной сети и увидеть, как оно работает, прежде чем развертывать. Подобно тому, как вы создаете локальный сервер на своем компьютере для веб-разработки, вы можете создать локальный экземпляр блокчейна для тестирования своего децентрализованного приложения. Это позволяет повторять итерации намного быстрее, чем в общедоступной тестовой сети.
-Существуют проекты и инструменты, которые могут помочь в этом. Подробнее о [сетях для разработки](/developers/docs/development-networks/).
+Существуют проекты и инструменты, которые могут помочь в этом. Узнайте больше о [сетях для разработки](/developers/docs/development-networks/).
### Сети консорциума {#consortium-networks}
-Процесс консенсуса контролируется заранее определенным набором узлов, которым доверяют. Например, частная сеть известных академических учреждений, каждое из которых управляет одним узлом, а блоки проверяются пороговым числом подписантов внутри сети.
+Процесс консенсуса контролируется заранее определенным набором доверенных узлов. Например, частная сеть известных академических учреждений, каждое из которых управляет одним узлом, а блоки проверяются пороговым числом подписантов внутри сети.
-Если общедоступная сеть Ethereum похожа на общедоступный Интернет, то сеть консорциума похожа на частный интранет.
+Если общедоступная сеть Ethereum похожа на общедоступный интернет, то сеть консорциума похожа на частный интранет.
## Связанные инструменты {#related-tools}
-- [Chainlist](https://chainlist.org/) — _список сетей EVM для подключения кошельков и поставщиков к соответствующему ID цепочки и ID сети_
-- [Цепочки на основе EVM](https://github.com/ethereum-lists/chains) — _репозиторий GitHub с метаданными цепочки, на которых основан Chainlist_
+- [Chainlist](https://chainlist.org/) — _список сетей EVM для подключения кошельков и поставщиков услуг к соответствующим идентификаторам цепочки и сети._
+- [Цепочки на основе EVM](https://github.com/ethereum-lists/chains) — _репозиторий GitHub с метаданными цепочки, на которых основан Chainlist._
## Дополнительные ресурсы {#further-reading}
-- [Предложение: предсказуемый жизненный цикл тестовых Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
+- [Предложение: предсказуемый жизненный цикл тестовых сетей Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
- [Эволюция тестовых сетей Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/public/content/translations/ru/developers/docs/nodes-and-clients/index.md b/public/content/translations/ru/developers/docs/nodes-and-clients/index.md
index 70b36dd5bfe..d6c49df8d10 100644
--- a/public/content/translations/ru/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/ru/developers/docs/nodes-and-clients/index.md
@@ -233,8 +233,6 @@ Erigon (в прошлом — Turbo-Geth) представляет собой о
`geth --syncmode "light"`
-Для получения дополнительной информации ознакомьтесь с руководством по [запуску легкого узла Geth](/developers/tutorials/run-light-node-geth/).
-
**Настройка полной синхронизации с архивом в [Besu](https://besu.hyperledger.org/)**
`besu --sync-mode=FULL`
@@ -312,5 +310,4 @@ Erigon (в прошлом — Turbo-Geth) представляет собой о
## Связанные руководства {#related-tutorials}
-- [Запуск узла с помощью Geth](/developers/tutorials/run-light-node-geth/) _— как загрузить, установить и запустить Geth. О синхронизаторах, консоли JavaScript и многом другом._
- [Превратите свой Raspberry Pi 4 в узел валидатора, просто прошив карту MicroSD: руководство по установке](/developers/tutorials/run-node-raspberry-pi/) _— прошейте свой Raspberry Pi 4, подключите кабель Ethernet, подключите SSD-диск и включите устройство, чтобы превратить Raspberry Pi 4 в полноценный узел Ethereum, работающий на уровне исполнения (Mainnet) и/или на уровне консенсуса (Beacon Chain / validator)._
diff --git a/public/content/translations/ru/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/ru/developers/docs/nodes-and-clients/run-a-node/index.md
index 7c929248252..5272112b648 100644
--- a/public/content/translations/ru/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/ru/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -88,7 +88,7 @@ sidebarDepth: 2
- В системе установлены правильное время и дата.
- Ваш маршрутизатор и брандмауэр принимают подключения к прослушиваемым портам. По умолчанию клиенты Ethereum используют порт слушателя (TCP) и порт обнаружения (UDP), оба по умолчанию 30303.
-Сначала запустите свой клиент в тестовой сети, чтобы убедиться, что все работает правильно. [Инструкции по запуску легкого узла Geth](/developers/tutorials/run-light-node-geth/) должны помочь. Необходимо указать все настройки клиента, которые не установлены по умолчанию. Вы можете использовать конфигурационный файл, чтобы определить свой набор настроек. Конкретные настройки можно найти в документации вашего клиента Исполнение клиента запустит его базовые функции и выбранные конечные точки, а затем начнется поиск узлов одноранговой сети. Когда узел найдет одноранговые соединения, клиент начнет синхронизацию. Актуальные данные блокчейна будут доступны, как только клиент закончит синхронизацию до текущего состояния.
+Сначала запустите свой клиент в тестовой сети, чтобы убедиться, что все работает правильно. Необходимо указать все настройки клиента, которые не установлены по умолчанию. Вы можете использовать конфигурационный файл, чтобы определить свой набор настроек. Конкретные настройки можно найти в документации вашего клиента Исполнение клиента запустит его базовые функции и выбранные конечные точки, а затем начнется поиск узлов одноранговой сети. Когда узел найдет одноранговые соединения, клиент начнет синхронизацию. Актуальные данные блокчейна будут доступны, как только клиент закончит синхронизацию до текущего состояния.
### Использование клиента {#using-the-client}
diff --git a/public/content/translations/ru/developers/docs/transactions/index.md b/public/content/translations/ru/developers/docs/transactions/index.md
index e2bbd6d470d..ebfc54e4a8f 100644
--- a/public/content/translations/ru/developers/docs/transactions/index.md
+++ b/public/content/translations/ru/developers/docs/transactions/index.md
@@ -1,6 +1,6 @@
---
title: Транзакции
-description: "Обзор транзакций Ethereum: как они работают, их структура данных и как их отправлять через приложение."
+description: 'Обзор транзакций Ethereum: как они работают, их структура данных и как их отправлять через приложение.'
lang: ru
---
diff --git a/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
index 1d5b1f97fe8..1c9747c0943 100644
--- a/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
@@ -20,7 +20,7 @@ lang: ru
Если вы новичок, то можете выбрать фильтр «Новичок в криптовалютах» на странице «найти кошелек», чтобы определить кошельки, которые должны включать все необходимые функции, подходящие для начинающих.
-![выбор фильтра на странице «найти кошелек»](./wallet-box.png)
+![Выбор фильтра на странице поиска кошелька](./wallet-box.png)
Существуют также другие фильтры профиля, позволяющие учесть ваши потребности. Это примеры часто используемых кошельков. Вам нужно самостоятельно изучить ситуацию, прежде чем доверять какому-либо программному обеспечению.
diff --git a/public/content/translations/ru/guides/how-to-swap-tokens/index.md b/public/content/translations/ru/guides/how-to-swap-tokens/index.md
index 53eb4c759d2..a01ca0220e0 100644
--- a/public/content/translations/ru/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/ru/guides/how-to-swap-tokens/index.md
@@ -12,12 +12,12 @@ lang: ru
**Необходимо соблюдать следующие предварительные условия:**
-- иметь криптовалютный кошелек. Вы можете ознакомиться с этим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-register-an-ethereum-account/);
+- иметь криптовалютный кошелек (вы можете воспользоваться следующим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-create-an-ethereum-account/));
- добавить средства на свой кошелек.
## 1. Подключите свой кошелек к децентрализованной бирже (DEX) по выбору
-Вот некоторые популярные биржи.
+Вот некоторые популярные биржи:
- [Uniswap](https://app.uniswap.org/#/swap)
- [Sushiswap](https://www.sushi.com/swap)
diff --git a/public/content/translations/ru/guides/how-to-use-a-bridge/index.md b/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
index 5617eee7e04..5c07132896e 100644
--- a/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
@@ -10,7 +10,7 @@ lang: ru
**Необходимо соблюдать следующие предварительные условия:**
-- иметь криптовалютный кошелек. Вы можете ознакомиться с этим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-register-an-ethereum-account/);
+- иметь криптовалютный кошелек (вы можете воспользоваться следующим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-create-an-ethereum-account/));
- добавить средства на свой кошелек.
## 1. Определите, какую сеть второго уровня вы хотите использовать
diff --git a/public/content/translations/ru/guides/how-to-use-a-wallet/index.md b/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
index 46fc7f43bb1..1ab60e11a47 100644
--- a/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
@@ -51,7 +51,7 @@ lang: ru
1. Посетите сайт любого проекта.
2. Если целевая страница проекта является просто его статичным описанием, у вас должна быть возможность нажать кнопку «Открыть приложение» (Open the App) в меню, после чего вы перейдете к соответствующему веб-приложению.
-3. После того как вы зайдете в приложение, нажмите кнопку «Подключиться» (Connect).
+3. Войдя в приложение, нажмите кнопку Connect (Подключиться).
![Кнопка, позволяющая пользователю подключаться к сайту с помощью кошелька](./connect1.png)
diff --git a/public/content/translations/ru/roadmap/beacon-chain/index.md b/public/content/translations/ru/roadmap/beacon-chain/index.md
index c6ecec4caab..c0f94caa795 100644
--- a/public/content/translations/ru/roadmap/beacon-chain/index.md
+++ b/public/content/translations/ru/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ summaryPoint3: Сеть Beacon ввела логику консенсуса и
Сеть Beacon ввела [доказательство владения](/developers/docs/consensus-mechanisms/pos/) в Ethereum. Это обеспечивает безопасность Ethereum и дает валидаторам возможность зарабатывать ЕТН в процессе. На практике стейкинг представляет собой ставку ETH для того, чтобы активировать ПО валидатора. В роли дольщика вы запускаете программное обеспечение, которое создает и проверяет новые блоки в сети.
-Стейкинг служит той же цели, что и [майнинг](/developers/docs/mining/) в прошлом, но имеет много отличий. Майнинг требовал значительных начальных расходов в виде мощного оборудования и энергопотребления, что отражалось в нехватке масштабирования и способствовало централизации. Майнинг также не сопровождался каким-либо требованием о блокировании активов в качестве залога, что ограничивало способность протокола наказывать злоумышленников после атаки.
+Стейкинг служит той же цели, что и [майнинг](/developers/docs/consensus-mechanisms/pow/mining/) в прошлом, но имеет много отличий. Майнинг требовал значительных начальных расходов в виде мощного оборудования и энергопотребления, что отражалось в нехватке масштабирования и способствовало централизации. Майнинг также не сопровождался каким-либо требованием о блокировании активов в качестве залога, что ограничивало способность протокола наказывать злоумышленников после атаки.
Переход к доказательству владения сделал Ethereum значительно более безопасным и децентрализованным по сравнению с доказательством работы. Чем больше людей принимают участие в работе сети, тем более децентрализованной и защищенной от атак она становится.
diff --git a/public/content/translations/ru/roadmap/index.md b/public/content/translations/ru/roadmap/index.md
index 9229e8bf9db..f15e7d887f5 100644
--- a/public/content/translations/ru/roadmap/index.md
+++ b/public/content/translations/ru/roadmap/index.md
@@ -3,7 +3,7 @@ title: Дорожная карта Ethereum
description: Путь к большей масштабируемости, безопасности и экологичности Ethereum.
lang: ru
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Дорожная карта Ethereum"
summaryPoints:
buttons:
@@ -59,7 +59,7 @@ Ethereum обновляется регулярно, что приводит к
-В большинстве своем, дорожная карта является результатом многолетней работы исследователей и разработчиков, поскольку этот протокол очень зависит от технических моментов, но в целом, внести свой вклад может любой мотивированный человек. Жизненный цикл идей обычно начинается с дискуссии на одном из форумов, таких как [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) или на Discord сервере Eth R&D. Они могут появляться как ответ на выявленные уязвимые места, или как предложение от одной из компаний, работающей на уровне приложений (таких как децентрализованные приложения или биржи), или в результате понимания ограничений для конечных пользователей (таких как стоимость или скорость транзакций). Когда идеи готовы, они могут быть формализованы в виде Предложений по улучшению Ethereum (EIP). Все это происходит публично, чтобы каждый представитель сообщества мог в любой момент высказать свое мнение.
+В большинстве своем, дорожная карта является результатом многолетней работы исследователей и разработчиков, поскольку этот протокол очень зависит от технических моментов, но в целом, внести свой вклад может любой мотивированный человек. Жизненный цикл идей обычно начинается с дискуссии на одном из форумов, таких как [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://ethereum-magicians.org/) или на Discord сервере Eth R&D. Они могут появляться как ответ на выявленные уязвимые места, или как предложение от одной из компаний, работающей на уровне приложений (таких как децентрализованные приложения или биржи), или в результате понимания ограничений для конечных пользователей (таких как стоимость или скорость транзакций). Когда идеи готовы, они могут быть формализованы в виде Предложений по улучшению Ethereum (EIP). Все это происходит публично, чтобы каждый представитель сообщества мог в любой момент высказать свое мнение.
[Подробнее об управлении Ethereum](/governance/)
diff --git a/public/content/translations/ru/roadmap/single-slot-finality/index.md b/public/content/translations/ru/roadmap/single-slot-finality/index.md
index e75e217d630..62eac221a94 100644
--- a/public/content/translations/ru/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/ru/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ lang: ru
## Текущий прогресс {#current-progress}
-SSF находится в фазе исследования. Это нововведение вряд ли выйдет в течение следующих лет. Вероятно, оно станет возможным только после других существенных обновлений, таких как [древа Веркла](/roadmap/verkle-trees/) и [данкшардинг](/roadmap/danksharding]).
+SSF находится в фазе исследования. Это нововведение вряд ли выйдет в течение следующих лет. Вероятно, оно станет возможным только после других существенных обновлений, таких как [древа Веркла](/roadmap/verkle-trees/) и [данкшардинг](/roadmap/danksharding/).
## Дополнительная литература {#further-reading}
diff --git a/public/content/translations/ru/zero-knowledge-proofs/index.md b/public/content/translations/ru/zero-knowledge-proofs/index.md
index 4fa23655a2e..d8e621feb71 100644
--- a/public/content/translations/ru/zero-knowledge-proofs/index.md
+++ b/public/content/translations/ru/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Введение в доказательства с нулевым
lang: ru
---
-## Что такое доказательства с нулевым разглашением? {#what-are-zk-proofs}
+# Что такое доказательства с нулевым разглашением? {#what-are-zk-proofs}
Доказательство с нулевым разглашением — это способ доказать действительность утверждения без раскрытия самого утверждения. Доказывающий — сторона, которая пытается доказать заявление, а проверяющий отвечает за проверку заявления.
diff --git a/public/content/translations/sl/roadmap/beacon-chain/index.md b/public/content/translations/sl/roadmap/beacon-chain/index.md
index dcff2d23b4e..325aab287ef 100644
--- a/public/content/translations/sl/roadmap/beacon-chain/index.md
+++ b/public/content/translations/sl/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ Oddajniška veriga je bila temeljni del [varnega, okolju prijaznega in prilagodl
Oddajniška veriga je v Ethereum vpeljala mehanizem [dokaza o deležu](/developers/docs/consensus-mechanisms/pos/). Ta ščiti Ethereum in omogoča validatorjem, da v postopku zaslužijo več ETH. V praksi to pomeni, da je treba za aktiviranje programske opreme za validacijo zastaviti ETH. Kot zastavljavec poganjate programsko opremo, ki ustvarja in validira nove bloke v verigi.
-Zastavljanje deluje podobno, kot je prej [rudarjenje](/developers/docs/mining/), vendar je drugačno. Rudarjenje je zahtevalo veliko predhodno investicijo v obliki zmogljive strojne opreme in porabe energije. Posledici sta bili ekonomija obsega in spodbujanje centralizacije. Rudarjenje prav tako ni vključevalo zahteve po zamrznitvi sredstev kot jamstva, kar je omejevalo možnosti prokotola, da kaznuje storilce po napadu.
+Zastavljanje deluje podobno, kot je prej [rudarjenje](/developers/docs/consensus-mechanisms/pow/mining/), vendar je drugačno. Rudarjenje je zahtevalo veliko predhodno investicijo v obliki zmogljive strojne opreme in porabe energije. Posledici sta bili ekonomija obsega in spodbujanje centralizacije. Rudarjenje prav tako ni vključevalo zahteve po zamrznitvi sredstev kot jamstva, kar je omejevalo možnosti prokotola, da kaznuje storilce po napadu.
S prehodom na mehanizem dokaza o deležu je Ethereum postal občutno varnejši in bolj decentraliziran v primerjavi z mehanizmom dokaza o delu. Več ljudi kot sodeluje v omrežju, bolj decentralizirano in varno pred napadi postane.
diff --git a/public/content/translations/sw/community/events/index.md b/public/content/translations/sw/community/events/index.md
index 7bdcfc8468d..4cfd03e9b23 100644
--- a/public/content/translations/sw/community/events/index.md
+++ b/public/content/translations/sw/community/events/index.md
@@ -4,7 +4,7 @@ description: Jinsi ya kushiriki kwenye jamii ya Ethereum.
lang: sw
---
-## Matukio yajayo {#events}
+# Matukio yajayo {#events}
**Kila mwezi, kuna matukio muhimu ulimwenguni kote.** Fikiria kuhusu kushiriki mkutano mmoja ulio jirani na wewe ukutane na watu wengi walio kwenye jamii, jifunze juu ya kupata fursa za kazi na jenga ujuzi mpya.
diff --git a/public/content/translations/sw/roadmap/beacon-chain/index.md b/public/content/translations/sw/roadmap/beacon-chain/index.md
index 49df9c1eb0b..e92f17f889b 100644
--- a/public/content/translations/sw/roadmap/beacon-chain/index.md
+++ b/public/content/translations/sw/roadmap/beacon-chain/index.md
@@ -27,7 +27,7 @@ Jukumu ya mnyororo wa Kioleza litabadilika baada ya mda ila sehemu ya msingi ya
Mnyororo wa Kioleza utaingiza [uthibitisho-wa-hisa](/developers/docs/consensus-mechanisms/pos/) kwenye Ethereum. Hii ndio njia mpya ya wewe kusaidia Ethereum kua salama. Ifikirie kama faida kw jamii ambayo itafanya Ethereum kua na afya na kukutenegenezea hela zaidi wakati wa mchakato. Kiuhalisia, itahusisha wewe kuweka hisa za ETH ili kuamsha programu. Kama mthibitishaji utafanya mchakato wa shughuli za pesa na utaunda vitalu vipya kwenye mnyororo.
-Kuweka hisa na kua mt hibitishaji ni rahisi kuliko [kuchimba](/developers/docs/mining/)(jinsi ambavyo mtandao ni saklama kwa sasa). Mwishowe hii inamatumaini itasaidia Ethereum kua salama zaidi. Jinsi watu wengi wanavyoshiriki katika mtandao, ndivyo unavyozodi kujitegemea na salama kutoka kwa shambulio litakalokuja.
+Kuweka hisa na kua mt hibitishaji ni rahisi kuliko [kuchimba](/developers/docs/consensus-mechanisms/pow/mining/)(jinsi ambavyo mtandao ni saklama kwa sasa). Mwishowe hii inamatumaini itasaidia Ethereum kua salama zaidi. Jinsi watu wengi wanavyoshiriki katika mtandao, ndivyo unavyozodi kujitegemea na salama kutoka kwa shambulio litakalokuja.
Kama ungependa kua mthibitishaji na kusaidia kulinda mnyororo wa Kioleza, jifunze zaidi jinsi ya kuweka hisa.
diff --git a/public/content/translations/tr/community/code-of-conduct/index.md b/public/content/translations/tr/community/code-of-conduct/index.md
index 8fea828a03b..8525b4750b5 100644
--- a/public/content/translations/tr/community/code-of-conduct/index.md
+++ b/public/content/translations/tr/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: Ethereum.org alanlarında ulaşmaya çalıştığımız basit stand
lang: tr
---
+# Davranış kuralları {#conduct-intro}
+
## Misyon {#mission}
Ethereum için en kapsayıcı ve erişilebilir bilgi merkezini kurmak ve sürdürmek.
diff --git a/public/content/translations/tr/community/events/index.md b/public/content/translations/tr/community/events/index.md
index 316213d5e22..d6b3411e1ea 100644
--- a/public/content/translations/tr/community/events/index.md
+++ b/public/content/translations/tr/community/events/index.md
@@ -5,7 +5,7 @@ lang: tr
hideEditButton: true
---
-## Gelecek etkinlikler {#events}
+# Gelecek etkinlikler {#events}
**Her ay dünya çapında büyük Ethereum etkinlikleri olur.** Toplulukta daha fazla insanla tanışmak, istihdam fırsatları hakkında bilgi edinmek ve yeni beceriler geliştirmek için bunlardan birine katılmayı düşünebilirsiniz.
diff --git a/public/content/translations/tr/contributing/design/adding-design-resources/index.md b/public/content/translations/tr/contributing/design/adding-design-resources/index.md
index 13173c761f7..4932e988af9 100644
--- a/public/content/translations/tr/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/tr/contributing/design/adding-design-resources/index.md
@@ -4,6 +4,8 @@ description: Ethereum.org'daki tasarım materyallerinin kaliteli olmasını sağ
lang: tr
---
+# İçerik kaynaklarını ekle {#adding-design-resources}
+
Herkes [Web3 sayfasında tasarım ve kullanıcı deneyimi](/developers/docs/design-and-ux/) için yeni tasarım materyalleri önerebilir.
Bu sayfanın, hevesli web3 kullanıcıları için değer sunmaya odaklandığını unutmayın. Tasarım bölümü, hizmetleriniz, ürünleriniz ya da platformlarınızın reklamını yapmak için değildir.
diff --git a/public/content/translations/tr/contributing/design/index.md b/public/content/translations/tr/contributing/design/index.md
index f80228b0939..f1bdc0b6b90 100644
--- a/public/content/translations/tr/contributing/design/index.md
+++ b/public/content/translations/tr/contributing/design/index.md
@@ -12,7 +12,7 @@ Sonuç olarak bu, tasarım becerilerinizi sergileyeceğiniz çeşit çeşit ve e
## Nasıl katkıda bulunulur?
-### Erken tasarım prototipleri hakkında geribildirim sağlayın {#design-critique}
+### Erken tasarım prototipleri hakkında geribildirim sağlayın {#design-critique}
Bazen ham fikirlerimizi test etme konusunda yardıma ihtiyaç duyuyoruz. Bu, herhangi bir teknik bilgi olmadan katkıda bulunmanın harika bir yoludur.
@@ -20,7 +20,7 @@ Bazen ham fikirlerimizi test etme konusunda yardıma ihtiyaç duyuyoruz. Bu, her
2. Tasarımların üzerinden yorumlar seçeneğiyle geribildirim vermeye yönlendirileceksiniz.
3. Sonuç, Github konusunda paylaşılacak ve ekip tarafından kapatılacaktır.
-### Anket araştırmasına katılın {#answer-surveys}
+### Anket araştırmasına katılın {#answer-surveys}
Web sitemiz hakkında geribildirim sağlayın:
@@ -28,7 +28,7 @@ Web sitemiz hakkında geribildirim sağlayın:
2. Sağ alt köşede bulunan geribildirim aracına tıklayıp tasarım ve içerik ile ilgili soruları cevaplayın.
3. Serbest biçimdeki sorulara odaklanın.
-### Web sitesindeki tasarımla ilgili sorunları bulun ve bildirin {#report-design-issues}
+### Web sitesindeki tasarımla ilgili sorunları bulun ve bildirin {#report-design-issues}
Ethereum.org, birçok içeriğe ve özelliğe sahip, hızla büyüyen bir web sitesidir. Bazı kullanıcı arayüzleri, kolayca güncelliğini yitirebilir ya da geliştirilebilir. Böyle bir durumla karşılaşırsanız, dikkate almamız için lütfen bize bildirin.
@@ -36,7 +36,7 @@ Ethereum.org, birçok içeriğe ve özelliğe sahip, hızla büyüyen bir web si
2. Herhangi bir görsel sorun ya da kullanıcı deneyimi sorunu görürseniz, ekran görüntüsü ve notlar alın.
3. Bulduğunuz sorunları [hata raporu](https://github.com/ethereum/ethereum-org-website/issues/new/choose) ile bildirin.
-### Tasarım değişiklikleri önerin {#propose-design-changes}
+### Tasarım değişiklikleri önerin {#propose-design-changes}
Tasarım zorluklarının üstesinden gelme konusunda kendinizi rahat hissediyorsanız, GitHub konu panomuzu ziyaret edip [tasarımla ilgili sorunları](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) filtreleyin.
@@ -45,7 +45,7 @@ Tasarım zorluklarının üstesinden gelme konusunda kendinizi rahat hissediyors
3. İlgili GitHub konusunda çözümü önerin ya da [yeni bir tane oluşturun.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
4. İncelemesi için tasarım ekibini bekleyin.
-### Tasarım Sistemini birlikte geliştirin {#Contribute-to-design-system}
+### Tasarım Sistemini birlikte geliştirin {#Contribute-to-design-system}
Tasarım sistemimiz, ethereum.org'u tasarlamayı eğlenceli ve kolay hale getirir. Deneyimli bir tasarımcıysanız, web sitesi için birçok ana bileşen hazırlamamıza yardımcı olabilirsiniz.
@@ -56,7 +56,7 @@ Tasarım sistemimiz, ethereum.org'u tasarlamayı eğlenceli ve kolay hale getiri
5. Tasarım ekibi inceleyecektir.
6. Tasarım ekibi, değişiklikleri ana dosyada toplayacak ve bu dosyayı topluluk ile paylaşacaktır.
-### Web sitesinde tasarımla ilgili içerik yazın {#write-design-articles}
+### Web sitesinde tasarımla ilgili içerik yazın {#write-design-articles}
Ethereum geliştirici topluluğu güçlü olsa da, tasarım topluluğu biraz daha geride kalmıştır. Eğer web3'e dair bilgi sahibi bir tasarımcıysanız, lütfen öğrenimlerinizi daha büyük bir toplulukla paylaşmayı düşünün, böylece birlikte büyür ve gelişebiliriz; katkıda bulunmak isterseniz [Ethereum için bir tasarım sayfamız](/developers/docs/design-and-ux/) bulunmaktadır. Ayrıca [listeleme politikalarımızı](/contributing/design/adding-design-resources) kontrol edebilirsiniz.
@@ -66,7 +66,7 @@ Ethereum geliştirici topluluğu güçlü olsa da, tasarım topluluğu biraz dah
4. Onaylandıktan sonra içeriği yazın.
5. İlgili GH konusunda sunun.
-### Yeni illüstrasyonlar çizin {#prepare-illustrations}
+### Yeni illüstrasyonlar çizin {#prepare-illustrations}
Görselleştirmeler, soyut konuları özetlemenin en güçlü araçlarından biridir. Diyagramlar ve infografikler ekleyerek büyük bir potansiyel elde edilir. Sonuç olarak, bir görsel bin kelime söyleyebilir.
diff --git a/public/content/translations/tr/deprecated-software/index.md b/public/content/translations/tr/deprecated-software/index.md
deleted file mode 100644
index c86fc8ca212..00000000000
--- a/public/content/translations/tr/deprecated-software/index.md
+++ /dev/null
@@ -1,428 +0,0 @@
----
-title: Kullanımdan kaldırılmış yazılım
-description: Geliştiricileri tarafından kullanımdan kaldırılmış yazılım
-lang: tr
-sidebarDepth: 2
----
-
-# Kullanımdan kaldırılmış yazılım {#summary-deprecated-software}
-
-Bu, Ethereum ile ilgili kullanımdan kaldırılmış veya artık desteklenmeyen önemli proje ve kaynakların bir listesidir. Kullanımdan kaldırılmış çalışmaları vurgulamak, kullanıcıların işlevsel alternatifleri bulmalarını sağlamak ve kötü amaçlı sürümlerin dağıtılmasını önlemek açısından önemlidir.
-
-Bu liste topluluğumuz tarafından hazırlanmıştır. Eksik veya yanlış bir şey varsa, lütfen bu sayfayı düzenleyin!
-
-## İş ispatı {#pow}
-
-[İş ispatı](/developers/docs/consensus-mechanisms/pow), Ethereum'da Eylül 2022'ye kadar kullanılan bir mutabakat motorudur. Ethereum, [hisse ispatı](/developers/docs/consensus-mechanisms/pos) tabanlı bir mutabakat mekanizmasına geçiş yaptığında kullanımı sona ermiştir. Bu, istemci yazılımının [Ethhash](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethhash) (madencilik algoritması) ve başlangıçta yürütüm istemcilerinde tümleşik olarak sunulan mutabakat mantığı ve blok yayılım işlevselliğininin tümü dahil olmak üzere iş ispatı madenciliği ile ilgili kısımlarının kullanımdan kaldırılmasıyla gerçekleştirildi. İstemcilerin kendileri değil, bazı temel bileşenleri kullanımdan kaldırılmıştır. İş ispatı kavramı, istemci yazılımının ilgili bileşenlerinin kaldırılmasının yarattığı genel etki sonucunda kullanımdan kaldırılmıştır.
-
-## Yazılım {#software}
-
-Bu bölüm, kullanımdan kaldırılmış masaüstü, komut satırı veya sunucu yazılımlarını içerir. Başlıca türleri arasında cüzdanlar, entegre geliştirme ortamları, diller ve Ethereum istemcileri yer alır. Kullanımdan kaldırılmış yazılımı, https://github.com/ethereum adresi altında barındırılan bir depo gibi orijinal kaynaktan geldiğinden emin olmadan yüklememeye dikkat edin.
-
-### OpenEthereum {#open-ethereum}
-
-Temmuz 2021'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-OpenEthereum, düğüm sayısı bakımından ikinci en büyük Ethereum uygulamasıydı. OpenEthereum, Etherscan ve Gnosis Safe gibi Ethereum'un en büyük kullanıcılarından bazıları için anahtar altyapı parçası olması yönüyle önemli bir rol oynamıştır. İzleme yetenekleri, veri sağlayıcılar için güvenilir ve hızlı senkronizasyon sağlayarak onu diğer istemcilerden öne çıkarmıştır.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/openethereum/openethereum)
-
-**Tarihçe**
-
-OpenEthereum, madenciler, hizmet sağlayıcılar ve hızlı senkronizasyon ile maksimum çalışma süresine ihtiyaç duyan borsalar için tasarlanmıştır. OpenEthereum, hızlı ve güvenilir hizmetler için gereken temel altyapıyı sağlamıştır.
-
-**Alternatifler**
-
-[Tüm Ethereum yürütüm istemcisi seçeneklerini karşılaştırın](/developers/docs/nodes-and-clients/#execution-clients).
-
-### Grid {#grid}
-
-10 Ocak 2020'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-Grid; Ethereum, IPFS ve merkeziyetsiz diğer ağlara güvenli bir şekilde erişmenizi sağlayan JavaScript tabanlı bir masaüstü uygulamasıydı. Grid, daha az teknik bilgiye sahip kullanıcıların merkeziyetsiz uygulamalarla güvenli bir şekilde etkileşime girmelerine yardımcı olmak için kullanıcı dostu bir arayüz sunuyordu ve bu da herkes için erişilebilirliği artırıyordu.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/grid)
-
-**Tarihçe**
-
-Grid, aynı zamanda Mist'in varisi olarak görülebilir. Mist de bağımsız bir JavaScript tabanlı masaüstü uygulamasıydı ve bir Geth düğümü içeriyordu. Grid, cüzdan işlevini kaldırdı ve farklı türde düğümleri çalıştırmaya yönelik eklenti tarzında bir yaklaşım getirdi.
-
-**Alternatifler**
-
-[DAppNode](https://dappnode.io/), merkeziyetsiz uygulamaları, P2P istemcilerini ve blokzincir düğümlerini dağıtmaya ve barındırmaya yarayan bir platformdur.
-
-### Ethereum Studio {#ethereum-studio}
-
-7 Aralık 2020'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-Ethereum Studio, kullanıcıların akıllı sözleşmeler oluşturmasına, test etmesine ve bunlar için ön yüzler geliştirmesine olanak tanıyan web tabanlı bir IDE idi.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/SuperblocksHQ/ethereum-studio)
-
-**Tarihçe**
-
-Ethereum Studio, kullanıcılara tümleşik bir Ethereum blokzinciri ve Solidity derleyicisine sahip bir IDE sunmak amacıyla geliştirilmiştir. Bunun yanı sıra, canlı kod düzenlemesi yapma ve bir terminal ihtiyacı olmadan tam merkeziyetsiz uygulamalar çıkarabilme olanağı da sağlamıştır.
-
-**Alternatifler**
-
-[Remix](https://remix.ethereum.org/), Solidity geliştirmeleri için alternatif bir web IDE'sidir. Ayrıca [Geliştirici Portalı](/developers/), web ve yerel geliştirme, belgeleme ve daha fazlası için araçlar sunmaktadır.
-
-### Meteor Dapp Wallet {#meteor-dapp-wallet}
-
-27 Mart 2019'da kullanımdan kaldırılmıştır
-
-**Özet**
-
-Meteor Dapp Wallet, Ethereum hesaplarını yönetmeye ve akıllı sözleşmelerle etkileşime girmeye yarayan bir Ethereum cüzdanı olan Mist'in bir bileşeniydi. Meteor Dapp Wallet web kullanıcı arayüzü, uzun yıllar boyunca "wallet.ethereum.org" alt alan adı olarak barındırılmıştır.
-
-Ayrıca, Mist Çok İmzalı Sözleşmesi (solidity kodu) de dahil edilmiş ve Meteor Dapp Wallet, bu sözleşmeyi yapılandırmaya ve dağıtmaya yönelik bir kullanıcı arayüzü de sunmuştur.
-
-**Kullanımdan kaldırılmamıştır: dağıtılmış Mist Çoklu İmzaları**
-
-Binlerce kullanıcı tarafından Ethereum Ana Ağı'na bayt kodu olarak dağıtılmış olan Mist Çoklu İmzası, olaysız biçimde değerleri depolamak ve yönetmek amacıyla kullanılmaya devam etmektedir. [Bir Mist Çok İmzalı Sözleşmesiyle Etkileşim Kurma](https://support.mycrypto.com/how-to/sending/how-to-interact-with-a-multisig-contract), bu akıllı sözleşmelerin nasıl kullanılacağıyla ilgili iyi bir genel görünüm sunar.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/meteor-dapp-wallet)
-
-**Tarihçe**
-
-Aşağıda Mist'e göz atın.
-
-**Alternatifler**
-
-Ethereum.org'da [Ethereum Cüzdanları](/wallets/) sayfasına göz atın.
-
-### Mist {#mist}
-
-27 Mart 2019'da kullanımdan kaldırılmıştır
-
-**Özet**
-
-Mist, Electron ile geliştirilmiş ve kullanıcıların Ethereum hesaplarını yönetmesini ve geleneksel internette barındırılan merkeziyetsiz uygulamalarla etkileşime geçmesini sağlayan özelleştirilmiş bir tarayıcıydı.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/mist)
-
-**Tarihçe**
-
-Mist, Ethereum anahtarlarının nasıl yönetileceğini keşfettiği, kullanıcılara çoklu imzalar gibi finansal araçları tanıttığı ve Web3'ün nasıl çalışacağını gösterdiği için önemli bir erken deneme olmuştur. Ayrıca kullanıcılara, Ethereum anahtarlarını temsil eden şirin ve akılda kalıcı 8 bit stili grafikler olan blokçukları da tanıtmıştır.
-
-**Alternatifler**
-
-[MetaMask](https://metamask.io/), Ethereum anahtarlarını yönetmenizi ve merkeziyetsiz uygulamalarla etkileşime geçmenizi sağlayan bir tarayıcı içi cüzdandır. Google Chrome ve Firefox'ta uzantı olarak mevcuttur ve [Brave Tarayıcı](https://brave.com/)'da da bulunur.
-
-### Mix {#mix}
-
-11 Ağustos 2016'da kullanımdan kaldırılmıştır
-
-**Özet**
-
-Mix, geliştiricilerin Ethereum'da akıllı sözleşme oluşturmasını ve dağıtmasını sağlayan, C++'da yazılmış bir IDE idi.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/mix)
-
-**Tarihçe**
-
-Mix, Ethereum'la ilgili en eski uygulamalardan biridir. [Devcon0'da Gavin Wood tarafından yapılan bu sunuma](https://www.youtube.com/watch?v=hcP_z_wBlaM) göz atın.
-
-**Alternatifler**
-
-[Remix](https://remix.ethereum.org/), Solidity/akıllı sözleşme geliştiriciliği, testleri ve dağıtılması için tarayıcıda barındırılan bir IDE'dir. Bir masaüstü seçeneği de vardır.
-
-### Minimal {#minimal}
-
-2020'de kullanımdan kaldırılmıştır.
-
-**Özet**
-
-Minimal, Ethereum blokzincirinin Go'da yazılmış modüler bir uygulamasıydı.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/umbracle/minimal)
-
-**Tarihçe**
-
-Minimal'in yerini [polgon-sdk](https://github.com/0xPolygon/polygon-edge) almıştır
-
-### Hyperledger Burrow {#hyperledger-burrow}
-
-2022'de kullanımdan kaldırılmıştır.
-
-**Özet**
-
-Hyperledger Burrow, izin verilmiş bir Ethereum akıllı sözleşme blokzincir düğümüydü. Ethereum EVM'yi ve WASM akıllı sözleşme kodunu, izin verilen sanal makinelerde çalıştırmıştır.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/hyperledger/burrow)
-
-### Mana-Ethereum {#mana-ethereum}
-
-**Özet**
-
-Mana-Ethereum, Elixir kullanılarak geliştirilmiş bir Ethereum istemcisiydi.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/mana-ethereum/mana)
-
-**Tarihçe**
-
-Mana-Ethereum'un Github deposu, henüz açık bir şekilde arşivlenmemiştir ancak son giriş 2019'da yapılmıştır.
-
-### Aleth (cpp-ethereum) {#aleth}
-
-6 Ekim 2021'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-Aleth (önceden cpp-ethereum olarak bilinirdi) C++'da yazılmış bir Ethereum istemcisiydi.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/aleth)
-
-**Tarihçe**
-
-Aleth, 6 Ekim 2021'de kullanımdan kaldırılmadan önce Ethereum'un en popüler üçüncü istemcisiydi.
-
-**Alternatifler**
-
-[Geth](https://geth.ethereum.org/), iyi bilinen alternatif bir Ethereum istemcisidir.
-
-### Ethereum-H {#ethereum-h}
-
-**Arşivler**
-
-Ethereum-H arşivleri GitHub'dan kaldırılmıştır.
-
-**Tarihçe**
-
-Ethereum-H, Haskell'de yazılmış bir Ethereum istemcisiydi. 2015 civarında kullanımdan kaldırılmıştır.
-
-**Alternatifler**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) ve [Erigon](https://github.com/ledgerwatch/erigon) uygulanabilir alternatif Ethereum istemcileridir - güncel bir Haskell istemcisi yoktur.
-
-### ruby-ethereum {#ruby-ethereum}
-
-**Arşivler**
-
-[ruby-ethereum GitHub deposu](https://github.com/cryptape/ruby-ethereum)
-
-**Tarihçe**
-
-ruby-ethereum, Ruby'de yazılmış bir Ethereum istemcisiydi. 2018 civarında kullanımdan kaldırılmıştır.
-
-**Alternatifler**
-
-[Geth](https://geth.ethereum.org/), [Nethermind](http://nethermind.io/), [Besu](https://besu.hyperledger.org/en/stable/) and [Erigon](https://github.com/ledgerwatch/erigon) uygulanabilir alternatif Ethereum istemcileridir. Güncel bir Ruby istemcisi yoktur.
-
-### Parity {#parity}
-
-2 Haziran 2020'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-Parity, Rust'ta yazılmış bir Ethereum istemcisiydi.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/openethereum/parity-ethereum)
-
-**Tarihçe**
-
-Ethereum'un ilk yıllarındaki iki önde gelen uygulanabilir istemciden biri olan (diğeri Geth) Parity, ekosistemin çok önemli bir parçasıydı. 2016'daki Şanghay Saldırıları sırasında Parity, Geth gibi istemciler saldırı tarafından durdurulduğunda Ethereum Ağı'nın çalışmaya devam etmesini sağlamıştır, bu da istemci çeşitliliğinin önemini kanıtlar.
-
-**Alternatifler**
-
-[Erigon](https://github.com/ledgerwatch/erigon) (önceden Turbo-Geth diye adlandırılıyordu), Go'da yazılmış, verimlilik cephesindeki yeni nesil bir Ethereum istemcisidir.
-
-**Not:** _Parity Ethereum istemcisinin yerine geçtiği proje olan [OpenEthereum](https://github.com/openethereum/openethereum)**, o tarihten beri kullanımdan kalkmış durumdadır.**_
-
-Ethereum.org'daki ["Kendi Ethereum düğümünüzü programlayın"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) kaynağı, bir Ethereum istemcisini indirme, kurma ve çalıştırma bölümlerini kapsar.
-
-### Trinity {#trinity}
-
-1 Temmuz 2021'de kullanımdan kaldırılmıştır
-
-**Özet**
-
-Trinity, topluluk için bir araştırma ve eğitim aracı olarak hizmet eden python tabanlı bir Ethereum istemcisiydi. Trinity ile ilgisi olan çok sayıda python tabanlı modül, hala aynı takım tarafından yönetilmektedir; bunlara, [Py-EVM](https://github.com/ethereum/py-evm) de dahildir.
-
-**Arşivler**
-
-[Arşivlenmiş GitHub deposu](https://github.com/ethereum/trinity)
-
-**Tarihçe**
-
-Trinity, python tabanlı ilk Ethereum istemcilerinden biri olan [pyethereum](https://github.com/ethereum/pyethereum/tree/b704a5c6577863edc539a1ec3d2620a443b950fb)'un yerine almıştır.
-
-**Alternatifler**
-
-Ethereum.org'daki ["Kendi Ethereum düğümünüzü programlayın"](/developers/docs/nodes-and-clients/run-a-node/#getting-the-client) kaynağı, bir Ethereum istemcisini indirme, kurma ve çalıştırma bölümlerini kapsar.
-
-[EthereumJS](https://github.com/ethereumjs) projesi de Trinity ile benzer bir araştırma ve eğitim amaçlı kullanım senaryosuna sahiptir.
-
-## Merkeziyetsiz Uygulamalar ve Hizmetler {#dapps-and-services}
-
-Bu bölüm, Ethereum Ana Ağı'na ve EVM tabanlı diğer ağlara dağıtılmış olan hizmetlere yöneliktir. Buradaki merkeziyetsiz uygulama ve hizmetlerin bakımsızlık, protokol değişiklikleri, vs. gibi sebeplerden hack'lenmiş ya da güvenlik açıklarına sahip olan DeFi uygulamalarını kapsayabileceğini göz önünde bulundurun.
-
-### Cover Protokolü {#cover-protocol}
-
-2021 sonbaharında kapatılmıştır
-
-**Özet**
-
-Cover, Ethereum ve diğer EVM tabanlı ağlarda çalışan bir DeFi sigorta protokolüydü.
-
-**Arşivler**
-
-[Web sitesi](https://wayback.archive-it.org/17679/20211004074635/https://www.coverprotocol.com/)
-
-[Medium makaleleri](https://wayback.archive-it.org/17679/20211004074633/https://coverprotocol.medium.com/)
-
-[Github depoları](https://github.com/CoverProtocol/cover-core-v1)
-
-[Dokümanlar](https://wayback.archive-it.org/17679/20211004074634/https://docs.coverprotocol.com/)
-
-### DAO {#the-dao}
-
-2016 yazında hack'lenmiş ve kapatılmıştır
-
-**Özet**
-
-DAO, projelerin fonlanmasını organize etmeye yönelik bir akıllı sözleşme, merkeziyetsiz uygulama ve forumdu. Bir güvenlik açığından faydalanarak ETH'nin çoğu boşaltıldı, bu da DAO'ya yatırmış olanların ETH'lerini geri vermek için topluluk tarafından organize edilen bir sert çatallanmayı beraberinde getirdi. UX ön yüzü ve forum kapatıldı.
-
-**Arşivler**
-
-[14 Mayıs 2016 tarihli "daohub.org" İnternet Arşivi](https://web.archive.org/web/20160514105232/https://daohub.org/)
-
-**Tarihçe**
-
-DAO başarısız olmasına rağmen, konsept devam ettirildi. DAO için geliştirilmiş temel teknik, sosyal ve yönetişim özellikli model, DeFi, NFT ve proje fonlama topluluklarında yaygın biçimde kullanılmaktadır.
-
-[ethereum.org'daki "DAO Çatallanması"](/history/#dao-fork)
-
-["DAO" için Wikipedia girdisi]()
-
-**Alternatifler**
-
-[ethereum.org'daki "DAO'lar"](/dao/)
-
-[MolochDAO](https://www.molochdao.com/)
-
-[Gitcoin Hibeleri](https://gitcoin.co/grants/)
-
-### SparkPool {#sparkpool}
-
-2021 sonbaharında kapatılmıştır
-
-**Özet**
-
-Merkezi Hangzhou'da bulunan Sparkpool hizmeti ve topluluğu, dünyanın Ethereum merkezli madencilik havuzlarının en büyüklerinden biriydi.
-
-**Arşivler**
-
-**Tarihçe**
-
-EthFans topluluğu ile ilişkili olan hizmet, 2015'te başlatıldı. Spankpool, yasal düzenlemelerin daha katı hale gelmesinin sonucu olarak 2021 sonbaharında dağıldı.
-
-**Alternatifler**
-
-[Ethermine](https://ethermine.org/)
-
-## Dokümantasyon ve Bilgi Kaynakları {#documentation-and-information-sources}
-
-Şu anda kaldırılmış ya da mevcut olmasına rağmen sürdürülmeyen sayısız dokümantasyon, makale, öğretici ve forum kaynağı vardır. Önemli olan ya da güncel durumu kullanımdan kaldırılmış olmasına rağmen kafa karışıklığına ya da dolandırıcılık girişimlerine sebep olabilecek birkaç taneyi seçtik.
-
-### Legacy Wiki ve eth.wiki {#eth-wiki}
-
-**Özet**
-
-Legacy Wiki ve eth.wiki, topluluğun geneli için Ethereum Foundation tarafından yönetilen wiki'lerdi. Bunlar, daha çok Ethereum platformunun temel yönleri hakkında detaylı açıklamaları ve teknik yol haritalarının özetlerini barındırmaya yöneliklerdi.
-
-**Arşivler**
-
-[eth.wiki için arşivlenmiş GitHub deposu](https://github.com/ethereum/eth-wiki)
-
-[Legacy Wiki için arşivlenmiş bir GitHub deposu](https://github.com/ethereum/wiki/wiki)
-
-**Tarihçe**
-
-Legacy Wiki, bir GitHub wiki'siydi ve teknik içeriklerden (orijinal Ethereum Tanıtım Belgesi de dahil) oluşan erken bir alandı. Ethereum geliştiricileri, zaman içinde kendi dokümantasyonlarını, spesifikasyonlarını ve teknik açıklama çalışmalarını [Dokümanları Okuyun](https://readthedocs.org/) gibi diğer platformlara ve GitHub'da barındırılan içeriklere taşıdılar.
-
-2019 ve 2020'de eth.wiki, Legacy Wiki'nin yerini aldı ancak katkıda bulunan katılımcılardan oluşan sağlam bir topluluk oluşmadı.
-
-**Alternatifler**
-
-Topluluk tarafından yönetilen içerik: [Ethereum.org Web Sitesi](/)
-
-Ethereum yazılım projeleri, genelde dokümantasyonlarını [Dokümanları Okuyun](https://readthedocs.org/) içinde barındırır
-
-Github'da barındırılan teknik spesifikasyonlar: [EIP'ler](https://github.com/ethereum/EIPs), [Yürütüm Spesifikasyonları](https://github.com/ethereum/execution-specs), [Mutabakat Spesifikasyonları](https://github.com/ethereum/consensus-specs)
-
-### forum.ethereum.org {#forum-ethereum-org}
-
-**Özet**
-
-Ethereum Topluluk Forumu, Ethereum Foundation tarafından yönetilen ve Vanilla Forums üzerinde barındırılan bir tartışma panosuydu. Bu pano, "forum.ethereum.org" alt etki alanını kullanıyordu.
-
-**Arşivler**
-
-Arşiv URL'si: [https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/](https://wayback.archive-it.org/16516/20210618210825/https://forum.ethereum.org/)
-
-**Tarihçe**
-
-Bu Forum, erken dönemlerde Ethereum topluluğunun "resmi" tartışma panosuydu. Forum, [/r/ethereum](https://reddit.com/r/ethereum) ve birkaç Skype kanalı ile birlikte geliştiriciler, tasarımcılar ve idareciler için önemli bir koordinasyon noktasıydı. Yıllar geçtikçe Forumun katılımcıları başka yerlere geçti ve burası daha çok bir madencilik topluluğuna dönüştü.
-
-**Alternatifler**
-
-[/r/ethereum](https://reddit.com/r/ethereum) ve çok sayıda DAO Forum ile Discord sunucusu.
-
-## Gitter Kanalları {#gitter-channels}
-
-### AllCoreDevs {#allcorewdevs-gitter}
-
-**Özet**
-
-AllCoreDevs Gitter, [Ethereum istemcisinin temel geliştiricileri](https://github.com/ethereum/pm/) için herkese açık ana koordinasyon iletişim kanalıydı.
-
-**Arşivler**
-
-[ethereum/AllCoreDevs Gitter Kanalı](https://gitter.im/ethereum/AllCoreDevs)
-
-**Alternatifler**
-
-Lütfen [EthR&D Discord Sunucusu](https://discord.gg/qHv7AjTDuK)'ndaki "allcoredevs" kanalını kullanın
-
-### EthereumJS {#ethereumjs-gitter}
-
-**Özet**
-
-EthereumJS Gitter, [EthereumJS projesinin](https://ethereumjs.github.io/) herkese açık ana koordinasyon iletişim kanalıydı.
-
-**Arşivler**
-
-[ethereum/EthereumJS Gitter Kanalı](https://gitter.im/ethereum/ethereumjs)
-
-**Alternatifler**
-
-Lütfen [EthereumJS Discord Sunucusu](https://discord.gg/TNwARpR)'nu kullanın
diff --git a/public/content/translations/tr/developers/docs/apis/json-rpc/index.md b/public/content/translations/tr/developers/docs/apis/json-rpc/index.md
index 725980b6921..9166b134f37 100644
--- a/public/content/translations/tr/developers/docs/apis/json-rpc/index.md
+++ b/public/content/translations/tr/developers/docs/apis/json-rpc/index.md
@@ -575,7 +575,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
Haritanın bir öğesini almak daha zordur. Bir elemanın haritadaki konumu şu şekilde hesaplanır:
```js
-keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
```
Bu, pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] üzerindeki depolamayı almak için konumu şu şekilde hesaplamamız gerektiği anlamına gelir:
diff --git a/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 19471096911..928262c63ce 100644
--- a/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -4,7 +4,7 @@ description: Dagger-Hashimoto algoritmasına detaylı bir bakış.
lang: tr
---
-Dagger-Hashimoto, Ethereum'un madencilik algoritması için orijinal araştırma uygulaması ve şartnamesiydi. Dagger-Hashimoto'nun yerini [Ethash](#ethash) aldı. 15 Eylül 2022'de gerçekleşen [Birleşim'den](/updates/merge) sonra madencilik tamamen durdurulmuştur. O zamandan beri Ethereum [hisse ispatı](/developers/docs/consensus-mechanisms/pos) mekanizmasını kullanmaktadır. Bu sayfa sadece bilgilendirme içindir - burdaki bilgi Birleşim sonrası Ethereum için geçerli değildir.
+Dagger-Hashimoto, Ethereum'un madencilik algoritması için orijinal araştırma uygulaması ve şartnamesiydi. Dagger-Hashimoto'nun yerini [Ethash](#ethash) aldı. 15 Eylül 2022'de gerçekleşen [Birleşim'den](/roadmap/merge/) sonra madencilik tamamen durdurulmuştur. O zamandan beri Ethereum [hisse ispatı](/developers/docs/consensus-mechanisms/pos) mekanizmasını kullanmaktadır. Bu sayfa sadece bilgilendirme içindir - burdaki bilgi Birleşim sonrası Ethereum için geçerli değildir.
## Ön koşullar {#prerequisites}
diff --git a/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index baaf4e7dade..c5c1bb72e3f 100644
--- a/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/tr/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -44,7 +44,7 @@ ACCESSES = 64 # number of accesses in hashimoto loop
### 'SHA3' kullanımı {#sha3}
-Ethereum'un gelişimi, SHA3 standardının geliştirilmesiyle çakıştı ve standartlar süreci, sonlandırılmış karma algoritmanın dolgusunda geç bir değişiklik yaptı, böylece Ethereum'un "sha3_256" ve "sha3_512" karmaları standart sha3 karmaları değil, diğer bağlamlarda "Keccak-256" ve "Keccak-512" olarak genellikle atıfta bulunulan bir değişkendir. Tartışmaya ör. [buradan](https://eips.ethereum.org/EIPS-1803), [buradan](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) ve [buradan bakabilirsiniz](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+Ethereum'un gelişimi, SHA3 standardının geliştirilmesiyle çakıştı ve standartlar süreci, sonlandırılmış karma algoritmanın dolgusunda geç bir değişiklik yaptı, böylece Ethereum'un "sha3_256" ve "sha3_512" karmaları standart sha3 karmaları değil, diğer bağlamlarda "Keccak-256" ve "Keccak-512" olarak genellikle atıfta bulunulan bir değişkendir. Tartışmaya ör. [buradan](https://eips.ethereum.org/EIPS/eip-1803), [buradan](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) ve [buradan bakabilirsiniz](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Lütfen aşağıdaki algoritmanın açıklamasında "sha3" karmalarına atıfta bulunulduğunu unutmayın.
diff --git a/public/content/translations/tr/developers/docs/programming-languages/python/index.md b/public/content/translations/tr/developers/docs/programming-languages/python/index.md
index 503a9582fa9..dd75e253214 100644
--- a/public/content/translations/tr/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/tr/developers/docs/programming-languages/python/index.md
@@ -82,7 +82,7 @@ Aşağıdaki Ethereum tabanlı projeler bu sayfada bahsedilen araçları kullan
## Python Topluluk tartışması {#python-community-contributors}
- Web3.py ve diğer Python çerçeve tartışmaları için [Ethereum Python Topluluk Discord'u](https://discord.gg/9zk7snTfWe)
-- Vyper akıllı sözleşme programlama ile ilgili tartışmalar için [Vyper Discord'u](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>)
+- Vyper akıllı sözleşme programlama ile ilgili tartışmalar için [Vyper Discord'u](https://discord.gg/SdvKC79cJk)
## Diğer Toplu Listeler {#other-aggregated-lists}
diff --git a/public/content/translations/tr/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/tr/developers/docs/standards/tokens/erc-4626/index.md
index b250f310747..5818153d8f3 100644
--- a/public/content/translations/tr/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/tr/developers/docs/standards/tokens/erc-4626/index.md
@@ -204,4 +204,4 @@ event Withdraw(
## Daha fazla okuma {#further-reading}
- [EIP-4626: Tokenize edilmiş kasa Standartı](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: GitHub Deposu](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
+- [ERC-4626: GitHub Deposu](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/tr/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/tr/developers/tutorials/erc20-with-safety-rails/index.md
index e96ef9f01cd..0a1dc2d5b96 100644
--- a/public/content/translations/tr/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/translations/tr/developers/tutorials/erc20-with-safety-rails/index.md
@@ -24,7 +24,7 @@ Bütün kaynak kodunu görmek isterseniz:
## ERC-20 sözleşmesi oluşturma {#creating-an-erc-20-contract}
-Güvenlik önlemi işlevini eklemeden önce bize bir ERC-20 sözleşmesi lazım. Bu makalede [OpenZeppelin'in Sözleşme Sihirbazı'nı](https://docs.openzeppelin.com/contracts/4.x/wizard) kullanacağız. Başka bir sekmede açın ve şu yönergeleri izleyin:
+Güvenlik önlemi işlevini eklemeden önce bize bir ERC-20 sözleşmesi lazım. Bu makalede [OpenZeppelin'in Sözleşme Sihirbazı'nı](https://docs.openzeppelin.com/contracts/5.x/wizard) kullanacağız. Başka bir sekmede açın ve şu yönergeleri izleyin:
1. **ERC20**'yi seçin.
2. Bu ayarları girin:
diff --git a/public/content/translations/tr/developers/tutorials/run-light-node-geth/index.md b/public/content/translations/tr/developers/tutorials/run-light-node-geth/index.md
deleted file mode 100644
index 44c4418b076..00000000000
--- a/public/content/translations/tr/developers/tutorials/run-light-node-geth/index.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: Geth ile bir hafif (light) düğüm nasıl çalıştırılır
-description: Geth ile bir lightclient nasıl indirilir, kurulur ve çalıştırılır.
-author: "Brian Gu"
-tags:
- - "istemciler"
- - "düğümler"
-skill: beginner
-lang: tr
-published: 2022-03-04
----
-
-Bir [Ethereum düğümü](/developers/docs/nodes-and-clients/) çalıştırmak istiyor olabilirsiniz. Bunu yapmanın en kolay yollarından biri Geth'i indirmek, kurmak ve çalıştırmaktır. Geth ile bir hafif düğümü dakikalar içinde çalışır duruma getirebiliriz.
-
-Hafif istemci, Ethereum durumuyla tam etkileşime izin verirken 400 Mb'den daha az depolama gerektirir. Hafif istemciler uzak eşlerden veri alır, bu nedenle bazı sorguların yanıtlanması diğer senkronizasyon modlarına kıyasla daha uzun sürebilir.
-
-Farklı senkronizasyon modları arasındaki farkların açıklaması için [düğüm ve istemci geliştirici belgelerimizi](/developers/docs/nodes-and-clients/#node-types) okuyun.
-
-## Kurun ve çalıştırın {#install-and-run}
-
-İlk olarak, [Geth'i kurun](https://geth.ethereum.org/docs/install-and-build/installing-geth).
-
-Geth'i kurduktan sonra, bir Terminal penceresinde aşağıdaki komutu çalıştırarak bir Ethereum düğümünü "hafif" modda çalıştırabilirsiniz:
-
-```bash
-geth --syncmode light
-```
-
-Geth başlatıldıktan sonra, "eşler" olarak bilinen Ethereum üzerindeki diğer düğümlere bağlanmaya başlayacak. Eşlerle bağlantı kurma süreci biraz zaman alabilir.
-
-Geth düğümünüz yeterli sayıda eşe sahip olduğunda, zincirdeki yeni bloklardan başlıkları içe aktarır.
-
-Yeni blok başlıklarının artık bir "yaşı" olmadığında Geth, zincirin başıyla senkronize edilir.
-
-## Düğümünüzü durdurma ve yeniden başlatma {#stopping-and-restarting-your-node}
-
-CTRL+C tuşlarına basarak düğümünüzü istediğiniz zaman durdurabilirsiniz.
-
-Düğümü yeniden başlatırken, Geth'in düğümün son çalıştırılmasından bu yana oluşturulan blok başlıklarını indirmesi birkaç dakika sürecektir.
-
-## HTTP-RPC sunucusunu etkinleştir {#enable-the-http-rpc-server}
-
-HTTP-RPC sunucusunu etkinleştirmek, Ethereum düğümünüzü cüzdanlar, tarayıcı uzantıları veya özel yazılım kitaplıkları gibi diğer yazılımlara bağlamanıza olanak tanır.
-
-Geth'i başlatırken aşağıdaki komutu çalıştırarak HTTP-RPC sunucusunu etkinleştirebilirsiniz:
-
-```bash
-geth --syncmode light --http
-```
-
-Etkinleştirildiğinde, `curl http://127.0.0.1:8545` komutunu çalıştırın. Bu, hata bildirmemelidir.
-
-### Uzak bağlantılara izin verin {#allow-remote-connections}
-
-Uzak ana bilgisayarların düğümünüze bağlanmasına izin vermek için aşağıdaki komutla Geth'i başlatın:
-
-```
-geth --syncmode light --http --http.addr 0.0.0.0
-```
-
-Not: Bu, güvenlik duvarı gibi yerel ana makinenize gelen istekleri engelleyen bir işlem olmadığını varsayar.
-
-## Geth JavaScript konsolu {#geth-javascript-console}
-
-Geth, düğümünüzle etkileşim kurmak için kullanabileceğiniz yerleşik bir JavaScript konsoluna ve [web3js](https://github.com/ethereum/web3.js/) adlı bir JavaScript API'sine sahiptir.
-
-JavaScript konsolunu kullanmak için şunu çalıştırın:
-
-```bash
-geth attach
-```
-
-Bu konsol, Ethereum ile doğrudan etkileşime izin verir. Örneğin, `eth.blockNumber` komutunu çalıştırmak, bilinen en son blok numarasını yazdıracaktır.
-
-[Tam web3js belgeleri](http://web3js.readthedocs.io/)
-
-## Mainnet ve test ağları {#mainnet-and-testnets}
-
-Geth, düğümünüzü varsayılan olarak [Ethereum Mainnet](/glossary/#mainnet/) üzerinde çalıştırır.
-
-Terminal'de aşağıdaki komutlardan birini çalıştırarak, [genel test ağlarından](/networks/#testnets/) birinde bir düğüm çalıştırmak için Geth'i kullanmak da mümkündür:
-
-```bash
-geth --syncmode light --ropsten
-geth --syncmode light --rinkeby
-geth --syncmode light --goerli
-```
-
-## Blok zinciri ve EVM verileri nerede saklanıyor? {#where-is-the-blockchain-and-evm-data-stored}
-
-Geth'in ham blok zinciri verilerini depolamak için kullandığı dizin, işletim sisteminize bağlıdır. Geth'i çalıştırdıktan sonra şuna benzeyen bir mesaj bulmaya çalışın:
-
-```bash
-INFO [11-18|14:04:47] Allocated cache and file handles database=/Users/bgu/Library/Ethereum/testnet/geth/lightchaindata cache=768 handles=128
-```
-
-`“database=”` ardındaki yol, blok zinciri verilerinin makinenizde nerede depolandığını size söyleyecektir. Tam bir düğüm çalıştırıyorsanız bu dizin, blok zincirine taahhüt edilmiş her blok hakkındaki tüm verileri içerecektir. Hafif bir düğüm çalıştırdığımız için bu dizin yalnızca blok başlıklarını içerir.
-
-Bu noktada, buranın blok zincirinin en düşük seviyede yaşadığı yer olduğunu vurgulamakta fayda var. Blok zincirinin tam içeriği ve EVM durumu, Ethereum ağındaki her tam düğümde, bilgisayarınızdakine çok benzeyen dizinlerde depolanır.
-
-## Daha fazla okuma {#further-reading}
-
-- [Farklı ağlar hakkında öğrenin](/developers/docs/networks/).
-- [Tam bir düğüm çalıştırın](/run-a-node/)
diff --git a/public/content/translations/tr/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/tr/developers/tutorials/uniswap-v2-annotated-code/index.md
index f81404dc6ac..54f4c9e8dbe 100644
--- a/public/content/translations/tr/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/tr/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -743,7 +743,7 @@ Bu, fabrikanın ana işlevidir, yani iki ERC-20 token'ı arasında bir eş takas
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Zincir dışında önceden hesaplanabilmesi için yeni takasın adresinin deterministik olmasını istiyoruz (bu, [katman 2 işlemleri](/developers/docs/layer-2-scaling/) için yararlı olabilir). Bunu yapabilmek için onları aldığımız sıraya bakmaksızın jeton adreslerinin tutarlı bir sırasına sahip olmamız gerekir, bu yüzden de onları burada sıralarız.
+Zincir dışında önceden hesaplanabilmesi için yeni takasın adresinin deterministik olmasını istiyoruz (bu, [katman 2 işlemleri](/developers/docs/scaling/) için yararlı olabilir). Bunu yapabilmek için onları aldığımız sıraya bakmaksızın jeton adreslerinin tutarlı bir sırasına sahip olmamız gerekir, bu yüzden de onları burada sıralarız.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
diff --git a/public/content/translations/tr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/tr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 19899d962e8..35e6377fd9b 100644
--- a/public/content/translations/tr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/tr/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -295,4 +295,4 @@ Bu öğreticinin kaynak kodu [burada](https://github.com/EthWorks/Waffle/tree/ma
Ayrıca ilginizi çekebilecek öğreticiler:
-- [Waffle ile akıllı sözleşmeleri test etme](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Waffle ile akıllı sözleşmeleri test etme](/developers/tutorials/waffle-test-simple-smart-contract/)
diff --git a/public/content/translations/tr/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/tr/developers/tutorials/waffle-test-simple-smart-contract/index.md
index ebd19cf0a36..20b01d0d49e 100644
--- a/public/content/translations/tr/developers/tutorials/waffle-test-simple-smart-contract/index.md
+++ b/public/content/translations/tr/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -200,4 +200,4 @@ Waffle ile akıllı sözleşmeleri test etmenin ilk büyük adımını tamamlad
- [ERC20 sözleşmelerini Waffle ile test etme](/developers/tutorials/testing-erc-20-tokens-with-waffle/)
- [Waffle: Dinamik taklit ve sözleşme çağrılarını test etme](/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/#gatsby-focus-wrapper)
-- [Hardhat ve ethers ile Waffle'da merhaba dünya öğreticisi](/developers/tutorials/waffle-hello-world-with-buidler-tutorial/)
+- [Hardhat ve ethers ile Waffle'da merhaba dünya öğreticisi](/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/)
diff --git a/public/content/translations/tr/roadmap/beacon-chain/index.md b/public/content/translations/tr/roadmap/beacon-chain/index.md
index 9671a04f1ff..e241bfdf9ce 100644
--- a/public/content/translations/tr/roadmap/beacon-chain/index.md
+++ b/public/content/translations/tr/roadmap/beacon-chain/index.md
@@ -28,7 +28,7 @@ summaryPoint3: İşaret Zinciri ve mutabakat mantığını ve şimdilerde Ethere
İşaret Zinciri, Ethereum'a [Hisse İspatını](/developers/docs/consensus-mechanisms/pos/) tanıttı. Bu, Ethereum'u güvende tutar ve süreç doğrulayıcılarına daha fazla ETH kazandırır. Pratikte hisseleme, doğrulayıcı yazılımını aktive etmek için ETH'nin hisselenmesini içerir. Bir paydaş olarak, zincirde yeni bloklar oluşturan ve doğrulayan yazılımı çalıştırırsınız.
-Hisseleme [ madenciliğin](/developers/docs/mining/) eskiden yaptığına benzer bir amaca hizmet eder, ancak birçok yönden farklıdır. Madencilik güçlü donanım, enerji harcaması gibi büyük ön harcamalar gerektiriyordu ve ölçeklendirilmiş ekonomilere sebep oluyor ve merkeziyetçiliği teşvik ediyordu. Madencilik ayrıca varlıkları teminat olarak kitlemeye gerek duymuyordu ve protokolün uğranan saldırıdan sonra gerekli kişilere gerekli ceza vermesini de sınırlandırıyordu.
+Hisseleme [ madenciliğin](/developers/docs/consensus-mechanisms/pow/mining/) eskiden yaptığına benzer bir amaca hizmet eder, ancak birçok yönden farklıdır. Madencilik güçlü donanım, enerji harcaması gibi büyük ön harcamalar gerektiriyordu ve ölçeklendirilmiş ekonomilere sebep oluyor ve merkeziyetçiliği teşvik ediyordu. Madencilik ayrıca varlıkları teminat olarak kitlemeye gerek duymuyordu ve protokolün uğranan saldırıdan sonra gerekli kişilere gerekli ceza vermesini de sınırlandırıyordu.
Hisse ispatına geçiş Ethereum'u, iş ispatına kıyasla, çok daha güvenli ve merkeziyetsiz hale getirdi. Ağa katılan insan sayısı arttıkça, mevcut ağ bir o kadar merkeziyetsiz ve saldırılara karşı daha da güvende olur.
diff --git a/public/content/translations/tr/roadmap/index.md b/public/content/translations/tr/roadmap/index.md
index 0783b9e5311..cce125f28fb 100644
--- a/public/content/translations/tr/roadmap/index.md
+++ b/public/content/translations/tr/roadmap/index.md
@@ -3,7 +3,7 @@ title: Ethereum yol haritası
description: Ethereum için daha ölçeklenebilir, güvenli ve sürdürülebilir olmanın yolu.
lang: tr
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "Ethereum yol haritası"
summaryPoints:
buttons:
@@ -61,7 +61,7 @@ Ethereum; ölçeklenebilirliğini, güvenliğini ya da sürdürülebilirliğini
Yol haritası çoğunlukla, araştırmacı ve geliştirmecilerin yıllar süren çalışmasının ürünüdür çünkü protokol oldukça tekniktir, ancak motive olmuş kişiler katılabilir. Fikirler genellikle [ethresear.ch](https://ethresear.ch/), [Ethereum sihirbazları](https://ethereum-magicians.org/) gibi forumlarda veya Eth Ar&Ge discord sunucusunda tartışma başlıkları olarak ortaya atılır. Yeni keşfedilmiş sistem açıklarına karşı tepkiler, uygulama katmanında çalışan organizasyonlardan (merkeziyetsiz uygulama ve borsalar) öneriler ya da son kullanıcılar için bilinen ihtilaflar (ücretler veya işlem hızları gibi) olabilir. Bu fikirler olgunlaştığında [Ethereum İyileştirme Önerileri](https://eips.ethereum.org/) olarak önerilebilirler. Herhangi bir zamanda topluluk içinden fikir sunulması için bu, tümüyle halka açık biçimde yapılır.
-[Ethereum yönetişimi hakkında daha fazlası](/yönetişim/)
+[Ethereum yönetişimi hakkında daha fazlası](/governance/)
diff --git a/public/content/translations/tr/roadmap/single-slot-finality/index.md b/public/content/translations/tr/roadmap/single-slot-finality/index.md
index f80c80d4a0a..a7f356bb155 100644
--- a/public/content/translations/tr/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/tr/roadmap/single-slot-finality/index.md
@@ -58,7 +58,7 @@ Bugünün taahhüt mekanizması kesinlik aracı (doğrulayıcıların 2/3'ünün
## Güncel ilerleme {#current-progress}
-SSF araştırma aşamasında. Birkaç yıl daha gelmesi beklenmiyor, muhtemelen çok aşamalı yükseltmelerden, [(Verkle ağaçları](/roadmap/verkle-trees/) ve [Danksharding](/roadmap/danksharding]) gibi) sonra.
+SSF araştırma aşamasında. Birkaç yıl daha gelmesi beklenmiyor, muhtemelen çok aşamalı yükseltmelerden, [(Verkle ağaçları](/roadmap/verkle-trees/) ve [Danksharding](/roadmap/danksharding/) gibi) sonra.
## Daha fazla bilgi {#further-reading}
diff --git a/public/content/translations/tr/zero-knowledge-proofs/index.md b/public/content/translations/tr/zero-knowledge-proofs/index.md
index 53678f092c1..5a7067c66fe 100644
--- a/public/content/translations/tr/zero-knowledge-proofs/index.md
+++ b/public/content/translations/tr/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Yeni başlayanlar için sıfır bilgili ispatlara teknik olmayan bi
lang: tr
---
-## Sıfır bilgili ispatlar nelerdir? {#what-are-zk-proofs}
+# Sıfır bilgili ispatlar nelerdir? {#what-are-zk-proofs}
Sıfır bilgili ispat, ifadenin kendisini açığa çıkarmadan bir ifadenin geçerliliğini kanıtlamanın bir yoludur. "Kanıtlayıcı", bir iddiayı kanıtlamaya çalışan taraftır, "doğrulayıcı" ise iddiayı doğrulamaktan sorumludur.
diff --git a/public/content/translations/uk/community/events/index.md b/public/content/translations/uk/community/events/index.md
index 91d5331be1d..690dd543a32 100644
--- a/public/content/translations/uk/community/events/index.md
+++ b/public/content/translations/uk/community/events/index.md
@@ -5,7 +5,7 @@ lang: uk
hideEditButton: true
---
-## Майбутні події {#events}
+# Майбутні події {#events}
**Щомісяця в усьому світі відбуваються значущі заходи спільноти Ethereum.** Подумайте про відвідування такої події поруч із вами, щоб зустріти більше людей зі спільноти, дізнатися про можливості працевлаштування та отримати нові навички.
diff --git a/public/content/translations/uk/roadmap/beacon-chain/index.md b/public/content/translations/uk/roadmap/beacon-chain/index.md
index a327ab4df2e..696f36de8f5 100644
--- a/public/content/translations/uk/roadmap/beacon-chain/index.md
+++ b/public/content/translations/uk/roadmap/beacon-chain/index.md
@@ -32,7 +32,7 @@ Beacon Chain був необхідним компонентом для [безп
Завдяки Beacon Chain в Ethereum з’явилася модель [доказу частки](/developers/docs/consensus-mechanisms/pos/). Це дає змогу захищати Ethereum і допомагає валідаторам заробляти більше ETH у процесі. На практиці процес стейкінгу передбачає виставляння ETH для активації програмного забезпечення валідатора. Стейкер запускає програмне забезпечення, що створює нові блоки в ланцюгу та здійснює їх валідацію.
-Стейкінг виконує функцію, схожу на ту, яку мав [майнінг](/developers/docs/mining/), але ці процеси відрізняються в багатьох аспектах. Майнінг потребував високих попередніх витрат, як-от потужного апаратного забезпечення та великої кількості енергії, що призвело до економії масштабів і просування централізації. Майнінг також не вимагав фіксування додаткових активів, що обмежувало здатність протоколу карати зловмисників після атак.
+Стейкінг виконує функцію, схожу на ту, яку мав [майнінг](/developers/docs/consensus-mechanisms/pow/mining/), але ці процеси відрізняються в багатьох аспектах. Майнінг потребував високих попередніх витрат, як-от потужного апаратного забезпечення та великої кількості енергії, що призвело до економії масштабів і просування централізації. Майнінг також не вимагав фіксування додаткових активів, що обмежувало здатність протоколу карати зловмисників після атак.
Завдяки переходу на модель доказу частки мережа Ethereum стала набагато безпечнішою та більш децентралізованою, як порівняти з періодом використання моделі підтвердження роботи. Що більше людей беруть участь у мережі, то більш децентралізованою та захищеною від атак вона стає.
diff --git a/public/content/translations/uk/zero-knowledge-proofs/index.md b/public/content/translations/uk/zero-knowledge-proofs/index.md
index ce0a6e0b69f..cdf90013abc 100644
--- a/public/content/translations/uk/zero-knowledge-proofs/index.md
+++ b/public/content/translations/uk/zero-knowledge-proofs/index.md
@@ -4,7 +4,7 @@ description: Ознайомлення з поняттям доказу з нул
lang: uk
---
-## Що таке доказ із нульовим розголошенням? {#what-are-zk-proofs}
+# Що таке доказ із нульовим розголошенням? {#what-are-zk-proofs}
Доказ із нульовим розголошенням — це спосіб доведення правдивості твердження без розкриття самого твердження. Сторона, що доводить, — це особа, яка намагається довести твердження, а сторона, що перевіряє, відповідає за перевірку правдивості твердження.
diff --git a/public/content/translations/zh-tw/bridges/index.md b/public/content/translations/zh-tw/bridges/index.md
index afc5e0a93b4..e25bc6c5781 100644
--- a/public/content/translations/zh-tw/bridges/index.md
+++ b/public/content/translations/zh-tw/bridges/index.md
@@ -6,7 +6,7 @@ lang: zh-tw
# 區塊鏈跨鏈橋 {#prerequisites}
-_第三代網際網路已發展成由一層和二層網路擴容解決方案組成的生態系統,每個解決方案都有獨特的功能和取捨。 隨著區塊鏈協定數量的增加,[跨鏈移動資產的需求也隨之增加]()。 為了滿足此需求,我們需要跨鏈橋。_
+_Web 3 已發展成由一層和二層網路擴容解決方案組成的生態系統,每個解決方案都有獨特的功能和取捨。 隨著區塊鏈協定數量的增加,[跨鏈移動資產的需求也隨之增加](https://dune.xyz/eliasimos/Bridge-Away-(from-Ethereum))。 為了滿足此需求,我們需要跨鏈橋。_
@@ -30,7 +30,7 @@ _第三代網際網路已發展成由一層和二層網路擴容解決方案組
跨鏈橋能實現以下幾點:
-- 跨鏈傳送資產和資訊
+- 資產和資訊的跨鏈轉移。
- 使去中心化應用程式能取得多種區塊鏈的優勢,因此增強區塊鏈的能力(因為協定現在在設計上有更多的創新空間)。
- 能讓使用者存取新的平台,並徹底善用不同區塊鏈的優勢。
- 能讓來自不同區塊鏈生態系統的開發者相互合作,並為使用者建立新平台。
@@ -57,7 +57,7 @@ _第三代網際網路已發展成由一層和二層網路擴容解決方案組
### 擁有原生加密資產 {#own-native}
-假設你想擁有原生比特幣 (BTC),但你的資金只存在於以太坊主網上。 要在以太坊上獲得比特幣,你可以購買包裝比特幣 (WBTC)。 然而,WBTC 是以太坊網路原生的 ERC-20 代幣,這表示它是以太坊版本的比特幣,而不是比特幣區塊鏈上的原始資產。 要擁有原生比特幣,你必須使用跨鏈橋將資產從以太坊轉移到比特幣。 這將會橋接 WBTC 並轉換為原生比特幣。 或者,你可能擁有比特幣,並希望在以太坊去中心化金融協定中使用它。 這將需要以另一種方式橋接,從比特幣到 WBTC,然後可將 WBTC 作為以太坊上的資產。
+假設你想擁有原生比特幣 (BTC),但你的資金只存在於以太坊主網上。 要在以太坊上獲得比特幣,你可以購買包裝比特幣 (WBTC)。 然而,WBTC 是以太坊網路原生的 ERC-20 代幣,這表示它是以太坊版本的比特幣,而不是比特幣區塊鏈上的原始資產。 要擁有原生比特幣,你必須使用跨鏈橋將資產從以太坊轉移到比特幣。 這將會橋接包裝比特幣並轉換為原生比特幣。 或者,你可能擁有比特幣,並希望在以太坊去中心化金融協定中使用它。 這將需要以另一種方式橋接,從比特幣到包裝比特幣,然後可將包裝比特幣作為以太坊上的資產。
你也可以使用 中央化交易所 完成上述所有操作。 但是,除非你已有資金在交易所內,否則會涉及多個步驟,而你可能會覺得使用跨鏈橋比較好。
@@ -69,11 +69,11 @@ _第三代網際網路已發展成由一層和二層網路擴容解決方案組
跨鏈橋具有許多不同的設計類型和複雜度。 通常,跨鏈橋分為兩類,即受信任和去信任跨鏈橋。
-| 受任跨鏈橋 | 去信任跨鏈橋 |
-| --------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
-| 受信任跨鏈橋倚賴一個中心實體或系統來運作。 | 去信任跨鏈橋利用智慧型合約及演算法來運行。 |
-| 在資金監管及跨鏈橋的安全性方面,具有許多信任假設。 使用者大多有賴於跨鏈橋運營商的聲譽。 | 屬於去信任,即跨鏈橋的安全性與底層區塊鏈的安全性相同。 |
-| 使用者需放棄對其加密資產的控制。 | 透過智慧型合約,去信任跨鏈橋讓使用者能繼續控制他們的資金。 |
+| 受任跨鏈橋 | 去信任跨鏈橋 |
+| -------------------------------------------- | ----------------------------- |
+| 受信任跨鏈橋倚賴一個中心實體或系統來運作。 | 去信任跨鏈橋利用智慧型合約及演算法來運行。 |
+| 在資金監管及跨鏈橋的安全性方面,具有許多信任假設。 使用者大多有賴於跨鏈橋運營商的聲譽。 | 屬於去信任,即跨鏈橋的安全性與底層區塊鏈的安全性相同。 |
+| 使用者需放棄對其加密資產的控制。 | 透過智慧型合約,去信任跨鏈橋讓使用者能繼續控制他們的資金。 |
簡而言之,我們可以說受信任跨鏈橋具有信任假設,去信任跨鏈橋則是將信任最小化,不必在底層領域之外做出新的信任假設。 這些術語可做這樣的解釋:
diff --git a/public/content/translations/zh-tw/community/code-of-conduct/index.md b/public/content/translations/zh-tw/community/code-of-conduct/index.md
index 10db533599d..04240c38b78 100644
--- a/public/content/translations/zh-tw/community/code-of-conduct/index.md
+++ b/public/content/translations/zh-tw/community/code-of-conduct/index.md
@@ -4,6 +4,8 @@ description: 我們在 ethereum.org 努力追求的基本標準。
lang: zh-tw
---
+# 行為守則 {#conduct-intro}
+
## 使命 {#mission}
開發及維護最詳盡、最易存取的以太坊知識中心。
diff --git a/public/content/translations/zh-tw/community/events/index.md b/public/content/translations/zh-tw/community/events/index.md
index 24cb71fb3ae..a8fecb8cae6 100644
--- a/public/content/translations/zh-tw/community/events/index.md
+++ b/public/content/translations/zh-tw/community/events/index.md
@@ -5,7 +5,7 @@ lang: zh-tw
hideEditButton: true
---
-## 即將開始的活動 {#events}
+# 即將開始的活動 {#events}
**每個月,世界各地都會舉辦重大的以太坊活動。**考慮參加你附近的活動,結識更多社群成員,了解就業機會,並培養新技能。
diff --git a/public/content/translations/zh-tw/dao/index.md b/public/content/translations/zh-tw/dao/index.md
index e8e3e165802..eced44cfeb8 100644
--- a/public/content/translations/zh-tw/dao/index.md
+++ b/public/content/translations/zh-tw/dao/index.md
@@ -28,13 +28,13 @@ summaryPoint3: 一個將資產投入特定事業的安全場所。
### 比較 {#dao-comparison}
-| 去中心化自治組織 | 傳統組織 |
-| -------------------------------------------------- | ------------------------------------------------------ |
-| 通常是扁平組織,而且完全民主。 | 通常等級嚴明。 |
-| 任何更改都需要成員投票決定後才能實施。 | 視組織結構而定,可能由部分人進行決策,也可能投票表決。 |
-| 不需要可信的中間人便能自動統計投票、執行結果。 | 如果允許投票,會在內部計票,而且投票結果必須人工執行。 |
-| 以去中心化方式自動提供服務(例如慈善基金的分配)。 | 需要人工處理,或集中管控自動處理,易受操縱。 |
-| 所有活動皆完全公開透明。 | 活動通常是隱密進行,公開程度有限。 |
+| 去中心化自治組織 | 傳統組織 |
+| ------------------------- | --------------------------- |
+| 通常是扁平組織,而且完全民主。 | 通常等級嚴明。 |
+| 任何更改都需要成員投票決定後才能實施。 | 視組織結構而定,可能由部分人進行決策,也可能投票表決。 |
+| 不需要可信的中間人便能自動統計投票、執行結果。 | 如果允許投票,會在內部計票,而且投票結果必須人工執行。 |
+| 以去中心化方式自動提供服務(例如慈善基金的分配)。 | 需要人工處理,或集中管控自動處理,易受操縱。 |
+| 所有活動皆完全公開透明。 | 活動通常是隱密進行,公開程度有限。 |
### 去中心化自治組織範例 {#dao-examples}
@@ -73,7 +73,7 @@ summaryPoint3: 一個將資產投入特定事業的安全場所。
#### 知名案例 {#governance-example}
-[以太坊域名服務](https://claim.ens.domains/delegate-ranking)——以太坊域名服務持有者可將其選票分配給積極代表他們參與活動的社群成員。
+[以太坊名稱服務](https://claim.ens.domains/delegate-ranking) — 以太坊名稱服務持有者可將其選票分配給積極代表他們參與活動的社群成員。
### 自動交易治理 {#governance-example}
diff --git a/public/content/translations/zh-tw/decentralized-identity/index.md b/public/content/translations/zh-tw/decentralized-identity/index.md
index 48626d9f6c0..1532567f458 100644
--- a/public/content/translations/zh-tw/decentralized-identity/index.md
+++ b/public/content/translations/zh-tw/decentralized-identity/index.md
@@ -15,11 +15,11 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
然而,傳統的身分管理系統長期以來一直依賴於中心化中間機構來發行、持有和控制你的身分識別和[身分證明](#what-are-attestations)。 這意味著你無法掌控自己身分的相關資訊,也無法決定誰能夠存取你的個人身分資訊 (PII),以及各方擁有多大的訪問權限。
-為了解決這些問題,我們在以太坊等公共區塊鏈上構建了去中心化身分系統。 去中心化身分允許每個人管理他們的身分相關資訊。 借助去中心化身分解決方案,*你*可以建立身分識別、聲明和持有你的身分證明,而無需依賴于中央機構,例如服務提供方或是政府。
+為了解決這些問題,我們在以太坊等公共區塊鏈上構建了去中心化身分系統。 去中心化身分允許每個人管理他們的身分相關資訊。 借助去中心化身分解決方案,_你_可以建立身分識別、聲明和持有你的身分證明,而無需依賴於中央機構,例如服務提供方或是政府。
## 什麼是身分認同? {#what-is-identity}
-身分意味著個人的自我意識,由獨特的特徵定義。 身分是指作為一個*個體*,即一個獨特的人類實體。 身分也可以是指其他非人類的實體,例如組織或機構。
+身分意味著個人的自我意識,由獨特的特徵定義。 身分是指作為一個_個體_,即一個獨特的人類實體。 身分也可以是指其他非人類的實體,例如組織或機構。
## 什麼是身分識別? {#what-are-identifiers}
@@ -37,7 +37,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
身分證明是由一個實體提出的關於另一個實體的聲明。 如果你居住在美國,你的駕駛執照是由機動車輛管理局(一個實體)發布,它證明你(另一個實體)在法律上允許駕駛汽車。
-身分證明與身分識別不同。 身分證明*包含*用於指向特定身分的身分識別,並聲明與此身分相關的屬性。 因此,你的駕駛執照具有身分識別(姓名、出生日期、地址),但也是關於你合法駕駛權利的證明。
+身分證明與身分識別不同。 身分證明_包含_用於指向特定身分的身分識別,並聲明與此身分相關的屬性。 因此,你的駕駛執照具有身分識別(姓名、出生日期、地址),但也是關於你合法駕駛權利的證明。
### 什麼是去中心化身分識別? {#what-are-decentralized-identifiers}
@@ -57,7 +57,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
### 2. 去中心化資料儲存 {#decentralized-datastores}
-區塊鏈充當可驗證的資料註冊系統:一個開放、去信任和去中心化的資訊存儲庫。 公共區塊鏈的存在使得不再需要將身分識別儲存在中心化的註冊系統上。
+區塊鏈充當可驗證的資料註冊系統:一個開放、去信任和去中心化的資訊儲存庫。 公共區塊鏈的存在使得不再需要將身分識別儲存在中心化的註冊系統上。
如果任何人需要確認去中心化身分識別的有效性,他們可以在區塊鏈上查找相關的公鑰。 這與需要由第三方進行驗證的傳統身分識別不同。
@@ -97,7 +97,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
### 鏈上身分證明 {#onchain-attestations}
-鏈上身份證明保存在以太坊區塊鏈上的[智慧型合約](/developers/docs/smart-contracts/)中。 智慧型合約(充當註冊系統)將身分證明對應到相關的鏈上去中心化身分識別(公鑰)。
+鏈上身份證明保存在以太坊區塊鏈上的[智慧型合約](/developers/docs/smart-contracts/)中。 智慧型合約(充當註冊系統)將身分證明對應到相關的鏈上去中心化身分識別(公開金鑰)。
以下範例展示了鏈上身分證明在實踐中的使用方式:
@@ -109,7 +109,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
### 靈魂綁定代幣和身分 {#soulbound}
-[靈魂綁定代幣](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)(不可轉讓的非同質化代幣)可以用於收集特定錢包的獨有資訊。 這有效地創建了綁定到特定以太坊地址的唯一鏈上身分,這可能包括代表成就的代幣(例如完成某些特定的線上課程或在遊戲中超過分數門檻)或社區參與代幣。
+[靈魂綁定代幣](https://vitalik.ca/general/2022/01/26/soulbound.html)(不可轉讓的非同質化代幣)可以用於收集特定錢包的獨有資訊。 這有效地創建了綁定到特定以太坊地址的唯一鏈上身分,這可能包括代表成就的代幣(例如完成某些特定的線上課程或在遊戲中超過分數門檻)或社區參與代幣。
## 去中心化身分的好處 {#benefits-of-decentralized-identity}
@@ -135,7 +135,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
[使用以太坊登入](https://login.xyz/)功能將允許伺服器能夠確認使用者的以太坊帳戶,並從他們的帳戶地址中獲取所需的身分證明。 這意味著使用者無需記住冗長的密碼,就能夠訪問平台和網站,進而改善使用者的線上體驗。
-### 2. “了解你的客戶”驗證 {#kyc-authentication}
+### 2. 「認識客戶」驗證 {#kyc-authentication}
許多線上服務的使用,需要提供個人的身分證明和憑證,例如駕駛執照或國家護照。 但這種方式是有問題的,因為使用者的私人資訊有可能會被洩露,並且服務提供商無法驗證身分證明的真實性。
@@ -153,14 +153,15 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
## 使用去中心化身分 {#use-decentralized-identity}
-有許多雄心勃勃的項目使用以太坊作為去中心化身分解決方案的基礎:
+有許多雄心勃勃的專案使用以太坊作為去中心化身分解決方案的基礎:
- **[以太坊名稱服務 (ENS)](https://ens.domains/)** - _一個去中心化的鏈上命名系統,適合機器可讀的識別符號,例如以太坊錢包地址、內容雜湊值和中繼資料。_
-- **[SpruceID](https://www.spruceid.com/)** - _去中心化身分項目,它允許使用者使用以太坊帳戶和以太坊名稱服務個人資料來控制數位身分,而不是依賴第三方服務。_
+- **[SpruceID](https://www.spruceid.com/)** - _去中心化身分專案,它允許使用者使用以太坊帳戶和以太坊名稱服務個人資料來控制數位身分,而不是依賴第三方服務。_
- **[以太坊證明服務 (EAS)](https://attest.sh/)** - _一種去中心化分類帳/協議,用於對任何事物進行鏈上或鏈下證明。_
- **[人性證明](https://www.proofofhumanity.id)** - _人性證明 (PoH) 是建立在以太坊上的社交身分驗證系統。_
- **[BrightID](https://www.brightid.org/)** - _一個去中心化的開源社交身分網路,旨在通過創建和分析社交圖譜來改革身分驗證。_
- **[人格證明護照](https://proofofpersonhood.com/)** - _一個去中心化的數位身分聚合器。_
+- **[walt.id](https://walt.id)** — _一種使開發者和組織能夠利用自主權身份、非同質化代幣/魂縛代幣的開源去中心化身份及錢包基礎設施。_
## 延伸閱讀 {#further-reading}
@@ -170,6 +171,7 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
- [什麼是以太坊 ERC725? 區塊鏈上的自我主權身分管理](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
- [區塊鏈如何解決數位身分問題](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
- [什麼是去中心化身分以及你為什麼需要關心?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [去中心化身份簡介](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
### 影片 {#videos}
@@ -177,9 +179,11 @@ summaryPoint3: 多虧了加密技術,使用者現在擁有了再次發行、
- [使用以太坊和去中心化身分登錄 Ceramic、IDX、React 和 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _YouTube 使用教學,作者 Nader Dabit,介紹如何構建身分管理系統,透過以太坊錢包建立、讀取和更新使用者個人資料。_
- [BrightID - 以太坊上的去中心化身分](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Bankless 播客節目討論 BrightID,一個以太坊上的去中心化身分解決方案_
- [鏈外互聯網:去中心化身分 & 可驗證憑證](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Evin McMullen 在 EthDenver 2022 的演講
+- [Verifiable Credentials Explained(可驗憑證說明)](https://www.youtube.com/watch?v=ce1IdSr-Kig) - 由 Tamino Baumann 主持演示的 YouTube 講解視頻
### 社群 {#communities}
- [GitHub 上的 ERC-725 聯盟](https://github.com/erc725alliance) — _在以太坊區塊鏈上管理身分的 ERC725 標準的支持者_
- [SpruceID Discord 伺服器](https://discord.com/invite/Sf9tSFzrnt) — _研究使用以太坊登錄的愛好者和開發者社群_
- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _一個開發人員社區,致力於為應用程式構建可驗證資料的框架_
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _由開發者和構建者組成的社區,致力於開發各個行業的去中心化身份應用案例_
diff --git a/public/content/translations/zh-tw/defi/index.md b/public/content/translations/zh-tw/defi/index.md
index 53364371494..96bc37de61a 100644
--- a/public/content/translations/zh-tw/defi/index.md
+++ b/public/content/translations/zh-tw/defi/index.md
@@ -22,7 +22,7 @@ summaryPoint3: 基於所有人都可以編寫的開放原始碼技術。
-## 去中心化金融 vs 傳統金融 {#defi-vs-tradfi}
+## 去中心化金融與傳統金融 {#defi-vs-tradfi}
了解去中心化金融潛力的一種最佳方法是了解目前存在的問題。
@@ -37,15 +37,15 @@ summaryPoint3: 基於所有人都可以編寫的開放原始碼技術。
### 比較 {#defi-comparison}
-| 去中心化金融 | 傳統金融 |
-| -------------------------------------------------------------- | -------------------------------------------------------------------------- |
-| 你的資金由你自己持有。 | 你的資金由企業持有。 |
-| 由你自行管控資金流向及使用方式。 | 你必須相信企業不會不當管理你的資金,例如借貸給高風險借款人。 |
-| 移轉資金只需要幾分鐘的時間。 | 支付可能因為人工處理而得花上幾天時間。 |
-| 交易活動為匿名方式。 | 金融活動與你的身分綁定。 |
-| 去中心化金融對所有人開放。 | 使用金融服務必須申請。 |
-| 市場永遠開放。 | 員工需要休息,因此市場會關閉。 |
-| 奠基於透明的系統 ── 所有人都能查看產品資料及檢查系統運作狀況。 | 金融機構完全是黑箱作業:你不能要求查看他們的放貸記錄、資產管理記錄等資訊。 |
+| 去中心化金融 | 傳統金融 |
+| ------------------------------- | ------------------------------------- |
+| 你的資金由你自己持有。 | 你的資金由企業持有。 |
+| 由你自行管控資金流向及使用方式。 | 你必須相信企業不會不當管理你的資金,例如借貸給高風險借款人。 |
+| 移轉資金只需要幾分鐘的時間。 | 支付可能因為人工處理而得花上幾天時間。 |
+| 交易活動為匿名方式。 | 金融活動與你的身分綁定。 |
+| 去中心化金融對所有人開放。 | 使用金融服務必須申請。 |
+| 市場永遠開放。 | 員工需要休息,因此市場會關閉。 |
+| 奠基於透明的系統──所有人都能查看產品資料及檢查系統運作狀況。 | 金融機構完全是黑箱作業:你不能要求查看他們的放貸記錄、資產管理記錄等資訊。 |
探索去中心化金融應用程式
@@ -133,7 +133,7 @@ Dai、USDC 等穩定幣的價值和美元的差距通常維持在幾美分之內
今天,資金的借與貸都是圍繞著相關個人進行。 銀行在放款前,需要知道你是不是真的有能力償還貸款。
-去中心化借貸則不需任何一方表明身分即可運作。 相對地,借款者必須提供抵押品,如果無法償還,抵押品就會自動歸貸款者所有。 有些貸款者甚至接受以非同質化代幣作為抵押品。 非同質化代幣為獨特資產(如繪畫)的契據。 [深入了解非同質化代幣](/nft/)
+去中心化借貸則不需任何一方表明身分即可運作。 然而,借款者必須提供抵押品,如果無法償還,抵押品就會自動歸貸款者所有。 有些貸款者甚至接受以非同質化代幣作為抵押品。 非同質化代幣為獨特資產(如繪畫)的契據。 [更多非同質化代幣相關資訊](/nft/)
透過這種方式,不必接受徵信調查或提供私人資訊也能借款。
@@ -143,7 +143,7 @@ Dai、USDC 等穩定幣的價值和美元的差距通常維持在幾美分之內
#### 納稅效益 {#tax-efficiencies}
-借款可以讓你獲得需要的資金,而無需出售以太幣(此行為會被課稅)。 相對地,你可以使用以太幣作為抵押品以借貸穩定幣。 如此一來,你便可以在保有以太幣的情況下,獲得所需的現金流。 穩定幣是需要現金時的最佳選擇,因為穩定幣的價值不像以太幣一樣易於波動。 [深入了解穩定幣](#stablecoins)
+借款可以讓你獲得需要的資金,而無需出售以太幣(此行為會被課稅)。 但是,你可以使用以太幣作為抵押品以借貸穩定幣。 如此一來,你便可以在保有以太幣的情況下,獲得所需的現金流。 穩定幣是需要現金時的最佳選擇,因為穩定幣的價值不像以太幣一樣易於波動。 [深入了解穩定幣](#stablecoins)
#### 閃電貸 {#flash-loans}
@@ -245,7 +245,7 @@ Dai、USDC 等穩定幣的價值和美元的差距通常維持在幾美分之內
以太坊是群眾募資的理想平台:
-- 潛在的資助者可以來自任何地方 ── 以太坊及其代幣對世界上所有人開放。
+- 潛在的資助者可以來自任何地方──以太坊及其代幣對世界上所有人開放。
- 過程完全透明,因此籌資者可以證明已經募集了多少資金。 你甚至可以在經過一段時間後追蹤資金的運用情況。
- 募資者可以設定自動退款條件,例如在特定截止期限前未達到最低金額時。
@@ -274,7 +274,7 @@ Dai、USDC 等穩定幣的價值和美元的差距通常維持在幾美分之內
去中心化保險的目標是使保險更加便宜、理賠更快速,同時更為透明。 隨著自動化程度的提高,保險價格可以更加低廉,理賠也可以更加快速。 用以決定索賠的資料完全透明。
-和其他軟體一樣,以太坊產品也可能受到錯誤或入侵的威脅, 因此目前這個領域有許多保險產品將重點放在保護使用者不會損失資金上。 然而,若干專案開始涵蓋了生活中可能遇到的各種大小意外保障。 Etherisc 的農作物保險就是個很好的例子,這項產品的目標在於[保護肯亞小農對抗乾旱及洪災](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)。 去中心化保險可以為買不起傳統保險的農民提供更實惠的保障。
+和其他軟體一樣,以太坊產品也可能受到錯誤或入侵的威脅, 因此目前這個領域有許多保險產品將重點放在保護使用者不會損失資金上。 然而,若干專案開始涵蓋生活中可能遇到的各種大小意外保障。 Etherisc 的農作物保險就是個很好的例子,這項產品的目標在於[保護肯亞小農對抗乾旱及洪災](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)。 去中心化保險可以為買不起傳統保險的農民提供更實惠的保障。
查看保險去中心化應用程式
@@ -296,22 +296,22 @@ Dai、USDC 等穩定幣的價值和美元的差距通常維持在幾美分之內
去中心化金融使用加密貨幣及智慧型合約來提供服務,不需透過中間機構。 在今日的金融體系下,金融機構是交易的保證人。 你的資金是透過金融機構流通,因此賦予了這些機構巨大的權利。 此外,世界上還有數十億人甚至無法使用銀行帳戶。
-在去中心化金融,智慧型合約取代了交易中的金融機構。 智慧型合約是一種以太坊帳戶,可以持有資金並根據特定條件發送/退還資金。 智慧型合約上線後就沒有人可以篡改,它會永遠依照設定的方式運作。
+在去中心化金融中,智慧型合約在交易中取代了的金融機構。 智慧型合約是一種以太坊帳戶,可以持有資金並根據特定條件發送/退還資金。 智慧型合約上線後就沒有人可以篡改,它會永遠依照設定的方式運作。
一份用來發放津貼或零用錢的合約可以設定為每週五從 A 帳戶匯款至 B 帳戶。 只要 A 帳戶還有所需的資金,合約就會持續執行。 沒有人能篡改合約,將 C 帳戶設為收款人藉以竊取資金。
合約也會公開,供所有人檢查及審核。 這意味著不良合約通常很快就會受到社群監控。
-確實,這也意味著目前需要仰賴以太坊社群中能閲讀程式碼的技術人員。 以開放原始碼為基礎的社群會協調開發人員參與監控,但這種需求會隨著時間而趨緩,因為智慧型合約會變得越來越容易閲讀,同時也有其他可以證明程式碼可信度的方法誕生。
+確實,這也意味著目前需要仰賴以太坊社群中能閲讀程式碼的更為精通技術的成員。 以開放原始碼為基礎的社群會約束開發者,但這種需求會隨著時間而趨緩,因為智慧型合約會變得越來越容易閲讀,同時也有其他可以證明程式碼可信度的方法誕生。
## 以太坊及去中心化金融 {#ethereum-and-defi}
以太坊為去中心化金融提供了良好的基礎,原因包括:
-- 以太坊或部署在以太坊上的智慧型合約不屬於任何人所有 ── 這讓所有人都有機會使用去中心化金融, 也意味著沒有人可以變更規則。
+- 以太坊或部署在以太坊上的智慧型合約不屬於任何人所有──這讓所有人都有機會使用去中心化金融, 也意味著沒有人可以變更規則。
- 所有去中心化金融產品都使用著相同的語言:以太坊。 這意味著許多產品可以合作無間地共同運作。 你可以在某個平台上出借代幣,然後透過完全不同的應用程式,在不同的市場中兌換帶有利息的代幣。 這就像可以將銀行的忠誠度點數兌現。
-- 代幣和加密貨幣全都建立在以太坊這個共享帳本上 ── 追蹤交易和所有權全都交給以太坊處理。
-- 以太坊可以實現完全的金融自由 ── 大多數產品不會保管你的資金,控制權完全操之在己。
+- 代幣和加密貨幣全都建立在以太坊這個共享帳本上──追蹤交易和所有權全都交給以太坊處理。
+- 以太坊可以實現完全的金融自由──大多數產品不會保管你的資金,控制權完全操之在己。
你可以把去中心化金融想成好幾層:
diff --git a/public/content/translations/zh-tw/desci/index.md b/public/content/translations/zh-tw/desci/index.md
index 9866bd0b873..47a29913a51 100644
--- a/public/content/translations/zh-tw/desci/index.md
+++ b/public/content/translations/zh-tw/desci/index.md
@@ -18,7 +18,7 @@ summaryPoint3: 以開放科學運動為原則。
去中心化科研的目標是創建一個生態系統,鼓勵科學家公開分享研究計畫,在開放任何人輕易獲得甚至參與研究的同時,肯定該科學家的貢獻。 去中心化科研的理念是:所有人都有獲得科學知識的權利,因此科學研究過程應該透明化。 去中心化科研正在開創一種更去中心化且廣泛的科學研究模型,使其更能抵抗中心化管理機構的審查與控制。 去中心化科研的目標是,藉由融資、科研工具與交流渠道的去中心化,為跳脫框架的新點子開創出一個能夠欣欣向榮的環境。
-去中心化科研獎勵可重複性,因而能激發更廣泛多元的融資方案(從[去中心化自治組織](/dao/)、[平方募資](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531)到群眾募資等),以及更容易獲得的資料與方法。
+去中心化科研允許更多樣化的資金來源(從[去中心化自治組織](/dao/)、[二次方捐贈](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531)到衆籌等等),讓數據和方法更易獲取,并提供可重複性的激勵措施。
### Juan Benet - 去中心化科研運動
@@ -28,16 +28,16 @@ summaryPoint3: 以開放科學運動為原則。
這份有待補充的清單列出了科學領域中的關鍵問題,以及去中心化科研所能提供的協助方案
-| **去中心化科研** | **傳統科研** |
-| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
-| 使用平方募資或去中心化自治組織等機制的公眾決定了資金的去向。 | 小型、封閉、中心化團體負責管控資金去向。 |
-| 你能夠與世界各地的同儕展開活潑的合作。 | 合作計畫受資助方和所屬機構限制。 |
-| 資金決策在線上進行且透明度高。 會探索全新的融資機制。 | 資金決策較為耗時且透明度不足。 融資機制有限。 |
-| 利用 Web3 基礎單元更簡單且公開地分享實驗室服務。 | 分享實驗室資源的過程較為遲緩且透明度不足。 |
-| 利用 Web3 基礎單元研發出可靠、透明且能與全球共享的全新發表模式。 | 只能藉由既有途徑發表研究,而這些途徑通常被認為缺乏效率、帶有偏見且有剝削傾向。 |
-| 你可以藉由同儕審查工作獲得代幣與聲望。 | 同儕審查工作是無償的,只有商業出版商能獲益。 |
-| 你產生的知識產權 (IP) 歸你所有且能根據透明條款加以分配。 | 你產生的知識產權歸屬於你所在的機構。 知識產權無法透明地獲得。 |
-| 所有研究步驟將在鏈上公佈,無論研究成功與否,所有研究資料均在鏈上共享。 | 出版社不夠公正,導致研究者傾向只分享成功的實驗。 |
+| **去中心化科研** | **傳統科研** |
+| ----------------------------------- | --------------------------------------- |
+| 使用平方募資或去中心化自治組織等機制的公眾決定了資金的去向。 | 小型、封閉、中心化團體負責管控資金去向。 |
+| 你能夠與世界各地的同儕展開活潑的合作。 | 合作計畫受資助方和所屬機構限制。 |
+| 資金決策在線上進行且透明度高。 會探索全新的融資機制。 | 資金決策較為耗時且透明度不足。 融資機制有限。 |
+| 利用 Web3 基礎單元更簡單且公開地分享實驗室服務。 | 分享實驗室資源的過程較為遲緩且透明度不足。 |
+| 利用 Web3 基礎單元研發出可靠、透明且能與全球共享的全新發表模式。 | 只能藉由既有途徑發表研究,而這些途徑通常被認為缺乏效率、帶有偏見且有剝削傾向。 |
+| 你可以藉由同儕審查工作獲得代幣與聲望。 | 同儕審查工作是無償的,只有商業出版商能獲益。 |
+| 你產生的知識產權 (IP) 歸你所有且能根據透明條款加以分配。 | 你產生的知識產權歸屬於你所在的機構。 知識產權無法透明地獲得。 |
+| 所有研究步驟將在鏈上公佈,無論研究成功與否,所有研究資料均在鏈上共享。 | 出版社不夠公正,導致研究者傾向只分享成功的實驗。 |
## 以太坊與去中心化科研 {#ethereum-and-desci}
@@ -60,7 +60,7 @@ summaryPoint3: 以開放科學運動為原則。
- 可重複的研究結果可由相同的團隊使用相同的方式多次達成。
- 可複製的研究結果可由不同的團隊以相同的實驗方案達成。
-全新的 Web3-內建工具可以確保科學發現以可重複性與可複製性為基礎。 我們可將優質的科學融入到學術界的技術體系中。 Web3 有能力驗證原始資料、計算引擎以及應用結果等分析要素。 共識系統的美妙之處在於,當這些要素由可靠的網路機制維護運作時,所有網絡參與者都可以負責再次運算並驗證每一項結果。
+全新的 Web3-內建工具可以確保科學發現以可重複性與可複製性為基礎。 我們可將優質的科學融入到學術界的技術體系中。 Web3 有能力驗證原始資料、計算引擎以及應用結果等分析要素。 共識系統的美妙之處在於,當這些要素由可靠的網路機制維護運作時,所有網路參與者都可以負責再次運算並驗證每一項結果。
### 資金來源 {#funding}
@@ -78,7 +78,7 @@ Web3 廣泛試驗過去中心化自治組織和 Web3 開發的不同激勵模型
[IP-NFT](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) 還是將正在進行的實驗之資料庫去中心化的關鍵,還可以插入非同質化代幣與 [DeFi](/defi/) 金融化(從資產分割到借貸池與價值評估)。 它還允許如 [VitaDAO](https://www.vitadao.com/) 這樣的去中心化自治組織等鏈上原生實體直接在鏈上進行研究。 不可轉移的[「靈魂綁定」代幣](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)的出現,允許個人證明他們的經驗和證書與他們的以太坊地址相關聯,因而也可能在去中心化科研中發揮重要作用。
-### 資料存儲、存取和架構 {#data-storage}
+### 資料儲存、存取和架構 {#data-storage}
使用 Web3 模式可使人們更容易獲得科學資料,分佈式儲存使研究能在災難性事件中倖存下來。
@@ -103,7 +103,7 @@ Web3 廣泛試驗過去中心化自治組織和 Web3 開發的不同激勵模型
- [OceanDAO:管理資料相關科學資金的去中心化自治組織](https://oceanprotocol.com/dao)
- [Opscientia:開放的去中心化科研工作流程](https://opsci.io/research/)
- [LabDAO:在電腦中折疊蛋白質](https://alphafodl.vercel.app/)
-- [Bio.xyz:為你的生物技術去中心化自治組織或去中心化科研項目募資](https://www.molecule.to/)
+- [Bio.xyz:為你的生物技術去中心化自治組織或去中心化科研專案募資](https://www.bio.xyz/)
- [ResearchHub:發布科學成果並與同行交流](https://www.researchhub.com/)
- [VitaDAO:藉由受贊助的長壽研究協議獲得資金](https://www.vitadao.com/)
- [Fleming Protocol:推動協作生物醫學發現的開源式資料經濟](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
diff --git a/public/content/translations/zh-tw/eips/index.md b/public/content/translations/zh-tw/eips/index.md
index cb882af2f5e..5db0d1a72cf 100644
--- a/public/content/translations/zh-tw/eips/index.md
+++ b/public/content/translations/zh-tw/eips/index.md
@@ -8,21 +8,21 @@ lang: zh-tw
## 什麼是以太坊改進提案? {#what-are-eips}
-[以太坊改進提案 (EIP)](https://eips.ethereum.org/) 是一種標準,用於指定以太坊的潛在新功能或流程。 以太坊改進提案中包含擬定變更的技術規格,相當於以太坊社群的「真相來源」。 以太坊的網路更新和應用程式標準乃透過以太坊改進提案流程商討和制定。
+[以太坊改進提案 (EIP)](https://eips.ethereum.org/) 是一種標準,用於明定以太坊的潛在新功能或流程。 以太坊改進提案中包含擬定變更的技術規範,相當於以太坊社群的「事實來源」。 以太坊的網路升級和應用程式標準乃透過以太坊改進提案流程商討和制定。
-以太坊社群的任何人皆可建立以太坊改進提案。 [EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中附有以太坊改進提案撰寫準則。 以太坊改進提案主要應簡明介紹技術規範並概述變更誘因。 以太坊改進提案作者負責在社群內尋求共識並記錄不同意見。 由於提出優秀以太坊改進提案的技術門檻很高,根據過往經驗,大部分以太坊改進提案的作者都是應用程式或者協定開發者。
+以太坊社群的任何人皆可建立以太坊改進提案。 [EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中附有以太坊改進提案撰寫準則。 以太坊改進提案主要應簡明介紹技術規範並概述變更誘因。 以太坊改進提案作者負責在社群內尋求共識並記錄不同意見。 由於提出優秀以太坊改進提案的技術門檻很高,根據過往經驗,通常大部分以太坊改進提案的作者都是應用程式或者協定開發者。
## 以太坊改進提案為什麼很重要? {#why-do-eips-matter}
-以太坊改進提案對於確定如何實作變更以及確保將變更記錄在以太坊上至關重要。 人們依之擬定變更、針對變更展開辯論並採納更新。 [有多種類型的以太坊改進提案](https://eips.ethereum.org/EIPS/eip-1#eip-types),包括核心以太坊改進提案(針對影響共識且要求進行網路升級的低層級協議變更,如 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559))和以太坊提案請求(針對應用程式標準,如 [EIP-20](https://eips.ethereum.org/EIPS/eip-20) 和 [EIP-721](https://eips.ethereum.org/EIPS/eip-721))。
+以太坊改進提案對於確定如何實作變更以及確保將變更記錄在以太坊上至關重要。 人們依之擬定變更、針對變更展開辯論並採納變更。 [有多種類型的以太坊改進提案](https://eips.ethereum.org/EIPS/eip-1#eip-types),包括核心以太坊改進提案(針對影響共識且要求進行網路升級的低層級協定變更,如 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559))和以太坊開發者公開徵求意見(針對應用程式標準,如 [EIP-20](https://eips.ethereum.org/EIPS/eip-20) 和 [EIP-721](https://eips.ethereum.org/EIPS/eip-721))。
每次網路升級包含一組以太坊改進提案,網路上的每個[以太坊用戶端](/learn/#clients-and-nodes)都必須實作。 也就是說,為了與以太坊主網上的其他用戶端保持共識,用戶端開發者需要確保他們皆已實作所需的以太坊改進提案。
-以太坊改進提案提供變更的技術規範,不僅如此,以太坊還以其為單位推行治理舉措:任何人皆可擬定以太坊改進提案,然後社群中的各個利害關係人將對此展開辯論,以確定是否應將其作為標准採納或包含在網路升級中。 由於非核心以太坊改進提案不一定被所有應用程式採納(例如,可以建立不實作 EIP-20 的同質化代幣),而核心以太坊改進提案必須被廣泛採納(因全數節點必須升級才能成為同一網路的一部分),與非核心以太坊改進提案相比,核心以太坊改進提案需要社群內達成更廣泛的共識。
+以太坊改進提案提供變更的技術規範,不僅如此,以太坊還以其為單位推行治理舉措:任何人皆可擬定以太坊改進提案,然後社群中的各個利害關係人將對其展開辯論,以確定是否應將其作為標准採納或包含在網路升級中。 由於非核心以太坊改進提案不一定被所有應用程式採納(例如,可以建立不實作 EIP-20 的同質化代幣),而核心以太坊改進提案必須被廣泛採納(因全數節點必須升級才能成為同一網路的一部分),與非核心以太坊改進提案相比,核心以太坊改進提案需要社群內達成更廣泛的共識。
## 以太坊改進提案演進史 {#history-of-eips}
-[以太坊改進提案 (EIP) GitHub 資源庫](https://github.com/ethereum/EIPs)於 2015 年 10 月建立。 以太坊改進提案流程基於[比特幣改進提案 (BIP)](https://github.com/bitcoin/bips) 流程,而後者又是基於 [Python 增強提案 (PEP)](https://www.python.org/dev/peps/) 流程。
+[以太坊改進提案 (EIP) GitHub 存放庫](https://github.com/ethereum/EIPs)於 2015 年 10 月建立。 以太坊改進提案流程基於[比特幣改進提案 (BIP)](https://github.com/bitcoin/bips) 流程,而後者又是基於 [Python 增強提案 (PEP)](https://www.python.org/dev/peps/) 流程。
以太坊改進提案編輯負責審查以太坊改進提案的技術健全性、格式問題,以及修正拼音、文法及程式碼樣式方面的錯誤。 2015 至 2016 年底,Martin Becze、Vitalik Buterin、Gavin Wood 等人擔綱初代的以太坊改進提案編輯。
@@ -46,7 +46,7 @@ lang: zh-tw
倘有興趣成為以太坊改進提案編輯,請詳閱 [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069)。
-以太坊改進提案編輯決定提案何時可成為以太坊改進提案,並且會幫助以太坊改進提案作者推進提案。 [Ethereum Cat Herders](https://www.ethereumcatherders.com/) 會協助安排以太坊改進提案編輯與社群之間的會議(請參見 [EIPIP](https://github.com/ethereum-cat-herders/EIPIP))。
+以太坊改進提案編輯決定提案何時可成為以太坊改進提案,並且會幫助以太坊改進提案作者推進提案。 [以太坊牧貓人組織](https://www.ethereumcatherders.com/)會協助安排以太坊改進提案編輯與社群之間的會議(請參見 [EIPIP](https://github.com/ethereum-cat-herders/EIPIP))。
完整的標準化流程以及圖表請見 [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
@@ -54,7 +54,7 @@ lang: zh-tw
若有興趣進一步瞭解以太坊改進提案,請參閱[以太坊改進提案網站](https://eips.ethereum.org/)和 [EIP-1](https://eips.ethereum.org/EIPS/eip-1)。 以下為一些實用連結:
-- [EIP 完整清單](https://eips.ethereum.org/all)
+- [以太坊改進提案完整清單](https://eips.ethereum.org/all)
- [所有以太坊改進提案類型的說明](https://eips.ethereum.org/EIPS/eip-1#eip-types)
- [所有以太坊改進提案狀態的說明](https://eips.ethereum.org/EIPS/eip-1#eip-process)
diff --git a/public/content/translations/zh-tw/energy-consumption/index.md b/public/content/translations/zh-tw/energy-consumption/index.md
index 0d93937f023..d487b73f5ac 100644
--- a/public/content/translations/zh-tw/energy-consumption/index.md
+++ b/public/content/translations/zh-tw/energy-consumption/index.md
@@ -8,56 +8,58 @@ lang: zh-tw
以太坊是講求綠色環保的區塊鏈。 以太坊的[權益證明](/developers/docs/consensus-mechanisms/pos)共識機制,使用以太幣而非[能源來維持網路的安全性](/developers/docs/consensus-mechanisms/pow)。 以太坊全球網路的能耗約為[每年 0.0026 太瓦/時](https://carbon-ratings.com/eth-report-2022)。
-以太坊能源消耗的估算方式,是由 [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) 的研究而來。 他們由下往上估算以太坊網路的電力消耗與碳足跡([查看報告](https://carbon-ratings.com/eth-report-2022))。 他們測量了不同節點的電力消耗,這些節點具有不同的硬體和用戶端軟體配置。 以太坊網路年度電力消耗之估計值為 **2,601(兆瓦/時)**(0.0026 太瓦/時);套用區域特定碳強度因素後,等同一年碳排放為 **870 公噸二氧化碳當量**。 該值會隨著節點加入或離開網路而變化 - 你可使用[劍橋區塊鏈網路永續性指標](https://ccaf.io/cbnsi/ethereum)(注意:他們使用稍微不同的方法估計,詳情請見官網)提供的滾動式七天平均估計值持續追蹤。
+以太坊能源消耗的估算方式,是由 [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) 的研究而來。 這項研究由下而上估算了以太坊網路的電力消耗量和碳足跡 ([請參閲報告](https://carbon-ratings.com/eth-report-2022))。 他們測量了不同節點的電力消耗,這些節點具有不同的硬體和用戶端軟體配置。 以太坊網路年度電力消耗之估計值為 **2,601(兆瓦/時)**(0.0026 太瓦/時);套用區域特定碳強度因素後,等同一年碳排放為 **870 公噸二氧化碳當量**。 該值會隨著節點加入或離開網路而變化 - 你可使用[劍橋區塊鏈網路永續性指標](https://ccaf.io/cbnsi/ethereum)(注意:他們使用稍微不同的方法進行估計,詳情請見官網)提供的滾動式七天平均估計值持續追蹤。
-要從實際的背景來考慮以太坊的能耗,我們可以比較某些其他產業的年度估計值。 這有助於我們更加了解以太坊的估計值是高還是低。
+要深入瞭解以太坊的能耗,我們可以將其與一些其他產品與產業的年度估計值進行比較。 這有助於我們更加了解以太坊的估計值是高還是低。
-圖表展示了以太坊年度能耗估計值與其他幾個產業的比較(單位:太瓦時/年)。 此處提供的估計值來自 2023 年 5 月取用的公開資訊,下表亦提供來源連結:
+上圖比較了以太坊與其他幾種產品和產業的估計能源消耗(單位為太瓦時/年)。 此處提供的估計值來自 2023 年 7 月取用的公開資訊,下表亦提供來源連結。
-| | 年度能耗(太瓦時) | 相較於權益證明以太坊 | 來源 |
-| :------------------------ | :----------------: | :------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 全球資料中心 | 200 | 77,000 倍 | [來源](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) |
-| 淘金 | 131 | 50,000 倍 | [來源](https://ccaf.io/cbnsi/cbeci/comparisons) |
-| 比特幣 | 131 | 50,000x | [來源](https://ccaf.io/cbnsi/cbeci/comparisons) |
-| 工作量證明以太坊 | 78 | 30,000 倍 | [來源](https://digiconomist.net/ethereum-energy-consumption) |
-| Youtube(僅考慮直接消耗) | 12 | 4600 倍 | [來源](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) |
-| 美國電競產業 | 34 | 13,000 倍 | [來源](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) |
-| 網飛 | 0.451 | 173 倍 | [來源](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) |
-| PayPal | 0.26 | 100 倍 | [來源](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) |
-| AirBnB | 0.02 | 8 倍 | [來源]() |
-| 權益證明以太坊 | 0.0026 | 1 倍 | [來源](https://carbon-ratings.com/eth-report-2022) |
+| | 年度能耗(太瓦時) | 相較於權益證明以太坊 | 來源 |
+|:----------- |:----------:|:----------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| 全球資料中心 | 190 | 73,000 倍 | [來源](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) |
+| 比特幣 | 149 | 53,000 倍 | [來源](https://ccaf.io/cbnsi/cbeci/comparisons) |
+| 開採金礦 | 131 | 50,000 倍 | [來源](https://ccaf.io/cbnsi/cbeci/comparisons) |
+| 美國電競產業\* | 34 | 13,000 倍 | [來源](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) |
+| 工作量證明以太坊 | 21 | 8,100 倍 | [來源](https://ccaf.io/cbnsi/ethereum/1) |
+| Google | 19 | 7,300 倍 | [來源](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) |
+| 網飛 | 0.457 | 176 倍 | [來源](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) |
+| PayPal | 0.26 | 100 倍 | [來源](https://s202.q4cdn.com/805890769/files/doc_downloads/global-impact/CDP_Climate_Change_PayPal-(1).pdf) |
+| AirBnB | 0.02 | 8 倍 | [來源](https://s26.q4cdn.com/656283129/files/doc_downloads/governance_doc_updated/Airbnb-ESG-Factsheet-(Final).pdf) |
+| **權益證明以太坊** | **0.0026** | **1 倍** | [來源](https://carbon-ratings.com/eth-report-2022) |
-要準確估計能耗是很複雜的,尤其是當測量對象具有複雜的供應鏈時,或具有會影響效率的部署細節時。 以網飛和 Youtube 為例。 其能源消耗估計值隨以下條件而變化:是否只包含用以維護系統及傳遞內容給使用者所消耗的能量(_直接支出_),還是包含產出內容、經營企業辦公室、廣告等等(_間接支出_)所需的能量消耗。 間接耗能也可包括終端使用者裝置使用內容所需的能源,例如電視、電腦及手機,其又取決於使用的裝置而定。
+\*包含終端使用者裝置,如:個人電腦、筆電及遊戲機。
-這個問題在 [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix) 上有一些詳細的討論。 上表中,網飛報告值包含了他們自己報告的*直接*和*間接*耗能。 Youtube 只提供其*直接*耗能的估計值,約為 [12 太瓦時/年](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf)。
+要準確估計能耗是很複雜的,尤其是當測量對象具有複雜的供應鏈時,或具有會影響效率的部署細節時。 例如,Netflix 和 Google 的能源消耗估計值隨以下條件而變化:是否只包含用以維護系統及傳遞內容給使用者所消耗的能量(_直接能耗_),還是包含產出內容、企業辦公室運營、廣告等等(_間接能耗_)所消耗的能量。 間接能耗也包括電視、電腦及手機等終端使用者裝置使用內容所消耗的能源。
-上面的表格與圖表,也包含了與比特幣及工作量證明以太坊的比較。 需注意的是,工作量證明的能耗並非固定,而是每天都會改變。 工作量證明以太坊所使用的數值,來自[合併](/roadmap/merge/)(升級為權益證明)的前夕,由 [Digiconomist](https://digiconomist.net/ethereum-energy-consumption) 所預測。 [劍橋區塊鏈網路永續指標](https://ccaf.io/cbnsi/ethereum/1)等其他來源,其估計的能耗更低得多(接近 20 太瓦/年)。 比特幣能耗量的估計值,在不同來源之間也有很大的差異,此主題引發了很多複雜的[辯論](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/),不僅是能源消耗量方面,還包括能源的來源和相關道德問題。 能源消耗不一定與環境足跡精準對應,因為不同專案可能使用不同的能源,例如較小或較大比例的再生能源。 舉例來說,[劍橋比特幣電力消耗指標](https://ccaf.io/cbnsi/cbeci/comparisons)指出,天然氣燃除原本會在運送或散佈時損耗的或電力,理論上可以作為比特幣網路需求的驅動來源。 以太坊的永續性路線,是以環保方案取代網路高耗能的部分。
+上述能耗估計值的比較並非完美。 間接能耗的總量因來源而異,且往往未包含終端使用者裝置使用的能源。 每個潛在來源都包含了關於測量對象的更多資訊。
-你可以在[劍橋區塊鏈網路永續性指標的官網](https://ccaf.io/cbnsi/ethereum),瀏覽許多產業的能耗與碳排放估計值。
+上面的表格與圖表,也包含了與比特幣及工作量證明以太坊的比較。 需注意的是,工作量證明網路的能耗不是固定的,而是每天都會改變。 不同來源的能耗估計值也各有差異。 此主題引發了深入的[爭論](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/),不僅討論了耗能,還包括能量來源以及相關的道德問題。 能源消耗不一定與環境足跡精準對應,因為不同專案可能使用不同的能源,例如較小或較大比例的再生能源。 舉例來說,[劍橋比特幣電力消耗指標](https://ccaf.io/cbnsi/cbeci/comparisons)指出,運行比特幣網路所需的能量理論上等同於天然氣燃除或電力輸送時損失的部分。 以太坊的永續性路線,是以環保方案取代網路高耗能的部分。
+
+你可以在[劍橋區塊鏈網路永續性指標網站](https://ccaf.io/cbnsi/ethereum),瀏覽許多產業的能耗與碳排放估計值。
## 每筆交易能耗估計值 {#per-transaction-estimates}
-許多文章估算了區塊鏈「每筆交易」的能耗。 這可能會產生誤導,因為提出和驗證區塊所需的能量與其中的交易數量無關。 每筆交易每個單位的能耗,意味著交易越少,能耗越少,反之亦然,但事實並非如此。 此外,每筆交易的估計值,很大程度上取決於區塊鏈的交易吞吐量是如何定義的,並且可以透過調整這個定義來使估計值看起來更大或更小。
+許多文章估算了區塊鏈「每筆交易」的能耗。 這可能會產生誤導,因為提出和驗證區塊所需的能量與其中的交易數量無關。 若以單筆交易作為計算能耗的單位,意味交易越少能耗將越低,反之亦然,但事實並非如此。 此外,每筆交易的估計值,很大程度上取決於區塊鏈的交易吞吐量是如何定義的,並且可以透過調整這個定義來使估計值看起來更大或更小。
-例如,在以太坊上,交易吞吐量不僅是基礎層的交易吞吐量,也是所有「[二層網路](/layer-2/)」卷軸之交易吞吐量的總和。 二層網絡通常不列入計算,但考慮排序者消耗的其他能量(少量)及其處理的交易量(大量),很可能會大幅降低每筆交易的估計值。 這就是比較跨平台每筆交易能耗的數據時,可能產生誤導的原因之一。
+例如,在以太坊上交易的吞吐量不僅包含了基礎層的吞吐量,還包含了「[二層網路](/layer-2/)」卷軸的交易吞吐量總和。 二層網路通常不列入計算,但考慮排序者消耗的額外能量(少量)及其處理的交易量(大量),很可能會大幅降低每筆交易的估計值。 這就是為什麼跨平臺比較每筆交易能耗可能產生誤導的原因之一。
## 以太坊的碳債 {#carbon-debt}
目前以太坊的能耗非常低,但並非一直都是如此。 以太坊一開始使用工作量證明,其環境成本比現在的權益證明機制大了許多。
-最一開始,以太坊就計劃要實現以權益證明為基礎的共識機制,但為了不犧牲安全性和去中心化,許多年專注投入研發工作。 因此,一開始網路採用了工作量證明機制。 工作量證明要求礦工使用運算硬體來計算數值,過程中會消耗能源。
+最一開始,以太坊就計劃要實現以權益證明為基礎的共識機制,但為了同時確保安全性和去中心化,需要花費多年專注投入研發工作。 因此,一開始網路採用了工作量證明機制。 工作量證明要求礦工使用運算硬體來計算數值,過程中會消耗能源。
![比較以太坊合併前後的能源消耗,以左方的艾菲爾鐵塔(高度 330 公尺)象徵合併前的高能耗,以及右方 4 公分高的樂高小玩偶,象徵合併後大幅降低的能源消耗](energy_consumption_pre_post_merge.png)
-根據 CCRI 估算,合併使以太坊年度電力消耗降低了 **99.988%** 以上。 同樣,以太坊碳足跡減少了約 **99.992%**(從 11,016,000 噸減至 870 噸二氧化碳當量)。 正確來看,減少的碳排放就如同從艾菲爾鐵塔的高度下降到小塑膠玩偶的高度,如上圖所示。 因此,保護以太坊網路的環境成本大幅降低。 同時,網路的安全性相信也已得到改善。
+根據 CCRI 估算,合併使以太坊年度電力消耗降低了 **99.988%** 以上。 同樣,以太坊碳足跡減少了約 **99.992%** (從 11,016,000 噸減至 870 噸二氧化碳當量)。 如上圖所示,從這一角度來看,減少的碳排放就如同從艾菲爾鐵塔的高度下降到小塑膠玩偶的高度。 因此,確保以太坊網路安全性的環境成本大幅降低。 同時,網路的安全性相信也已得到改善。
## 綠色應用程式層 {#green-applications}
-即使以太坊能耗極低,以太坊上仍有穩定成長及高度活躍的[**再生金融 (ReFi)**](/refi/) 廣大社群。 再生金融應用程式使用去中心化金融組件,來建構具有積極外部影響、進而使環境受益的金融應用程式。 再生金融是[「solarpunk」](https://en.wikipedia.org/wiki/Solarpunk)這項廣大運動的一部分,該運動與以太坊緊密結合,目標是將技術進步與環境管理結合。 以太坊去中心化、無需許可,且具有可組合性,這些特性使其成為再生金融和 solarpunk 社群理想的基礎層。
+即使以太坊能耗極低,以太坊上仍有穩定成長及高度活躍的[**再生金融 (ReFi)**](/refi/) 廣大社群。 再生金融應用程式使用去中心化金融組件來構建具有積極外部影響、有益於環境的金融應用程式。 再生金融是[「solarpunk」](https://en.wikipedia.org/wiki/Solarpunk)這項廣大運動的一部分,該運動與以太坊緊密結合,目標是將技術進步與環境管理結合。 以太坊具有去中心化、無需許可以及可組合性的特性,這些特性使其成為再生金融和 solarpunk 社群理想的基礎層。
-[Gitcoin](https://gitcoin.co) 等 Web 3 原生公共財募資平台,舉辦氣候募資輪,以促進以太坊應用程式層開展具環保意識的構建。 透過開發這些倡議(以及[去中心化科研](/desci/)等等),以太坊正成為一項對環境及社會具有淨正效益的科技。
+[Gitcoin](https://gitcoin.co) 等 Web 3 原生公共財募資平台,舉辦氣候募資輪,以促進以太坊應用程式層開展具環保意識的構建。 透過開發這些倡議 (以及[去中心化科研](/desci/)等等),以太坊正成為一項對環境及社會具有淨正效益的科技。
如果你認為此頁內容能更加準確,請提出議題或提取請求 (PR)。 呈現在此頁面上的統計數據皆是基於公開數據的估計值 - 它們不代表 ethereum.org 團隊或以太坊基金會的官方聲明或承諾。
diff --git a/public/content/translations/zh-tw/governance/index.md b/public/content/translations/zh-tw/governance/index.md
index 7da27c6f562..5118183203e 100644
--- a/public/content/translations/zh-tw/governance/index.md
+++ b/public/content/translations/zh-tw/governance/index.md
@@ -75,13 +75,13 @@ _注意:任何人都能參與多個組別,例如,協定開發者可以支
> 此階段可能產生以下結果:
-> - 未來升級網路時會考慮此 以太坊改進提案
+> - 未來升級網路時會考慮此以太坊改進提案
> - 將請求進行技術變更
> - 如果非當務之急,或相對於開發工作而言,改善程度不夠顯著,可能會被拒絕
3. **朝最終提案進行迭代:**收到所有利益相關方的回饋意見後,你很可能需要對初始提案進行修改,以提高安全性或更加滿足多種使用者的需求。 當以太坊改進提案納入你認為必須納入的所有變更,你需要再次提供給協定開發者。 之後將進入此流程的下個步驟;或是出現新的問題,提案必須再迭代一輪。
-4. **網路升級中納入以太坊改進提案**:假設以太坊改進提案已核准、測試及實作,以太坊改進提案會被安排為網路升級的一部分。 由於網路升級的協調成本很高(每個人需同步升級),升級通常會將以太坊改進提案綁搭在一起。
+4. **網路升級中納入以太坊改進提案**:假設以太坊改進提案已核准、測試及實作,以太坊改進提案會被安排為網路升級的一部分。 由於網路升級的協調成本很高(每個人需同步升級),升級通常會將以太坊改進提案綁搭在一起。
5. **網路升級啟動**:啟動網路升級後,以太坊改進提案將能在以太坊網路上線。 _注意:網路升級通常會先在測試網上啟動,之後才在以太坊主網上啟動。_
diff --git a/public/content/translations/zh-tw/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/zh-tw/guides/how-to-create-an-ethereum-account/index.md
index 2261fe338d5..6b7293761a4 100644
--- a/public/content/translations/zh-tw/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-create-an-ethereum-account/index.md
@@ -20,7 +20,7 @@ lang: zh-tw
如果你第一次使用,可以在「找到一個錢包」頁面選擇「加密貨幣新手」篩選條件,得知哪些錢包應含有適合新手使用的所有必要功能。
-![「選擇一個錢包」頁面的篩選選項](./wallet-box.png)
+![「選擇錢包」頁面的篩選選項](./wallet-box.png)
另有其他設定檔篩選條件可滿足你的需求。 下面是常用錢包的一些例子,在信任任何軟體之前,你應該先做些功課。
diff --git a/public/content/translations/zh-tw/guides/how-to-id-scam-tokens/index.md b/public/content/translations/zh-tw/guides/how-to-id-scam-tokens/index.md
index 8fb59587430..229e4bbe032 100644
--- a/public/content/translations/zh-tw/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-id-scam-tokens/index.md
@@ -55,7 +55,7 @@ contentPreview=''>
- **正規擁有者**。 詐騙代幣通常會空投大量餘額到預計是真代幣正規擁有者的地址。
- 我們再次以 `wARB` 為例。 [大概 16% 的代幣](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f)由公開標籤為 [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) 的地址所擁有。 這*並不是*一個假的地址;它真的是[在以太坊主網上部署真 ARB 合約](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670)的地址。
+ 我們再次以 `wARB` 為例。 [大概 16% 的代幣](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f)由公開標籤為 [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) 的地址所擁有。 這_並不是_一個假的地址;它真的是[在以太坊主網上部署真 ARB 合約](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670)的地址。
因爲一個地址的 ERC-20 餘額為 ERC-20 合約儲存的一部分,合約開發者可以透過合約將其指定為想要的形式。 合約也可能禁止轉帳,使正規使用者無法擺脫詐騙代幣。
@@ -92,6 +92,6 @@ contentPreview=''>
只要世界上存在價值,就會有嘗試挪為自用的詐騙犯,且在一個去中心化的世界裡,除了你,沒有任何人可以保護你。 希望你記住這幾點,幫助你區別正規代幣和詐騙:
- 詐騙代幣會模仿正規代幣,且可以使用同樣的名稱、符號等等。
-- 詐騙代幣*無法*使用相同的合約地址。
+- 詐騙代幣_無法_使用相同的合約地址。
- 正規代幣地址的最佳來源是該代幣的發行機構。
- 若無,你可以使用常見且可信的應用程式,例如 [Uniswap](https://app.uniswap.org/#/swap) 和 [Etherscan 區塊瀏覽器](https://etherscan.io/)。
diff --git a/public/content/translations/zh-tw/guides/how-to-revoke-token-access/index.md b/public/content/translations/zh-tw/guides/how-to-revoke-token-access/index.md
index 0ade65d34b8..f334b8d4098 100644
--- a/public/content/translations/zh-tw/guides/how-to-revoke-token-access/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-revoke-token-access/index.md
@@ -29,7 +29,7 @@ lang: zh-tw
進入網站後,點擊「連接錢包」。 網站也會提示你連接你的錢包。
-確保你的錢包和網站使用的是同一網路。 你會看到與所選網絡相關的智慧型合約。 例如,如果你連接的是以太坊主網,那你將只能看到以太坊合約,而来自其他鏈,如 Polygon 的合约不會在此出現。
+確保你的錢包和網站使用的是同一網路。 你會看到與所選網路相關的智慧型合約。 例如,如果你連接的是以太坊主網,那你將只能看到以太坊合約,而来自其他鏈,如 Polygon 的合约不會在此出現。
## 步驟 3:選擇一個你想要撤銷的智慧型合約
diff --git a/public/content/translations/zh-tw/guides/how-to-swap-tokens/index.md b/public/content/translations/zh-tw/guides/how-to-swap-tokens/index.md
index 99e29852ef6..9fe4ea4e0c3 100644
--- a/public/content/translations/zh-tw/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-swap-tokens/index.md
@@ -8,11 +8,11 @@ lang: zh-tw
你是否厭倦了尋找一個能列出你喜歡的所有代幣的交易所? 你可以使用去中心化交易所兌換大部分代幣。
-代幣兌換是指在以太坊網絡上交換兩種不同的資產,例如將以太幣兌換成 DAI(一種 ERC-20 代幣)。 這個過程高效且便宜。 你需要一個加密錢包來兌換代幣。
+代幣兌換是指在以太坊網路上交換兩種不同的資產,例如將以太幣兌換成 DAI(一種 ERC-20 代幣)。 這個過程高效且便宜。 你需要一個加密錢包來兌換代幣。
**先決條件:**
-- 擁有一個加密錢包,你可以跟隨以下指引:[如何:「註冊」以太坊帳戶](/guides/how-to-register-an-ethereum-account/)
+- 若擁有一個加密錢包,你可以關注以下教程:[如何:「註冊」以太坊帳戶](/guides/how-to-create-an-ethereum-account/)
- 在你的錢包中添加資金
## 1. 連接你的錢包到所選擇的去中心化交易所 (DEX)
diff --git a/public/content/translations/zh-tw/guides/how-to-use-a-bridge/index.md b/public/content/translations/zh-tw/guides/how-to-use-a-bridge/index.md
index f508ee2e37c..cabbc96244c 100644
--- a/public/content/translations/zh-tw/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-use-a-bridge/index.md
@@ -10,10 +10,10 @@ lang: zh-tw
**先決條件:**
-- 擁有一個加密錢包,你可以跟隨以下指引:[如何:「註冊」以太坊帳戶](/guides/how-to-register-an-ethereum-account/)
+- 擁有一個加密錢包,你可以跟隨以下指引:[如何:「註冊」以太坊帳戶](/guides/how-to-create-an-ethereum-account/)
- 在你的錢包中添加資金
-## 1. 決定你要使用哪一個二層網路
+## 1. 決定你要使用哪一個二層網路
在我們的[二層網路頁面](/layer-2/)上,你可以更深入地了解不同的專案與重要連結。
diff --git a/public/content/translations/zh-tw/guides/how-to-use-a-wallet/index.md b/public/content/translations/zh-tw/guides/how-to-use-a-wallet/index.md
index 204875f28c5..e24a9ca1fae 100644
--- a/public/content/translations/zh-tw/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/zh-tw/guides/how-to-use-a-wallet/index.md
@@ -6,7 +6,7 @@ lang: zh-tw
# 如何使用錢包
-學習如何使用錢包的所有基本功能。 如果你還沒有錢包,請閱讀我們的指南[如何建立以太坊帳戶](/guides/how-to-create-an-ethereum-account/)。
+學習如何使用錢包的所有基本功能。 如果你還沒有錢包,請查看[如何建立以太坊帳戶](/guides/how-to-create-an-ethereum-account/)。
## 打開你的錢包
@@ -51,7 +51,7 @@ lang: zh-tw
1. 訪問任何專案的網站。
2. 如果專案的登陸頁面只是描述該專案的靜態網頁,你應可點擊選單中的「開啟應用程式」按鈕,這麼做會將你導引至實際的應用程式頁面。
-3. 如你已在應用程式頁面,請選擇「連接」。
+3. 進入應用程式後,按一下「連接」。
![讓使用者透過錢包連接到網站的按鈕](./connect1.png)
diff --git a/public/content/translations/zh-tw/guides/index.md b/public/content/translations/zh-tw/guides/index.md
index 92fa27cfb8f..e01dc109d28 100644
--- a/public/content/translations/zh-tw/guides/index.md
+++ b/public/content/translations/zh-tw/guides/index.md
@@ -22,6 +22,6 @@ lang: zh-tw
## 使用以太坊
-1. [如何橋接代幣到二層網絡?](/guides/how-to-use-a-bridge/) - 以太坊交易是否太過昂貴? 可以考慮轉而使用以太坊擴容方案,即二層網絡。
+1. [如何橋接代幣到二層網路?](/guides/how-to-use-a-bridge/) - 以太坊交易是否太過昂貴? 可以考慮轉而使用以太坊擴容方案,即二層網路。
2. [如何兌換代幣](/guides/how-to-swap-tokens/) - 你想要兌換為其他代幣嗎? 本簡潔指南將為你演示如何操作。
diff --git a/public/content/translations/zh-tw/nft/index.md b/public/content/translations/zh-tw/nft/index.md
index 9d9102e63a7..997e89f884d 100644
--- a/public/content/translations/zh-tw/nft/index.md
+++ b/public/content/translations/zh-tw/nft/index.md
@@ -14,38 +14,32 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
## 什麼是非同質化代幣? {#what-are-nfts}
-每個非同質化代幣都是獨一無二的代幣。 每個非同質化代幣都有不同的屬性(非同質性),它們的稀缺性是可以驗證的。 這與 ERC-20 代幣有明顯分別,其中一組中的每一個代幣都一樣,且具有相同屬性(同質化)。 你不會在乎你錢包內的特定美鈔,因為它們都長得一樣且價值相同。 但你*確實會*在意你自己持有的特定非同質化代幣,因為它們不同於其他的資產,全都有各自的屬性(非同質化)。
+每個非同質化代幣都是獨一無二的代幣。 每個非同質化代幣都有不同的屬性(非同質性),它們的稀缺性是可以驗證的。 這與以太幣和其他基於以太坊的代幣(例如 USDC)不同,後者的每一個代幣都一樣且具有相同的特性(「同質化」)。 你不會在乎你錢包內的其中一張鈔票(以太幣),因為它們都一樣且價值相同。 但你_確實會_在意你自己持有的特定非同質化代幣,因為它們不同於其他的資產,全都有各自的屬性(非同質化)。
-每個非同質化代幣的獨特性使藝術品、收藏品,甚至房地產等等事物能夠代幣化,即一個特定的唯一非同質化代幣對應到現實世界的一些特定且獨一無二的物品或數位物品。 資產的所有權受到太坊區塊鏈的保障 – 沒有人可以修改所有權紀錄,或以複製/貼上的方式新增一個非同質化代幣。
+每個非同質化代幣的獨特性使藝術品、收藏品,甚至房地產等等事物能夠代幣化,即一個特定的唯一非同質化代幣對應到現實世界的一些特定且獨一無二的物品或數位物品。 資產的所有權可以在以太坊區塊鏈上公開驗證。
## 資產網路 {#internet-of-assets}
-非同質化代幣和以太坊解決了網際網路上現存的某些問題。 在一切事物均邁向數位化的同時,以不受中心化組織控制的方式複製實體物品屬性(如稀有度、獨特性、所有權證明) 的需求也隨之產生。 舉例來說,透過非同質化代幣,你可以擁有某音樂的 mp3 檔,其非某公司特定音樂應用程式專屬的音樂;又或者,你可以擁有可自行販賣或交換的社交媒體帳戶名稱,而平臺供應商無法任意從你手上奪走。
+非同質化代幣和以太坊解決了網際網路上現存的某些問題。 隨著一切變得越來越數位化,有需求以不受中心組織控制的方式來複製實體物品的屬性,例如稀缺性、唯一性和所有權證明。 舉例來說,透過非同質化代幣,你可以在所有基於以太坊的應用程式上擁有某個音樂 mp3 檔 的所有權,不必綁定於單一公司特定的音樂 App 上,如 Spotify 或 Apple Music。 你可以擁有可販售或兌換的社交媒體帳號,且無法被平臺提供者任意奪走。
相較於我們大多數人今天使用的網際網路,非同質化代幣網際網路的特色如下...
### 比較 {#nft-comparison}
-| 非同質化代幣網際網路 | 目前的網際網路 |
-| ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
-| 你擁有自己的數位資產! 只有你可以販售或交換這些資產。 | 你向某些組織租用某資產。 |
-| 非同質化代幣具有數位獨特性,每個非同質化代幣皆獨一無二。 | 正品和實體複本往往無法區分。 |
-| 非同質化代幣的所有權儲存在區塊鏈上供任何人驗證。 | 數位物品的所有權紀錄儲存在由機構控制的伺服器上–由他們說了算。 |
+| 非同質化代幣網際網路 | 目前的網際網路 |
+| ---------------------------------------------------- | ---------------------------------------------------------- |
+| 你擁有自己的數位資產! 只有你可以販售或交換這些資產。 | 你從某些機構租借資產後,資產隨時可能被奪走。 |
+| 非同質化代幣具有數位獨特性,每個非同質化代幣皆獨一無二。 | 正品和實體複本往往無法區分。 |
+| 非同質化代幣的所有權儲存在區塊鏈上供任何人驗證。 | 數位物品的所有權紀錄儲存在由機構控制的伺服器上–由他們說了算。 |
| 非同質化代幣都是以太坊上的智慧型合約。 這表示以太坊上的其他智慧型合約及應用程式中都能輕易使用這些代幣! | 擁有數位物品的公司通常需要自己的「防火牆防禦地區」(指電信業者或服務供應商擁有控制應用、內容與媒體的能力)基礎架構。 |
-| 內容創作者可以在任何地點出售自己的作品,還能進入全球市場。 | 創作者依賴其使用的平台所提供的基礎架構和發佈通路。 這些通常會受到使用條款和地理限制的約束。 |
-| 非同質化代幣創作者可以保留自身作品的所有權,並將版稅計費直接編程進非同質化代幣的合約。 | 音樂串流服務等平台分到大部分的銷售利潤。 |
-
-## 非同質化代幣如何運作? {#how-nfts-work}
-
-如同任何在以太坊上發行的代幣,非同質化代幣同樣以智慧型合約發行。 智慧型合約符合其中一個非同質化代幣標準(常見的有 ERC-721 或 ERC-1155),其定義了合約中有哪些函式。 合約可建立(「鑄造」)非同質化代幣,並將它們指派給特定持有者。 合約中定義的所有權是將特定的非同質化代幣映射到特定地址。 非同質化代幣具有識別碼,通常也有與它相關聯的元數據,因此可使特定代幣具有唯一性。
-
-當某人建立或鑄造非同質化代幣時,他們其實是在執行智慧型合約中的某個函式,合約會將某個特定的非同質化代幣分配給他們的地址。 此資訊記錄在合約的儲存空間中,它也是區塊鏈的一部分。 智慧型合約的創作者可以在合約中撰寫額外邏輯,舉例來說:限制非同質化代幣的總供應量,或定義每當代幣被轉移時,應付多少版稅給創作者。
+| 內容創作者可以在任何地點出售自己的作品,還能進入全球市場。 | 創作者依賴其使用的平台所提供的基礎架構和發佈通路。 這些通常會受到使用條款和地理限制的約束。 |
+| 非同質化代幣創作者可以保留自身作品的所有權,並將版稅計費直接編程進非同質化代幣的合約。 | 音樂串流服務等平台分到大部分的銷售利潤。 |
## 非同質化代幣有哪些用途? {#nft-use-cases}
-非同質化代幣有許多用途,例如:
+非同質化代幣有許多用途,包括:
- 證明你參加過某活動
- 證明你完成一堂課程
@@ -58,23 +52,37 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
- 去中心化的網際網路網域名稱
- 去中心化金融中的抵押品
-或許你是位藝術家,想透過非同質化代幣分享你的作品,同時不失去對藝術品的控制權,並因中介而使你的收益受損。 你可以建立一份新合約,並明訂非同質化代幣的數量、它們的屬性,以及連到某些特定藝術品的連結。 作為藝術家,你可以將你應得的版稅編程進智慧型合約(如:每當某非同質化代幣被轉移時,將銷售價格的 5% 撥給合約持有者)。 由於你擁有部署合約的錢包,你隨時也都能證明是你建立了那些非同質化代幣。 你的買家可輕易證明他們擁有賣家收藏品的正版非同質化代幣,因為他們的錢包地址與賣家智慧型合約中的代幣相關聯。 他們可以在以太坊生態系統中使用,並可信任代幣的真實性。
+或許你是位藝術家,想透過非同質化代幣分享你的作品,同時不失去對藝術品的控制權,並且不會因中介而損失收益。 你可以建立一份新合約,並明訂非同質化代幣的數量、屬性,以及連到某些特定藝術品的連結。 作為藝術家,你可以將你應得的版稅編程進智慧型合約 (如:每當非同質化代幣被轉移時,將銷售價格的 5% 撥給合約持有者)。 由於你擁有部署該合約的錢包,你隨時也都能證明是你建立了那些非同質化代幣。 你的買家可輕易證明他們擁有賣家收藏品的正版非同質化代幣,因為他們的錢包地址與賣家智慧型合約中的代幣相關聯。 他們可以在以太坊生態系統中使用非同質化代幣,並可信任代幣的真實性。
-又或者以體育賽事的門票為例, 如同賽事主辦者可以決定要販售幾張門票,非同質化代幣的創作者也可以決定要發行幾份複製品。 有時可能是完全相同的複製品,例如 5000 張普通門票; 有時可能會製作好幾種極為類似,但各不相同的複製品,例如指定席的票券。 此類票券可以在不需要給票務員付款的情況下進行點對點買賣,買家可以隨時檢查合約地址,以確保票券的真實性。
+又或者以體育賽事的門票為例, 如同賽事主辦者可以決定要販售幾張門票,非同質化代幣的創作者也可以決定要發行幾份複製品。 有時可能是完全相同的複製品,例如 5000 張普通門票; 有時可能會製作好幾種極為類似,但各自略有不同的複製品,例如指定席的票券。 此類票券可以在不需要給票務員付款的情況下進行點對點買賣,買家可以隨時檢查合約地址,以確保票券的真實性。
-在 ethereum.org 上,非同質化代幣用於證明人們對我們的 GitHub 儲存庫有所貢獻,或者參加了會議,我們甚至有自己的非同質化代幣網域名稱。 如果你對 ethereum.org 有所貢獻,就可以領取出席證明協議的非同質化代幣。 某些加密貨幣聚會使用出席證明協議作為入場門票。 [深入了解如何貢獻](/contributing/#poap)。
+在 ethereum.org 上,非同質化代幣被用來證明大家對我們的 Github 儲存庫做出了有意義的貢獻(對網站進行編程、撰寫或修改文章等等)、翻譯我們的文字内容,或參加了我們的社群電話會議,以及我們甚至擁有專屬的非同質化代幣域名。 如果你對 ethereum.org 有所貢獻,就可以領取出席證明協定 (POAP) 的非同質化代幣。 某些加密貨幣聚會使用 POAP 作為入場門票。 [深入了解如何貢獻](/contributing/#poap)。
-![ethereum.org 出席證明協議](./poap.png)
+![ethereum.org POAP](./poap.png)
-此網站也有一個由非同質化代幣提供支援的替代網域名稱:**ethereum.eth**。 我們的 `.org` 位址是由網域名稱系統 (DNS) 供應商集中管理,而 ethereum`.eth` 則是透過以太坊名稱服務 (ENS) 於以太坊註冊, 為我們所有,且由我們管理。 [查看我們的以太坊名稱服務 (ENS) 記錄](https://app.ens.domains/name/ethereum.eth)
+此網站也有一個由非同質化代幣提供支援的替代網域名稱:**ethereum.eth**。 我們的 `.org` 位址是由網域名稱系統 (DNS) 供應商集中管理,而 ethereum`.eth` 則是透過以太坊名稱服務 (ENS) 於以太坊註冊, 為我們所有,且由我們管理。 [查看我們的以太坊名稱服務記錄](https://app.ens.domains/name/ethereum.eth)
-[深入了解以太坊名稱服務](https://app.ens.domains)
+[更多以太坊名稱服務相關資訊](https://app.ens.domains)
+## 非同質化代幣如何運作? {#how-nfts-work}
+
+與以太坊區塊鏈上的任何數位物品一樣,非同質化代幣是透過一種稱爲「智慧型合約」的基於以太坊的特殊電腦程式所建立。 這些合約遵循諸如 ERC-721 或 ERC-1155 的特定規則,這些標準將決定該合約的用途。
+
+非同質化代幣智慧型合約的一些關鍵用途:
+
+- **建立非同質化代幣:**能製造新的非同質化代幣。
+- **分配所有權:**透過將非同質化代幣連結到特定的以太坊地址來追蹤其擁有者。
+- **為每一個非同質化代幣分配一個 ID:**每一個非同質化代幣都擁有一個獨一無二的編號。 此外,通常還會附加一些額外信息(元數據),描述該非同質化代幣所代表的含義。
+
+當人們「建立」或「鑄造」非同質化代幣時,他們主要是在告訴智慧型合約將特定非同質化代幣的所有權賦予他們。 該資訊被安全和公開地儲存在區塊鏈中。
+
+此外,合約創作者可以添加額外的規則。 可以限制某種非同質化代幣的製造數量或者決定每當非同質化代幣易手時都應獲得一小筆版稅。
+
### 非同質化代幣的安全性 {#nft-security}
-以太坊的安全性來自權益證明。 以太坊系統被設計成以經濟制度抑制惡意行為,這讓以太坊得以防竄改。 這也讓非同質化代幣得以成真。 一旦包含你的非同質化代幣交易的區塊最終化,攻擊者要改變它,就得花費數百萬以太幣。 任何運行以太坊軟體的人皆能立即偵測到對非同質化代幣進行的欺詐性篡改,且惡意行為者也會遭到經濟處罰及驅逐。
+以太坊的安全性來自權益證明。 以太坊從經濟性的角度抑制惡意行為,這讓以太坊得以防竄改。 這也讓非同質化代幣得以成真。 一旦包含你的非同質化代幣交易的區塊最終化,攻擊者要改變它,就得花費數百萬以太幣。 任何運行以太坊軟體的人皆能立即偵測到對非同質化代幣進行的欺詐性篡改,且惡意行為者也會遭到經濟處罰及驅逐。
與非同質化代幣有關的安全問題最常與釣魚詐騙、智慧型合約漏洞或使用者錯誤(如無意間洩漏私密金鑰)有關,所以良好的錢包安全性對非同質化代幣持有者十分重要。
@@ -84,7 +92,7 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
## 了解更多 {#further-reading}
-- [非同質化代幣的入門指南](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie,2020 年 1 月_
+- [非同質化代幣入門指南](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie,2020 年 1 月_
- [Etherscan 的非同質化代幣追蹤器](https://etherscan.io/nft-top-contracts)
- [ERC-721 代幣標準](/developers/docs/standards/tokens/erc-721/)
- [ERC-1155 代幣標準](/developers/docs/standards/tokens/erc-1155/)
diff --git a/public/content/translations/zh-tw/refi/index.md b/public/content/translations/zh-tw/refi/index.md
index 9169278f088..b9ba404a152 100644
--- a/public/content/translations/zh-tw/refi/index.md
+++ b/public/content/translations/zh-tw/refi/index.md
@@ -1,34 +1,34 @@
---
title: 再生金融 (ReFi)
-description: 再生金融概覽及當前使用案例。
+description: 再生金融概觀及當前使用案例。
lang: zh-tw
template: use-cases
emoji: ":recycle:"
sidebarDepth: 2
image: /future_transparent.png
alt: ""
-summaryPoint1: 建立在可再生原則上的替代性金融系統。
-summaryPoint2: 使用以太坊嘗試解決全球協調危機,如氣候變遷。
+summaryPoint1: 建立在再生原則上的替代性經濟體系
+summaryPoint2: 嘗試使用以太坊解決全球協調危機,如氣候變遷
summaryPoint3: 大幅擴展生態效益資產(如已驗證碳權)的工具
---
-## 再生金融 (ReFi) 是什麼? {#what-is-refi}
+## 什麼是再生金融 (ReFi)? {#what-is-refi}
-**再生金融 (ReFi)** 是建立在區塊鏈上的一整套想法及工具,目標是建立可再生經濟,而非榨取或剝削式經濟。 榨取式系統最終會耗盡可用資源並崩潰;若沒有再生機制,這套系統便缺乏恢復力。 再生金融在此假設下運作:貨幣的價值創造必須脫離以非永續的手段,從我們星球及社群抽取資源。
+**再生金融 (ReFi)** 是建立在區塊鏈上的一整套想法及工具,目標是建立再生經濟,而非榨取或剝削式經濟。 榨取式系統最終會耗盡可用資源並崩潰;若沒有再生機制,這套系統便缺乏恢復力。 再生金融在此假設下運作:貨幣價值的創造必須脫離以非永續的手段,從我們星球及社群抽取資源。
相對的,再生金融的目標是透過建立再生循環以解決環境、公共或社會問題。 這些系統為參與者創造了價值,同時也有益於生態系統及社群。
-再生經濟的概念由[資本研究機構](https://capitalinstitute.org) (Capital Institute) 的 John Fullerton 率先提出,此概念為再生金融的基礎之一。 他提出了組成底層系統健康的八個關聯原則:
+再生金融的其中一個基礎是由 Capital Institute 的 John Fullerton 所提出的再生經濟概念。 他提出了支撐系統健康的[八項相互關聯的原則](https://capitalinstitute.org/8-principles-regenerative-economy/):
![八個關聯原則](./refi-regenerative-economy-diagram.png)
-再生金融項目透過[智慧型合約](/developers/docs/smart-contracts/)及[去中心化金融 (DeFi)](/defi/) 應用程式來實現這些原則,從而獎勵可再生行為,例如復原衰退的生態系統及促進氣候變遷及生物多樣性減損等國際性議題的大規模合作。
+再生金融專案透過[智慧型合約](/developers/docs/smart-contracts/)及[去中心化金融 (DeFi)](/defi/) 應用程式來實現這些原則,從而獎勵可再生行為,例如復原衰退的生態系統及促進氣候變遷及生物多樣性減損等國際性議題的大規模合作。
-再生金融也和[去中心化科研 (DeSci)](/desci/) 運動重疊,此運動將以太坊當成融資、創建、審查、融資、儲存及傳播科學知識的平臺。 去中心化科研工具有益於開發可驗證的再生活動導入及監控之標準及實踐,例如:植樹、消除海洋中的塑膠垃圾,或復原衰退的生態系統等再生活動。
+再生金融也和[去中心化科研 (DeSci)](/desci/) 運動重疊,此運動將以太坊當成融資、創建、審查、信貸、儲存及傳播科學知識的平臺。 去中心化科研工具有益於開發可驗證的再生活動實作及監控之標準及實踐,例如:植樹、消除海洋中的塑膠垃圾,或復原衰退的生態系統等再生活動。
## 碳權代幣化 {#tokenization-of-carbon-credits}
-**[自願性碳交易市場 (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** 是為項目融資的一種機制,該項目必須對碳排放產生經驗證的正向影響,能減少持續進行中的碳排放,或消除大氣中已排放的溫室氣體。 這些項目在經過驗證後會收到稱為「碳權」的資產,他們可將其出售給願意支持氣候行動的個人或組織。
+**[自願性碳交易市場 (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** 是為專案融資的一種機制,此等專案必須對碳排放產生經驗證的正向影響,能減少持續進行中的碳排放,或消除已排放到大氣中的溫室氣體。 此等專案在經過驗證後會收到稱為「碳權」的資產,碳權可出售給願意支持氣候行動的個人或組織。
除了自願性碳交易市場外,也有若干政府批准的官方碳交易市場(「規範市場」),目標是透過特定司法管轄區(如國家或地區)的法律或法規來制定碳權價格,控制可分配的許可供應量。 規範市場能獎勵其司法管轄區內的汙染排放者減少碳排放,但無法消除已被排放的溫室氣體。
@@ -40,40 +40,40 @@ summaryPoint3: 大幅擴展生態效益資產(如已驗證碳權)的工具
4. 交易速度太慢
5. 缺乏可擴容性
-將自願性碳交易市場過渡到以區塊鏈為基礎的新**數位碳交易市場 (DCM)** 可能是一個升級現有碳權驗證、交易及消費技術的好機會。 區塊鏈允許公開驗證數據、更廣泛的使用者存取權,以及更高的流動性。
+將自願性碳交易市場過渡到以區塊鏈為基礎的新**數位碳交易市場 (DCM)** 可能是一個升級現有碳權驗證、交易及消費技術的好機會。 區塊鏈允許公開可驗證的資料、更廣泛的使用者存取權,以及更高的流動性。
-再生金融項目採用區塊鏈科技來緩解傳統市場遇到的諸多問題:
+再生金融專案採用區塊鏈科技來緩解傳統市場遇到的諸多問題:
- **流動性集中於少數流動池中**,任何人都能在裡面自由交易。 大型組織或個人可以直接在流動池中交易,不用手動尋找買家/賣家,也不需要支付參與費用或預先註冊。
-- **所有交易都記錄在公開的區塊鏈上**。 數位碳交易市場中一出現碳權,每筆交易活動的路徑永遠都能被追蹤。
+- **所有交易都記錄在公開的區塊鏈上**。 數位碳交易市場中一出現碳權交易,每筆交易活動的路徑永遠都能被追蹤。
- **交易幾乎即時完成**。 透過傳統市場獲得大量碳權可能會花上數天或數週的時間,但在數位碳交易市場中只需幾秒即可實現。
-- **交易活動不需要中間人**,中間人還會向你收取高額費用。 根據分析公司的統計,數位碳權[與同等的傳統碳權相比,成本降低了 62%](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne)。
+- **交易活動不需要中間人**,中間人還會向你收取高額費用。 根據分析公司的資料,數位碳權[與同等的傳統碳權相比,成本降低了 62%](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne)。
- **數位碳交易市場既可擴張**,亦可滿足個人及跨國公司的需求。
### 數位碳交易市場的核心元件 {#key-components-dcm}
當前的數位碳交易市場由四個主要元件所組成:
-1. [Verra](https://verra.org/project/vcs-program/registry-system/) 和 [Gold Standard](https://www.goldstandard.org/) 等登記處可確保建立碳權的項目可信、可靠。 他們也運用資料庫來記錄數位碳權的來源,碳權可在其中轉移或用罄(註銷)。
+1. [Verra](https://verra.org/project/vcs-program/registry-system/) 和 [Gold Standard](https://www.goldstandard.org/) 等登記處可確保建立碳權的專案可信、可靠。 他們也運用資料庫來記錄數位碳權的來源,碳權可在其中轉移或用罄(註銷)。
-一波建立於區塊鏈的創新項目正試圖顛覆該領域的現有企業。
+一波建立於區塊鏈的創新專案正試圖顛覆該領域的現有企業。
-2. 碳權跨鏈橋,又稱 代幣轉換器,提供了將碳權由傳統登記處轉移到數位碳交易市場的技術。 著名例子包括 [Toucan Protocol](https://toucan.earth/)、[C3](https://c3.app/)和[Moss.Earth](https://moss.earth/)。
-3. 整合服務是一種向使用者端提供碳減排和/或移除碳權的服務,讓使用者可以宣稱碳權對環境的效益,並與全世界分享他們對氣候行動的支持。
+2. 碳權跨鏈橋,又稱 代幣轉換器,提供了代表傳統登記處中的碳權並將其轉移到數位碳交易市場的技術。 著名例子包括 [Toucan Protocol](https://toucan.earth/)、[C3](https://c3.app/) 和 [Moss.Earth](https://moss.earth/)。
+3. 整合服務是一種向使用者端提供碳減排和/或移除碳權的服務,讓使用者可以宣稱碳權對環境的效益,並與全世界分享他們對氣候行動的支援。
-像是 [Klima Infinity](https://www.klimadao.finance/infinity) 和 [Senken](https://senken.io/) 提供了第三方開發的各種項目,並在既定標準(如 Verra)下發行;其他如 [Nori](https://nori.com/) 就只提供了以其自家碳權標準開發的特定項目,由他們發行這些項目,他們也為之準備了自己的專門市場。
+像是 [Klima Infinity](https://www.klimadao.finance/infinity) 和 [Senken](https://senken.io/) 提供了第三方開發的各種專案,並在既定標準(如 Verra)下發行;其他如 [Nori](https://nori.com/) 就只提供了以其自家碳權標準開發的特定專案,由他們發行這些專案,他們也為之準備了自己的專門市場。
-4. 基礎設施促使碳交易市場整體供應鏈的影響和效益隨之擴張。 [KlimaDAO](http://klimadao.finance/) 將流動性當成公共財(允許任何人以透明的價格買賣碳權)供應,透過獎勵來提高碳交易市場和碳註銷(指碳權的配額永久減少)的吞吐量,並提供簡單易用的可交互運作工具來存取相關數據,以及收購和註銷各種代幣化碳權。
+4. 基礎設施促使碳交易市場整體供應鏈的影響和效益隨之擴張。 [KlimaDAO](http://klimadao.finance/) 將流動性當成公共物品(允許任何人以透明的價格買賣碳權)供應,透過獎勵來提高碳交易市場和碳註銷(指碳權的配額永久減少)的吞吐量,並提供簡單易用的可交互運作工具來存取相關資料,以及收購和註銷各種代幣化碳權。
-## 超越碳交易市場的再生金融 {#refi-beyond}
+## 碳交易市場以外的再生金融 {#refi-beyond}
-雖然整體來說,目前各界對碳交易市場極為重視,且此領域中,特別看重從自願性碳交易市場轉換到數位碳交易市場,但「再生金融」一詞並不囿限於碳。 碳權以外的其他環境資產均可被開發和代幣化,這表示其他外部成本也可以在未來經濟體系的基礎層中被定價。 此外,再生式的經濟模型也可用於其他領域,如使用 [Gitcoin](https://gitcoin.co/) 等平方融資平臺為公共財融資。 以開放參與及公平分配資源為核心精神的組織讓每個人都能資助開源軟體項目和教育、環保和社群導向項目。
+雖然整體來說,目前各界對碳交易市場極為重視,且此領域中,特別看重從自願性碳交易市場轉換到數位碳交易市場,但「再生金融」一詞並不囿限於碳。 碳權以外的其他環境資產均可被開發和代幣化,這表示其他外部成本也可以在未來經濟體系的基礎層中被定價。 此外,再生式的經濟模型也可用於其他領域,如使用 [Gitcoin](https://gitcoin.co/) 等二次方融資平臺為公共物品融資。 以開放參與及公平分配資源為核心精神的組織讓每個人都能資助開源軟體專案和教育、環保和社群導向專案。
-透過將資本由搾取式的做法轉向成再生循環的金錢流,對那些提供了社會、環境,或公共利益,以及可能難以夠過傳統金融取得資金的項目及公司來說,他們因而能順利發展,並更快、更輕鬆地為社會產生正向外部影響。 轉變到此融資模式也開啟了更包容的經濟體系,各種背景的人都可以成為主動參與者,而非僅僅是被動的觀察者。 再生金融是以太坊的願景,可作為一種行動協調機制,解決人類及地球上所有生命正面臨的現存挑戰——並作為新經濟典範的基礎層,促進更包容且更永續的未來數百年。
+透過將資本由搾取式的做法轉變成再生循環的金錢流,對那些提供了社會、環境,或公共利益,以及可能難以透過傳統金融取得資金的專案及公司來說,他們因而能順利發展,並更快、更輕鬆地為社會產生正向外部影響。 轉變到此融資模式也開啟了更包容的經濟體系,各種背景的人都可以成為主動參與者,而非僅僅是被動的觀察者。 再生金融是以太坊的願景,可作為一種行動協調機制,解決人類及地球上所有生命正面臨的現存挑戰 — 並作為新經濟典範的基礎層,促進更包容且更永續的未來數百年。
## 關於再生金融的延伸閱讀
-- [深入了解代幣化碳權及其在經濟中的地位](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency)
-- [小說《未來部門》(Ministry for the Future),描繪了代幣化碳權在對抗氣候變遷上起到的作用。](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future)
+- [碳貨幣及其在經濟中的地位概觀](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency)
+- [小說《未來部門》(Ministry for the Future),描繪了碳貨幣在對抗氣候變遷上起到的作用。](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future)
- [Taskforce 針對擴張自願性碳交易市場所撰的詳細報告](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf)
- [由 Kevin Owocki 和 Evan Miyazono 針對再生金融所建的 CoinMarketCap 術語列表](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi)
diff --git a/public/content/translations/zh-tw/roadmap/account-abstraction/index.md b/public/content/translations/zh-tw/roadmap/account-abstraction/index.md
index 6dcef3ef7f1..64ed2d74e59 100644
--- a/public/content/translations/zh-tw/roadmap/account-abstraction/index.md
+++ b/public/content/translations/zh-tw/roadmap/account-abstraction/index.md
@@ -10,23 +10,23 @@ summaryPoints:
# 帳戶抽象 {#account-abstraction}
-使用者使用外部帳戶 (**[Externally Owned Accounts, EOA](/glossary/#eoa)**) 與以太坊互動。 這是開啟交易或執行智慧型合約的唯一方法, 限制了使用者與以太坊互動的方式。 舉例而言,它使得批次處理交易變得困難,並且要求使用者始終保持一定的以太幣餘額來支付 Gas 費用。
+使用者使用**[外部帳戶 (EOA)](/glossary/#eoa)** 與以太坊互動。 這是開啟交易或執行智慧型合約的唯一方法, 限制了使用者與以太坊互動的方式。 舉例而言,它使得批次處理交易變得困難,並且要求使用者始終保持一定的以太幣餘額來支付燃料費用。
-帳戶抽象能夠解決這些問題,藉助它,使用者可以透過編程,靈活地將更高的安全性和更好的使用體驗帶到其帳戶中。 這可以透過兩種方式實現:[更新外部帳戶](https://eips.ethereum.org/EIPS/eip-3074),這樣他們可以由智慧型合約控制;[更新智慧型合約](https://eips.ethereum.org/EIPS/eip-2938),這樣他們可以開啟交易。 兩個選項皆須更動以太坊協定。 還有第三條路徑涉及新增[第二個獨立的交易系統](https://eips.ethereum.org/EIPS/eip-4337),以便與現有協定並行運行。 無論選取哪條路徑,結果都是經由智慧型合約錢包存取以太坊,不管是作為現有協定一部分的本地支援或是藉由附加交易網路。
+帳戶抽象能夠解決這些問題,藉助它,使用者可以透過編程,靈活地將更高的安全性和更好的使用體驗帶到其帳戶中。 這可以透過兩種方式實現:[升級外部帳戶](https://eips.ethereum.org/EIPS/eip-3074),這樣它們可以由智慧型合約控制;[升級智慧型合約](https://eips.ethereum.org/EIPS/eip-2938),這樣他們可以發起交易。 兩個方案皆須變更以太坊協定。 還有第三條路徑涉及新增[第二個獨立的交易系統](https://eips.ethereum.org/EIPS/eip-4337),以便與現有協定並行運行。 無論選取哪條路徑,結果都是經由智慧型合約錢包存取以太坊,不管是作為現有協定一部分的本地支援或是藉由附加交易網路。
智慧型合約錢包為使用者帶來諸多好處,包括:
- 自行定義靈活的安全性規則
- 遺失金鑰時恢復帳戶
-- 安全地與信任的裝置或個人共用帳戶
-- 幫助別人支付 Gas 費用,或者讓別人幫忙支付自己的 Gas 費用
-- 同時批量處理交易(例如一次性核准或交換)
+- 安全地與受信任的裝置或個人共用帳戶
+- 幫助別人支付燃料費用,或者讓別人幫忙支付自己的燃料費用
+- 同時批量處理交易(例如一次性核准並執行兌換)
- 為去中心化應用程式和錢包開發者提供更多機會來創新使用者體驗
目前,這些優勢並未得到本地的支援,因為只有外部帳戶 ([EOA](/glossary/#eoa)) 才能開啟交易。 外部帳戶純粹只是公開-私密金鑰對。 它們的作用原理為:
-- 如果你有私密金鑰,就可以在以太坊虛擬機 (EVM) 內*做任何事情*
-- 如果沒有私密金鑰,就*什麼事也做不了*。
+- 如果你有私密金鑰,就可以在以太坊虛擬機 (EVM) 內_做任何事情_
+- 如果沒有私密金鑰,就_什麼事也做不了_。
遺失的金鑰無法找回,竊賊可以利用被盜的金鑰立即存取帳戶中的所有資金。
@@ -36,91 +36,91 @@ summaryPoints:
## 超越種子助記詞 {#beyond-seed-phrases}
-現今的帳戶使用依據種子助記詞計算出的私密金鑰來保護。 任何有權存取種子助記詞的人皆可輕鬆發現保護帳戶的私密金鑰,並取得其保護之所有資產的存取權限。 遺失的私密金鑰和種子助記詞將永遠無法恢復,所控制的資產亦將永遠凍結。 即使對於專家使用者來說,保管這些種子助記詞也很困難,且助記詞網路釣魚是使用者被騙的最常見方式之一。
+現今的帳戶使用依據種子助記詞計算出的私密金鑰來保護。 任何有權存取種子助記詞的人皆可輕鬆發現保護帳戶的私密金鑰,並取得其保護之所有資產的存取權限。 遺失的私密金鑰和種子助記詞將永遠無法恢復,所控制的資產亦將永遠凍結。 即使對於專家使用者來說,保管這些種子助記詞也很困難,且種子助記詞網路釣魚是使用者被騙的最常見方式之一。
帳戶抽象將使用智慧型合約來持有資產和授權交易,從而解決這個問題。 然後可以用客製化邏輯裝飾這些智慧型合約,以使其盡可能安全並為使用者量身訂製。 最終,你依舊使用私密金鑰來管控對帳戶的存取,但安全網可以讓你的管理工作變得更輕鬆、更安全。
-例如,可以將備份金鑰新增至錢包中,以便在主金鑰遺失或意外暴露時,能夠在獲得備份金鑰許可的情況下,用新的安全金鑰取代主金鑰。 你可以透過不同方式保護這些金鑰,或者將它們分配給受信任的監護人。 如此,小偷便更難完全控制你的資金。 同樣,你可以向錢包新增規則,以減少主金鑰洩露時的影響,舉例來說,你可以允許透過單一簽名來驗證小額交易,而大額交易則需要多位經驗證簽署者的批准。 智慧型合約錢包還有其他方法可以幫助你阻止竊賊,例如,可以使用白名單來阻止每筆交易,除非交易是傳送到受信任的地址或是透過你預先批准的多個金鑰進行驗證。
+例如,可以將備份金鑰新增至錢包中,以便在主金鑰遺失或意外暴露時,能夠在獲得備份金鑰許可的情況下,用新的安全金鑰取代主金鑰。 你可以透過不同方式保護這些金鑰,或者將它們分配給受信任的監護人。 如此,竊賊便更難完全控制你的資金。 同樣,你可以向錢包新增規則,以減少主金鑰洩露時的影響,舉例來說,你可以允許透過單一簽名來驗證小額交易,而大額交易則需要多位經驗證簽署者的批准。 智慧型合約錢包還有其他方法可以幫助你阻止竊賊,例如,可以使用白名單來阻止每筆交易,除非交易是傳送到受信任的地址或是透過你預先批准的多個金鑰進行驗證。
### 可以內建到智慧型合約錢包中的安全邏輯範例:
- **多重簽名授權**:可以在多個受信任的人員或裝置之間共用授權憑證。 然後可以對合約進行設定,要求交易超過某個預設值時,必須得到一定比例(例如 3/5)的可信方的授權。 舉例來說,高額交易可能需要行動裝置和硬體錢包的批准,或者需要分配予可信家庭成員的帳戶的簽名。
-- **帳戶凍結**:若裝置遺失或受到威脅,可以從另一台授權裝置鎖定帳戶,從而保護使用者的資產。
+- **帳戶凍結**:若裝置遺失或受到入侵,可以從另一台授權裝置鎖定帳戶,從而保護使用者的資產。
- **帳戶恢復**:裝置遺失或忘記密碼? 在目前的範例中,這意味著你的資產可能永遠凍結。 有了智慧型合約錢包,你可以設定一些預先核准的帳戶來授權新裝置並重設存取權限。
-- **設定交易上限**:指定每日門檻,規定每天/每週/每月可以從帳戶轉出多少資金。 這意味著,即使攻擊者確實取得存取你帳戶的存取權限,也不能立即耗盡所有內容,並且你將有機會凍結和重設存取權限。
-- **建立白名單**:只允許目的地為你確信安全的地址的交易。 這代表*即使*你的私密金鑰遭竊,攻擊者也無法將資金傳送到非白名單的目標帳戶。 這些白名單需要多個簽名才能更改,因此攻擊者無法將自己的地址新增至名單,除非他們有權存取你的多個備份金鑰。
+- **設定交易限制**:指定每日閾值,以控制每日/週/月可以從帳戶轉出多少金額。 這意味著,即使攻擊者確實取得存取你帳戶的存取權限,也不能立即提領所有內容,並且你將有機會凍結和重設存取權限。
+- **建立白名單**:只允發送交易到你確認安全的地址。 這代表_即使_你的私密金鑰遭竊,攻擊者也無法將資金傳送到非白名單的目標帳戶。 這些白名單需要多個簽名才能更改,因此攻擊者無法將自己的地址新增至名單,除非他們有權存取你的多個備份金鑰。
## 更好的使用者體驗 {#better-user-experience}
-帳戶抽象可以提供**更好的整體使用者體驗**和**改進的安全性**,因為它在協定層級新增了對智慧型合約錢包的支援。 最重要的原因是,它將為智慧型合約、錢包和應用程式的開發者提供更大的自由,以我們可能無法預見的方式創新使用者體驗。 帳戶抽象帶來的一些明顯改進包括捆綁交易以提高速度和效率。 舉例來說,簡單的兌換原本應該是一鍵操作,但現在它需要簽署多個交易,以批准各個代幣的支出,接著才能執行兌換。 帳戶抽象透過允許交易捆綁消除了這種摩擦。 此外,捆綁交易可以精確批准每筆交易所需的代幣的正確價值,然後在交易完成後撤銷批准,從而提供額外的安全性。
+帳戶抽象可以提供**更好的整體使用者體驗**和**改進的安全性**,因為它在協定層級新增了對智慧型合約錢包的支援。 最重要的原因是,它將為智慧型合約、錢包和應用程式的開發者提供更大的自由,以我們可能無法預見的方式創新使用者體驗。 帳戶抽象帶來的一些明顯改進包括捆綁交易以提高速度和效率。 舉例來說,簡單的兌換原本應該是一鍵操作,但現在卻需要簽署多個交易,以批准各個代幣的支出,接著才能執行兌換。 帳戶抽象透過允許交易捆綁消除了這種分歧。 此外,捆綁交易可以精確批准每筆交易所需的代幣的正確價值,然後在交易完成後撤銷批准,從而提供額外的安全性。
-透過帳戶抽象,Gas 管理也得到很大的改進。 應用程式不僅可以支付使用者的 Gas 費用,還可以用以太幣以外的代幣支付 Gas 費用,讓使用者不必為了支付交易手續費而保留以太幣餘額。 這可以透過在合約內將使用者的代幣換成以太幣,然後使用以太幣支付 Gas 費用來實現。
+透過帳戶抽象,燃料管理也得到很大的改進。 應用程式不僅可以支付使用者的燃料費用,還可以用以太幣以外的代幣支付燃料費用,讓使用者不必為了支付交易手續費而保留以太幣餘額。 這可以透過在合約內將使用者的代幣換成以太幣,然後使用以太幣支付燃料費用來實現。
-
+
-Gas 管理是以太坊使用者遇到的主要難題之一,主要原因是以太幣是唯一可用於支付交易手續費的資產。 想像一下,如果你的錢包中都是 USDC,沒有以太幣。 你無法移動或兌換這些 USDC 代幣,因為不能支付 Gas 費用。 也不能將 USDC 換成以太幣,因為這本身就需要消耗 Gas。 必須從交易所或其他地址將更多以太幣傳送至你的帳戶,才能解決這個問題。 有了智慧型合約錢包後,你可以輕鬆地用 USDC 支付 Gas 費用,解放帳戶。 你不必再在所有帳戶中保留以太幣餘額。
+燃料管理是以太坊使用者遇到的主要難題之一,主要原因是以太幣是唯一可用於支付交易手續費的資產。 想像一下,如果你的錢包中都是 USDC,沒有以太幣。 你無法移動或兌換這些 USDC 代幣,因為不能支付燃料費用。 也不能將 USDC 換成以太幣,因為這本身就需要消耗燃料。 必須從交易所或其他地址將更多以太幣傳送至你的帳戶,才能解決這個問題。 有了智慧型合約錢包後,你可以輕鬆地用 USDC 支付燃料費用,解放帳戶。 你不必再在所有帳戶中保留以太幣餘額。
-帳戶抽象也允許去中心化應用程式開發者在 Gas 管理方面發揮創意。 舉例來說,你每個月或許可以為最愛的去中心化交易所支付一筆固定費用,以實現無限制的交易。 去中心化應用程式也可能代你支付所有 Gas 費用,作為對你使用其平台的獎勵,或作為嚐鮮優惠。 當協定層面支援智慧型合約錢包時,開發者將更容易在 Gas 方面實現創新。
+帳戶抽象也允許去中心化應用程式開發者在燃料管理方面發揮創意。 舉例來說,你每個月或許可以為最喜愛的去中心化交易所支付一筆固定費用,以實現無限制的交易。 去中心化應用程式也可能代你支付所有燃料費用,作為對你使用其平台的獎勵,或作為入網優惠。 當協定層面支援智慧型合約錢包時,開發者將更容易在燃料方面實現創新。
可信會話還可能變革使用者體驗,特別是像遊戲這樣的應用程式,大量小額交易可能需要在短時間內獲得批准。 逐一批准交易將破壞遊戲體驗,但永久批准又不安全。 智慧型合約錢包可以在固定時間內核准某些特定交易,比如特定金額或地址的交易。
-考慮購買如何隨著帳戶抽象而改變也非常有意思。 目前,必須使用已預先存入足夠數量代幣的錢包,每筆交易才能獲得批准和執行。 透過帳戶抽象,體驗比較像大家熟悉的線上購物,使用者只要將物品放入「購物車」並按一下結帳按鈕,即可一次性購買所有商品,所需的所有邏輯皆由合約處理,而非使用者。
+考慮購買過程如何隨著帳戶抽象而改變也非常有意思。 目前,必須使用已預先存入足夠數量代幣的錢包,每筆交易才能獲得批准和執行。 透過帳戶抽象,體驗比較像大家熟悉的線上購物,使用者只要將物品放入「購物車」並按一下結帳按鈕,即可一次性購買所有商品,所需的所有邏輯皆由合約處理,而非使用者。
-這些只是帳戶抽象提升使用者體驗的幾個例子,還有更多我們沒有想像到的使用場景。 帳戶抽象將開發者從現今的外部帳戶限制中解放,讓他們將 web2 的優點帶進 web3,而不必犧牲自我託管的權利,亦無需絞盡腦汁發明新的使用者體驗。
+這些只是帳戶抽象提升使用者體驗的個別例子,還有更多我們沒有想像到的使用場景。 帳戶抽象將開發者從現今的外部帳戶限制中解放,讓他們將 web2 的優點帶進 web3,而不必犧牲自我託管的權利,亦無需絞盡腦汁發明新的使用者體驗。
## 帳戶抽象將如何實作? {#how-will-aa-be-implemented}
-目前市面上已經有智慧型合約錢包了,但因為以太坊虛擬機還不支援,要實作它們非常有挑戰性。 相對的,它們依賴於在標準以太坊交易上新增多相對複雜的程式碼。 透過允許智慧型合約開啟交易,不在鏈下而是在以太坊智慧型合約中處理必要的邏輯,以太坊可以改變上述情況。 將邏輯放進智慧型合約也提高了以太坊的去中心化程度,因為有了它之後,便不需要錢包開發者運行的「中繼器」將使用者簽署的訊息轉換為常規以太坊交易。
+目前市面上已經有智慧型合約錢包了,但因為以太坊虛擬機還不支援,要實作它們非常有挑戰性。 相對的,它們依賴於在標準以太坊交易中包裝相對複雜的程式碼。 透過允許智慧型合約開啟交易,不在鏈下而是在以太坊智慧型合約中處理必要的邏輯,以太坊可以改變上述情況。 將邏輯放進智慧型合約也提高了以太坊的去中心化程度,因為有了它之後,便不需要錢包開發者運行的「中繼器」將使用者簽署的訊息轉換為常規以太坊交易。
-EIP-2771 引入了元交易的概念,允許第三方在不更改以太坊協定的情況下支付使用者的 Gas 費用。 這個想法是使用者簽署的交易會送到「轉發者」合約中。 轉發者是可信任的實體,會在將交易傳送到 Gas 中繼器之前驗證交易是否有效。 這在鏈下完成,因此無需支付 Gas 費用。 Gas 中繼器將交易送到「接收者」合約,支付必要的 Gas 費用,以使交易可在以太坊上執行。 如果「接收者」知道和信任「轉發者」,交易即會執行。 這種模式使得開發者可以輕鬆為使用者實現無 Gas 交易。
+EIP-2771 引入了元交易的概念,允許第三方在不更改以太坊協定的情況下支付使用者的燃料費用。 這個想法是讓使用者簽署的交易會送到「轉發者」合約中。 轉發者是可信任的實體,會在將交易傳送到燃料中繼器之前驗證交易是否有效。 這在鏈下完成,因此無需支付燃料費用。 燃料中繼器將交易送到「接收者」合約,支付必要的燃料費用,以使交易可在以太坊上執行。 如果「接收者」知道和信任「轉發者」,交易即會執行。 這種模式使得開發者可以輕鬆為使用者實現無燃料交易。
-
+
-EIP-4337 是以去中心化方式實現本地智慧型合約錢包支援的第一步,無需更動以太坊協定。 不是修改共識層來支援智慧型合約錢包,而是在正常的交易流言協定中單獨新增一個系統。 這個更高級別的系統圍繞一個名為 UserOperation 的新物件建構,該物件將使用者的行為以及相關簽名打包在一起。 接下來,這些 UserOperation 物件會被廣播到專用記憶體池中,驗證者會將他們打包成「捆綁交易」。 捆綁交易代表許多單獨的 UserOperations 序列,可以像普通交易一樣包含在以太坊區塊中,並且可以由驗證者使用類似的費用最大化選取模型來選擇。
+EIP-4337 是以去中心化方式實現本地智慧型合約錢包支援的第一步,無需變更以太坊協定。 不是修改共識層來支援智慧型合約錢包,而是在正常的交易廣播協定中單獨新增一個系統。 這個更高級別的系統圍繞一個名為 UserOperation 的新物件建構,此等物件將使用者的操作以及相關簽名打包在一起。 接下來,這些 UserOperation 物件會被廣播到專用記憶體池中,驗證者會將其打包成「捆綁交易」。 捆綁交易代表許多單獨的 UserOperations 序列,可以像普通交易一樣包含在以太坊區塊中,並且可以由驗證者使用類似的費用最大化選取模型來選擇。
-EIP-4337 也會改變錢包的運作方式。 這些功能將外包給稱為「入口點」的全域錢包合約,而不是每個錢包重新實作常見但複雜的安全邏輯。 這將處理支付費用、執行 EVM 程式碼等操作,以便錢包開發者可以專注於提供出色的使用者體驗。
+EIP-4337 也會改變錢包的運作方式。 這些功能將外包給稱為「入口點」的全域錢包合約,而不是每個錢包重新實作常見但複雜的安全邏輯。 此合約將處理支付費用、執行以太坊虛擬機程式碼等操作,以便錢包開發者可以專注於提供出色的使用者體驗。
-注意 EIP-4337 進入點合約已於 2023 年 3 月 1 日部署至以太坊主網。 你可以在 Etherscan 上查看此合約。
+注意 EIP-4337 入口點合約已於 2023 年 3 月 1 日部署至以太坊主網。 你可以在 Etherscan 上查看此合約。
-
+
-EIP-2938 的目標是藉由引入一種新的交易類型 AA_TX_TYPE 來更新以太坊協定,包含三個欄位:nonce、target 和 data,其中 nonce 是交易計數器,target 是進入點合約地址,data 是 EVM 位元組碼。 若要執行這些交易,需要新增兩個新的指令(又稱操作碼)到 EVM:NONCE 和 PAYGAS。 NONCE 操作碼會追蹤交易序列,PAYGAS 則會計算並從合約餘額中提取執行交易所需的 Gas 費用。 這些新功能使得以太坊能夠在本地支援智慧型合約錢包,因為以太坊協定已內建必要的基礎設施。
+EIP-2938 的目標是藉由引入一種新的交易類型 AA_TX_TYPE 來更新以太坊協定,包含三個欄位:nonce、target 和 data,其中 nonce 是交易計數器,target 是入口點合約地址,data 是以太坊虛擬機位元組碼。 若要執行這些交易,需要新增兩條新的指令(又稱作業碼)到以太坊虛擬機:NONCE 和 PAYGAS。 NONCE 操作碼會追蹤交易序列,PAYGAS 則會計算並從合約餘額中提取執行交易所需的燃料費用。 這些新功能使得以太坊能夠在本地支援智慧型合約錢包,因為以太坊協定已內建必要的基礎設施。
-請注意,EIP-2938 目前尚未啟用。 社群目前偏好 EIP-4337,因其不要求更動協定。
+請注意,EIP-2938 目前尚未啟用。 社群目前偏好 EIP-4337,因其不要求變更協定。
-EIP-3074 的目標是更新以太坊的外部帳戶,方法是允許它們將控制權委託給智慧型合約。 這意味著智慧型合約邏輯可以批准源自外部帳戶的交易。 這可以讓一些功能成為可能,如 Gas 贊助和批次交易。 要使其可用,必須新增兩個新的操作碼到 EVM:AUTH 和 AUTHCALL。 透過 EIP-3074,無需合約即可獲得智慧型合約錢包的優勢;相反,一種稱為「調用者」的特定類型的無狀態、無信任、不可升級的合約會處理交易。
+EIP-3074 的目標是更新以太坊的外部帳戶,方法是允許它們將控制權委託給智慧型合約。 這意味著智慧型合約邏輯可以批准源自外部帳戶的交易。 這可以讓一些功能成為可能,如燃料贊助和批次交易。 要使其可行,必須新增兩個新的作業碼到以太坊虛擬機:AUTH 和 AUTHCALL。 透過 EIP-3074,無需合約即可獲得智慧型合約錢包的優勢;相反,一種稱為「調用者」的特定類型的無狀態、無信任、不可升級的合約會處理交易。
-請注意,EIP-3074 目前尚未啟用。 社群目前偏好 EIP-4337,因其不要求更動協定。
+請注意,EIP-3074 目前尚未啟用。 社群目前偏好 EIP-4337,因其不要求變更協定。
## 目前進度 {#current-progress}
-智慧型合約錢包早已可用,但需要更多升級才能讓它們盡可能去中心化及無需許可。 EIP-4337 是成熟的提案,且不需要對以太坊協定做任何更動,所以可以快速實作。 然而,改變以太坊協定的升級目前尚未積極開發,因此這些更改可能需要更長的時間才能發佈。 也有可能帳戶抽象透過 EIP-4337 完美實現,也就不需要更動任何協定了。
+智慧型合約錢包早已可用,但需要更多升級才能讓它們盡可能去中心化及無需許可。 EIP-4337 是成熟的提案,且不需要對以太坊協定做任何變更,所以可以快速實作。 然而,改變以太坊協定的升級目前尚未積極開發,因此這些更改可能需要更長的時間才能發佈。 也有可能帳戶抽象透過 EIP-4337 完美實現,也就不需要變更任何協定了。
## 了解更多 {#further-reading}
- [erc4337.io](https://www.erc4337.io/)
- [來自 Devcon Bogota 的帳戶抽象小組討論](https://www.youtube.com/watch?app=desktop&v=WsZBymiyT-8)
-- [來自 Devcon Bogota 的《為何帳戶抽象對去中心化應用程式來說是革命性的改變》](https://www.youtube.com/watch?v=OwppworJGzs)
+- [來自 Devcon Bogota 的「為何帳戶抽象對去中心化應用程式來說是革命性的改變」](https://www.youtube.com/watch?v=OwppworJGzs)
- [來自 Devcon Bogota 的「帳戶抽象 ELI5」(譯註:ELI5 是「把我當五歲小孩和我解釋」的英文縮寫,指用簡單易懂的方式解釋)](https://www.youtube.com/watch?v=QuYZWJj65AY)
-- [Vitalik 的《帳戶抽象之路》筆記](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists)
-- [Vitalik 關於社交恢復錢包的部落格文章](https://vitalik.eth.limo/general/2021/01/11/recovery.html)
+- [Vitalik 的「帳戶抽象之路」筆記](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists)
+- [Vitalik 關於社交恢復錢包的部落格文章](https://vitalik.ca/general/2021/01/11/recovery.html)
- [EIP-2938 筆記](https://hackmd.io/@SamWilsn/ryhxoGp4D#What-is-EIP-2938)
- [EIP-2938 文檔](https://eips.ethereum.org/EIPS/eip-2938)
- [EIP-4337 筆記](https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a)
- [EIP-4337 文檔](https://eips.ethereum.org/EIPS/eip-4337)
- [EIP-2771 文檔](https://eips.ethereum.org/EIPS/eip-2771)
-- [《帳戶抽象的基本概念》 --「帳戶抽象是什麼」第一部分](https://www.alchemy.com/blog/account-abstraction)
+- [「帳戶抽象的基本概念」 -- 什麼是帳戶抽象,第一部分](https://www.alchemy.com/blog/account-abstraction)
diff --git a/public/content/translations/zh-tw/roadmap/beacon-chain/index.md b/public/content/translations/zh-tw/roadmap/beacon-chain/index.md
index 99a268e8d5f..6d21cc63613 100644
--- a/public/content/translations/zh-tw/roadmap/beacon-chain/index.md
+++ b/public/content/translations/zh-tw/roadmap/beacon-chain/index.md
@@ -4,38 +4,37 @@ description: 瞭解信標鍊 - 將權益證明引入以太坊的升級。
lang: zh-tw
template: upgrade
image: /upgrades/core.png
-alt:
summaryPoint1: 信標鏈將權益證明引入以太坊生態系統。
summaryPoint2: 信標鏈已於 2022 年 9 月與原先的以太坊工作量證明鏈合併。
-summaryPoint3: 信標鏈引入共識邏輯和區塊流言協定,現在可保護以太坊安全。
+summaryPoint3: 信標鏈引入共識邏輯和區塊廣播協定,現在可保護以太坊安全。
---
信標鏈於 2020 年 12 月 1 日發佈,並於 2022 年 9 月 15 日透過合併正式將權益證明確定為以太坊的共識機制。
-## 信標鏈是什麼? {#what-is-the-beacon-chain}
+## 什麼是信標鏈? {#what-is-the-beacon-chain}
-信標鍊是 2020 年推出的原始權益證明區塊鏈的名稱。 信標鏈的作用是在以太坊主網上啟用權益證明共識邏輯之前,確保它健全且可永續存在。 因此,它與原先的工作量證明以太坊一起運行。 信標鏈是「空」區塊鏈,但在以太坊上,要從工作量證明過渡到權益證明,需要指示信標鏈接受來自執行用戶端的交易資料,將它們打包進區塊,並使用基於權益證明的共識機制,將它們整合成一個區塊鏈。 與此同時,原始的以太坊用戶端關閉挖礦、區塊廣播和共識邏輯,將它們全部交給信標鏈。 這個事件稱為[合併](/roadmap/merge/)。 一旦合併發生,即不再有兩個區塊鏈。 相反,只有一個權益證明以太坊,每個節點現在需要兩個不同的用戶端。 信標鏈目前是共識層,是處理區塊流言(註:gossip,一種分散式協定)和共識邏輯的共識用戶端點對點網路,而原始用戶端則形成執行層,負責傳播流言和執行交易,以及管理以太坊狀態。 這兩層可以用引擎 API 相互通訊。
+信標鍊是 2020 年推出的原始權益證明區塊鏈的名稱。 信標鏈的作用是在以太坊主網上啟用權益證明共識邏輯之前,確保它健全且可永續存在。 因此,它與原先的工作量證明以太坊一起運行。 信標鏈是「空」區塊鏈,但在以太坊上,要從工作量證明過渡到權益證明,需要指示信標鏈接受來自執行用戶端的交易資料,將它們打包進區塊,並使用基於權益證明的共識機制,將它們整合成一條區塊鏈。 與此同時,原始的以太坊用戶端關閉挖礦、區塊廣播和共識邏輯,將它們全部交給信標鏈。 這個事件稱為[合併](/roadmap/merge/)。 合併後,即不再有兩條區塊鏈。 相反,只有一個權益證明以太坊,每個節點現在需要兩個不同的用戶端。 信標鏈目前是共識層,是處理區塊廣播和共識邏輯的共識用戶端對等網路,而原始用戶端則形成執行層,負責廣播和執行交易,以及管理以太坊狀態。 這兩個層可以用引擎應用程式介面相互通訊。
## 信標鏈可以做什麼? {#what-does-the-beacon-chain-do}
-信標鏈是帳戶帳本的名稱,在以太坊[質押者](/staking/)開始驗證真正的以太坊區塊前,信標鏈會指揮並協調這些質押者。 但它並不處理交易或智慧型合約互動,因為這些事是在執行層完成的。 信標鏈負責區塊和證明處理、運行分叉選擇演算法、管理獎勵和懲罰等事務。 請參閱[節點架構頁面](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)瞭解更多內容。
+信標鏈是帳戶帳本的名稱,在以太坊[質押者](/staking/)開始驗證真正的以太坊區塊前,信標鏈會指揮並協調這些質押者。 但它並不處理交易或智慧型合約互動,因為這些事是在執行層完成的。 信標鏈負責區塊和證明處理、執行分叉選擇演算法、管理獎勵和懲罰等事務。 請參閱[節點架構頁面](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)瞭解更多內容。
## 信標鏈的影響 {#beacon-chain-features}
### 質押簡介 {#introducing-staking}
-信標鏈將[權益證明](/developers/docs/consensus-mechanisms/pos/)引入以太坊。 這可以保證以太坊的安全,驗證者可以在此過程中賺取更多以太幣。 實際上,你需要使用質押以太幣來啟用驗證者軟體。 身為質押者,你將運行在鏈中建立及驗證新區塊的軟體。
+信標鏈將[權益證明](/developers/docs/consensus-mechanisms/pos/)引入以太坊。 這可以保證以太坊的安全,驗證者可以在此過程中賺取更多以太幣。 實際上,你需要使用質押以太幣來啟用驗證者軟體。 身為質押者,你將執行在鏈中建立及驗證新區塊的軟體。
-質押的目的與[挖礦](/developers/docs/mining/)相似,但在很多方面有所不同。 挖礦需要大量的前期支出,包括強大的硬體和能耗,從而產生規模經濟並促進中心化。 挖礦也不需要將任何資產鎖倉以作為抵押品,這限制了協定在攻擊發生後懲罰作惡者的能力。
+質押的目的與[挖礦](/developers/docs/consensus-mechanisms/pow/mining/)相似,但在很多方面有所不同。 挖礦需要大量的前期支出,包括強大的硬體和高能耗,從而產生規模經濟並促進中心化。 挖礦也不要求將任何資產鎖定以作為抵押品,這限制了協定在攻擊發生後懲罰作惡者的能力。
相較於工作量證明,過渡到權益證明後,以太坊的安全性和去中心化程度大幅提升。 參與網路的人越多,去中心化程度和安全性越高,抵禦攻擊的能力也越強。
使用權益證明作為共識機制是[我們現在擁有的安全、環保、可擴容的以太坊](/roadmap/vision/)的基石。
- 若有興趣成為驗證者或幫助保護以太坊安全,請瞭解有關質押的更多資訊。
+ 若有興趣成為驗證者或幫助保障以太坊安全,請瞭解有關質押的更多資訊。
### 針對分片進行設定 {#setting-up-for-sharding}
@@ -44,7 +43,7 @@ summaryPoint3: 信標鏈引入共識邏輯和區塊流言協定,現在可保
權益證明的優點是,在任何時間都擁有所有經核准區塊產生者的註冊表,每個人都各自質押以太幣。 此註冊表奠定了分而治之的基礎,同時也可靠地劃分了具體的網路責任。
-這種責任與採用工作量證明時的責任相反。採用工作量證明時,礦工對網路沒有義務,可以隨時停止挖礦並永久關閉其節點軟體,而不需承擔後果。 此外,也沒有已知區塊提交者的註冊表,並且沒有可靠的方法來安全地劃分網路責任。
+這種責任與採用工作量證明時的責任有很大的不同。採用工作量證明時,礦工對網路沒有義務,可以隨時停止挖礦並永久關閉其節點軟體,而不需承擔後果。 此外,也沒有已知區塊提交者的註冊表,並且沒有可靠的方法來安全地劃分網路責任。
[更多分片相關更多資訊](/roadmap/danksharding/)
@@ -54,7 +53,7 @@ summaryPoint3: 信標鏈引入共識邏輯和區塊流言協定,現在可保
### 信標鏈和合併 {#merge-and-beacon-chain}
-起初,信標鏈獨立於以太坊主網而存在,但兩者已於 2022 年合併。
+起初,信標鏈獨立於以太坊主網存在,但兩者已於 2022 年合併。
合併
@@ -62,7 +61,7 @@ summaryPoint3: 信標鏈引入共識邏輯和區塊流言協定,現在可保
### 分片與信標鏈 {#shards-and-beacon-chain}
-僅當採用權益證明共識機制時,分片才能安全地進入以太坊生態系統。 已與主網「合併」的信標鏈引入了質押,為未來擴容以太坊所需的分片機制鋪平道路。
+僅當採用權益證明共識機制時,分片才能安全地進入以太坊生態系統。 已與主網「合併」的信標鏈引入了質押,為未來進一步擴展以太坊所需的分片機制鋪平道路。
分片鏈
@@ -70,6 +69,6 @@ summaryPoint3: 信標鏈引入共識邏輯和區塊流言協定,現在可保
## 衍生閱讀
-- [關於以太坊未來升級的更多資訊](/roadmap/vision)
-- [關於節點架構的更多資訊](/developers/docs/nodes-and-clients/node-architecture)
+- [更多以太坊未來升級相關資訊](/roadmap/vision)
+- [更多節點架構相關資訊](/developers/docs/nodes-and-clients/node-architecture)
- [關於權益證明的更多資訊](/developers/docs/consensus-mechanisms/pos)
diff --git a/public/content/translations/zh-tw/roadmap/danksharding/index.md b/public/content/translations/zh-tw/roadmap/danksharding/index.md
index 00723233f01..927cf151e69 100644
--- a/public/content/translations/zh-tw/roadmap/danksharding/index.md
+++ b/public/content/translations/zh-tw/roadmap/danksharding/index.md
@@ -4,80 +4,80 @@ description: 瞭解 Proto-Danksharding 和 Danksharding - 兩種依序完成以
lang: zh-tw
summaryPoints:
- Danksharding 是一項多階段升級,旨在提升以太坊的可擴容性和容量。
- - 在第一階段 Proto-Danksharding,將資料 blob 新增到區塊中
- - 資料 blob 為卷軸提供了一種更便宜的方式來將資料發佈到以太坊,這些成本可以作為較低的交易費用轉嫁給使用者。
- - 隨後,完整的 Danksharding 將在部分節點之間分散驗證資料 blob 的責任,進一步將以太坊擴容至每秒超過 100,000 筆交易。
+ - 在第一階段 Proto-Danksharding,將資料二進位大型物件新增到區塊中
+ - 資料二進位大型物件為卷軸提供了一種更便宜的方式來將資料發佈到以太坊,這些成本可以作為較低的交易費用轉嫁給使用者。
+ - 隨後,完整的 Danksharding 將在部分節點之間分攤驗證資料二進制大對象的責任,進一步將以太坊擴容至每秒處理超過 100,000 筆交易。
---
# Danksharding {#danksharding}
-**Danksharding** 可讓以太坊成為真正可擴容的區塊鏈,但需要進行一些協定升級才能實現這一目標。 **Proto-Danksharding** 是該過程中的一個中間步驟。 兩者的目標都是讓二層網路上的交易對使用者來說盡可能便宜,並且應該將以太坊擴容到每秒 >100,000 筆交易。
+**Danksharding** 可讓以太坊成為真正可擴容的區塊鏈,但需要進行一些協定升級才能實現這一目標。 **Proto-Danksharding** 是該過程中的一個中間步驟。 兩者的目標都是讓二層網路上的交易對使用者來說盡可能便宜,並且應該將以太坊擴容到每秒處理 >100,000 筆交易。
-## Proto-Danksharding 是什麼? {#what-is-protodanksharding}
+## 什麼是 Proto-Danksharding? {#what-is-protodanksharding}
-Proto-Danksharding 又稱 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844),是使[卷軸](/layer2/#rollups)新增資料到區塊更便宜的方法。 這個名稱來自提出這個想法的兩位研究人員:Protolambda 和 Dankrad Feist。 目前,由於卷軸在 `CALLDATA` 中發佈交易,因此卷軸的使用者交易成本受到限制。 這個成本很高,因其由所有以太坊節點處理並永遠存在於鏈上,即使卷軸只需要短暫使用這些資料。 Proto-Danksharding 引入了可傳送並附加到區塊的資料 blob(註:二進位大型物件)。 這些 blob 中的資料無法被以太坊虛擬機存取,並且會在一段固定時間(1 到 3 個月)後自動刪除。 這表示卷軸可以更便宜地傳送資料,並以更便宜的交易形式將節省的費用轉給最終使用者。
+Proto-Danksharding 又稱 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844),是使[卷軸](/layer2/#rollups)新增資料到區塊更便宜的方法。 這個名稱來自提出這個想法的兩位研究人員:Protolambda 和 Dankrad Feist。 目前,由於卷軸在 `CALLDATA` 中發佈交易,因此卷軸的使用者交易成本受到限制。 這個成本很高,因為資料由所有以太坊節點處理並永遠存在於鏈上,即使卷軸只需要短暫使用這些資料。 Proto-Danksharding 引入了可傳送並附加到區塊的資料二進位大型物件。 這些二進位大型物件中的資料無法被以太坊虛擬機存取,並且會在一段固定時間(1 到 3 個月)後自動刪除。 這表示卷軸可以更便宜地傳送資料,並以更便宜的交易形式將節省的費用轉給終端使用者。
-
+
-卷軸是指批次鏈下處理交易,然後將結果發佈到以太坊以實現以太坊擴容。 卷軸有兩個必要元件:資料與執行檢查。 資料指卷軸處理的完整交易序列,用於產生發佈到以太坊的狀態改變。 執行檢查指讓某些誠實的參與者(「證明者」)重新執行這些交易,以確保提出的狀態改變正確無誤。 要完成執行檢查,交易資料必須存在夠長時間,以便任何人都可以下載並檢查。 這意味著證明者可以識別並質疑卷軸排序者的任何不誠實行為。 然而,它並不需要永久可用。
+卷軸是指在鏈下批次處理交易,然後將結果發佈到以太坊以實現以太坊擴容。 卷軸有兩個必要元件:資料與執行檢查。 資料指卷軸處理的完整交易序列,用於產生發佈到以太坊的狀態變更。 執行檢查指讓某些誠實的參與者(「證明者」)重新執行這些交易,以確保提出的狀態變更正確無誤。 要完成執行檢查,交易資料必須存在足夠長時間,以便任何人都可以下載並檢查。 這意味著證明者可以識別並質疑卷軸排序者的任何不誠實行為。 然而,資料並不需要永久可用。
-
+
-卷軸在鏈上發佈對其交易資料的承諾,並在資料 blob 中提供實際資料。 這表示證明者可以確認承諾是否有效,或質疑其認為錯誤的資料。 在節點層面,資料的 blob 儲存在共識用戶端中。 共識用戶端證明自己已經看過資料,且資料已在網路上傳播。 如果永久儲存資料,這些用戶端會膨脹並導致對運行節點的硬體要求過高。 反之,資料每 1 到 3 個月會從節點中自動刪除。 共識用戶端證明顯示證明者有足夠的機會驗證資料。 實際資料可由卷軸操作者、使用者或其他人儲存在鏈下。
+卷軸在鏈上發佈對其交易資料的承諾,並在資料二進位大型物件中提供實際資料。 這表示證明者可以確認承諾是否有效,或質疑其認為錯誤的資料。 在節點層面,資料的二進位大型物件儲存在共識用戶端中。 共識用戶端證明自己已經看過資料,且資料已在網路上傳播。 如果永久儲存資料,這些用戶端會膨脹並導致對運行節點的硬體要求過高。 反之,資料每 1 到 3 個月會從節點中自動刪除。 共識用戶端的證明顯示證明者有足夠的機會驗證資料。 實際資料可由卷軸運營商、使用者或其他人儲存在鏈下。
-### 如何驗證 blob 資料? {#how-are-blobs-verified}
+### 如何驗證二進位大型物件資料? {#how-are-blobs-verified}
-卷軸會將它們執行的交易發佈在資料 blob 中。 它們還會發佈一則對資料的「承諾」。 它們透過將多項式函式擬合到資料來做到這一點。 之後可在任意點計算此函式。 舉例來說,若我們定義一個非常簡單的函式 `f(x) = 2x-1`,可以計算出 `x = 1`、`x = 2`、`x = 3` 時對應的結果分別為 `1, 3, 5`。 證明者會將相同的函式套用到資料上,並在相同的點進行計算。 如果原始資料改變,函式將不相同,因此每個點的計算結果值也會不同。 事實上,承諾和證明會更複雜,因為它們被套用在加密函式中。
+卷軸會將它們執行的交易發佈在資料二進位大型物件中。 它們還會發佈一則對資料的「承諾」。 它們透過將多項式函式擬合到資料來做到這一點。 之後可在任意點計算此函式。 舉例來說,若我們定義一個非常簡單的函式 `f(x) = 2x-1`,可以計算出 `x = 1`、`x = 2`、`x = 3` 時對應的結果分別為 `1, 3, 5`。 證明者會將相同的函式套用到資料上,並在相同的點進行計算。 如果原始資料改變,函式將不相同,因此每個點的計算結果值也會不同。 事實上,承諾和證明會更複雜,因為它們被包裝到加密函式中。
-### KZG 是什麼? {#what-is-kzg}
+### 什麼是 KZG? {#what-is-kzg}
-KZG 代表 Kate-Zaverucha-Goldberg,這是三位將資料 blob 縮小至[加密「承諾」](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)的[原始創作者名字的縮寫](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11)。 必須驗證卷軸提交的資料 blob,以確保卷軸不會出錯。 這涉及證明者重新執行 blob 中的交易以檢查承諾是否有效。 這與執行用戶端使用 Merkle 證明檢查一層網路上的以太坊交易是否有效,概念上相同。 KZG 是將多項式方程與資料擬合的另一種證明。 承諾會在一些保密資料點計算多項式。 證明者將對資料擬合相同的多項式,並以相同數值進行計算,以確認結果是否相同。 這是一種驗證資料的方法,與某些卷軸以及最終由以太坊協定的其他部分使用的零知識技術相容。
+KZG 代表 Kate-Zaverucha-Goldberg,這是三位將資料二進位大型物件縮小至[加密「承諾」](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)的[原始創作者名字的縮寫](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11)。 必須驗證卷軸提交的資料二進位大型物件,以確保卷軸不會出錯。 這涉及證明者重新執行二進位大型物件中的交易以檢查承諾是否有效。 這與執行用戶端使用 Merkle 證明檢查一層網路上的以太坊交易是否有效,概念上相同。 KZG 是將多項式方程與資料擬合的另一種證明。 承諾會在一些保密資料點計算多項式。 證明者將對資料擬合相同的多項式,並以相同數值進行計算,以確認結果是否相同。 這是一種驗證資料的方法,與某些卷軸以及最終由以太坊協定的其他部分使用的零知識技術相容。
-### KZG 儀式是什麼? {#what-is-a-kzg-ceremony}
+### 什麼是 KZG 儀式? {#what-is-a-kzg-ceremony}
-KZG 儀式是以太坊社群中許多人共同產生秘密隨機數字字串的一種方式,可用於驗證某些資料。 這非常重要,此字串或數字是未知的,且任何人都無法重新建立。 為了確保這點,每個儀式參與者都會收到前一位參與者傳來的字串。 接著他們將建立一些新的隨機值(例如允許瀏覽器測量滑鼠的移動),並將其與先前收到的字串混合。 然後他們會把新的值傳給下一位參與者,接著從本地機器中銷毀這個值。 只要其中一個儀式參與者是誠實的,那麼最終的值對攻擊者來說就是未知。 EIP-4844 KZG 儀式向公眾開放,數萬人參加新增自己的熵(指一種隨機值)。 參與者 100% 不誠實的行動,才可能破壞這個儀式。 站在參與者的視角,如果他們知道自己是誠實的,則不需要信任任何人,因為他們知道自己可確保儀式安全(他們自己已滿足 n 分之一誠實參與者的要求)。
+KZG 儀式是以太坊社群中許多人共同產生秘密隨機數字字串的一種方式,可用於驗證某些資料。 此數字字串是未知的,且任何人都無法重新建立,這一點很重要。 為了確保這點,每個儀式參與者都會收到前一位參與者傳來的字串。 接著他們將建立一些新的隨機值(例如允許瀏覽器測量滑鼠的移動),並將其與先前收到的字串混合。 然後他們會把新的值傳給下一位參與者,接著從本地機器中銷毀這個值。 只要其中一個儀式參與者是誠實的,那麼最終的值對攻擊者來說就是未知。 EIP-4844 KZG 儀式向公眾開放,數萬人參加新增自己的熵(指一種隨機值)。 全部參與者都進行不誠實的行為,才可能破壞這個儀式。 站在參與者的視角,如果他們知道自己是誠實的,則不需要信任任何人,因為他們知道自己可確保儀式安全(他們自己已滿足 n 分之一誠實參與者的要求)。
-當卷軸在 blob 中發佈資料時,會提供在鏈上發佈的「承諾」。 這項承諾是在某些點對資料進行多項式擬合計算的結果。 這些點由 KZG 儀式中產生的隨機數字定義。 然後,證明者可以在相同點計算多項式以驗證資料;如果得出的值相同,則資料是正確的。
+當卷軸在二進位大型物件中發佈資料時,會提供在鏈上發佈的「承諾」。 這項承諾是在某些點對資料進行多項式擬合計算的結果。 這些點由 KZG 儀式中產生的隨機數字定義。 然後,證明者可以在相同點計算多項式以驗證資料;如果得出的值相同,則資料是正確的。
-如果有人知道用於承諾的隨機位置,他們就很容易產生能在這些特定點擬合的新多項式(即「碰撞」)。 這表示他們可以從 blob 新增或移除資料,並且仍然提供有效的證明。 為了避免這種事,他們實際上不是向證明者提供實際的秘密位置,而是使用橢圓曲線接收包裹在加密「黑盒子」中的位置。 這些方法有效地擾亂了這些值,使原始值無法被逆向工程,但透過一些聰明的代數證明者和驗證者,仍然可以在其代表的點上計算多項式。
+如果有人知道用於承諾的隨機位置,他們就很容易產生能在這些特定點擬合的新多項式(即「碰撞」)。 這表示他們可以從二進位大型物件新增或移除資料,並且仍然提供有效的證明。 為了避免這種情況,實際上不是向證明者提供實際的秘密位置,證明者實際收到的是使用橢圓曲線包裝在加密「黑盒子」中的位置。 這些方法有效地擾亂了這些值,使原始值無法被逆向工程,但透過一些聰明的代數方法,證明者和驗證者仍然可以在其代表的點上計算多項式。
- Danksharding 和 Proto-Danksharding 都不遵循傳統的「分片」模型,旨在將區塊鏈分成多個部分。 分片鏈不再是以太坊開發藍圖的一部分。 相反,Danksharding 使用跨 blob 的分散式資料採樣來實現以太坊擴容。 這在實作上容易很多。 此模型有時又稱「資料分片」。
+ Danksharding 和 Proto-Danksharding 都不遵循傳統的「分片」模式,此模式旨在將區塊鏈分成多個部分。 分片鏈不再是以太坊開發藍圖的一部分。 相反,Danksharding 使用跨二進位大型物件的分散式資料採樣來實現以太坊擴容。 這在實作上容易很多。 此模型有時又稱「資料分片」。
## Danksharding 是什麼? {#what-is-danksharding}
-Danksharding 完全實現了從 Proto-Danksharding 開始的卷軸擴容。 Danksharding 將在以太坊上為卷軸提供大量空間,用於轉存壓縮的交易資料。 這表示以太坊可以輕鬆支援數百個獨立的卷軸,並實現每秒數百萬筆交易。
+Danksharding 完全實現了從 Proto-Danksharding 開始的卷軸擴容。 Danksharding 將在以太坊上為卷軸提供大量空間,用於轉存壓縮的交易資料。 這表示以太坊可以輕鬆支援數百個獨立的卷軸,並實現每秒處理數百萬筆交易。
-其工作原理是將附加到區塊的 blob 從 Proto-Danksharding 中的 1 個擴展到完整 Danksharding 中的 64 個。 所需的其餘變更都是對共識用戶端操作方式的更新,使得它們能夠處理新的大 blob。 這些變更有部分已在開發藍圖上,用於獨立於 Danksharding 的其他目的。 舉例來說,Danksharding 要求先實作提交者-建置者分離。 這是一個升級,它將跨不同驗證者建置區塊和提交區塊的任務分開。 同樣,Danksharding 需要資料可用性採樣,但開發不儲存太多歷史資料的輕量級用戶端(「無狀態用戶端」)也需要資料可用性採樣。
+其工作原理是將附加到區塊的二進位大型物件從 Proto-Danksharding 中的 1 個擴展到完整 Danksharding 中的 64 個。 所需的其餘變更都是對共識用戶端操作方式的更新,使得它們能夠處理新的大二進位大型物件。 這些變更有部分已在開發藍圖上,用於獨立於 Danksharding 的其他目的。 舉例來說,Danksharding 要求先實作提交者-建置者分離。 這是一個升級,它將不同驗證者建置區塊和提出區塊的工作分開。 同樣,Danksharding 需要資料可用性採樣,但開發不儲存太多歷史資料的輕量級用戶端(「無狀態用戶端」)也需要資料可用性採樣。
-提交者-建置者分離是為了防止單一驗證者必須為 32MB 的 blob 資料產生昂貴的承諾和證明。 這對個人質押者很傷,因為他們需要花費更多資金購買更強大的硬體,將降低去中心化程度。 相反,專門的區塊建置者會負責這項昂貴的計算工作。 之後,區塊提交者即可廣播他們的區塊。 區塊提交者會直接選擇收益最大的區塊。 所有人都能經濟快速地驗證 blob,表示所有一般驗證者皆可檢查區塊建置者的行為是否誠實。 這允許在不犧牲去中心化的情況下處理大型 blob。 錯誤行事的區塊建置者可能被強制退出網路並罰沒,其他人會補上他的位置,因為區塊建置是高收益的活動。
+提交者-建置者分離是為了防止單一驗證者必須為 32MB 的二進位大型物件資料產生昂貴的承諾和證明。 這為家庭質押者帶來很大的壓力,因為他們需要花費更多資金購買更強大的硬體,這會降低去中心化程度。 相反,專門的區塊建置者會負責這項昂貴的計算工作。 之後,區塊提交者即可廣播他們的區塊。 區塊提交者會直接選擇收益最大的區塊。 所有人都能經濟快速地驗證二進位大型物件,表示所有普通驗證者皆可檢查區塊建置者的行為是否誠實。 這允許在不犧牲去中心化的情況下處理大型二進位大型物件。 錯誤行事的區塊建置者可能被強制退出網路並罰沒,其他人會補上他的位置,因為區塊建置是高收益的活動。
-
+
-驗證者需要進行資料可用性採樣才能快速有效地驗證 blob 資料。 透過資料可用性採樣,驗證者可以非常確定 blob 資料可用且正確提交。 每個驗證者都可以隨機採樣幾個資料點並建立證明,這意味著驗證者無需檢查整個 blob。 任何資料缺漏的情況都可被快速發現且 blob 會遭拒。
+驗證者需要進行資料可用性採樣才能快速有效地驗證二進位大型物件資料。 透過資料可用性採樣,驗證者可以非常確定二進位大型物件資料可用且正確提交。 每個驗證者都可以隨機採樣幾個資料點並建立證明,這意味著驗證者無需檢查整個二進位大型物件。 任何資料缺漏的情況都可被快速發現且二進位大型物件會遭拒。
### 目前進度 {#current-progress}
-完整的 Danksharding 還需要幾年的時間。 不過,Proto-Danksharding 應該很快就會實作。 截至本文撰寫時止(2023 年 2 月),KZG 儀式仍然保持開放並且已吸引 50,000 多位貢獻者。 Proto-Danksharding 的 [EIP](https://eips.ethereum.org/EIPS/eip-4844) 已經成熟,規範已達成一致,客戶已經實作原型,目前正在測試並準備投入生產。 下一步是在公共測試網上實作這些變更。 可以透過 [EIP 4844 準備狀態檢查清單](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md#client-implementation-status)取得最新資訊。
+完整的 Danksharding 還需要幾年的時間才會實作。 不過,Proto-Danksharding 應該很快就會實作。 截至本文撰寫時止(2023 年 2 月),KZG 儀式仍然保持開放並且已吸引 50,000 多位貢獻者。 Proto-Danksharding 的 [EIP](https://eips.ethereum.org/EIPS/eip-4844) 已經成熟,規範已達成一致,客戶已經實作原型,目前正在測試並準備投入生產。 下一步是在公共測試網上實作這些變更。 可以透過 [EIP 4844 準備狀態檢查清單](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md#client-implementation-status)取得最新資訊。
### 了解更多 {#further-reading}
@@ -86,6 +86,6 @@ Danksharding 完全實現了從 Proto-Danksharding 開始的卷軸擴容。 Dank
- [Dankrad、Proto 和 Vitalik 討論 Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM)
- [KZG 儀式](https://ceremony.ethereum.org/)
- [Carl Beekhuizen 在 Devcon 的可信任設定演講](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube)
-- [關於 blob 資料可用性採樣的更多資訊](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
+- [關於二進位大型物件資料可用性採樣的更多資訊](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
- [Dankrad Feist 的 KZG 承諾和證明演講](https://youtu.be/8L2C6RDMV9Q)
- [KZG 多項式承諾](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)
diff --git a/public/content/translations/zh-tw/roadmap/future-proofing/index.md b/public/content/translations/zh-tw/roadmap/future-proofing/index.md
index caae65f8811..b8f1a040dbc 100644
--- a/public/content/translations/zh-tw/roadmap/future-proofing/index.md
+++ b/public/content/translations/zh-tw/roadmap/future-proofing/index.md
@@ -9,23 +9,23 @@ template: roadmap
開發藍圖的有些部分在短期內並不是一定要用於擴容或保護以太坊,其目的是為以太坊未來的長期穩定性與可靠性奠定基礎。
-## 抗量子技術 {#quantum-resistance}
+## 抗量子性 {#quantum-resistance}
-當量子計算成為現實的時候,有一部分用於保護當今以太坊的密碼學技術將會受到攻擊。 儘管量子電腦可能還需幾十年的時間才能對現代密碼學構成真正的威脅,但建立以太坊的目的是確保未來幾個世紀的安全。 這意味著,我們應該盡速[在以太坊部署抗量子技術](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/)。
+當量子計算成為現實的時候,有一部分用於保護當今以太坊的密碼學技術將會受到攻擊。 儘管量子電腦可能還需幾十年的時間才能對現代密碼學構成真正的威脅,但建立以太坊的目的是確保未來幾個世紀的安全。 這意味著,我們應該盡速讓[以太坊具抗量子性](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/)。
-目前以太坊開發者遇到的挑戰是,現在的權益證明協定高度仰賴非常高效的簽名方案(即 BLS)來匯集有效區塊上的投票。 這種簽名方案可以被量子電腦破解,但其他抗量子替代方案又不夠有效率。
+目前以太坊開發者遇到的挑戰是,現在的權益證明協定仰賴非常高效的簽名方案(即 BLS)來匯集有效區塊上的投票。 這種簽名方案可以被量子電腦破解,但其他抗量子替代方案效率不高。
-眾所周知,以太坊中多個地方用於產生加密密鑰的[「KZG」承諾方案](/roadmap/danksharding/#what-is-kzg)不具抗量子能力。 目前,這個風險是使用「可信設定」來規避的,其中許多使用者會產生無法被量子電腦逆向工程的隨機性。 然而,理想的解決方案還是引入量子安全密碼學。 現在有兩種能夠有效替代 BLS 方案的主流方案:[STARK 簽名](https://hackmd.io/@vbuterin/stark_aggregation)和[網格簽名](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)。 這些方案仍處於研究與試驗開發階段。
+眾所周知,以太坊中多處用於產生加密密鑰的[「KZG」承諾方案](/roadmap/danksharding/#what-is-kzg)不具抗量子能力。 目前,這個風險是使用「受信任設定」來規避的,即許多使用者會產生無法被量子電腦逆向工程的隨機性。 然而,理想的解決方案還是引入量子安全密碼學。 現在有兩種能夠有效替代 BLS 方案的主流方案:[STARK 簽名](https://hackmd.io/@vbuterin/stark_aggregation)和[網格簽名](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)。 這些方案仍處於研究與試驗開發階段。
- 閱讀 KZG 與可信設定相關資訊
+ 閱讀 KZG 與受信任設定相關資訊
## 更便捷、更高效的以太坊 {#simpler-more-efficient-ethereum}
-複雜性使得產生錯誤及漏洞的機率提高,導致攻擊者有機可乘。 然而,開發藍圖中也包括精簡以太坊、移除歷經好幾次升級後已不再需要或可以改進的程式碼。 對開發者來說,更精簡、單純的程式碼庫更容易維護和理解。
+複雜性使得產生錯誤及漏洞的幾率提高,導致攻擊者有機可乘。 然而,開發藍圖中也包括精簡以太坊、移除歷經好幾次升級後已不再需要或可以改進的程式碼。 對開發者來說,更精簡、單純的程式碼庫更容易維護和理解。
-業界將對[以太坊虛擬機 (EVM)](/developers/docs/evm) 進行多項更新,以使其更簡單、更高效。 其中包括[移除 SELFDESTRUCT 操作碼](https://hackmd.io/@vbuterin/selfdestruct),這是一個不常用且已不需要的指令,某些情況下可能帶來危險,特別是和以太坊未來升級的儲存模型一起使用時。 此外,以太坊用戶端仍然支援一些舊的交易類型,現在完全可以移除。 Gas 的計算方式也有改進空間,可以引入更高效的演算法來進行一些加密運算。
+業界將對[以太坊虛擬機 (EVM)](/developers/docs/evm) 進行多項更新,以使其更簡單、更高效。 其中包括[移除 SELFDESTRUCT 作業碼](https://hackmd.io/@vbuterin/selfdestruct),這是一個不常用且已不需要的指令,某些情況下可能帶來危險,特別是和以太坊未來升級的儲存模型一起使用時。 此外,以太坊用戶端仍然支援一些舊的交易類型,現在完全可以移除。 燃料的計算方式也有改進空間,可以引入更高效的演算法來進行一些加密運算。
-同樣,目前以太坊用戶端的其他部分也可以進行更新。 其中一個範例是,目前執行和共識用戶端使用的是不同類型的資料壓縮方案。 若能在整個網路上統一壓縮方案,在用戶端之間分享資料會變得更簡單直覺。
+同樣,目前以太坊用戶端的其他部分也可以進行更新。 其中一個範例是,目前執行和共識用戶端使用的是不同類型的資料壓縮方案。 若能在整個網路上統一壓縮方案,在用戶端之間分享資料會變得更簡單直觀。
## 目前進度 {#current-progress}
@@ -33,6 +33,6 @@ template: roadmap
**了解更多**
-- [Gas](/developers/docs/gas)
+- [燃料](/developers/docs/gas)
- [以太坊虛擬機](/developers/docs/evm)
- [Data structures](/developers/docs/data-structures-and-encoding)
diff --git a/public/content/translations/zh-tw/roadmap/index.md b/public/content/translations/zh-tw/roadmap/index.md
index db8f286786f..02fff06f373 100644
--- a/public/content/translations/zh-tw/roadmap/index.md
+++ b/public/content/translations/zh-tw/roadmap/index.md
@@ -3,11 +3,11 @@ title: 以太坊開發藍圖
description: 以太坊實現更高可擴容性、安全性和永續性的路徑。
lang: zh-tw
template: roadmap
-image: /roadmap/roadmap-main.png
+image: /heroes/roadmap-hub-hero.jpg
alt: "以太坊開發藍圖"
summaryPoints:
buttons:
- - label: 進一步升級
+ - label: 更多升級
toId: 即將發生的變化
- label: 過往的升級
to: /history/
@@ -59,16 +59,16 @@ buttons:
-以太坊的開發藍圖主要是研發人員多年努力的成果,因為協定的技術性非常強,不過任何有想法與動力的人皆可參與。 理念通常始於論壇上的討論,比如 [ethresear.ch](https://ethresear.ch/)、[以太坊魔術師](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) 或以太坊研發 Discord 伺服器。 它們可能是對新發現的漏洞的回應、在應用層工作的組織提出的意見(比如去中心化應用程式和交易所),或是對最終使用者已知問題的解決辦法(比如成本或交易速度)。 當這些理念成熟之後,可以作為 [以太坊改進提案] 提出 (https://eips.ethereum.org/)。 這一切都是公開進行的,因此社群中的每個人都可以隨時發表意見。
+以太坊的開發藍圖主要是研發人員多年努力的成果,因為協定的技術性非常強,不過任何有想法與動力的人皆可參與。 創意通常始於論壇上的討論,比如 [ethresear.ch](https://ethresear.ch/)、[Ethereum magicians](https://ethereum-magicians.org/) 或以太坊研發 Discord 伺服器。 它們可能是對新發現的漏洞的回應、在應用程式層工作的組織提出的意見(比如去中心化應用程式和交易所),或是對終端使用者已知問題的解決辦法(比如成本或交易速度)。 當這些理念成熟之後,可以作為 [以太坊改進提案] 提出 (https://eips.ethereum.org/)。 這一切都是公開進行的,因此社群中的每個人都可以隨時發表意見。
[有關以太坊管理體系的更多資訊](/管理體系/)
-
)
}
diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx
index 5d74cae881f..297281cf28d 100644
--- a/src/components/Search/index.tsx
+++ b/src/components/Search/index.tsx
@@ -31,7 +31,7 @@ export const SearchIconButton = forwardRef(
ref={ref}
variant="ghost"
isSecondary
- px={1.5}
+ px={2}
_hover={{
color: "primary.base",
transform: "rotate(5deg)",
diff --git a/src/components/Search/utils.ts b/src/components/Search/utils.ts
index e883735df91..70cd1c19a99 100644
--- a/src/components/Search/utils.ts
+++ b/src/components/Search/utils.ts
@@ -17,7 +17,8 @@ export const getSearchButtonStyles = (): ButtonProps => ({
bg: "none",
gap: 4,
m: 0,
- ps: 3,
+ me: 3,
+ px: 3,
_hover: {
...commonBtnStateStyles,
".DocSearch-Button-Keys kbd": {
@@ -74,6 +75,11 @@ export const getSearchModalStyles = (): SystemStyleObject => ({
"--docsearch-modal-width": "650px",
"--docsearch-hit-height": "fit-content",
+ ".DocSearch.DocSearch-Container": {
+ position: "fixed",
+ inset: 0,
+ },
+
".DocSearch-SearchBar": {
p: { base: 4, md: 8 },
pb: 4,
@@ -103,6 +109,10 @@ export const getSearchModalStyles = (): SystemStyleObject => ({
},
},
+ ".DocSearch-Container.DocSearch[aria-expanded='true']": {
+ zIndex: "modal",
+ },
+
".DocSearch-Container--Stalled .DocSearch-MagnifierLabel, .DocSearch-Container--Stalled .DocSearch-LoadingIndicator":
{
color: "primary.highContrast",
@@ -187,7 +197,7 @@ export const getSearchModalStyles = (): SystemStyleObject => ({
placeItems: "center",
borderRadius: "base",
mr: "unset",
- me: 1.5
+ me: 1.5,
},
".DocSearch-Logo": {
diff --git a/src/components/SideNav.tsx b/src/components/SideNav.tsx
index d9103d3651b..b8da9f69d11 100644
--- a/src/components/SideNav.tsx
+++ b/src/components/SideNav.tsx
@@ -152,7 +152,7 @@ const SideNav = ({ path }: SideNavProps) => {
{
const Table = (props: TableProps) => {
const { variant, ...rest } = props
return (
-
+
)
diff --git a/src/components/TableOfContents/index.tsx b/src/components/TableOfContents/index.tsx
index b19c43cbed7..93ef59abda3 100644
--- a/src/components/TableOfContents/index.tsx
+++ b/src/components/TableOfContents/index.tsx
@@ -71,7 +71,7 @@ const TableOfContents = ({
hideBelow={lgBp}
as="aside"
position="sticky"
- top="7.25rem" // Account for navbar
+ top="19" // Account for navbar
p={4}
pe={0}
maxW="25%"
diff --git a/src/components/TranslationBanner.tsx b/src/components/TranslationBanner.tsx
index 1a621627b95..ff7f5b8e182 100644
--- a/src/components/TranslationBanner.tsx
+++ b/src/components/TranslationBanner.tsx
@@ -96,7 +96,9 @@ const TranslationBanner = ({
{t("translation-banner-button-translate-page")}
- {!isPageContentEnglish && (
+ {/* Todo: Reimplement once fixed */}
+ {/* Issue: https://github.com/ethereum/ethereum-org-website/issues/12292 */}
+ {/* {!isPageContentEnglish && (
- )}
+ )} */}
(
+
+
+
+)
diff --git a/src/data/community-events.ts b/src/data/community-events.ts
index a40158dac91..62443075058 100644
--- a/src/data/community-events.ts
+++ b/src/data/community-events.ts
@@ -349,6 +349,15 @@ const communityConferences: CommunityConference[] = [
location: "Lagos, NGA",
description: "This conference will bring together Web3 enthusiasts from all over Nigeria and beyond. Here, community meets technology for three days of intensive Networking and Learning experiences.",
},
+ {
+ title: "ETHSafari",
+ startDate: "2024-09-09",
+ endDate: "2024-09-15",
+ to: "https://ethsafari.xyz/",
+ location: "Nairobi & Kilifi, Kenya",
+ description:
+ "Welcome to the largest Ethereum event happening in Africa! Join the BlockTrain from Nairobi to celebrate an ETH-festival held underneath ancient Boabab trees in Kilifi.",
+ },
{
title: "TOKEN2049",
startDate: "2024-09-18",
diff --git a/src/data/community-meetups.json b/src/data/community-meetups.json
index 89ad32bd63f..fff5cc0f18d 100644
--- a/src/data/community-meetups.json
+++ b/src/data/community-meetups.json
@@ -1,4 +1,10 @@
[
+ {
+ "title": "Web3 Family",
+ "emoji": ":es:",
+ "location": "Barcelona",
+ "link": "https://www.meetup.com/web3family/"
+ },
{
"title": "CryptoCanal",
"emoji": ":nl:",
@@ -436,5 +442,11 @@
"emoji": ":belgium:",
"location": "Brussels",
"link": "https://dao.brussels/"
+ },
+ {
+ "title": "Ethereum Edmonton Meetup",
+ "emoji": ":canada:",
+ "location": "Edmonton",
+ "link": "https://www.meetup.com/ethereum-edmonton-meetup/"
}
]
diff --git a/src/data/crowdin/combined-translators.json b/src/data/crowdin/combined-translators.json
index 2d03bd03160..d706d8d9c3f 100644
--- a/src/data/crowdin/combined-translators.json
+++ b/src/data/crowdin/combined-translators.json
@@ -8,7 +8,7 @@
{
"id": 15567971,
"username": "HASANTAHHAN",
- "totalCosts": 988.79,
+ "totalCosts": 981.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567971/medium/82c26b32ac2312ed1fbb253a222ec9e1.jpg"
},
{
@@ -67,7 +67,7 @@
{
"id": 15567971,
"username": "HASANTAHHAN",
- "totalCosts": 2145.24,
+ "totalCosts": 2130.09,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567971/medium/82c26b32ac2312ed1fbb253a222ec9e1.jpg"
},
{
@@ -79,7 +79,7 @@
{
"id": 15760865,
"username": "alhafadi37",
- "totalCosts": 11.11,
+ "totalCosts": 9.09,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15760865/medium/f2956dd1958055433d32ecc065cf4e5e.png"
}
]
@@ -329,13 +329,13 @@
{
"id": 15503382,
"username": "mohammedE22",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15503382/medium/b5e1fa8943e236c07bbe459d92d23dcb.png"
},
{
"id": 15567971,
"username": "HASANTAHHAN",
- "totalCosts": 91.91,
+ "totalCosts": 77.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567971/medium/82c26b32ac2312ed1fbb253a222ec9e1.jpg"
},
{
@@ -449,13 +449,13 @@
{
"id": 15956561,
"username": "taxir.abjadao",
- "totalCosts": 948.39,
+ "totalCosts": 944.35,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956561/medium/d3c5967663d9190fbf70f6b62b29ffd5.jpeg"
},
{
"id": 15808721,
"username": "fahadanizi",
- "totalCosts": 720.13,
+ "totalCosts": 716.09,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15808721/medium/a0fd95274585fea89c0735c63f60a0b1.png"
}
]
@@ -466,13 +466,13 @@
{
"id": 15956561,
"username": "taxir.abjadao",
- "totalCosts": 1975.56,
+ "totalCosts": 1973.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956561/medium/d3c5967663d9190fbf70f6b62b29ffd5.jpeg"
},
{
"id": 15808721,
"username": "fahadanizi",
- "totalCosts": 1860.42,
+ "totalCosts": 1858.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15808721/medium/a0fd95274585fea89c0735c63f60a0b1.png"
},
{
@@ -534,7 +534,7 @@
{
"id": 14787370,
"username": "agulani",
- "totalCosts": 1358.45,
+ "totalCosts": 1344.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg"
}
]
@@ -603,7 +603,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 1357.44,
+ "totalCosts": 1346.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -614,7 +614,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 2182.61,
+ "totalCosts": 2167.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -636,7 +636,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 1642.26,
+ "totalCosts": 1613.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -669,7 +669,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 718.11,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -713,7 +713,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 958.49,
+ "totalCosts": 954.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -724,7 +724,7 @@
{
"id": 15954257,
"username": "arifulone",
- "totalCosts": 2059.39,
+ "totalCosts": 2057.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg"
}
]
@@ -813,7 +813,7 @@
{
"id": 14643068,
"username": "egelizo",
- "totalCosts": 520.15,
+ "totalCosts": 496.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg"
}
]
@@ -898,7 +898,7 @@
{
"id": 14643068,
"username": "egelizo",
- "totalCosts": 1569.54,
+ "totalCosts": 1563.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg"
},
{
@@ -1042,6 +1042,12 @@
"username": "Adasovec",
"totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880416/medium/3967eaff6d735a5983f60115a12cf7ab_default.png"
+ },
+ {
+ "id": 15843833,
+ "username": "FoltinV",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg"
}
]
},
@@ -1068,7 +1074,7 @@
{
"id": 15843833,
"username": "FoltinV",
- "totalCosts": 2185.64,
+ "totalCosts": 2184.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg"
},
{
@@ -1085,7 +1091,7 @@
{
"id": 15843833,
"username": "FoltinV",
- "totalCosts": 2805.78,
+ "totalCosts": 2807.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg"
},
{
@@ -1108,13 +1114,13 @@
{
"id": 15086733,
"username": "hedwika",
- "totalCosts": 1491.77,
+ "totalCosts": 1463.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg"
},
{
"id": 15843833,
"username": "FoltinV",
- "totalCosts": 325.22,
+ "totalCosts": 354.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg"
}
]
@@ -1136,19 +1142,19 @@
{
"id": 15086733,
"username": "hedwika",
- "totalCosts": 598.93,
+ "totalCosts": 590.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg"
},
{
"id": 15843833,
"username": "FoltinV",
- "totalCosts": 71.71,
+ "totalCosts": 69.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg"
},
{
"id": 15188556,
"username": "korinektomas",
- "totalCosts": 25.25,
+ "totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15188556/medium/ede830d725802daea8fd2fa53e0ae952.png"
}
]
@@ -1181,13 +1187,13 @@
{
"id": 15185884,
"username": "carmen1912",
- "totalCosts": 409.05,
+ "totalCosts": 402.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
{
"id": 15810863,
"username": "bitblondy",
- "totalCosts": 124.23,
+ "totalCosts": 72.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png"
},
{
@@ -1361,7 +1367,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 470.66,
+ "totalCosts": 447.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -1591,13 +1597,13 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 669.63,
+ "totalCosts": 643.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
"id": 15189582,
"username": "Mainnesti",
- "totalCosts": 159.58,
+ "totalCosts": 155.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15189582/medium/607fd2e858dc07184c9200683f906fdb.jpg"
},
{
@@ -1667,7 +1673,7 @@
{
"id": 15421538,
"username": "johannt",
- "totalCosts": 1419.05,
+ "totalCosts": 1403.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png"
},
{
@@ -1737,13 +1743,13 @@
{
"id": 15707609,
"username": "RvonRoit",
- "totalCosts": 1342.29,
+ "totalCosts": 1314.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15707609/medium/79e71a64e2766240d93e42ed8730852d_default.png"
},
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 373.7,
+ "totalCosts": 371.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -1860,7 +1866,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 1111,
+ "totalCosts": 1101.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -2350,7 +2356,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 1162.51,
+ "totalCosts": 1152.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -2396,13 +2402,13 @@
{
"id": 15810863,
"username": "bitblondy",
- "totalCosts": 1960.41,
+ "totalCosts": 1946.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png"
},
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 69.69,
+ "totalCosts": 83.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -2431,7 +2437,7 @@
{
"id": 15932515,
"username": "Astronaut828",
- "totalCosts": 3084.54,
+ "totalCosts": 3069.39,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/ff4f1f9efa429e626e53821ae26ecf21.png"
},
{
@@ -2454,7 +2460,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 3908.7,
+ "totalCosts": 3907.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -2518,7 +2524,7 @@
{
"id": 13959389,
"username": "inlak16",
- "totalCosts": 124.23,
+ "totalCosts": 113.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png"
},
{
@@ -2693,7 +2699,7 @@
{
"id": 15082843,
"username": "StevenR73",
- "totalCosts": 241.39,
+ "totalCosts": 230.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082843/medium/9bd744aeb105dfeb6c55c0a7bb68a51e.jpeg"
},
{
@@ -2833,7 +2839,7 @@
{
"id": 13959389,
"username": "inlak16",
- "totalCosts": 1200.89,
+ "totalCosts": 1173.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png"
},
{
@@ -2851,7 +2857,7 @@
{
"id": 14734372,
"username": "translator-543216",
- "totalCosts": 123.22,
+ "totalCosts": 122.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14734372/medium/ef5b9432ae79b613339ccead9ccea82c_default.png"
}
]
@@ -3123,7 +3129,7 @@
{
"id": 14723446,
"username": "DoGame5",
- "totalCosts": 253.51,
+ "totalCosts": 248.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14723446/medium/7dacda0b245cc793a6e0f617b699b92a.png"
},
{
@@ -3164,13 +3170,13 @@
{
"id": 14842386,
"username": "rxchard",
- "totalCosts": 363.6,
+ "totalCosts": 358.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14842386/medium/26d2e5d1d9b5f0e6ec25878feb24840b.jpeg"
},
{
"id": 15048483,
"username": "Slated",
- "totalCosts": 283.81,
+ "totalCosts": 281.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15048483/medium/3fc191d4ae2e76bab01bcff3839d030a.jpeg"
},
{
@@ -3272,18 +3278,18 @@
"totalCosts": 188.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221766/medium/9818a6f07e95c5f3260f34774d4e26fe.jpg"
},
+ {
+ "id": 15123193,
+ "username": "Coram_Deo",
+ "totalCosts": 67.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
+ },
{
"id": 13959389,
"username": "inlak16",
"totalCosts": 65.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png"
},
- {
- "id": 15123193,
- "username": "Coram_Deo",
- "totalCosts": 54.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
- },
{
"id": 15185884,
"username": "carmen1912",
@@ -3760,7 +3766,7 @@
{
"id": 15047729,
"username": "EricTheTurtle",
- "totalCosts": 68.68,
+ "totalCosts": 62.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15047729/medium/705657a47d8515302fce11fdaf1e1081.png"
},
{
@@ -3916,18 +3922,18 @@
"totalCosts": 70.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
- {
- "id": 15547721,
- "username": "AmazinglyComfortableCat.eth",
- "totalCosts": 65.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15547721/medium/93b66b37088b4e29cd828691e8eeaa88.png"
- },
{
"id": 14707408,
"username": "Just-Stev",
"totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14707408/medium/06bb638d445604925d0bcaa58768558b.png"
},
+ {
+ "id": 15547721,
+ "username": "AmazinglyComfortableCat.eth",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15547721/medium/93b66b37088b4e29cd828691e8eeaa88.png"
+ },
{
"id": 14546284,
"username": "ladidan",
@@ -3942,13 +3948,13 @@
{
"id": 15932515,
"username": "Astronaut828",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/ff4f1f9efa429e626e53821ae26ecf21.png"
},
{
"id": 15221766,
"username": "chrboesch",
- "totalCosts": 89.89,
+ "totalCosts": 79.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221766/medium/9818a6f07e95c5f3260f34774d4e26fe.jpg"
},
{
@@ -4023,7 +4029,7 @@
{
"id": 15302370,
"username": "Manusxb",
- "totalCosts": 208.06,
+ "totalCosts": 204.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15302370/medium/9f944ffeaa451f3c2ea156478533b41f_default.png"
},
{
@@ -4069,7 +4075,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 3218.87,
+ "totalCosts": 3194.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -4178,7 +4184,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 813.05,
+ "totalCosts": 827.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -4214,7 +4220,7 @@
{
"id": 15116307,
"username": "Gorm-the-Old",
- "totalCosts": 17.17,
+ "totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15116307/medium/46b6a030b92eb4909c82bcc68026e4eb_default.png"
},
{
@@ -4336,7 +4342,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 402.99,
+ "totalCosts": 401.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -4505,13 +4511,13 @@
{
"id": 15189582,
"username": "Mainnesti",
- "totalCosts": 656.5,
+ "totalCosts": 499.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15189582/medium/607fd2e858dc07184c9200683f906fdb.jpg"
},
{
"id": 13040371,
"username": "Mario_Oettler",
- "totalCosts": 398.95,
+ "totalCosts": 325.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13040371/medium/715a3c54d2c935cd55f8fc46b319ede4_default.png"
},
{
@@ -4865,7 +4871,7 @@
{
"id": 15402842,
"username": "Craisb",
- "totalCosts": 1723.06,
+ "totalCosts": 1721.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15402842/medium/ff63192dd995e88e0c9e3fe60b787aaa_default.png"
},
{
@@ -4975,7 +4981,7 @@
{
"id": 15123193,
"username": "Coram_Deo",
- "totalCosts": 1808.91,
+ "totalCosts": 1796.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg"
},
{
@@ -5066,7 +5072,7 @@
{
"id": 15810863,
"username": "bitblondy",
- "totalCosts": 133.32,
+ "totalCosts": 130.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png"
}
]
@@ -5144,7 +5150,7 @@
{
"id": 13959389,
"username": "inlak16",
- "totalCosts": 1270.58,
+ "totalCosts": 1240.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png"
},
{
@@ -5172,7 +5178,7 @@
{
"id": 15421538,
"username": "johannt",
- "totalCosts": 1983.64,
+ "totalCosts": 1978.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png"
},
{
@@ -5228,7 +5234,7 @@
{
"id": 15810863,
"username": "bitblondy",
- "totalCosts": 681.75,
+ "totalCosts": 668.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png"
}
]
@@ -5395,6 +5401,23 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15310784/medium/cfdc53d28658b94b21e45d51acc457c7.jpg"
}
]
+ },
+ {
+ "fileId": "8027",
+ "contributors": [
+ {
+ "id": 15421538,
+ "username": "johannt",
+ "totalCosts": 889.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png"
+ },
+ {
+ "id": 15932515,
+ "username": "Astronaut828",
+ "totalCosts": 195.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/ff4f1f9efa429e626e53821ae26ecf21.png"
+ }
+ ]
}
]
},
@@ -5441,7 +5464,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 604.99,
+ "totalCosts": 581.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
},
{
@@ -5521,7 +5544,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 1673.57,
+ "totalCosts": 1671.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
}
]
@@ -5532,7 +5555,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 616.1,
+ "totalCosts": 597.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
},
{
@@ -5599,7 +5622,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 657.51,
+ "totalCosts": 658.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
}
]
@@ -5632,7 +5655,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 603.98,
+ "totalCosts": 573.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
}
]
@@ -5693,7 +5716,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 966.57,
+ "totalCosts": 962.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
}
]
@@ -5704,7 +5727,7 @@
{
"id": 14568334,
"username": "mr_giorgos",
- "totalCosts": 2005.86,
+ "totalCosts": 2001.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg"
},
{
@@ -5743,7 +5766,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 597.92,
+ "totalCosts": 575.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -5784,7 +5807,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 129.28,
+ "totalCosts": 136.35,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -5799,18 +5822,18 @@
"totalCosts": 27.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
},
- {
- "id": 15490162,
- "username": "Mathewvizc7",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png"
- },
{
"id": 15150468,
"username": "estebandidonft",
"totalCosts": 18.18,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15150468/medium/4d44fae782af9bd5e371ce94ffa585c9.jpeg"
},
+ {
+ "id": 15490162,
+ "username": "Mathewvizc7",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png"
+ },
{
"id": 14611076,
"username": "davidperalta",
@@ -6274,13 +6297,13 @@
{
"id": 15500572,
"username": "aspoky_dev",
- "totalCosts": 593.88,
+ "totalCosts": 582.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15500572/medium/82f4c4ed41642c9eab1d510f97122467.jpg"
},
{
"id": 15085311,
"username": "bunturx",
- "totalCosts": 484.8,
+ "totalCosts": 463.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
@@ -6309,7 +6332,7 @@
{
"id": 15511756,
"username": "Daniela-Camacho-Villalobo-110198",
- "totalCosts": 178.77,
+ "totalCosts": 175.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15511756/medium/513599bdff63b6d935fa6d4fc6cca119_default.png"
},
{
@@ -6321,7 +6344,7 @@
{
"id": 15538393,
"username": "ballesterosliliana70",
- "totalCosts": 133.32,
+ "totalCosts": 128.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15538393/medium/d8116baf1e8920a2369fb749f235586b.jpeg"
},
{
@@ -6368,7 +6391,7 @@
{
"id": 15421106,
"username": "rogerdaltry193",
- "totalCosts": 860.52,
+ "totalCosts": 845.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421106/medium/42065b2af539333bb83278e6ef5e2f29.png"
},
{
@@ -6401,6 +6424,12 @@
"totalCosts": 16.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914025/medium/b2c5e012bade4e011c918815c86c4968.png"
},
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
{
"id": 15447840,
"username": "jjalbertodiaz",
@@ -6510,7 +6539,7 @@
{
"id": 15155844,
"username": "CryptoSpace",
- "totalCosts": 227.25,
+ "totalCosts": 198.97,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
},
{
@@ -6561,6 +6590,12 @@
"totalCosts": 28.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15767291/medium/7fad807cd8381eba8c73fbe5cff78eea.png"
},
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
{
"id": 15714091,
"username": "Karym_GG",
@@ -6833,18 +6868,18 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15655799/medium/0f108d6404eeff30e335b9cea2ad02d4_default.png"
},
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
{
"id": 14581548,
"username": "danielpg2106",
"totalCosts": 12.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14581548/medium/15cfd2d3d8015efbcfbc20c47deeb5be.jpeg"
},
- {
- "id": 14614016,
- "username": "Anonyma",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14614016/medium/447ae91eb97d464346003fe6532cda12.jpg"
- },
{
"id": 15135505,
"username": "Andrea00P",
@@ -6857,6 +6892,12 @@
"totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15542547/medium/fffae8cd8da3c88db943d27cc0e4208b_default.png"
},
+ {
+ "id": 14614016,
+ "username": "Anonyma",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14614016/medium/447ae91eb97d464346003fe6532cda12.jpg"
+ },
{
"id": 14698482,
"username": "lucaiach",
@@ -7376,25 +7417,25 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 2390.67,
+ "totalCosts": 2377.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
"id": 15085311,
"username": "bunturx",
- "totalCosts": 765.58,
+ "totalCosts": 762.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
"id": 14972621,
"username": "CSR1415926535",
- "totalCosts": 255.53,
+ "totalCosts": 252.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14972621/medium/ecc1e14d0406d3d97d4e9a292ce70f5a_default.png"
},
{
"id": 15096589,
"username": "paulanieto1010",
- "totalCosts": 148.47,
+ "totalCosts": 141.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15096589/medium/11bda7e6ac773b4cf8c3a84fdd9da4bd.jpeg"
},
{
@@ -7598,6 +7639,12 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14807238/medium/4e9d7e22b8ba45851bf0d10bf4bb2f68.jpeg"
},
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
{
"id": 15553253,
"username": "EmelyGarcia",
@@ -7612,7 +7659,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 1791.74,
+ "totalCosts": 1790.73,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -7683,7 +7730,7 @@
{
"id": 14581548,
"username": "danielpg2106",
- "totalCosts": 98.98,
+ "totalCosts": 87.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14581548/medium/15cfd2d3d8015efbcfbc20c47deeb5be.jpeg"
},
{
@@ -7914,12 +7961,6 @@
"totalCosts": 30.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15160522/medium/d85407776c94ea7ad76ca6c061fd4fcd_default.png"
},
- {
- "id": 14767094,
- "username": "joshuaoliverdouglas",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14767094/medium/3114c0487b19c05afa8dc283c94c3a76.png"
- },
{
"id": 15194310,
"username": "MGETH",
@@ -8267,7 +8308,7 @@
{
"id": 15029495,
"username": "caceres.jose.fr",
- "totalCosts": 176.75,
+ "totalCosts": 168.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15029495/medium/6cfbaec8bb35e6835abad73d00c81517.jpeg"
},
{
@@ -8460,7 +8501,7 @@
{
"id": 14564238,
"username": "FreddyAndresParra",
- "totalCosts": 135.34,
+ "totalCosts": 130.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
},
{
@@ -8681,6 +8722,12 @@
"totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866753/medium/1f6bb2900a3f89af7cf2dffb4ca6df4d.png"
},
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
{
"id": 15899559,
"username": "Lgallardo",
@@ -8766,13 +8813,13 @@
{
"id": 14320782,
"username": "JoseDeFreitas",
- "totalCosts": 976.67,
+ "totalCosts": 774.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14320782/medium/db9b49609d804eb2048076de466d3162_default.png"
},
{
"id": 14926537,
"username": "Ogion",
- "totalCosts": 418.14,
+ "totalCosts": 398.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14926537/medium/43b283793d5f025f62a367784571a478_default.png"
},
{
@@ -8782,22 +8829,28 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14995487/medium/f890d1e85e50d0289ca19930aae629d1.png"
},
{
- "id": 15500572,
- "username": "aspoky_dev",
- "totalCosts": 86.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15500572/medium/82f4c4ed41642c9eab1d510f97122467.jpg"
+ "id": 15448050,
+ "username": "santi-gnzlz",
+ "totalCosts": 91.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15448050/medium/b795cd3e997f1157bb866ef1a077fef2.png"
+ },
+ {
+ "id": 15946267,
+ "username": "socopower",
+ "totalCosts": 59.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg"
},
{
"id": 15159056,
"username": "ariel.barros",
- "totalCosts": 79.79,
+ "totalCosts": 51.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15159056/medium/a055cc2e6c5ab28d0ebcb99d0eec29e3_default.png"
},
{
- "id": 15946267,
- "username": "socopower",
- "totalCosts": 59.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg"
+ "id": 15500572,
+ "username": "aspoky_dev",
+ "totalCosts": 51.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15500572/medium/82f4c4ed41642c9eab1d510f97122467.jpg"
},
{
"id": 15104875,
@@ -8805,6 +8858,12 @@
"totalCosts": 41.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15104875/medium/e90d23a37d5c4325b45195c090936d2f_default.png"
},
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
{
"id": 15003205,
"username": "fernandososxd4",
@@ -9598,14 +9657,8 @@
{
"id": 14614016,
"username": "Anonyma",
- "totalCosts": 37.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14614016/medium/447ae91eb97d464346003fe6532cda12.jpg"
- },
- {
- "id": 15094993,
- "username": "javier.donoso",
"totalCosts": 31.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15094993/medium/824cbde6ec1e62405249bcf060ef90d1.jpeg"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14614016/medium/447ae91eb97d464346003fe6532cda12.jpg"
},
{
"id": 15528915,
@@ -9619,6 +9672,12 @@
"totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035241/medium/984d86fd93f938b0489582b7f68e6b25_default.png"
},
+ {
+ "id": 15094993,
+ "username": "javier.donoso",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15094993/medium/824cbde6ec1e62405249bcf060ef90d1.jpeg"
+ },
{
"id": 15022459,
"username": "leonardo002031",
@@ -9630,6 +9689,18 @@
"username": "0xAntonio",
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png"
+ },
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 13917555,
+ "username": "benjiriro",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13917555/medium/304dd03df53b52c37cca54860ac922ed.jpeg"
}
]
},
@@ -9907,21 +9978,21 @@
{
"id": 15522923,
"username": "llucC",
- "totalCosts": 135.34,
+ "totalCosts": 112.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png"
},
- {
- "id": 15532581,
- "username": "malopaes",
- "totalCosts": 93.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532581/medium/a0e70a6e9167aa3309b955fb577d8147_default.png"
- },
{
"id": 14581548,
"username": "danielpg2106",
"totalCosts": 93.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14581548/medium/15cfd2d3d8015efbcfbc20c47deeb5be.jpeg"
},
+ {
+ "id": 15532581,
+ "username": "malopaes",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532581/medium/a0e70a6e9167aa3309b955fb577d8147_default.png"
+ },
{
"id": 15528915,
"username": "J4yD3v",
@@ -10161,7 +10232,7 @@
{
"id": 15274148,
"username": "almartinez",
- "totalCosts": 1727.1,
+ "totalCosts": 1723.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15274148/medium/ba6827b07726231f6fa2a149da7c2627.png"
},
{
@@ -10220,7 +10291,7 @@
{
"id": 15789613,
"username": "djvictorvargas1988",
- "totalCosts": 46.46,
+ "totalCosts": 43.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15789613/medium/f5d59ce9fa974c34fed81ee4bcfe45de.jpeg"
},
{
@@ -10267,13 +10338,13 @@
{
"id": 15968127,
"username": "gonzagramaglia",
- "totalCosts": 1297.85,
+ "totalCosts": 1278.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968127/medium/0c91665492f81a2479639eba5271d7bc.png"
},
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 803.96,
+ "totalCosts": 823.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -10480,7 +10551,7 @@
{
"id": 15058949,
"username": "gracieluu_ar",
- "totalCosts": 468.64,
+ "totalCosts": 445.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
},
{
@@ -10500,12 +10571,6 @@
"username": "MGETH",
"totalCosts": 21.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
- },
- {
- "id": 15528915,
- "username": "J4yD3v",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png"
}
]
},
@@ -10860,18 +10925,18 @@
"totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866753/medium/1f6bb2900a3f89af7cf2dffb4ca6df4d.png"
},
- {
- "id": 15436824,
- "username": "araujo.eth",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15436824/medium/1b34b97c1e9e1a2ec99a7fba8d2dbada_default.png"
- },
{
"id": 15835983,
"username": "saday18hernandez2004",
"totalCosts": 23.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15835983/medium/8c15b511414ddfacf15479ca54e848c5.png"
},
+ {
+ "id": 15436824,
+ "username": "araujo.eth",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15436824/medium/1b34b97c1e9e1a2ec99a7fba8d2dbada_default.png"
+ },
{
"id": 15056237,
"username": "ismaventuras",
@@ -10945,19 +11010,19 @@
{
"id": 15730101,
"username": "anaphant",
- "totalCosts": 479.75,
+ "totalCosts": 464.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730101/medium/54df140ba50202fe839069eb63683d45.png"
},
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 198.97,
+ "totalCosts": 214.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
"id": 15946267,
"username": "socopower",
- "totalCosts": 117.16,
+ "totalCosts": 102.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg"
},
{
@@ -11024,18 +11089,18 @@
"totalCosts": 264.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14630992/medium/5b635093aa84e77f956aba430141b90b.jpeg"
},
- {
- "id": 14564238,
- "username": "FreddyAndresParra",
- "totalCosts": 127.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
- },
{
"id": 14982821,
"username": "adriolguin",
"totalCosts": 124.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14982821/medium/1d14c841994683501efe6856e8ca396f.jpg"
},
+ {
+ "id": 14564238,
+ "username": "FreddyAndresParra",
+ "totalCosts": 122.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
+ },
{
"id": 15135505,
"username": "Andrea00P",
@@ -11076,12 +11141,6 @@
"totalCosts": 186.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
},
- {
- "id": 15522923,
- "username": "llucC",
- "totalCosts": 108.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png"
- },
{
"id": 15490162,
"username": "Mathewvizc7",
@@ -11089,10 +11148,10 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png"
},
{
- "id": 16010703,
- "username": "vero_vero03",
- "totalCosts": 74.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16010703/medium/97c299201d2fe2be8c7fef377883e484_default.png"
+ "id": 15522923,
+ "username": "llucC",
+ "totalCosts": 71.71,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png"
},
{
"id": 15960287,
@@ -11100,6 +11159,12 @@
"totalCosts": 64.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
},
+ {
+ "id": 16010703,
+ "username": "vero_vero03",
+ "totalCosts": 50.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16010703/medium/97c299201d2fe2be8c7fef377883e484_default.png"
+ },
{
"id": 14995487,
"username": "Gu1ll0t3",
@@ -11192,7 +11257,7 @@
{
"id": 15287132,
"username": "0xAntonio",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png"
},
{
@@ -11204,7 +11269,7 @@
{
"id": 15243012,
"username": "Aitorgrcn",
- "totalCosts": 79.79,
+ "totalCosts": 69.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15243012/medium/ce4c361d409467cd2c1b7d3a00b614d2_default.png"
},
{
@@ -11219,12 +11284,6 @@
"totalCosts": 7.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14755966/medium/f5becfea2dd543f57f356dfb3e42487d_default.png"
},
- {
- "id": 15237056,
- "username": "al.corredera",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15237056/medium/d846ce5a4333a3c90131ebdc6abcb3b5.jpeg"
- },
{
"id": 15591241,
"username": "Seyvick",
@@ -11245,7 +11304,7 @@
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 184.83,
+ "totalCosts": 180.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
@@ -11257,7 +11316,7 @@
{
"id": 15431356,
"username": "davinci061299",
- "totalCosts": 101,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431356/medium/528b0f234df1b6a36aacfe2c4abde9b6.png"
},
{
@@ -11357,7 +11416,7 @@
{
"id": 15770841,
"username": "Angelito_18",
- "totalCosts": 2798.71,
+ "totalCosts": 2774.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg"
},
{
@@ -11378,6 +11437,12 @@
"totalCosts": 27.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770059/medium/52b81f2ff530c14473f18ee7281dae6a_default.png"
},
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
{
"id": 15155844,
"username": "CryptoSpace",
@@ -11409,7 +11474,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 1747.3,
+ "totalCosts": 1742.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -11443,7 +11508,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 802.95,
+ "totalCosts": 869.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
}
]
@@ -11465,7 +11530,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 2291.69,
+ "totalCosts": 2272.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -11798,7 +11863,7 @@
{
"id": 14645922,
"username": "506utyutyuty",
- "totalCosts": 630.24,
+ "totalCosts": 623.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14645922/medium/defd7b38618b1e500ae3c09e4b6f3f69.jpeg"
},
{
@@ -11807,18 +11872,18 @@
"totalCosts": 564.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14581548/medium/15cfd2d3d8015efbcfbc20c47deeb5be.jpeg"
},
- {
- "id": 14564238,
- "username": "FreddyAndresParra",
- "totalCosts": 93.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
- },
{
"id": 15838619,
"username": "al4ndrade",
- "totalCosts": 82.82,
+ "totalCosts": 80.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15838619/medium/58f9acf18a854df6a81f207004a74b26.jpeg"
},
+ {
+ "id": 14564238,
+ "username": "FreddyAndresParra",
+ "totalCosts": 78.78,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg"
+ },
{
"id": 14865328,
"username": "Lostday",
@@ -11858,7 +11923,7 @@
{
"id": 14791370,
"username": "williamx",
- "totalCosts": 9.09,
+ "totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14791370/medium/59d86e6d660482edfdda6487b7fc1205_default.png"
},
{
@@ -12213,7 +12278,7 @@
{
"id": 15502508,
"username": "fgavadeveloper",
- "totalCosts": 804.97,
+ "totalCosts": 795.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15502508/medium/d6b18a64d4fbae95044bf5883443b797.png"
},
{
@@ -12263,6 +12328,12 @@
"username": "rom1919",
"totalCosts": 10.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14807238/medium/4e9d7e22b8ba45851bf0d10bf4bb2f68.jpeg"
+ },
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
}
]
},
@@ -12330,7 +12401,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 261.59,
+ "totalCosts": 273.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
}
]
@@ -12341,7 +12412,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 522.17,
+ "totalCosts": 508.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
}
]
@@ -12501,7 +12572,7 @@
{
"id": 15968127,
"username": "gonzagramaglia",
- "totalCosts": 882.74,
+ "totalCosts": 870.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968127/medium/0c91665492f81a2479639eba5271d7bc.png"
},
{
@@ -12524,7 +12595,7 @@
{
"id": 15903171,
"username": "SidWeb",
- "totalCosts": 495.91,
+ "totalCosts": 492.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15903171/medium/16aea0b15b034302e6e656749a0a7b8e.jpg"
}
]
@@ -12544,12 +12615,6 @@
"totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
},
- {
- "id": 15714091,
- "username": "Karym_GG",
- "totalCosts": 25.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
- },
{
"id": 15847249,
"username": "AlexanderMartinezz",
@@ -12626,7 +12691,7 @@
{
"id": 15908639,
"username": "mettal",
- "totalCosts": 312.09,
+ "totalCosts": 309.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908639/medium/5b02a8579a760cb22bf5f82c312082f2.png"
},
{
@@ -12694,9 +12759,15 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 1286.74,
+ "totalCosts": 1256.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
{
"id": 15553253,
"username": "EmelyGarcia",
@@ -12722,9 +12793,15 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 1633.17,
+ "totalCosts": 1784.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 32.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
{
"id": 15469966,
"username": "1Sergio",
@@ -12750,7 +12827,7 @@
{
"id": 15194310,
"username": "MGETH",
- "totalCosts": 2079.59,
+ "totalCosts": 2066.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
@@ -12868,7 +12945,7 @@
{
"id": 15770841,
"username": "Angelito_18",
- "totalCosts": 320.17,
+ "totalCosts": 307.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg"
},
{
@@ -12940,722 +13017,2247 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
}
]
- }
- ]
- },
- {
- "lang": "fa",
- "data": [
+ },
{
- "fileId": "6161",
+ "fileId": "7631",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 2880.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 113.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
}
]
},
{
- "fileId": "6163",
+ "fileId": "6241",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 347.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15153752,
+ "username": "jumagios",
+ "totalCosts": 641.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15153752/medium/4c5ec8941f8b5f636035a6ca16df9b8d.jpeg"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 94.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15123407,
+ "username": "JDAL",
+ "totalCosts": 346.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123407/medium/dfea944357736aa8f0908f38c8bd97a8_default.png"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 41.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 15061909,
+ "username": "lealp22",
+ "totalCosts": 204.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061909/medium/418c844e1b58b7da484f33f1fb1eaaae.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 40.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
- }
- ]
- },
- {
- "fileId": "6185",
- "contributors": [
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 124.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ },
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 266.64,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15153604,
+ "username": "DiegoRodriguezM",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15153604/medium/11569f93ca6c50d1f1039d949c390a8e.jpeg"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 47.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15383024,
+ "username": "alx255",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15383024/medium/b9e5bd7a7d9dfc1012d3d820da36f6e2_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
- }
- ]
- },
- {
- "fileId": "6165",
- "contributors": [
+ "id": 15966545,
+ "username": "askr",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png"
+ },
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 15487308,
+ "username": "newton099",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15487308/medium/4039f2f3c1d992a73045fe97fb41aecc.png"
}
]
},
{
- "fileId": "6167",
+ "fileId": "3056",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 474.7,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 14750970,
+ "username": "joab83",
+ "totalCosts": 219.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14750970/medium/0b87f19553c843060ce216cdd76f919d_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 121.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 14834276,
+ "username": "ElTitoDG",
+ "totalCosts": 148.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14834276/medium/403ec82c5eab442ae648bc5290a0e6b9.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 14737978,
+ "username": "ZeroSlayer",
+ "totalCosts": 95.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737978/medium/d188e89855364d34aad1be1959f11ae6_default.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
- }
- ]
- },
- {
- "fileId": "5559",
- "contributors": [
- {
- "id": 15074339,
- "username": "mmp8103",
- "totalCosts": 266.64,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15074339/medium/5199c5dafe0b10d9bf8a99c34ff3a277.png"
+ "id": 14867212,
+ "username": "haritz_950423",
+ "totalCosts": 79.79,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14867212/medium/f2d03c7459424f9158deca133bb7a6db.jpeg"
},
{
- "id": 15855621,
- "username": "subriper",
- "totalCosts": 220.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15855621/medium/ab1a2868b313e6dfc113a754286d37d5.jpg"
+ "id": 14778126,
+ "username": "Thalma",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778126/medium/3927ee487076db1a7dd83d45a6d2dc64.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 90.9,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 14652060,
+ "username": "JazminVidal",
+ "totalCosts": 56.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14652060/medium/a4f3c9974a51710ea11e87a24ac2df27.png"
},
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 81.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15080289,
+ "username": "mattiaverduci",
+ "totalCosts": 39.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080289/medium/f3c6e7873da71c5307ba187c9e6ebf50.jpeg"
},
{
- "id": 14814690,
- "username": "khodaarahmi",
+ "id": 14631802,
+ "username": "edgargrau",
"totalCosts": 37.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814690/medium/22dbf1e43823e76cb094bff3fdcca212.jpeg"
- }
- ]
- },
- {
- "fileId": "5561",
- "contributors": [
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ },
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 2924.96,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 14990899,
+ "username": "juan.baranowa",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14990899/medium/c7ef51465c9acf0f30c989ec42d6d5d2.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15061909,
+ "username": "lealp22",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061909/medium/418c844e1b58b7da484f33f1fb1eaaae.jpeg"
},
{
- "id": 14951357,
- "username": "AH1309",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14951357/medium/8791c0b99febb787a5293b1b8487a6a9_default.png"
+ "id": 14943545,
+ "username": "k.otika",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14943545/medium/8591b0d6e4eb6d5cf6fb49acabda89d3_default.png"
}
]
},
{
- "fileId": "2766",
+ "fileId": "3124",
"contributors": [
{
- "id": 14733070,
- "username": "loopersosa",
- "totalCosts": 435.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733070/medium/14f75ef000001434196357bca4f22490.jpg"
- },
- {
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 290.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 13522334,
+ "username": "santy95_77",
+ "totalCosts": 303,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13522334/medium/16d302ea919c1608cfa57af85221ca86.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 219.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 14992061,
+ "username": "Divanny",
+ "totalCosts": 251.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14992061/medium/932dae148005c8671a50691ac97b7ddc.jpeg"
},
{
- "id": 15002741,
- "username": "dariusheslamipor",
- "totalCosts": 205.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15002741/medium/368ee2e7888434a922e5781aa2c194bf.jpeg"
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 167.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
},
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 66.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 13450175,
+ "username": "elchany2003",
+ "totalCosts": 113.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13450175/medium/1512f06d16de820437e75b308d57fd1a.jpg"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 53.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 96.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 15111835,
+ "username": "LeonelM21",
+ "totalCosts": 93.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15111835/medium/5df70e80366ef94764ad8cbde854d2a5.png"
},
{
- "id": 14555882,
- "username": "ElAmir",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14555882/medium/47bd8403dc0a881324cf1d5aef976a7b.jpg"
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 33.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
},
{
- "id": 15793733,
- "username": "mahdishahabnia10",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15793733/medium/530cfa36d26d8b01474098c8952b0478.png"
+ "id": 15946267,
+ "username": "socopower",
+ "totalCosts": 18.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg"
}
]
},
{
- "fileId": "2704",
+ "fileId": "7995",
"contributors": [
{
- "id": 15947697,
- "username": "mahdigachloo33",
- "totalCosts": 712.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg"
- },
- {
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 69.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 870.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 14555882,
- "username": "ElAmir",
- "totalCosts": 15.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14555882/medium/47bd8403dc0a881324cf1d5aef976a7b.jpg"
- },
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 294.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "6267",
+ "contributors": [
{
- "id": 14733070,
- "username": "loopersosa",
- "totalCosts": 10.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733070/medium/14f75ef000001434196357bca4f22490.jpg"
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 1864.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 15178052,
+ "username": "sudokunym",
+ "totalCosts": 324.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15178052/medium/6d7cf49c669b00f2bcaa28716d078bc0.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
}
]
},
{
- "fileId": "2702",
+ "fileId": "6243",
"contributors": [
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 604.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 15109143,
+ "username": "avelinomunoz.13.990",
+ "totalCosts": 1725.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15109143/medium/15bc93dea94521f060a6ca73118ace17.png"
},
{
- "id": 15947697,
- "username": "mahdigachloo33",
- "totalCosts": 293.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 989.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 16001243,
- "username": "0xArkonomi",
- "totalCosts": 142.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg"
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 588.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 113.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 209.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 108.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15155208,
+ "username": "doblea59",
+ "totalCosts": 150.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155208/medium/10c38f6da511bcb1a7cd9e99bb851b0f.jpeg"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 15271124,
+ "username": "gael.jggs",
+ "totalCosts": 99.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15271124/medium/40d1d2789aa8aa4e636b32dd7d925186_default.png"
}
]
},
{
- "fileId": "2712",
+ "fileId": "7627",
"contributors": [
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 496.92,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 1374.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 272.7,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15857153,
+ "username": "eugedelaoliva93",
+ "totalCosts": 84.84,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15857153/medium/f7cd69b42365e152a5b853421ed0b61d.jpeg"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 188.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 16059186,
+ "username": "Netchevereone",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16059186/medium/22e49dddeab741905dffdac1d01f0ed0_default.png"
}
]
},
{
- "fileId": "2710",
+ "fileId": "3100",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 464.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 14872676,
+ "username": "VLN_1",
+ "totalCosts": 287.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14872676/medium/8d173c43fac87f0975a31275048360c8.jpeg"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 293.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 12673086,
+ "username": "alvaro3639",
+ "totalCosts": 112.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12673086/medium/c4dd31ecaaffcae28a9ec421a8a12248.jpg"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 240.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 110.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 83.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15566383,
- "username": "raminvalizadeh29",
- "totalCosts": 28.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566383/medium/adf7b433679fa9f895b77e19223a2e70.jpeg"
+ "id": 12596551,
+ "username": "lidiam",
+ "totalCosts": 60.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12596551/medium/4d64ba444829e0a830179079cbf8fd80.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
+ "id": 14834276,
+ "username": "ElTitoDG",
+ "totalCosts": 43.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14834276/medium/403ec82c5eab442ae648bc5290a0e6b9.png"
+ },
+ {
+ "id": 14778992,
+ "username": "IsmaelRC",
"totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778992/medium/646865835d4b959bf3bfca67b66ef04f.png"
+ },
+ {
+ "id": 13510211,
+ "username": "MirageIonova",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13510211/medium/f447099407b409a18ab34d7829683e43.png"
+ },
+ {
+ "id": 14755966,
+ "username": "RealGoye",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14755966/medium/f5becfea2dd543f57f356dfb3e42487d_default.png"
}
]
},
{
- "fileId": "2716",
+ "fileId": "3160",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 739.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 849.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 447.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15002443,
+ "username": "Pamelaocampo444",
+ "totalCosts": 57.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15002443/medium/89be2efab05a804101bdf30622d0f983_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 88.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15084601,
+ "username": "metanube",
+ "totalCosts": 54.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084601/medium/7e8ee6ec15e9d0be68e2c6ff9a0b34c8_default.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 49.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 13566526,
+ "username": "guido.gentile.1995",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13566526/medium/fbe52bcbb93ae7e2bf52c85b6ea5d5f5.jpg"
+ },
+ {
+ "id": 15080733,
+ "username": "Kuitlahuak",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080733/medium/9fd244d47265c127c5c0d3cfe4ebf4b2_default.png"
+ },
+ {
+ "id": 15087823,
+ "username": "Alvaro203204",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15087823/medium/bfdfab68e4c4b9482f9c7f533ec845c9.png"
}
]
},
{
- "fileId": "2908",
+ "fileId": "7999",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 622.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
- },
- {
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 156.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
- },
- {
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 94.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 3253.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
},
{
- "id": 15967115,
- "username": "itsdeeters",
- "totalCosts": 29.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 2218.97,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
}
]
},
{
- "fileId": "2860",
+ "fileId": "3074",
"contributors": [
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 921.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 14834276,
+ "username": "ElTitoDG",
+ "totalCosts": 388.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14834276/medium/403ec82c5eab442ae648bc5290a0e6b9.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 155.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 14911627,
+ "username": "marcoporracin",
+ "totalCosts": 168.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14911627/medium/29719c7ebb665982afa5447e382aeb13.jpeg"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 90.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 13510211,
+ "username": "MirageIonova",
+ "totalCosts": 59.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13510211/medium/f447099407b409a18ab34d7829683e43.png"
+ },
+ {
+ "id": 14778126,
+ "username": "Thalma",
+ "totalCosts": 42.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778126/medium/3927ee487076db1a7dd83d45a6d2dc64.jpeg"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 18.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
}
]
},
{
- "fileId": "2786",
+ "fileId": "3120",
"contributors": [
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 398.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15401858,
+ "username": "andykamin3",
+ "totalCosts": 120.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15401858/medium/8ef405a63e7eaade682b4a8059685184.jpeg"
+ },
+ {
+ "id": 14807238,
+ "username": "rom1919",
+ "totalCosts": 61.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14807238/medium/4e9d7e22b8ba45851bf0d10bf4bb2f68.jpeg"
+ },
+ {
+ "id": 15480452,
+ "username": "asusrid",
+ "totalCosts": 18.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15480452/medium/39ea3acb0c4e9143d7fba152016d26c7_default.png"
+ },
+ {
+ "id": 25420,
+ "username": "Ryo567",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/25420/medium/c407ca20cecfad35ba1bc9ef42232137.png"
}
]
},
{
- "fileId": "5533",
+ "fileId": "3164",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 432.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15084601,
+ "username": "metanube",
+ "totalCosts": 1558.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084601/medium/7e8ee6ec15e9d0be68e2c6ff9a0b34c8_default.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 280.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 106.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 253.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15082987,
+ "username": "Grampus",
+ "totalCosts": 45.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082987/medium/3745aa71b5e8897fcee2ab6c9e9a26fe.jpeg"
},
{
- "id": 15967115,
- "username": "itsdeeters",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ "id": 15070281,
+ "username": "SZ14RT",
+ "totalCosts": 41.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15070281/medium/dc29b1568f0c3b8fb54a0a6724e2f13b_default.png"
+ },
+ {
+ "id": 14682564,
+ "username": "rich1n",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14682564/medium/3198f898fb53f31fa32bf08236627a34.jpeg"
}
]
},
{
- "fileId": "2914",
+ "fileId": "2994",
"contributors": [
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 353.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 14886730,
+ "username": "charlyzona",
+ "totalCosts": 2024.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14886730/medium/5f19a49b0b330b8b575eee9a41d7faac.jpeg"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 166.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 14791370,
+ "username": "williamx",
+ "totalCosts": 122.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14791370/medium/59d86e6d660482edfdda6487b7fc1205_default.png"
},
{
- "id": 14966159,
- "username": "bafrani",
- "totalCosts": 151.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14966159/medium/c51fc2b1e6cf7ef020396751ad9b854b.png"
+ "id": 14885094,
+ "username": "FrancoElicabe",
+ "totalCosts": 31.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14885094/medium/ff9074ceb417d440b86adcd9172cc6e6_default.png"
},
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
+ "id": 14823390,
+ "username": "bitgalea",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823390/medium/443d0c232ef980933088d87cccbceadf_default.png"
+ },
+ {
+ "id": 14890278,
+ "username": "Hephaistos357",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14890278/medium/7fd731668afeab1f389fbe0b256f0619.png"
+ },
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
"totalCosts": 8.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ },
+ {
+ "id": 14943545,
+ "username": "k.otika",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14943545/medium/8591b0d6e4eb6d5cf6fb49acabda89d3_default.png"
}
]
},
{
- "fileId": "2898",
+ "fileId": "2986",
"contributors": [
{
- "id": 15967115,
- "username": "itsdeeters",
- "totalCosts": 309.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 569.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
},
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 145.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15966349,
+ "username": "chiogonzalezt",
+ "totalCosts": 534.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966349/medium/1d277519e5b8ccdfc1de7b60ec89e1b0.jpeg"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 128.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 14865328,
+ "username": "Lostday",
+ "totalCosts": 239.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 68.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15061725,
+ "username": "octaaaa",
+ "totalCosts": 221.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061725/medium/4bf352fdf48fcda0d615d83b89ae4263.png"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 56.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 14791370,
+ "username": "williamx",
+ "totalCosts": 125.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14791370/medium/59d86e6d660482edfdda6487b7fc1205_default.png"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 47.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
},
{
- "id": 15967893,
- "username": "apacala",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png"
+ "id": 13510211,
+ "username": "MirageIonova",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13510211/medium/f447099407b409a18ab34d7829683e43.png"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ },
+ {
+ "id": 15224384,
+ "username": "mezaj4486",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15224384/medium/a2a78d9a9f74c8e5a5c47cd503aa557d.png"
}
]
},
{
- "fileId": "2778",
+ "fileId": "6259",
"contributors": [
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 87.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15154968,
+ "username": "Secvndvs",
+ "totalCosts": 170.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15154968/medium/63bd618dfc395cc82c1ba5119280c40c_default.png"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 160.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15998451,
+ "username": "gato1904",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998451/medium/b48c75b54930b781a82c9146d5ba2daf.png"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 15674887,
+ "username": "Charlyboy",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15674887/medium/adf7358a1af66b39938e57334b2ce312.jpg"
}
]
},
{
- "fileId": "2776",
+ "fileId": "3088",
"contributors": [
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 144.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 14687676,
+ "username": "joseachemazzei",
+ "totalCosts": 342.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687676/medium/dc4cef6c7ba35e45690a3cbfb2db7009.jpg"
},
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 88.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 212.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 14776878,
+ "username": "JoshNX",
+ "totalCosts": 141.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14776878/medium/21ac9de5adfcb01ba92df55ea1428126_default.png"
},
{
- "id": 14665754,
- "username": "R3z4_Pr0gramm3r",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
},
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 14964031,
+ "username": "Charlongolo",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14964031/medium/1fcad8b23307ba5ad33dac76e91ee6a3.png"
}
]
},
{
- "fileId": "6173",
+ "fileId": "3116",
"contributors": [
{
- "id": 15099529,
- "username": "Aria-Naraghi",
- "totalCosts": 104.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ "id": 15191278,
+ "username": "julioenrique19",
+ "totalCosts": 827.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15191278/medium/93a3b7e041a6ed6bb7f72586f223ebd8.png"
},
{
- "id": 15967125,
- "username": "erfanej",
- "totalCosts": 41.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ "id": 14682564,
+ "username": "rich1n",
+ "totalCosts": 194.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14682564/medium/3198f898fb53f31fa32bf08236627a34.jpeg"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 106.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 14320782,
+ "username": "JoseDeFreitas",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14320782/medium/db9b49609d804eb2048076de466d3162_default.png"
+ },
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
}
]
},
{
- "fileId": "2792",
+ "fileId": "6261",
"contributors": [
{
- "id": 15097099,
- "username": "nader.sedigh",
- "totalCosts": 286.84,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 805.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
},
{
- "id": 15233666,
- "username": "Alifarhani",
- "totalCosts": 197.96,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ "id": 15294248,
+ "username": "kempo17",
+ "totalCosts": 157.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15294248/medium/5b2b23f53504fd6a13a351ee58209ec7_default.png"
},
{
- "id": 15967119,
- "username": "timtey",
- "totalCosts": 177.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 148.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
},
{
- "id": 15967115,
- "username": "itsdeeters",
- "totalCosts": 173.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ "id": 15161680,
+ "username": "agustinasegat",
+ "totalCosts": 104.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15161680/medium/62b2a3ce8e4003b84a0fceb6be409bba.jpeg"
},
{
- "id": 15967125,
- "username": "erfanej",
+ "id": 15186514,
+ "username": "Nach3",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15186514/medium/e053f5e70fadd69a00fce56662e286fa_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2980",
+ "contributors": [
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 104.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 14935087,
+ "username": "Martinpons",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14935087/medium/a96e2edf880e873237f137148aa343c1_default.png"
+ },
+ {
+ "id": 15425492,
+ "username": "luenconi",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15425492/medium/d0d3884eb7d2b3f03f3e8e6c56c9b787.jpeg"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 55.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ },
+ {
+ "id": 15094993,
+ "username": "javier.donoso",
+ "totalCosts": 45.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15094993/medium/824cbde6ec1e62405249bcf060ef90d1.jpeg"
+ },
+ {
+ "id": 14977143,
+ "username": "David0",
+ "totalCosts": 39.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977143/medium/6ffd071efb4fab7bd5081b6e579dc0c9_default.png"
+ },
+ {
+ "id": 15423118,
+ "username": "samuelproxd1",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15423118/medium/0b73e2850265eaffa68201bc0c8a026c.jpeg"
+ },
+ {
+ "id": 14791370,
+ "username": "williamx",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14791370/medium/59d86e6d660482edfdda6487b7fc1205_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6245",
+ "contributors": [
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 803.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15155208,
+ "username": "doblea59",
+ "totalCosts": 430.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155208/medium/10c38f6da511bcb1a7cd9e99bb851b0f.jpeg"
+ },
+ {
+ "id": 14763374,
+ "username": "elmarceloc",
+ "totalCosts": 94.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14763374/medium/25a8ac3837c276bc3a9e89b158668552.png"
+ },
+ {
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 33.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "6263",
+ "contributors": [
+ {
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 566.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 171.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6432",
+ "contributors": [
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 2926.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 1258.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ },
+ {
+ "id": 16028920,
+ "username": "paopastorelli",
+ "totalCosts": 41.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16028920/medium/e3049f379e035388449ee79ea5b75888.jpeg"
+ },
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "6436",
+ "contributors": [
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 3484.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7308",
+ "contributors": [
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 2874.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 15881053,
+ "username": "luxxing",
+ "totalCosts": 70.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15881053/medium/95bd3e1a44d660c405ba34c0732edbcc_default.png"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 54.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3144",
+ "contributors": [
+ {
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 457.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
+ },
+ {
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
+ },
+ {
+ "id": 14958987,
+ "username": "fernanmartine",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958987/medium/c3675bae5c0086400ebe95c94d4a4580_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6247",
+ "contributors": [
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 207.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3138",
+ "contributors": [
+ {
+ "id": 15083265,
+ "username": "siulnairda",
+ "totalCosts": 448.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15083265/medium/827dfe415bb9980315b0256b43afbe67.png"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 410.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 14763374,
+ "username": "elmarceloc",
+ "totalCosts": 119.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14763374/medium/25a8ac3837c276bc3a9e89b158668552.png"
+ },
+ {
+ "id": 15247956,
+ "username": "kenip",
+ "totalCosts": 60.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15247956/medium/d5a5d69f6aecc80fe75873d940743a36.png"
+ },
+ {
+ "id": 15966545,
+ "username": "askr",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png"
+ },
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3156",
+ "contributors": [
+ {
+ "id": 15084601,
+ "username": "metanube",
+ "totalCosts": 255.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084601/medium/7e8ee6ec15e9d0be68e2c6ff9a0b34c8_default.png"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 140.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15966545,
+ "username": "askr",
+ "totalCosts": 70.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7304",
+ "contributors": [
+ {
+ "id": 15966349,
+ "username": "chiogonzalezt",
+ "totalCosts": 750.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966349/medium/1d277519e5b8ccdfc1de7b60ec89e1b0.jpeg"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 749.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 432.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 15770841,
+ "username": "Angelito_18",
+ "totalCosts": 134.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2998",
+ "contributors": [
+ {
+ "id": 14886730,
+ "username": "charlyzona",
+ "totalCosts": 919.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14886730/medium/5f19a49b0b330b8b575eee9a41d7faac.jpeg"
+ },
+ {
+ "id": 14656338,
+ "username": "transgresor_metal",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14656338/medium/994846d1f939b5a9efdafa335adcc091.jpeg"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 57.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ },
+ {
+ "id": 13510211,
+ "username": "MirageIonova",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13510211/medium/f447099407b409a18ab34d7829683e43.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3148",
+ "contributors": [
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 498.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 15087823,
+ "username": "Alvaro203204",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15087823/medium/bfdfab68e4c4b9482f9c7f533ec845c9.png"
+ },
+ {
+ "id": 15474196,
+ "username": "Ivan_Sarapura",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15474196/medium/7d0c8d1b9a3745f3d1dbfaec3ab9e4a2.jpeg"
+ },
+ {
+ "id": 14964031,
+ "username": "Charlongolo",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14964031/medium/1fcad8b23307ba5ad33dac76e91ee6a3.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6265",
+ "contributors": [
+ {
+ "id": 15161680,
+ "username": "agustinasegat",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15161680/medium/62b2a3ce8e4003b84a0fceb6be409bba.jpeg"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3036",
+ "contributors": [
+ {
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 235.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
+ },
+ {
+ "id": 15058949,
+ "username": "gracieluu_ar",
+ "totalCosts": 214.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/c8bf678ba85795ea778fbc67e30f0733.jpeg"
+ },
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 163.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 14914189,
+ "username": "carloscuadro",
+ "totalCosts": 117.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14914189/medium/7ec4ee047758da8e4a91c37eeda0f674_default.png"
+ },
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 84.84,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ },
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 14779212,
+ "username": "matthewrock2011",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14779212/medium/39661a937aa3dc153a7acd8d06b4a8fd.jpeg"
+ },
+ {
+ "id": 15946267,
+ "username": "socopower",
+ "totalCosts": 51.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg"
+ },
+ {
+ "id": 14690796,
+ "username": "Elksomi",
+ "totalCosts": 40.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690796/medium/660146d2708cef70c249f33235e06eb5_default.png"
+ },
+ {
+ "id": 14752336,
+ "username": "Necis",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14752336/medium/208a2993fae0ba74355502af0dbf7bd4_default.png"
+ },
+ {
+ "id": 14865328,
+ "username": "Lostday",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png"
+ },
+ {
+ "id": 14320782,
+ "username": "JoseDeFreitas",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14320782/medium/db9b49609d804eb2048076de466d3162_default.png"
+ },
+ {
+ "id": 13510211,
+ "username": "MirageIonova",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13510211/medium/f447099407b409a18ab34d7829683e43.png"
+ },
+ {
+ "id": 14964031,
+ "username": "Charlongolo",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14964031/medium/1fcad8b23307ba5ad33dac76e91ee6a3.png"
+ },
+ {
+ "id": 14861960,
+ "username": "isaul",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861960/medium/96f44a8792e2cf800d5e2f1545bee4a3_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3010",
+ "contributors": [
+ {
+ "id": 14948857,
+ "username": "ultralord97",
+ "totalCosts": 366.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14948857/medium/34c7ec153c8ed21b3c11340e8dda6641_default.png"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 351.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 14702332,
+ "username": "joaquindeleonamerio",
+ "totalCosts": 209.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702332/medium/f5e389288946c3f0bd1b305fdb383daf.jpg"
+ },
+ {
+ "id": 15085311,
+ "username": "bunturx",
+ "totalCosts": 108.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg"
+ },
+ {
+ "id": 14953547,
+ "username": "Tostaito",
+ "totalCosts": 82.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14953547/medium/49fb806cf50b5b40e0539f0bd1ef2445_default.png"
+ },
+ {
+ "id": 14865328,
+ "username": "Lostday",
+ "totalCosts": 70.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png"
+ },
+ {
+ "id": 14763374,
+ "username": "elmarceloc",
+ "totalCosts": 50.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14763374/medium/25a8ac3837c276bc3a9e89b158668552.png"
+ },
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 15542547,
+ "username": "Andrew22123",
+ "totalCosts": 26.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15542547/medium/fffae8cd8da3c88db943d27cc0e4208b_default.png"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "3092",
+ "contributors": [
+ {
+ "id": 14481500,
+ "username": "Diana1941",
+ "totalCosts": 1012.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14481500/medium/4f38cf223b0db6882a77961b52ca9eb1_default.png"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 422.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 15155844,
+ "username": "CryptoSpace",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png"
+ },
+ {
+ "id": 15255998,
+ "username": "rolandopiconnadales",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15255998/medium/43dc1eaa54592e9e6c019bef41e1e4eb.jpeg"
+ },
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "3024",
+ "contributors": [
+ {
+ "id": 15194310,
+ "username": "MGETH",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg"
+ },
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
+ {
+ "id": 14777840,
+ "username": "educordobac",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14777840/medium/28e0c7c5a9b9377a04173c40e52eb5f2.jpeg"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 14865328,
+ "username": "Lostday",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3070",
+ "contributors": [
+ {
+ "id": 14652358,
+ "username": "Iberriak",
+ "totalCosts": 155.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14652358/medium/b670537abb6dfccf1ff57ac170a7d1ee.jpeg"
+ },
+ {
+ "id": 14865328,
+ "username": "Lostday",
+ "totalCosts": 145.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png"
+ },
+ {
+ "id": 15553253,
+ "username": "EmelyGarcia",
+ "totalCosts": 76.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png"
+ },
+ {
+ "id": 15135505,
+ "username": "Andrea00P",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png"
+ },
+ {
+ "id": 15506008,
+ "username": "RvalM",
+ "totalCosts": 31.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15506008/medium/4fc0dc01596dd2eaffca626acccd754c_default.png"
+ },
+ {
+ "id": 15373568,
+ "username": "erick.marro2000",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373568/medium/7c6f24a85885abafd0a8c67b450e71a8.png"
+ },
+ {
+ "id": 14935087,
+ "username": "Martinpons",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14935087/medium/a96e2edf880e873237f137148aa343c1_default.png"
+ },
+ {
+ "id": 14987673,
+ "username": "vlunaram",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14987673/medium/e34007ba233ab626cef7659c13a7d685_default.png"
+ },
+ {
+ "id": 16224092,
+ "username": "coscujin64",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16224092/medium/3d8af10f6adb207ed307b53a2942fe16.png"
+ },
+ {
+ "id": 14631802,
+ "username": "edgargrau",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "3110",
+ "contributors": [
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 732.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ },
+ {
+ "id": 15193964,
+ "username": "MrAlizarinCrimson",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193964/medium/c6d2e5c698abf1ad8d755ef78ebbe86b.jpg"
+ },
+ {
+ "id": 15946101,
+ "username": "w1lkns",
+ "totalCosts": 63.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946101/medium/3d2813e6686c380c0a74b58d86b12c3d.jpeg"
+ },
+ {
+ "id": 15084601,
+ "username": "metanube",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084601/medium/7e8ee6ec15e9d0be68e2c6ff9a0b34c8_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "8003",
+ "contributors": [
+ {
+ "id": 15714091,
+ "username": "Karym_GG",
+ "totalCosts": 3403.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "lang": "fa",
+ "data": [
+ {
+ "fileId": "6161",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 158.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6163",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 347.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 94.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 41.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 34.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "6185",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 266.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 47.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "6165",
+ "contributors": [
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "6167",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 451.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 114.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "5559",
+ "contributors": [
+ {
+ "id": 15074339,
+ "username": "mmp8103",
+ "totalCosts": 266.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15074339/medium/5199c5dafe0b10d9bf8a99c34ff3a277.png"
+ },
+ {
+ "id": 15855621,
+ "username": "subriper",
+ "totalCosts": 220.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15855621/medium/ab1a2868b313e6dfc113a754286d37d5.jpg"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 90.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 81.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 14814690,
+ "username": "khodaarahmi",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814690/medium/22dbf1e43823e76cb094bff3fdcca212.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "5561",
+ "contributors": [
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 2924.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 158.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 14951357,
+ "username": "AH1309",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14951357/medium/8791c0b99febb787a5293b1b8487a6a9_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2766",
+ "contributors": [
+ {
+ "id": 14733070,
+ "username": "loopersosa",
+ "totalCosts": 435.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733070/medium/14f75ef000001434196357bca4f22490.jpg"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 290.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 219.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15002741,
+ "username": "dariusheslamipor",
+ "totalCosts": 205.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15002741/medium/368ee2e7888434a922e5781aa2c194bf.jpeg"
+ },
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 53.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 14555882,
+ "username": "ElAmir",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14555882/medium/47bd8403dc0a881324cf1d5aef976a7b.jpg"
+ },
+ {
+ "id": 15793733,
+ "username": "mahdishahabnia10",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15793733/medium/530cfa36d26d8b01474098c8952b0478.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2704",
+ "contributors": [
+ {
+ "id": 15947697,
+ "username": "mahdigachloo33",
+ "totalCosts": 712.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 14555882,
+ "username": "ElAmir",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14555882/medium/47bd8403dc0a881324cf1d5aef976a7b.jpg"
+ },
+ {
+ "id": 14733070,
+ "username": "loopersosa",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733070/medium/14f75ef000001434196357bca4f22490.jpg"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2702",
+ "contributors": [
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 604.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15947697,
+ "username": "mahdigachloo33",
+ "totalCosts": 293.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg"
+ },
+ {
+ "id": 16001243,
+ "username": "0xArkonomi",
+ "totalCosts": 142.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 108.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 107.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2712",
+ "contributors": [
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 496.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 272.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 188.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2710",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 464.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 293.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 240.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 83.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 15566383,
+ "username": "raminvalizadeh29",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566383/medium/adf7b433679fa9f895b77e19223a2e70.jpeg"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2716",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 739.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 447.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2908",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 622.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 156.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 94.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967115,
+ "username": "itsdeeters",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2860",
+ "contributors": [
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 921.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 155.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2786",
+ "contributors": [
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "5533",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 432.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 280.78,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 253.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967115,
+ "username": "itsdeeters",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2914",
+ "contributors": [
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 353.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 166.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 14966159,
+ "username": "bafrani",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14966159/medium/c51fc2b1e6cf7ef020396751ad9b854b.png"
+ },
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2898",
+ "contributors": [
+ {
+ "id": 15967115,
+ "username": "itsdeeters",
+ "totalCosts": 309.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ },
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 145.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 128.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 56.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967893,
+ "username": "apacala",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2778",
+ "contributors": [
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 87.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2776",
+ "contributors": [
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 144.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ },
+ {
+ "id": 14665754,
+ "username": "R3z4_Pr0gramm3r",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665754/medium/72c1f853dc01a48166c2ac4476d4a63a.png"
+ },
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6173",
+ "contributors": [
+ {
+ "id": 15099529,
+ "username": "Aria-Naraghi",
+ "totalCosts": 104.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
+ "totalCosts": 41.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2792",
+ "contributors": [
+ {
+ "id": 15097099,
+ "username": "nader.sedigh",
+ "totalCosts": 286.84,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png"
+ },
+ {
+ "id": 15233666,
+ "username": "Alifarhani",
+ "totalCosts": 197.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
+ },
+ {
+ "id": 15967119,
+ "username": "timtey",
+ "totalCosts": 177.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
+ },
+ {
+ "id": 15967115,
+ "username": "itsdeeters",
+ "totalCosts": 173.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
+ },
+ {
+ "id": 15967125,
+ "username": "erfanej",
"totalCosts": 36.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png"
},
@@ -13761,7 +15363,7 @@
{
"id": 15099529,
"username": "Aria-Naraghi",
- "totalCosts": 1760.43,
+ "totalCosts": 1754.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png"
},
{
@@ -13837,7 +15439,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 713.06,
+ "totalCosts": 676.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
},
{
@@ -13890,7 +15492,7 @@
{
"id": 15967893,
"username": "apacala",
- "totalCosts": 344.41,
+ "totalCosts": 286.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png"
},
{
@@ -13966,13 +15568,13 @@
{
"id": 15967115,
"username": "itsdeeters",
- "totalCosts": 90.9,
+ "totalCosts": 86.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png"
},
{
"id": 14814690,
"username": "khodaarahmi",
- "totalCosts": 74.74,
+ "totalCosts": 70.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814690/medium/22dbf1e43823e76cb094bff3fdcca212.jpeg"
},
{
@@ -13984,7 +15586,7 @@
{
"id": 15233666,
"username": "Alifarhani",
- "totalCosts": 19.19,
+ "totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
}
]
@@ -14042,7 +15644,7 @@
{
"id": 15233666,
"username": "Alifarhani",
- "totalCosts": 540.35,
+ "totalCosts": 536.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
},
{
@@ -14065,7 +15667,7 @@
{
"id": 15233666,
"username": "Alifarhani",
- "totalCosts": 1720.03,
+ "totalCosts": 1715.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg"
},
{
@@ -14186,7 +15788,7 @@
{
"id": 15144242,
"username": "sharifi.masoud",
- "totalCosts": 1069.59,
+ "totalCosts": 1054.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144242/medium/afcb9846e0abee60cd0b4755effdebac.jpg"
},
{
@@ -14334,7 +15936,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 1981.62,
+ "totalCosts": 1976.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
},
{
@@ -14505,7 +16107,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 3233.01,
+ "totalCosts": 3208.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
},
{
@@ -14523,7 +16125,7 @@
{
"id": 15967119,
"username": "timtey",
- "totalCosts": 34.34,
+ "totalCosts": 23.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg"
},
{
@@ -14557,7 +16159,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 1820.02,
+ "totalCosts": 1807.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
},
{
@@ -14664,13 +16266,13 @@
{
"id": 15967239,
"username": "MahdiRezaeian",
- "totalCosts": 853.45,
+ "totalCosts": 850.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967239/medium/a3fdd1e460fca7c1a39ec8f00a4ad059_default.png"
},
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 801.94,
+ "totalCosts": 798.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
}
]
@@ -14727,7 +16329,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 589.84,
+ "totalCosts": 586.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
}
]
@@ -14738,7 +16340,7 @@
{
"id": 15955625,
"username": "Coiniran",
- "totalCosts": 1270.58,
+ "totalCosts": 1240.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png"
},
{
@@ -14760,7 +16362,7 @@
{
"id": 15185884,
"username": "carmen1912",
- "totalCosts": 505,
+ "totalCosts": 447.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
{
@@ -14775,6 +16377,12 @@
"totalCosts": 64.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
+ {
+ "id": 15954931,
+ "username": "XofEE",
+ "totalCosts": 35.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
+ },
{
"id": 14758970,
"username": "JJulles",
@@ -14854,7 +16462,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 66.66,
+ "totalCosts": 67.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -14983,13 +16591,13 @@
{
"id": 13249257,
"username": "SuperDelphi",
- "totalCosts": 468.64,
+ "totalCosts": 445.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png"
},
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 131.3,
+ "totalCosts": 124.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -15228,22 +16836,22 @@
{
"fileId": "6412",
"contributors": [
- {
- "id": 12844463,
- "username": "MATsxm",
- "totalCosts": 464.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
- },
{
"id": 17361,
"username": "plamarque",
"totalCosts": 459.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 455.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 13249257,
"username": "SuperDelphi",
- "totalCosts": 310.07,
+ "totalCosts": 288.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png"
},
{
@@ -15319,7 +16927,7 @@
{
"id": 14862460,
"username": "vdusart",
- "totalCosts": 1232.2,
+ "totalCosts": 1217.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png"
},
{
@@ -15349,7 +16957,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 30.3,
+ "totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
@@ -15419,13 +17027,13 @@
{
"id": 15682041,
"username": "Joker71293921",
- "totalCosts": 1187.76,
+ "totalCosts": 1159.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15682041/medium/e62239d0be9e3327d12dd221caf5bd97.jpg"
},
{
"id": 14823260,
"username": "omahs",
- "totalCosts": 417.13,
+ "totalCosts": 415.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg"
},
{
@@ -15437,7 +17045,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 27.27,
+ "totalCosts": 55.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -15877,18 +17485,18 @@
"totalCosts": 175.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15426512/medium/3d6568dc6e76931cee4766ecb4c3163a.jpg"
},
- {
- "id": 12844463,
- "username": "MATsxm",
- "totalCosts": 68.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
- },
{
"id": 15185884,
"username": "carmen1912",
"totalCosts": 67.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 62.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 14587094,
"username": "Fabs86",
@@ -15898,7 +17506,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 32.32,
+ "totalCosts": 46.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
}
]
@@ -16206,7 +17814,7 @@
{
"id": 15442454,
"username": "Im-SpiETH",
- "totalCosts": 828.2,
+ "totalCosts": 768.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
},
{
@@ -16215,12 +17823,24 @@
"totalCosts": 590.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png"
},
+ {
+ "id": 15466824,
+ "username": "Niainarisoa",
+ "totalCosts": 187.86,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15466824/medium/a5fd6d5af3cb8d37ce7784e9c70237a6.png"
+ },
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 140.39,
+ "totalCosts": 116.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 91.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 14823260,
"username": "omahs",
@@ -16232,12 +17852,6 @@
"username": "mehdibouzit",
"totalCosts": 17.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png"
- },
- {
- "id": 12844463,
- "username": "MATsxm",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
},
@@ -16708,19 +18322,19 @@
{
"id": 15624473,
"username": "CaverneCrypto",
- "totalCosts": 1783.66,
+ "totalCosts": 1770.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png"
},
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 1275.63,
+ "totalCosts": 1265.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
"id": 17361,
"username": "plamarque",
- "totalCosts": 424.2,
+ "totalCosts": 415.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
},
{
@@ -16744,7 +18358,7 @@
{
"id": 15085937,
"username": "LeBrocanteur",
- "totalCosts": 65.65,
+ "totalCosts": 63.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085937/medium/cae4de0cb475627b949a1c40efb71eed.png"
},
{
@@ -16785,7 +18399,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 2288.66,
+ "totalCosts": 2275.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -16854,7 +18468,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 150.49,
+ "totalCosts": 164.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -16887,12 +18501,6 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15426512/medium/3d6568dc6e76931cee4766ecb4c3163a.jpg"
},
- {
- "id": 16014683,
- "username": "pierredogui",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014683/medium/8dc8d59a7a6e2830c84d1a23f5d1814f.jpeg"
- },
{
"id": 14587890,
"username": "Elikill58",
@@ -16937,7 +18545,7 @@
{
"id": 15683863,
"username": "zeyadoun12",
- "totalCosts": 82.82,
+ "totalCosts": 81.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15683863/medium/1d6ed972d684360bf9f45bafbabe6c6f.jpeg"
},
{
@@ -16996,7 +18604,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 289.87,
+ "totalCosts": 306.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -17043,7 +18651,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 1056.46,
+ "totalCosts": 1046.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
{
@@ -17052,6 +18660,12 @@
"totalCosts": 86.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15683863/medium/1d6ed972d684360bf9f45bafbabe6c6f.jpeg"
},
+ {
+ "id": 16223056,
+ "username": "amanoullah",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16223056/medium/dd51015ea92987bd3b19ef23b97095ac.png"
+ },
{
"id": 14587890,
"username": "Elikill58",
@@ -17281,7 +18895,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 317.14,
+ "totalCosts": 306.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
@@ -17398,7 +19012,7 @@
{
"id": 15624473,
"username": "CaverneCrypto",
- "totalCosts": 3076.46,
+ "totalCosts": 3049.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png"
},
{
@@ -17413,6 +19027,12 @@
"totalCosts": 49.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
},
+ {
+ "id": 16223056,
+ "username": "amanoullah",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16223056/medium/dd51015ea92987bd3b19ef23b97095ac.png"
+ },
{
"id": 15318490,
"username": "arthursw",
@@ -17474,13 +19094,13 @@
{
"id": 15426512,
"username": "Recktosaurus",
- "totalCosts": 654.48,
+ "totalCosts": 639.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15426512/medium/3d6568dc6e76931cee4766ecb4c3163a.jpg"
},
{
"id": 15385196,
"username": "Mcrypto",
- "totalCosts": 86.86,
+ "totalCosts": 71.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15385196/medium/0540414f2afb6ad01aef4a67479750b8.jpg"
},
{
@@ -17489,6 +19109,12 @@
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
+ {
+ "id": 15954931,
+ "username": "XofEE",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
+ },
{
"id": 14933025,
"username": "EdgyLsx",
@@ -17599,6 +19225,12 @@
"username": "omahs",
"totalCosts": 157.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg"
+ },
+ {
+ "id": 16223056,
+ "username": "amanoullah",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16223056/medium/dd51015ea92987bd3b19ef23b97095ac.png"
}
]
},
@@ -17608,7 +19240,7 @@
{
"id": 14737644,
"username": "DylanCONIN",
- "totalCosts": 973.64,
+ "totalCosts": 956.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737644/medium/d981e7d9ae1b98b7e8a21245675fc0e0.jpg"
},
{
@@ -17626,7 +19258,7 @@
{
"id": 14587890,
"username": "Elikill58",
- "totalCosts": 35.35,
+ "totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587890/medium/1d5b3a9de8a7b7f6082357f1fe99d654.jpeg"
}
]
@@ -17807,7 +19439,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 311.08,
+ "totalCosts": 303,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -17822,6 +19454,12 @@
"totalCosts": 17.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14181997/medium/0aaf4c266fa4700ccec8bcadb09440b6.jpg"
},
+ {
+ "id": 16223056,
+ "username": "amanoullah",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16223056/medium/dd51015ea92987bd3b19ef23b97095ac.png"
+ },
{
"id": 17361,
"username": "plamarque",
@@ -18023,7 +19661,7 @@
{
"id": 14737644,
"username": "DylanCONIN",
- "totalCosts": 354.51,
+ "totalCosts": 352.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737644/medium/d981e7d9ae1b98b7e8a21245675fc0e0.jpg"
},
{
@@ -18053,7 +19691,7 @@
{
"id": 14587890,
"username": "Elikill58",
- "totalCosts": 7.07,
+ "totalCosts": 4.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587890/medium/1d5b3a9de8a7b7f6082357f1fe99d654.jpeg"
}
]
@@ -18064,7 +19702,7 @@
{
"id": 14737644,
"username": "DylanCONIN",
- "totalCosts": 619.13,
+ "totalCosts": 617.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737644/medium/d981e7d9ae1b98b7e8a21245675fc0e0.jpg"
},
{
@@ -18076,7 +19714,7 @@
{
"id": 14587890,
"username": "Elikill58",
- "totalCosts": 5.05,
+ "totalCosts": 2.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587890/medium/1d5b3a9de8a7b7f6082357f1fe99d654.jpeg"
}
]
@@ -18192,7 +19830,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 335.32,
+ "totalCosts": 348.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -18298,19 +19936,19 @@
{
"id": 15023979,
"username": "moirauche",
- "totalCosts": 800.93,
+ "totalCosts": 673.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15023979/medium/9912737b3db1845917c3c8cc9a1f2d7a_default.png"
},
{
"id": 14989997,
"username": "Sirlupinwatson1",
- "totalCosts": 531.26,
+ "totalCosts": 512.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14989997/medium/58dac31cb4d977a29d3caf7d37e7cd45.jpeg"
},
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 306.03,
+ "totalCosts": 283.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -18319,12 +19957,6 @@
"totalCosts": 107.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15138122/medium/8ff6cf249d17f4ce0c96218ee9d81c06_default.png"
},
- {
- "id": 15415492,
- "username": "sashasrs",
- "totalCosts": 53.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15415492/medium/3fa311e4cb49b48849796356395333e8.jpg"
- },
{
"id": 15954931,
"username": "XofEE",
@@ -18337,18 +19969,18 @@
"totalCosts": 44.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996665/medium/d9d39ce06d506da97c2bad107ed016c5.png"
},
+ {
+ "id": 15415492,
+ "username": "sashasrs",
+ "totalCosts": 39.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15415492/medium/3fa311e4cb49b48849796356395333e8.jpg"
+ },
{
"id": 15624473,
"username": "CaverneCrypto",
"totalCosts": 16.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png"
},
- {
- "id": 15144292,
- "username": "ytison",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144292/medium/303a9c200ea05f3a6af7273b3e21c301_default.png"
- },
{
"id": 14675712,
"username": "LEMIBANDDEXARI",
@@ -19154,7 +20786,7 @@
{
"id": 14750044,
"username": "eloise.emery",
- "totalCosts": 961.52,
+ "totalCosts": 926.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14750044/medium/9e793da12e9905e4598d0e0a2e191289.jpeg"
},
{
@@ -19163,6 +20795,12 @@
"totalCosts": 63.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14635054/medium/92dc7e601ce7911daafcfaecb875e0cd.jpeg"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 15624473,
"username": "CaverneCrypto",
@@ -19375,13 +21013,13 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 332.29,
+ "totalCosts": 345.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
"id": 13249257,
"username": "SuperDelphi",
- "totalCosts": 319.16,
+ "totalCosts": 301.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png"
},
{
@@ -19428,7 +21066,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 125.24,
+ "totalCosts": 134.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -19451,13 +21089,13 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 104.03,
+ "totalCosts": 111.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
"id": 13473469,
"username": "jules.seigneur77",
- "totalCosts": 92.92,
+ "totalCosts": 80.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13473469/medium/4118d6e220ce9b45529503a39159dc48.jpg"
},
{
@@ -19791,13 +21429,13 @@
{
"id": 17361,
"username": "plamarque",
- "totalCosts": 725.18,
+ "totalCosts": 719.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
},
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 189.88,
+ "totalCosts": 212.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -19812,12 +21450,6 @@
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15689365/medium/69a7b82eee2a901151a0414599bdf30f_default.png"
},
- {
- "id": 14075861,
- "username": "Kler",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14075861/medium/a3cf69cc209acc2c520607aab4d1c615.jpeg"
- },
{
"id": 15188420,
"username": "ThomasErhel",
@@ -19968,7 +21600,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 135.34,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -20033,7 +21665,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 1297.85,
+ "totalCosts": 1261.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -20193,13 +21825,13 @@
{
"id": 14823260,
"username": "omahs",
- "totalCosts": 291.89,
+ "totalCosts": 287.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg"
},
{
"id": 13249257,
"username": "SuperDelphi",
- "totalCosts": 81.81,
+ "totalCosts": 71.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png"
},
{
@@ -20346,7 +21978,7 @@
{
"id": 15302370,
"username": "Manusxb",
- "totalCosts": 451.47,
+ "totalCosts": 447.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15302370/medium/9f944ffeaa451f3c2ea156478533b41f_default.png"
},
{
@@ -20387,7 +22019,7 @@
{
"id": 17361,
"username": "plamarque",
- "totalCosts": 695.89,
+ "totalCosts": 691.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
},
{
@@ -20546,7 +22178,7 @@
{
"id": 14075861,
"username": "Kler",
- "totalCosts": 12842.15,
+ "totalCosts": 12822.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14075861/medium/a3cf69cc209acc2c520607aab4d1c615.jpeg"
},
{
@@ -20570,7 +22202,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 99.99,
+ "totalCosts": 119.18,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
{
@@ -20629,7 +22261,7 @@
{
"id": 15442454,
"username": "Im-SpiETH",
- "totalCosts": 933.24,
+ "totalCosts": 909,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
},
{
@@ -20677,7 +22309,7 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 8.08,
+ "totalCosts": 32.32,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
},
{
@@ -20878,17 +22510,17 @@
"totalCosts": 928.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 15829153,
"username": "Francoisc23",
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15829153/medium/8817724f0106278d9bdcb040991d7842_default.png"
- },
- {
- "id": 12844463,
- "username": "MATsxm",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
},
@@ -20957,7 +22589,7 @@
{
"id": 14704668,
"username": "phrobinet",
- "totalCosts": 143.42,
+ "totalCosts": 132.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14704668/medium/f456203d0a45823ded3c364a95f57f3e.jpeg"
},
{
@@ -21543,7 +23175,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 520.15,
+ "totalCosts": 515.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
{
@@ -21551,6 +23183,12 @@
"username": "hdmed",
"totalCosts": 71.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13324494/medium/e15dc911ade7cf545aeb847438d6742c.jpeg"
+ },
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
},
@@ -21577,8 +23215,14 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 681.75,
+ "totalCosts": 668.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
+ },
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
},
@@ -21639,13 +23283,13 @@
{
"id": 14823260,
"username": "omahs",
- "totalCosts": 223.21,
+ "totalCosts": 209.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg"
},
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 71.71,
+ "totalCosts": 85.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
@@ -21741,7 +23385,7 @@
{
"id": 15442454,
"username": "Im-SpiETH",
- "totalCosts": 669.63,
+ "totalCosts": 630.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
},
{
@@ -21759,8 +23403,14 @@
{
"id": 12844463,
"username": "MATsxm",
- "totalCosts": 3.03,
+ "totalCosts": 58.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
+ {
+ "id": 15466824,
+ "username": "Niainarisoa",
+ "totalCosts": 39.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15466824/medium/a5fd6d5af3cb8d37ce7784e9c70237a6.png"
}
]
},
@@ -21781,7 +23431,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 2135.14,
+ "totalCosts": 2115.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
{
@@ -21789,6 +23439,12 @@
"username": "omahs",
"totalCosts": 224.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg"
+ },
+ {
+ "id": 15466824,
+ "username": "Niainarisoa",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15466824/medium/a5fd6d5af3cb8d37ce7784e9c70237a6.png"
}
]
},
@@ -22246,7 +23902,7 @@
{
"id": 15954931,
"username": "XofEE",
- "totalCosts": 1808.91,
+ "totalCosts": 1796.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png"
},
{
@@ -22254,6 +23910,12 @@
"username": "plamarque",
"totalCosts": 731.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
+ },
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
}
]
},
@@ -22265,12 +23927,6 @@
"username": "Im-SpiETH",
"totalCosts": 492.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
- },
- {
- "id": 15318490,
- "username": "arthursw",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15318490/medium/673173431aeb53f29ca5516e9aa87bec_default.png"
}
]
},
@@ -22289,12 +23945,6 @@
"totalCosts": 372.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png"
},
- {
- "id": 12844463,
- "username": "MATsxm",
- "totalCosts": 25.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
- },
{
"id": 15954931,
"username": "XofEE",
@@ -22427,9 +24077,15 @@
{
"id": 15914449,
"username": "CoinHoodie",
- "totalCosts": 1276.64,
+ "totalCosts": 1246.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg"
},
+ {
+ "id": 12844463,
+ "username": "MATsxm",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg"
+ },
{
"id": 14823260,
"username": "omahs",
@@ -22586,7 +24242,7 @@
{
"id": 15363678,
"username": "Dawyer",
- "totalCosts": 1168.57,
+ "totalCosts": 1153.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png"
},
{
@@ -22641,18 +24297,18 @@
"totalCosts": 1223.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
},
- {
- "id": 15956379,
- "username": "bhangbuddy",
- "totalCosts": 232.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png"
- },
{
"id": 15950093,
"username": "WholesomeBruh",
"totalCosts": 208.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png"
},
+ {
+ "id": 15956379,
+ "username": "bhangbuddy",
+ "totalCosts": 204.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png"
+ },
{
"id": 15363678,
"username": "Dawyer",
@@ -22684,14 +24340,8 @@
{
"id": 15950093,
"username": "WholesomeBruh",
- "totalCosts": 716.09,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png"
- },
- {
- "id": 15363678,
- "username": "Dawyer",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png"
}
]
},
@@ -22770,7 +24420,7 @@
{
"id": 15956379,
"username": "bhangbuddy",
- "totalCosts": 723.16,
+ "totalCosts": 700.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png"
},
{
@@ -22917,7 +24567,7 @@
{
"id": 15363678,
"username": "Dawyer",
- "totalCosts": 327.24,
+ "totalCosts": 323.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png"
},
{
@@ -22940,7 +24590,7 @@
{
"id": 15967185,
"username": "waseemnaik",
- "totalCosts": 2059.39,
+ "totalCosts": 2057.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
}
]
@@ -23003,7 +24653,7 @@
{
"id": 15967185,
"username": "waseemnaik",
- "totalCosts": 1321.08,
+ "totalCosts": 1296.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
},
{
@@ -23108,7 +24758,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 928.19,
+ "totalCosts": 876.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23125,7 +24775,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 555.5,
+ "totalCosts": 644.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23139,17 +24789,17 @@
{
"fileId": "2868",
"contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 209.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ },
{
"id": 14357794,
"username": "robertdosa",
"totalCosts": 186.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png"
- },
- {
- "id": 15965461,
- "username": "Satglow",
- "totalCosts": 168.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
},
@@ -23165,7 +24815,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 134.33,
+ "totalCosts": 165.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -23210,7 +24860,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1303.91,
+ "totalCosts": 1318.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23324,7 +24974,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 184.83,
+ "totalCosts": 232.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -23369,7 +25019,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1813.96,
+ "totalCosts": 1821.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23392,7 +25042,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 216.14,
+ "totalCosts": 246.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23420,7 +25070,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 933.24,
+ "totalCosts": 953.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23437,7 +25087,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 666.6,
+ "totalCosts": 684.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23477,7 +25127,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1609.94,
+ "totalCosts": 1608.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23494,7 +25144,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 3362.29,
+ "totalCosts": 4213.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23517,7 +25167,7 @@
{
"id": 14357794,
"username": "robertdosa",
- "totalCosts": 110.09,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png"
},
{
@@ -23619,7 +25269,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 281.79,
+ "totalCosts": 270.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23636,7 +25286,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 238.36,
+ "totalCosts": 227.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -23738,7 +25388,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 13.13,
+ "totalCosts": 39.39,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -23777,7 +25427,7 @@
{
"id": 14357794,
"username": "robertdosa",
- "totalCosts": 395.92,
+ "totalCosts": 390.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png"
},
{
@@ -23806,7 +25456,7 @@
{
"id": 14357794,
"username": "robertdosa",
- "totalCosts": 626.2,
+ "totalCosts": 621.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png"
},
{
@@ -23857,7 +25507,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 809.01,
+ "totalCosts": 827.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -23880,7 +25530,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 98.98,
+ "totalCosts": 102.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24051,7 +25701,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 488.84,
+ "totalCosts": 507.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -24103,7 +25753,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1058.48,
+ "totalCosts": 1050.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
},
{
@@ -24115,7 +25765,7 @@
{
"id": 15616701,
"username": "Wegonar",
- "totalCosts": 62.62,
+ "totalCosts": 47.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15616701/medium/107a9002aa59a9dab9854283b420a57b.jpeg"
},
{
@@ -24154,7 +25804,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 905.97,
+ "totalCosts": 906.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24198,7 +25848,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 606,
+ "totalCosts": 575.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24364,7 +26014,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 718.11,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24414,7 +26064,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 957.48,
+ "totalCosts": 953.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24425,7 +26075,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 2059.39,
+ "totalCosts": 2057.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24524,7 +26174,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 802.95,
+ "totalCosts": 869.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24712,7 +26362,7 @@
{
"id": 14357794,
"username": "robertdosa",
- "totalCosts": 1365.52,
+ "totalCosts": 1334.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png"
},
{
@@ -24779,7 +26429,7 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1131.2,
+ "totalCosts": 1105.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24878,7 +26528,95 @@
{
"id": 15965461,
"username": "Satglow",
- "totalCosts": 1286.74,
+ "totalCosts": 1294.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7328",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7340",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 1816.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7334",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 1016.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7336",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 965.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7483",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 773.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6568",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 2327.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6572",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 385.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "8011",
+ "contributors": [
+ {
+ "id": 15965461,
+ "username": "Satglow",
+ "totalCosts": 1124.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png"
}
]
@@ -24900,7 +26638,7 @@
{
"id": 15594493,
"username": "0xceife",
- "totalCosts": 312.09,
+ "totalCosts": 254.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15594493/medium/ada4e2f5276b6085495631bb59486bc8.gif"
},
{
@@ -24958,7 +26696,7 @@
{
"id": 14861756,
"username": "RahayuRafika_12",
- "totalCosts": 192.91,
+ "totalCosts": 186.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg"
}
]
@@ -25015,13 +26753,13 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 472.68,
+ "totalCosts": 449.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
"id": 14861756,
"username": "RahayuRafika_12",
- "totalCosts": 122.21,
+ "totalCosts": 115.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg"
}
]
@@ -25066,7 +26804,7 @@
{
"id": 15591667,
"username": "Rohmen",
- "totalCosts": 660.54,
+ "totalCosts": 655.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15591667/medium/73757d8bd29406cc7984633838c7abdc_default.png"
},
{
@@ -25217,7 +26955,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 1515,
+ "totalCosts": 1505.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -25334,7 +27072,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 54.54,
+ "totalCosts": 48.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -25685,13 +27423,13 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 2455.31,
+ "totalCosts": 2439.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1162.51,
+ "totalCosts": 1152.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
}
]
@@ -25743,7 +27481,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 986.77,
+ "totalCosts": 972.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -25766,7 +27504,7 @@
{
"id": 15934037,
"username": "fuji.anggara10",
- "totalCosts": 707,
+ "totalCosts": 705.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg"
},
{
@@ -25864,13 +27602,13 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 187.86,
+ "totalCosts": 176.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
"id": 14861756,
"username": "RahayuRafika_12",
- "totalCosts": 110.09,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg"
},
{
@@ -25887,7 +27625,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 516.11,
+ "totalCosts": 505,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -25910,7 +27648,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 460.56,
+ "totalCosts": 449.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -25950,7 +27688,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 202,
+ "totalCosts": 190.89,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -25996,7 +27734,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 261.59,
+ "totalCosts": 250.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -26025,7 +27763,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 166.65,
+ "totalCosts": 155.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -26100,7 +27838,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 750.43,
+ "totalCosts": 735.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -26199,7 +27937,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1475.61,
+ "totalCosts": 1452.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
}
]
@@ -26296,7 +28034,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 870.62,
+ "totalCosts": 862.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -26440,7 +28178,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 440.36,
+ "totalCosts": 435.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -26457,7 +28195,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 661.55,
+ "totalCosts": 656.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -26595,13 +28333,13 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1060.5,
+ "totalCosts": 858.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 266.64,
+ "totalCosts": 231.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -27176,7 +28914,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1015.05,
+ "totalCosts": 979.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -27324,7 +29062,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1050.4,
+ "totalCosts": 1033.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
}
]
@@ -27352,7 +29090,7 @@
{
"id": 14730600,
"username": "Datenshi",
- "totalCosts": 290.88,
+ "totalCosts": 278.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14730600/medium/562d4270c70922086fe1ce42f079e984.jpg"
},
{
@@ -27407,18 +29145,18 @@
{
"fileId": "6183",
"contributors": [
+ {
+ "id": 14708760,
+ "username": "hypebeans",
+ "totalCosts": 306.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/c99d5e08a676eaebe6f2a383a81222e1.jpg"
+ },
{
"id": 15927303,
"username": "roifnaufal21",
"totalCosts": 217.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
- {
- "id": 14708760,
- "username": "hypebeans",
- "totalCosts": 65.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/c99d5e08a676eaebe6f2a383a81222e1.jpg"
- },
{
"id": 14866604,
"username": "yeremiaryangunadi",
@@ -27519,7 +29257,7 @@
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 1598.83,
+ "totalCosts": 1592.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
@@ -27601,9 +29339,15 @@
{
"id": 14708760,
"username": "hypebeans",
- "totalCosts": 218.16,
+ "totalCosts": 235.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/c99d5e08a676eaebe6f2a383a81222e1.jpg"
},
+ {
+ "id": 15711553,
+ "username": "iamgorgasiagian",
+ "totalCosts": 95.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15711553/medium/78d86636558fbd59511b5c714ae72f78.jpeg"
+ },
{
"id": 15752359,
"username": "feriywahyu",
@@ -27624,7 +29368,7 @@
{
"id": 15934037,
"username": "fuji.anggara10",
- "totalCosts": 710.03,
+ "totalCosts": 673.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg"
},
{
@@ -27671,7 +29415,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 1690.74,
+ "totalCosts": 1636.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -27753,7 +29497,7 @@
{
"id": 15588533,
"username": "jundullah",
- "totalCosts": 1947.28,
+ "totalCosts": 1932.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15588533/medium/18dbcb324d075828b211bb018e359ebc.jpg"
},
{
@@ -27812,7 +29556,7 @@
{
"id": 14861756,
"username": "RahayuRafika_12",
- "totalCosts": 56.56,
+ "totalCosts": 28.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg"
},
{
@@ -27858,19 +29602,19 @@
{
"id": 15775647,
"username": "utomo878",
- "totalCosts": 328.25,
+ "totalCosts": 322.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg"
},
{
"id": 14866604,
"username": "yeremiaryangunadi",
- "totalCosts": 85.85,
+ "totalCosts": 75.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png"
},
{
"id": 15627063,
"username": "hudaxpropesor",
- "totalCosts": 9.09,
+ "totalCosts": 7.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15627063/medium/b348c090a5a9288af23d49260b2479c2.png"
}
]
@@ -27980,7 +29724,7 @@
{
"id": 15775647,
"username": "utomo878",
- "totalCosts": 921.12,
+ "totalCosts": 917.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg"
},
{
@@ -28003,7 +29747,7 @@
{
"id": 15662523,
"username": "Jokowdd",
- "totalCosts": 852.44,
+ "totalCosts": 850.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG"
},
{
@@ -28173,7 +29917,7 @@
{
"id": 14861756,
"username": "RahayuRafika_12",
- "totalCosts": 329.26,
+ "totalCosts": 317.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg"
}
]
@@ -28348,7 +30092,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 1286.74,
+ "totalCosts": 1256.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
}
]
@@ -28359,7 +30103,7 @@
{
"id": 15927303,
"username": "roifnaufal21",
- "totalCosts": 8832.45,
+ "totalCosts": 8813.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png"
},
{
@@ -28417,14 +30161,14 @@
{
"id": 15185884,
"username": "carmen1912",
- "totalCosts": 491.87,
+ "totalCosts": 434.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 79.79,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14786554,
@@ -28469,9 +30213,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1308.96,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -28498,9 +30242,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -28515,9 +30259,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 121.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 115.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -28556,9 +30300,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 33.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -28579,9 +30323,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 198.97,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15101201,
@@ -28608,9 +30352,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 40.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15498288,
@@ -28626,19 +30370,19 @@
{
"id": 14657804,
"username": "jhonnyvianello",
- "totalCosts": 378.75,
+ "totalCosts": 362.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14657804/medium/005d9fa70fdc5a4fcd818f63cf61e1a0.jpg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 124.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 117.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15101201,
"username": "andreapiani.dev",
- "totalCosts": 89.89,
+ "totalCosts": 82.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101201/medium/e83a56185107895cbc97cbd279ecf901.jpg"
},
{
@@ -28660,9 +30404,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 265.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15216898,
@@ -28683,9 +30427,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 178.77,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 16073436,
@@ -28706,9 +30450,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 149.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28723,9 +30467,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 205.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -28734,9 +30478,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 325.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28751,9 +30495,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 221.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28774,9 +30518,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 160.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28791,9 +30535,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 788.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28814,9 +30558,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 467.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28843,9 +30587,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1176.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28866,9 +30610,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 136.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -28895,14 +30639,14 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1431.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1405.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
"username": "jhonnyvianello",
- "totalCosts": 484.8,
+ "totalCosts": 465.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14657804/medium/005d9fa70fdc5a4fcd818f63cf61e1a0.jpg"
},
{
@@ -28942,9 +30686,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1239.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1236.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14963383,
@@ -28977,9 +30721,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 2214.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 2199.78,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 16061752,
@@ -28994,9 +30738,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2854.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -29029,9 +30773,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1707.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1677.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15747281,
@@ -29052,9 +30796,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 877.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14558188,
@@ -29105,9 +30849,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 53.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -29128,9 +30872,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 172.71,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29157,9 +30901,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1730.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1721.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -29180,9 +30924,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 536.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29239,9 +30983,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 644.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -29262,9 +31006,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 5239.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29273,9 +31017,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 792.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 753.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -29296,9 +31040,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1079.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15828035,
@@ -29313,9 +31057,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 2325.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 2305.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -29342,9 +31086,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1105.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29353,9 +31097,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 689.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 683.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -29382,9 +31126,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 968.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29393,9 +31137,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1352.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15721133,
@@ -29428,9 +31172,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 828.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -29445,9 +31189,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 685.79,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29474,9 +31218,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 455.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29497,9 +31241,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1731.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -29520,9 +31264,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 994.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 16171038,
@@ -29537,9 +31281,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 576.71,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29554,9 +31298,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 276.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14963383,
@@ -29589,9 +31333,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1580.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29642,9 +31386,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 162.61,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14923593,
@@ -29677,9 +31421,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29688,14 +31432,14 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1895.77,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1836.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
"username": "hyperalchemy",
- "totalCosts": 140.39,
+ "totalCosts": 116.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946127/medium/fb8809671278895b42cf50c752fd7bf2.png"
}
]
@@ -29705,9 +31449,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1115.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29716,9 +31460,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1174.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29727,9 +31471,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 735.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -29750,9 +31494,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 202,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -29773,9 +31517,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 365.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29790,9 +31534,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 414.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -29843,9 +31587,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 67.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14647238,
@@ -29866,9 +31610,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 147.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -29895,9 +31639,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 156.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14970323,
@@ -29942,9 +31686,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 102.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -29953,9 +31697,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 699.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14976781,
@@ -29976,9 +31720,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 667.61,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14586142,
@@ -30005,14 +31749,14 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1765.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1753.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
"username": "andrea0x.eth",
- "totalCosts": 1747.3,
+ "totalCosts": 1734.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg"
},
{
@@ -30028,9 +31772,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 2230.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 2216.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30045,9 +31789,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 388.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30056,9 +31800,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 370.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -30091,9 +31835,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1067.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15813703,
@@ -30108,9 +31852,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 334.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -30131,9 +31875,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1134.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30149,14 +31893,14 @@
{
"id": 15946127,
"username": "hyperalchemy",
- "totalCosts": 505,
+ "totalCosts": 490.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946127/medium/fb8809671278895b42cf50c752fd7bf2.png"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 437.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -30195,9 +31939,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1490.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30206,9 +31950,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 725.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30217,9 +31961,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 288.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 287.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -30252,9 +31996,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 560.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30275,9 +32019,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1501.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1491.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15587175,
@@ -30298,9 +32042,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 221.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30308,16 +32052,16 @@
"fileId": "2736",
"contributors": [
{
- "id": 14633448,
- "username": "ilrado",
- "totalCosts": 93.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg"
+ "id": 13461670,
+ "username": "Herbie_23",
+ "totalCosts": 82.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
- "id": 13461670,
- "username": "GiorgioHerbie",
+ "id": 14633448,
+ "username": "ilrado",
"totalCosts": 82.82,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg"
},
{
"id": 14665128,
@@ -30332,9 +32076,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 238.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -30349,9 +32093,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 127.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14677210,
@@ -30366,9 +32110,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 110.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -30383,9 +32127,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 67.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -30400,9 +32144,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 159.58,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14786554,
@@ -30441,9 +32185,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 271.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -30464,9 +32208,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 324.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 313.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30475,9 +32219,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 35.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15051821,
@@ -30498,9 +32242,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 391.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14313472,
@@ -30545,9 +32289,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 4144.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 4116.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30568,9 +32312,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2369.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -30585,9 +32329,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 743.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 728.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -30602,9 +32346,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 3588.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -30619,9 +32363,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1821.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30642,9 +32386,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 3671.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 3660.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30660,19 +32404,19 @@
{
"id": 14686678,
"username": "ametel01",
- "totalCosts": 1235.23,
+ "totalCosts": 1212,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14686678/medium/42da64bc8743fcf14d7efc7aaebbd99f.jpeg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1195.84,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14648126,
"username": "vittoria.f",
- "totalCosts": 123.22,
+ "totalCosts": 122.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14648126/medium/7a5e23a63ce4d36422d0adb108c16ea0.png"
}
]
@@ -30688,9 +32432,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 94.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30699,9 +32443,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 815.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -30716,9 +32460,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 311.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -30739,9 +32483,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 660.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -30756,9 +32500,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 737.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 729.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -30791,9 +32535,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1029.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -30808,9 +32552,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 3939,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15503134,
@@ -30843,9 +32587,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 3269.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30854,9 +32598,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 189.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14669508,
@@ -30877,9 +32621,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 405.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15101201,
@@ -30895,14 +32639,14 @@
{
"id": 14633448,
"username": "ilrado",
- "totalCosts": 390.87,
+ "totalCosts": 385.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 147.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30911,9 +32655,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 738.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -30929,14 +32673,14 @@
{
"id": 14633448,
"username": "ilrado",
- "totalCosts": 622.16,
+ "totalCosts": 617.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 235.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -30951,9 +32695,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 105.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -30962,9 +32706,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 209.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14669508,
@@ -30985,9 +32729,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 443.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31020,9 +32764,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 748.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -31067,9 +32811,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 117.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31090,9 +32834,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1213.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 975.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31125,9 +32869,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 657.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -31142,9 +32886,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1347.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31165,9 +32909,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 379.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31176,9 +32920,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 859.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31187,9 +32931,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2128.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15124743,
@@ -31210,9 +32954,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 3524.9,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31239,9 +32983,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 672.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31262,9 +33006,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1000.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -31279,9 +33023,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1973.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15129553,
@@ -31320,9 +33064,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31331,9 +33075,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1540.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14313472,
@@ -31360,9 +33104,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 658.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15503134,
@@ -31407,9 +33151,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1648.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31424,9 +33168,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2153.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31435,9 +33179,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1596.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31446,9 +33190,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 383.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31457,9 +33201,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 349.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15101201,
@@ -31474,9 +33218,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1242.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14313472,
@@ -31497,9 +33241,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 864.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31525,9 +33269,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1285.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31536,9 +33280,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 419.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31547,9 +33291,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1355.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31558,9 +33302,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 738.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31569,9 +33313,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 4393.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 16073436,
@@ -31586,9 +33330,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 3512.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31597,9 +33341,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 4074.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31614,9 +33358,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 390.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15133131,
@@ -31631,9 +33375,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 471.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31659,9 +33403,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1027.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31670,9 +33414,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 449.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15956409,
@@ -31687,9 +33431,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2709.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31698,9 +33442,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1050.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1015.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31709,9 +33453,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 649.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31726,9 +33470,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31737,9 +33481,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 806.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 16073436,
@@ -31754,9 +33498,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1008.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31765,9 +33509,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 987.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -31788,9 +33532,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 738.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14786554,
@@ -31811,9 +33555,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 8109.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -31840,9 +33584,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 892.84,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 875.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14633448,
@@ -31863,9 +33607,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 78.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -31874,9 +33618,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 510.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 497.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14946101,
@@ -31891,9 +33635,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 851.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -31914,9 +33658,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 544.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14684140,
@@ -31943,9 +33687,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 113.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -31990,9 +33734,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 262.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -32031,9 +33775,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 267.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -32060,9 +33804,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 40.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -32077,9 +33821,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -32118,9 +33862,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 585.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -32134,18 +33878,18 @@
"totalCosts": 152.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15747281/medium/cb37f93c60bd9c25699ee6aa672c922c.jpeg"
},
- {
- "id": 14313472,
- "username": "ntotao",
- "totalCosts": 31.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14313472/medium/c09ed4450f8a65235c896745bd06abd0.jpg"
- },
{
"id": 15498288,
"username": "Zybe22",
"totalCosts": 26.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15498288/medium/e7f86893ff7c5de3946947caa3eae9a3_default.png"
},
+ {
+ "id": 14313472,
+ "username": "ntotao",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14313472/medium/c09ed4450f8a65235c896745bd06abd0.jpg"
+ },
{
"id": 15266690,
"username": "Fuliggine",
@@ -32165,9 +33909,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 297.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15757687,
@@ -32200,9 +33944,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 645.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15725045,
@@ -32217,9 +33961,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 320.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32228,9 +33972,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 371.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32239,9 +33983,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 656.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15757333,
@@ -32262,9 +34006,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 153.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -32291,9 +34035,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 145.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14600024,
@@ -32344,9 +34088,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 39.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15630617,
@@ -32385,9 +34129,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2466.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32396,9 +34140,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 384.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 348.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15120611,
@@ -32461,9 +34205,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1808.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1796.79,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14560192,
@@ -32484,9 +34228,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 495.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 492.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32501,9 +34245,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 431.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 406.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32512,9 +34256,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 2039.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 2002.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -32547,9 +34291,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1486.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32558,9 +34302,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1055.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32569,9 +34313,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 669.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 666.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32580,9 +34324,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 781.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32591,9 +34335,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 853.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 850.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32602,9 +34346,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1733.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32613,9 +34357,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2055.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32624,9 +34368,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 572.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 569.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32635,9 +34379,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1286.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1256.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32652,9 +34396,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 249.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14665128,
@@ -32676,14 +34420,14 @@
{
"id": 15266690,
"username": "Fuliggine",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 87.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 77.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15197398,
@@ -32698,9 +34442,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1334.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32709,9 +34453,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 594.89,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14657804,
@@ -32762,9 +34506,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 933.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 929.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -32779,9 +34523,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 2014.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 2012.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -32796,9 +34540,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1964.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 13754187,
@@ -32819,9 +34563,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1459.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32831,14 +34575,14 @@
{
"id": 14665128,
"username": "Pierlu_be",
- "totalCosts": 6786.19,
+ "totalCosts": 6767,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png"
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2980.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 14686678,
@@ -32889,9 +34633,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 1302.9,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 1278.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15747281,
@@ -32953,9 +34697,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1596.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15185884,
@@ -32976,9 +34720,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 122.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -32987,9 +34731,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 4116.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15721133,
@@ -33010,9 +34754,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2158.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33021,9 +34765,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1744.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33061,9 +34805,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1321.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33089,9 +34833,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 400.97,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33100,9 +34844,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 656.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33111,9 +34855,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 389.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33122,9 +34866,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 681.75,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "username": "Herbie_23",
+ "totalCosts": 668.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33144,9 +34888,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 173.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -33161,9 +34905,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33172,9 +34916,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 217.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33194,9 +34938,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1505.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15266690,
@@ -33228,9 +34972,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 2991.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33262,9 +35006,9 @@
"contributors": [
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 1463.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
}
]
},
@@ -33285,9 +35029,9 @@
},
{
"id": 13461670,
- "username": "GiorgioHerbie",
+ "username": "Herbie_23",
"totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
},
{
"id": 15946127,
@@ -33314,7 +35058,7 @@
{
"id": 15266690,
"username": "Fuliggine",
- "totalCosts": 1607.92,
+ "totalCosts": 1602.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg"
},
{
@@ -33340,18 +35084,18 @@
"totalCosts": 424.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png"
},
+ {
+ "id": 13461670,
+ "username": "Herbie_23",
+ "totalCosts": 54.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg"
+ },
{
"id": 15266690,
"username": "Fuliggine",
- "totalCosts": 59.59,
+ "totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg"
},
- {
- "id": 13461670,
- "username": "GiorgioHerbie",
- "totalCosts": 54.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png"
- },
{
"id": 16171038,
"username": "bianc8",
@@ -33382,7 +35126,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 582.77,
+ "totalCosts": 525.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -33493,7 +35237,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 17.17,
+ "totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -33579,13 +35323,13 @@
{
"id": 15169660,
"username": "kurotaky",
- "totalCosts": 464.6,
+ "totalCosts": 441.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15169660/medium/05e3e729e62f12747a7d06b8f27d3cf5.jpeg"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 122.21,
+ "totalCosts": 115.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -33843,7 +35587,7 @@
{
"id": 15275810,
"username": "sakamotomasayuki7",
- "totalCosts": 1446.32,
+ "totalCosts": 1394.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15275810/medium/3af3394e8787b462699f2e56425983a1.jpeg"
},
{
@@ -33861,7 +35605,7 @@
{
"id": 15384904,
"username": "_Sakura_",
- "totalCosts": 94.94,
+ "totalCosts": 91.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384904/medium/c2c00eb3c10ba62f1b8fee328e145fa6_default.png"
}
]
@@ -33872,7 +35616,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 488.84,
+ "totalCosts": 490.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -33932,6 +35676,12 @@
"username": "shoyu",
"totalCosts": 17.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14730036/medium/3f53daf0320c8412a99de867a0ca6d2c_default.png"
+ },
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
},
@@ -33941,7 +35691,7 @@
{
"id": 15680077,
"username": "miyamo",
- "totalCosts": 1524.09,
+ "totalCosts": 1493.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680077/medium/a9db402339c4ac996a32133a844692ef_default.png"
},
{
@@ -33953,7 +35703,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 27.27,
+ "totalCosts": 56.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -34135,13 +35885,13 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 2409.86,
+ "totalCosts": 2418.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
"id": 15460936,
"username": "tsukky",
- "totalCosts": 747.4,
+ "totalCosts": 738.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460936/medium/99ed6b4051dfcad3d1fa3e4cfaa17073.JPG"
},
{
@@ -34304,7 +36054,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 466.62,
+ "totalCosts": 500.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -34340,7 +36090,7 @@
{
"id": 15135089,
"username": "indwm",
- "totalCosts": 17.17,
+ "totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135089/medium/ad0dde7b6943eb1bdc2b8c64223dd070.png"
},
{
@@ -34573,7 +36323,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1975.56,
+ "totalCosts": 1987.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -34601,7 +36351,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1651.35,
+ "totalCosts": 1835.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -34996,13 +36746,13 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 3497.63,
+ "totalCosts": 3460.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
"id": 14880458,
"username": "sekisanchi",
- "totalCosts": 746.39,
+ "totalCosts": 741.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png"
},
{
@@ -35014,7 +36764,7 @@
{
"id": 14395884,
"username": "Frodo821",
- "totalCosts": 129.28,
+ "totalCosts": 127.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14395884/medium/be6488d24fd9f5ff7ac7d461e6cd6758.jpeg"
},
{
@@ -35031,7 +36781,7 @@
{
"id": 15458166,
"username": "tomohata.eth",
- "totalCosts": 2212.91,
+ "totalCosts": 2199.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15458166/medium/0ea3114dd4715ff746f20d57e43551e7.png"
},
{
@@ -35170,7 +36920,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 673.67,
+ "totalCosts": 672.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -35187,7 +36937,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 725.18,
+ "totalCosts": 741.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -35204,7 +36954,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 3538.03,
+ "totalCosts": 3537.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -35238,13 +36988,13 @@
{
"id": 14880458,
"username": "sekisanchi",
- "totalCosts": 161.6,
+ "totalCosts": 150.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 94.94,
+ "totalCosts": 83.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -35471,7 +37221,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 331.28,
+ "totalCosts": 320.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -35702,13 +37452,13 @@
{
"id": 14880458,
"username": "sekisanchi",
- "totalCosts": 688.82,
+ "totalCosts": 665.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 382.79,
+ "totalCosts": 377.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -35888,13 +37638,13 @@
{
"id": 14395884,
"username": "Frodo821",
- "totalCosts": 452.48,
+ "totalCosts": 444.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14395884/medium/be6488d24fd9f5ff7ac7d461e6cd6758.jpeg"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 289.87,
+ "totalCosts": 297.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -36044,13 +37794,13 @@
{
"id": 14880458,
"username": "sekisanchi",
- "totalCosts": 348.45,
+ "totalCosts": 345.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 241.39,
+ "totalCosts": 238.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -36090,19 +37840,19 @@
{
"id": 14880458,
"username": "sekisanchi",
- "totalCosts": 534.29,
+ "totalCosts": 531.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 470.66,
+ "totalCosts": 467.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
"id": 14708760,
"username": "hypebeans",
- "totalCosts": 91.91,
+ "totalCosts": 89.89,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/c99d5e08a676eaebe6f2a383a81222e1.jpg"
},
{
@@ -36212,7 +37962,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 684.78,
+ "totalCosts": 697.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -36318,37 +38068,37 @@
{
"id": 15341508,
"username": "hesoponyo",
- "totalCosts": 802.95,
+ "totalCosts": 661.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15341508/medium/070055fd80d21a5f4b26e37dd49cd0d0.png"
},
{
"id": 14984219,
"username": "James100",
- "totalCosts": 632.26,
+ "totalCosts": 587.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14984219/medium/bda27d10133f63c72881c79071f28657_default.png"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 304.01,
+ "totalCosts": 251.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
"id": 15070235,
"username": "akibe",
- "totalCosts": 265.63,
+ "totalCosts": 199.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15070235/medium/49c7580ba53089f63456e5b0a7046950_default.png"
},
{
"id": 15039393,
"username": "lvengda",
- "totalCosts": 228.26,
+ "totalCosts": 146.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15039393/medium/98012abbf3c829db90925104318abce4.jpeg"
},
{
"id": 15025653,
"username": "TsubTsub",
- "totalCosts": 128.27,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025653/medium/0d02a0fdb2070d4712926c3421364db2_default.png"
},
{
@@ -37016,7 +38766,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1032.22,
+ "totalCosts": 1025.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -37199,7 +38949,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 902.94,
+ "totalCosts": 901.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37216,7 +38966,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 343.4,
+ "totalCosts": 356.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -37253,18 +39003,18 @@
{
"fileId": "6183",
"contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 801.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ },
{
"id": 15660341,
"username": "toshihikokamio",
"totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15660341/medium/49268d587952510117b47cfa380006d9.png"
},
- {
- "id": 15208868,
- "username": "HiroyukiNaito",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
- },
{
"id": 14730036,
"username": "shoyu",
@@ -37449,7 +39199,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 41.41,
+ "totalCosts": 63.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37501,7 +39251,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 379.76,
+ "totalCosts": 380.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37542,7 +39292,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 368.65,
+ "totalCosts": 334.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37577,7 +39327,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 2065.45,
+ "totalCosts": 2031.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37623,13 +39373,13 @@
{
"id": 14103339,
"username": "ryoji.imai",
- "totalCosts": 332.29,
+ "totalCosts": 328.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG"
},
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 85.85,
+ "totalCosts": 75.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37693,7 +39443,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 298.96,
+ "totalCosts": 478.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37734,7 +39484,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 353.5,
+ "totalCosts": 773.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
},
{
@@ -37763,7 +39513,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1743.26,
+ "totalCosts": 2002.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -37803,7 +39553,7 @@
{
"id": 15460936,
"username": "tsukky",
- "totalCosts": 8094.14,
+ "totalCosts": 8074.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460936/medium/99ed6b4051dfcad3d1fa3e4cfaa17073.JPG"
},
{
@@ -37916,8 +39666,14 @@
{
"id": 15680077,
"username": "miyamo",
- "totalCosts": 3235.03,
+ "totalCosts": 3210.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680077/medium/a9db402339c4ac996a32133a844692ef_default.png"
+ },
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
},
@@ -37944,7 +39700,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 814.06,
+ "totalCosts": 869.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38073,7 +39829,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 495.91,
+ "totalCosts": 494.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38084,7 +39840,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1105.95,
+ "totalCosts": 1107.97,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38117,7 +39873,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 666.6,
+ "totalCosts": 668.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38139,7 +39895,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 850.42,
+ "totalCosts": 852.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38161,7 +39917,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 589.84,
+ "totalCosts": 588.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38172,7 +39928,7 @@
{
"id": 15208868,
"username": "HiroyukiNaito",
- "totalCosts": 1286.74,
+ "totalCosts": 1294.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
@@ -38232,6 +39988,111 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
}
]
+ },
+ {
+ "fileId": "8015",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 543.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "8011",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 1101.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7609",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 1100.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7617",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 346.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7619",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 1490.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7621",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 751.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7757",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 2158.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7801",
+ "contributors": [
+ {
+ "id": 15680077,
+ "username": "miyamo",
+ "totalCosts": 1333.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680077/medium/a9db402339c4ac996a32133a844692ef_default.png"
+ },
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 411.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "8003",
+ "contributors": [
+ {
+ "id": 15208868,
+ "username": "HiroyukiNaito",
+ "totalCosts": 3458.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg"
+ }
+ ]
}
]
},
@@ -38273,7 +40134,7 @@
{
"id": 15530275,
"username": "emunwon",
- "totalCosts": 410.06,
+ "totalCosts": 407.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15530275/medium/116c0ade79ef3b6e615e1db568c016cf_default.png"
},
{
@@ -38302,7 +40163,7 @@
{
"id": 15430302,
"username": "kwangtaekim",
- "totalCosts": 1934.15,
+ "totalCosts": 1919,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430302/medium/705b3a29a93430236982b318c9131fcf.png"
},
{
@@ -38325,9 +40186,15 @@
},
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
+ },
+ {
+ "id": 13903009,
+ "username": "igntsh",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13903009/medium/04ae0d1fd930da54d2c40b2d5e37e31c.jpg"
},
{
"id": 14362948,
@@ -38360,9 +40227,9 @@
},
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 151.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 14261470,
@@ -38378,7 +40245,7 @@
{
"id": 15442454,
"username": "Im-SpiETH",
- "totalCosts": 1640.24,
+ "totalCosts": 1611.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png"
},
{
@@ -38389,9 +40256,9 @@
},
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
}
]
},
@@ -38459,7 +40326,7 @@
{
"id": 15105599,
"username": "SaturnPiece",
- "totalCosts": 1816.99,
+ "totalCosts": 1810.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15105599/medium/a3e031fc91bbbf728f3bb5dd384e8400_default.png"
},
{
@@ -38479,11 +40346,17 @@
{
"fileId": "5565",
"contributors": [
+ {
+ "id": 13903009,
+ "username": "igntsh",
+ "totalCosts": 399.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13903009/medium/04ae0d1fd930da54d2c40b2d5e37e31c.jpg"
+ },
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 239.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 15732175,
@@ -38539,14 +40412,14 @@
"contributors": [
{
"id": 13471138,
- "username": "KyungwonPark",
- "totalCosts": 303,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "username": "linguist_won",
+ "totalCosts": 298.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 13997401,
"username": "Windfactory",
- "totalCosts": 92.92,
+ "totalCosts": 78.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13997401/medium/2ab4ff5d8770f710be0d12e4ec9f2123.png"
}
]
@@ -38579,9 +40452,9 @@
"contributors": [
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 229.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 14261470,
@@ -38632,9 +40505,9 @@
},
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 371.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 14261470,
@@ -38662,7 +40535,7 @@
{
"id": 15430302,
"username": "kwangtaekim",
- "totalCosts": 1234.22,
+ "totalCosts": 1232.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430302/medium/705b3a29a93430236982b318c9131fcf.png"
},
{
@@ -38673,9 +40546,9 @@
},
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 261.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
},
{
"id": 15678253,
@@ -38732,7 +40605,7 @@
{
"id": 15430302,
"username": "kwangtaekim",
- "totalCosts": 13633.99,
+ "totalCosts": 13614.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430302/medium/705b3a29a93430236982b318c9131fcf.png"
},
{
@@ -38784,9 +40657,15 @@
"contributors": [
{
"id": 13471138,
- "username": "KyungwonPark",
+ "username": "linguist_won",
"totalCosts": 1165.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/2d75a021ff9aad863e9ea3435aa3c682_default.png"
+ },
+ {
+ "id": 16231456,
+ "username": "hweersot",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16231456/medium/67b2fcfd6782db7b41efc531e5f3b1d1_default.png"
}
]
}
@@ -38831,7 +40710,7 @@
{
"id": 15569767,
"username": "malayalam_translation",
- "totalCosts": 158.57,
+ "totalCosts": 122.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15569767/medium/8d106f80c05286f2e679e742acb2f82c_default.png"
},
{
@@ -38860,7 +40739,7 @@
{
"id": 15569767,
"username": "malayalam_translation",
- "totalCosts": 1802.85,
+ "totalCosts": 1748.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15569767/medium/8d106f80c05286f2e679e742acb2f82c_default.png"
},
{
@@ -38902,7 +40781,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 446.42,
+ "totalCosts": 440.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -38952,7 +40831,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 608.02,
+ "totalCosts": 577.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -38974,7 +40853,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 2180.59,
+ "totalCosts": 2165.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -39018,7 +40897,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 2040.2,
+ "totalCosts": 2034.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -39058,7 +40937,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 115.14,
+ "totalCosts": 75.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
},
{
@@ -39121,7 +41000,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 398.95,
+ "totalCosts": 380.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -39154,7 +41033,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 587.82,
+ "totalCosts": 583.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -39165,7 +41044,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 1818,
+ "totalCosts": 1813.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
}
]
@@ -39182,7 +41061,7 @@
{
"id": 15958911,
"username": "charlaiz",
- "totalCosts": 453.49,
+ "totalCosts": 425.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png"
},
{
@@ -39221,13 +41100,13 @@
{
"id": 15284800,
"username": "msliwinski123",
- "totalCosts": 633.27,
+ "totalCosts": 575.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 548.43,
+ "totalCosts": 490.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
@@ -39250,7 +41129,7 @@
{
"id": 15771025,
"username": "Andrzej1072",
- "totalCosts": 631.25,
+ "totalCosts": 617.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
},
{
@@ -39285,13 +41164,13 @@
{
"id": 15771025,
"username": "Andrzej1072",
- "totalCosts": 2079.59,
+ "totalCosts": 2064.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 159.58,
+ "totalCosts": 174.73,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
@@ -39343,13 +41222,13 @@
{
"id": 15771025,
"username": "Andrzej1072",
- "totalCosts": 1635.19,
+ "totalCosts": 1606.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 34.34,
+ "totalCosts": 62.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
@@ -39865,7 +41744,7 @@
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 199.98,
+ "totalCosts": 188.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
@@ -39882,7 +41761,7 @@
{
"id": 14788394,
"username": "k-sad",
- "totalCosts": 588.83,
+ "totalCosts": 577.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788394/medium/d36035c2e171b8c0a75df7a938eceadb.jpg"
},
{
@@ -39911,7 +41790,7 @@
{
"id": 14802836,
"username": "Ryeore",
- "totalCosts": 499.95,
+ "totalCosts": 488.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
},
{
@@ -39957,7 +41836,7 @@
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 240.38,
+ "totalCosts": 229.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
@@ -40003,7 +41882,7 @@
{
"id": 14802836,
"username": "Ryeore",
- "totalCosts": 149.48,
+ "totalCosts": 138.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
},
{
@@ -40020,7 +41899,7 @@
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 121.2,
+ "totalCosts": 110.09,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
}
]
@@ -40070,7 +41949,7 @@
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 1365.52,
+ "totalCosts": 1334.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
}
]
@@ -40093,316 +41972,856 @@
]
},
{
- "fileId": "2814",
+ "fileId": "2814",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 90.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2822",
+ "contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 207.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 153.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 150.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2810",
+ "contributors": [
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 460.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 411.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 135.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2808",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 664.58,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 255.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 203.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2826",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 992.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2804",
+ "contributors": [
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ },
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2848",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 46.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2840",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 391.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 82.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 76.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2846",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 622.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 152.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15381630,
+ "username": "p_gwizdak",
+ "totalCosts": 118.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 47.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2842",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 130.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2798",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2792",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 67.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2762",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 516.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 154.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 98.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3002",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 290.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14759220,
+ "username": "arturlesniewski",
+ "totalCosts": 288.86,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14759220/medium/ce0dfc426c882d10a157bb152afe3a16.png"
+ },
+ {
+ "id": 14113969,
+ "username": "mbiesiad",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ },
+ {
+ "id": 14607372,
+ "username": "anastazja.k1",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607372/medium/6cd353ca427fa175908898882a3aaea1_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3056",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 599.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 140.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3100",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 510.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3074",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 1222.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2994",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 2122.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 55.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2986",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 1596.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "3088",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 836.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2980",
+ "contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 258.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 251.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 165.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3082",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2998",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 975.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "3036",
+ "contributors": [
+ {
+ "id": 14775946,
+ "username": "Beas",
+ "totalCosts": 556.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 228.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3010",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 90.9,
+ "totalCosts": 1008.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2822",
+ "fileId": "3018",
"contributors": [
- {
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 207.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 153.52,
+ "totalCosts": 367.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 150.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2810",
+ "fileId": "3006",
"contributors": [
- {
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 460.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
- },
- {
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 411.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 135.34,
+ "totalCosts": 710.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2808",
+ "fileId": "3092",
"contributors": [
+ {
+ "id": 14759220,
+ "username": "arturlesniewski",
+ "totalCosts": 649.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14759220/medium/ce0dfc426c882d10a157bb152afe3a16.png"
+ },
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 664.58,
+ "totalCosts": 366.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 263.61,
+ "totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 211.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
}
]
},
{
- "fileId": "2826",
+ "fileId": "3024",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 992.83,
+ "totalCosts": 2.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- }
- ]
- },
- {
- "fileId": "2804",
- "contributors": [
+ },
{
"id": 14802836,
"username": "Ryeore",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
- },
- {
- "id": 14775946,
- "username": "Beas",
"totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2848",
+ "fileId": "2950",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 46.46,
+ "totalCosts": 241.39,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2840",
+ "fileId": "2680",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 396.93,
+ "totalCosts": 839.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 82.82,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 15071649,
+ "username": "budomcity",
+ "totalCosts": 91.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15071649/medium/0ae631185ea5bf1ae0215a74903d1c8d.png"
+ },
+ {
+ "id": 15809583,
+ "username": "mn895532",
+ "totalCosts": 61.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809583/medium/e63f59ae9d5cb8307bd4d5f5d23be4a4.jpeg"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 76.76,
+ "totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15483158,
+ "username": "Buki92",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15483158/medium/47aea7d184be65fcf5ab1d5f8749ca4e_default.png"
}
]
},
{
- "fileId": "2846",
+ "fileId": "2684",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 627.21,
+ "totalCosts": 284.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 152.51,
+ "totalCosts": 17.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15381630,
- "username": "p_gwizdak",
- "totalCosts": 118.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
- },
- {
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 47.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
}
]
},
{
- "fileId": "2842",
+ "fileId": "2962",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 130.29,
+ "totalCosts": 180.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 14802836,
+ "username": "Ryeore",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
}
]
},
{
- "fileId": "2798",
+ "fileId": "2954",
"contributors": [
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 17.17,
+ "totalCosts": 35.35,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
}
]
},
{
- "fileId": "2792",
+ "fileId": "2672",
"contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 1293.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 384.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ },
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 67.67,
+ "totalCosts": 127.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ },
+ {
+ "id": 15994051,
+ "username": "csgo7777gg",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994051/medium/5ffbfdb7c384b441588b3f63ed171d90.png"
}
]
},
{
- "fileId": "2762",
+ "fileId": "5565",
"contributors": [
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 516.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 154.53,
+ "totalCosts": 787.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 98.98,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 15054269,
+ "username": "karolproksa",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15054269/medium/c3c3359c1de314d91ff42a2957c78168_default.png"
+ },
+ {
+ "id": 15514622,
+ "username": "sebastianpaluch",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15514622/medium/038694fd3070ed326b089e13cb7750a3.jpeg"
+ },
+ {
+ "id": 15381630,
+ "username": "p_gwizdak",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
+ },
+ {
+ "id": 15567317,
+ "username": "Aarona",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567317/medium/4d6c3c25d6fff43f7e795643d2e0e632.jpg"
}
]
},
{
- "fileId": "3002",
+ "fileId": "2946",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 290.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 371.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14759220,
- "username": "arturlesniewski",
- "totalCosts": 288.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14759220/medium/ce0dfc426c882d10a157bb152afe3a16.png"
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 246.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
},
{
- "id": 14113969,
- "username": "mbiesiad",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ "id": 14610346,
+ "username": "Ziomal",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610346/medium/1ff5715fb5662e73f24d7960f83e0479_default.png"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15891369,
+ "username": "kacperm",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
},
{
- "id": 14607372,
- "username": "anastazja.k1",
+ "id": 14604868,
+ "username": "ctx2012",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14604868/medium/c6b287b0f1d173faedce0806420fc57b.jpeg"
+ },
+ {
+ "id": 14610974,
+ "username": "siefca",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610974/medium/194bb472f4f7da37c64b787db637ec50_default.png"
+ },
+ {
+ "id": 14607686,
+ "username": "bubabu123",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607686/medium/666d22e806ac35803cd52f1c45e93ac2_default.png"
+ },
+ {
+ "id": 14816306,
+ "username": "Coppka",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14816306/medium/e6b16332c695ea9e29db0e5aa83b9331.png"
+ },
+ {
+ "id": 14775946,
+ "username": "Beas",
"totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607372/medium/6cd353ca427fa175908898882a3aaea1_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
}
]
},
{
- "fileId": "3056",
+ "fileId": "2926",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 599.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 464.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 140.39,
+ "totalCosts": 68.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 14610346,
+ "username": "Ziomal",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610346/medium/1ff5715fb5662e73f24d7960f83e0479_default.png"
}
]
},
{
- "fileId": "3100",
+ "fileId": "6440",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 510.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 406.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15771025,
+ "username": "Andrzej1072",
+ "totalCosts": 62.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
}
]
},
{
- "fileId": "3074",
+ "fileId": "7314",
+ "contributors": [
+ {
+ "id": 15381630,
+ "username": "p_gwizdak",
+ "totalCosts": 1026.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
+ },
+ {
+ "id": 15771025,
+ "username": "Andrzej1072",
+ "totalCosts": 200.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2958",
"contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 3421.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
{
"id": 14775946,
"username": "Beas",
- "totalCosts": 1222.1,
+ "totalCosts": 2648.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
},
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 1335.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ },
{
"id": 14802836,
"username": "Ryeore",
@@ -40412,5630 +42831,6087 @@
]
},
{
- "fileId": "2994",
+ "fileId": "7320",
"contributors": [
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 2122.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 55.55,
+ "totalCosts": 1239.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15364756,
+ "username": "bellasob",
+ "totalCosts": 284.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15364756/medium/7fcfefb61008e61669ea2fde377683cb_default.png"
+ },
+ {
+ "id": 14674204,
+ "username": "m.nowaczyk1",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14674204/medium/2cfe1887baf97ff9a143025679bed40e.JPG"
}
]
},
{
- "fileId": "2986",
+ "fileId": "8019",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 1596.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 545.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "3088",
+ "fileId": "6161",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 836.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 14933675,
+ "username": "JuliannaMlynarska",
+ "totalCosts": 158.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14933675/medium/0a154caf851ba66ad323ab1b30379663.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "6163",
+ "contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 722.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 14933675,
+ "username": "JuliannaMlynarska",
+ "totalCosts": 143.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14933675/medium/0a154caf851ba66ad323ab1b30379663.jpg"
+ },
+ {
+ "id": 15264742,
+ "username": "jaszczomb",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15264742/medium/864cdac6f83f6d96f5a231668ed65849.png"
+ },
+ {
+ "id": 14113969,
+ "username": "mbiesiad",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
}
]
},
{
- "fileId": "2980",
+ "fileId": "5557",
"contributors": [
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 258.56,
+ "totalCosts": 303,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 251.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15003781,
+ "username": "krysia0196",
+ "totalCosts": 221.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15003781/medium/5a35c3e1503904e970787a6c1b14b084_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6185",
+ "contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 734.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
+ {
+ "id": 14113969,
+ "username": "mbiesiad",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6165",
+ "contributors": [
{
"id": 15284800,
"username": "msliwinski123",
- "totalCosts": 165.64,
+ "totalCosts": 259.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 241.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "3082",
+ "fileId": "8023",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 1986.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "6167",
+ "contributors": [
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 564.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 217.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 14113969,
+ "username": "mbiesiad",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6183",
+ "contributors": [
+ {
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 772.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15224914,
+ "username": "legendarek",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15224914/medium/f834d6656654aa33f1b17f0b273e2ddc.jpeg"
}
]
},
{
- "fileId": "2998",
+ "fileId": "5563",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 1011.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 1718.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 20.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15966401,
+ "username": "daniel.zarzecki047",
+ "totalCosts": 370.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
},
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 20.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15654629,
+ "username": "Arek14482307",
+ "totalCosts": 284.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15654629/medium/c970a4e9c8e664fff4f5d188168d1eb3.jpg"
}
]
},
{
- "fileId": "3036",
+ "fileId": "7525",
"contributors": [
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 556.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 228.26,
+ "totalCosts": 907.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15891369,
+ "username": "kacperm",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
}
]
},
{
- "fileId": "3010",
+ "fileId": "8027",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 1008.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 1058.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15966401,
+ "username": "daniel.zarzecki047",
+ "totalCosts": 26.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
}
]
},
{
- "fileId": "3018",
+ "fileId": "7529",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 367.64,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 671.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "3006",
+ "fileId": "7537",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 710.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 371.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "3092",
+ "fileId": "7541",
"contributors": [
{
- "id": 14759220,
- "username": "arturlesniewski",
- "totalCosts": 649.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14759220/medium/ce0dfc426c882d10a157bb152afe3a16.png"
- },
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 383.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15891369,
+ "username": "kacperm",
+ "totalCosts": 679.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
},
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 45.45,
+ "totalCosts": 226.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ },
+ {
+ "id": 15284800,
+ "username": "msliwinski123",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
}
]
},
{
- "fileId": "3024",
+ "fileId": "7521",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 186.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "2950",
+ "fileId": "8035",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 241.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 1194.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "2680",
+ "fileId": "6187",
"contributors": [
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 839.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 15071649,
- "username": "budomcity",
- "totalCosts": 91.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15071649/medium/0ae631185ea5bf1ae0215a74903d1c8d.png"
- },
- {
- "id": 15809583,
- "username": "mn895532",
- "totalCosts": 61.61,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809583/medium/e63f59ae9d5cb8307bd4d5f5d23be4a4.jpeg"
- },
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 25.25,
+ "totalCosts": 2348.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 15483158,
- "username": "Buki92",
+ "id": 15891369,
+ "username": "kacperm",
+ "totalCosts": 239.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
+ },
+ {
+ "id": 14113969,
+ "username": "mbiesiad",
"totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15483158/medium/47aea7d184be65fcf5ab1d5f8749ca4e_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
}
]
},
{
- "fileId": "2684",
+ "fileId": "6518",
"contributors": [
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 284.82,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 17.17,
+ "totalCosts": 851.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "2962",
+ "fileId": "6524",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 180.79,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 885.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15921847,
+ "username": "adrian-pusty",
+ "totalCosts": 208.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921847/medium/5ab50081cb5e98a40782221efcda3a42.jpeg"
}
]
},
{
- "fileId": "2954",
+ "fileId": "6526",
"contributors": [
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 35.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 2057.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "2672",
+ "fileId": "7591",
"contributors": [
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 1293.81,
+ "totalCosts": 2013.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 384.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
- },
- {
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 127.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
- },
- {
- "id": 15994051,
- "username": "csgo7777gg",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994051/medium/5ffbfdb7c384b441588b3f63ed171d90.png"
}
]
},
{
- "fileId": "5565",
+ "fileId": "6428",
"contributors": [
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 787.8,
+ "totalCosts": 1631.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 15054269,
- "username": "karolproksa",
- "totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15054269/medium/c3c3359c1de314d91ff42a2957c78168_default.png"
- },
+ "id": 15821191,
+ "username": "jkmharambe",
+ "totalCosts": 106.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15821191/medium/98569265061586f339bdfcbfcaba42fd_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7465",
+ "contributors": [
{
- "id": 15514622,
- "username": "sebastianpaluch",
- "totalCosts": 10.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15514622/medium/038694fd3070ed326b089e13cb7750a3.jpeg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 3210.79,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
},
{
- "id": 15381630,
- "username": "p_gwizdak",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
- },
+ "id": 15966401,
+ "username": "daniel.zarzecki047",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7533",
+ "contributors": [
{
- "id": 15567317,
- "username": "Aarona",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567317/medium/4d6c3c25d6fff43f7e795643d2e0e632.jpg"
+ "id": 15894449,
+ "username": "wosek_",
+ "totalCosts": 306.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
}
]
},
{
- "fileId": "2946",
+ "fileId": "7919",
"contributors": [
{
"id": 15894449,
"username": "wosek_",
- "totalCosts": 371.68,
+ "totalCosts": 1321.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "lang": "pt-br",
+ "data": [
+ {
+ "fileId": "2966",
+ "contributors": [
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 477.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 246.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 14636118,
+ "username": "frontedu",
+ "totalCosts": 71.71,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14636118/medium/d3d3ec3fab34702c4b19674b06e1ddff.png"
},
{
- "id": 14610346,
- "username": "Ziomal",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610346/medium/1ff5715fb5662e73f24d7960f83e0479_default.png"
+ "id": 14677262,
+ "username": "paulagoes",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14677262/medium/abca98edc7fcbc7867e6aa1e9d6bddfb.jpeg"
},
{
- "id": 15891369,
- "username": "kacperm",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
+ "id": 14787358,
+ "username": "leideribeiro9150",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
},
{
- "id": 14604868,
- "username": "ctx2012",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14604868/medium/c6b287b0f1d173faedce0806420fc57b.jpeg"
+ "id": 14922369,
+ "username": "halley.oliveira",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14922369/medium/c91c158a8482cfbea025748acc623b80_default.png"
},
{
- "id": 14610974,
- "username": "siefca",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610974/medium/194bb472f4f7da37c64b787db637ec50_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 14607686,
- "username": "bubabu123",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607686/medium/666d22e806ac35803cd52f1c45e93ac2_default.png"
+ "id": 14733356,
+ "username": "isadorasst",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733356/medium/1c669e45c53fc5c3653082d0d04727ad_default.png"
},
{
- "id": 14816306,
- "username": "Coppka",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14816306/medium/e6b16332c695ea9e29db0e5aa83b9331.png"
+ "id": 15240392,
+ "username": "kaioPoentes",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240392/medium/bb269e410561d6b5854bcd5a0a61b358.jpeg"
},
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15405030,
+ "username": "Yoann3",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15405030/medium/2e9f0dada88ba25d3880c78b8a32ba14_default.png"
}
]
},
{
- "fileId": "2926",
+ "fileId": "7320",
"contributors": [
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 464.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 15363256,
+ "username": "keyla88",
+ "totalCosts": 860.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363256/medium/ec0ae3c1332b4c006ba843c9969716f5.png"
},
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 68.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 415.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
- "id": 14610346,
- "username": "Ziomal",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610346/medium/1ff5715fb5662e73f24d7960f83e0479_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 49.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6440",
+ "fileId": "6161",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 410.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 14702518,
+ "username": "Byrde",
+ "totalCosts": 158.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
},
{
- "id": 15771025,
- "username": "Andrzej1072",
- "totalCosts": 72.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7314",
+ "fileId": "6163",
"contributors": [
{
- "id": 15381630,
- "username": "p_gwizdak",
- "totalCosts": 1026.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381630/medium/419ca8faf5b651c0ab7f7123a3a4fd95.jpeg"
+ "id": 14702518,
+ "username": "Byrde",
+ "totalCosts": 346.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
},
{
- "id": 15771025,
- "username": "Andrzej1072",
- "totalCosts": 200.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 138.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 33.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "2958",
+ "fileId": "5557",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 3421.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 221.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
},
{
- "id": 14775946,
- "username": "Beas",
- "totalCosts": 2648.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg"
+ "id": 15082587,
+ "username": "PLimabrz",
+ "totalCosts": 199.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
},
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 1335.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
+ "id": 15072851,
+ "username": "digocherri",
+ "totalCosts": 126.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15072851/medium/a35aa7f19e9250a5e916b2092556235e.png"
},
{
- "id": 14802836,
- "username": "Ryeore",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14802836/medium/5c9792c4809bea937bb80c4743d66e5c_default.png"
+ "id": 15088607,
+ "username": "Fred.rodovalho",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15088607/medium/60387eb11f8184d82ef350969d7006f4_default.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15240392,
+ "username": "kaioPoentes",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240392/medium/bb269e410561d6b5854bcd5a0a61b358.jpeg"
}
]
},
{
- "fileId": "7320",
+ "fileId": "6185",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1239.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 237.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 14790884,
+ "username": "rubemarjr18",
+ "totalCosts": 72.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14790884/medium/1cec4afc62c4a1a483abe29e485d48e2.jpg"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 69.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15364756,
- "username": "bellasob",
- "totalCosts": 284.82,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15364756/medium/7fcfefb61008e61669ea2fde377683cb_default.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
- "id": 14674204,
- "username": "m.nowaczyk1",
+ "id": 15317682,
+ "username": "junowoz",
"totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14674204/medium/2cfe1887baf97ff9a143025679bed40e.JPG"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "8019",
+ "fileId": "6165",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 545.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- }
- ]
- },
- {
- "fileId": "6161",
- "contributors": [
+ "id": 15214190,
+ "username": "felipecardosoruff",
+ "totalCosts": 76.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214190/medium/05a412a9e565b4b662dce5d9f39dfaa8.jpeg"
+ },
{
- "id": 14933675,
- "username": "JuliannaMlynarska",
- "totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14933675/medium/0a154caf851ba66ad323ab1b30379663.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 64.64,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "6163",
+ "fileId": "6167",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 728.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15116197,
+ "username": "marciob",
+ "totalCosts": 410.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15116197/medium/defe31fc631358c105140f44b22e84f7.png"
},
{
- "id": 14933675,
- "username": "JuliannaMlynarska",
- "totalCosts": 143.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14933675/medium/0a154caf851ba66ad323ab1b30379663.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 117.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15264742,
- "username": "jaszczomb",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15264742/medium/864cdac6f83f6d96f5a231668ed65849.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 35.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
},
{
- "id": 14113969,
- "username": "mbiesiad",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "5557",
+ "fileId": "7569",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 303,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15003781,
- "username": "krysia0196",
- "totalCosts": 221.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15003781/medium/5a35c3e1503904e970787a6c1b14b084_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 375.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6185",
+ "fileId": "6398",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 734.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15188518,
+ "username": "Matheus_Ferreira",
+ "totalCosts": 260.58,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15188518/medium/6390516aed2ed06ec760ae6ed81d3e09.png"
},
{
- "id": 14113969,
- "username": "mbiesiad",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6165",
+ "fileId": "6400",
"contributors": [
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 259.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
- },
- {
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 241.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15210560,
+ "username": "Vitor_Pinheiro",
+ "totalCosts": 181.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15210560/medium/ff8ea1936b838affc178037b3d436634.jpg"
}
]
},
{
- "fileId": "8023",
+ "fileId": "6404",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1991.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 150.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
}
]
},
{
- "fileId": "6167",
+ "fileId": "6446",
"contributors": [
{
- "id": 15284800,
- "username": "msliwinski123",
- "totalCosts": 594.89,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
- },
- {
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 217.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 14113969,
- "username": "mbiesiad",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 268.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6183",
+ "fileId": "6408",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 266.64,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 202,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
- "id": 15224914,
- "username": "legendarek",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15224914/medium/f834d6656654aa33f1b17f0b273e2ddc.jpeg"
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 112.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "5563",
+ "fileId": "6448",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1740.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 316.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15966401,
- "username": "daniel.zarzecki047",
- "totalCosts": 392.89,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 119.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15654629,
- "username": "Arek14482307",
- "totalCosts": 284.82,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15654629/medium/c970a4e9c8e664fff4f5d188168d1eb3.jpg"
+ "id": 15260596,
+ "username": "Zepphire",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15260596/medium/cb3b9f65b0b6d8338eb83bd78128df3b.jpeg"
}
]
},
{
- "fileId": "7525",
+ "fileId": "7565",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 907.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15891369,
- "username": "kacperm",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
+ "id": 14845960,
+ "username": "matusame",
+ "totalCosts": 661.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
}
]
},
{
- "fileId": "8027",
+ "fileId": "6416",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1058.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- },
- {
- "id": 15966401,
- "username": "daniel.zarzecki047",
- "totalCosts": 26.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
+ "id": 15210560,
+ "username": "Vitor_Pinheiro",
+ "totalCosts": 163.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15210560/medium/ff8ea1936b838affc178037b3d436634.jpg"
}
]
},
{
- "fileId": "7529",
+ "fileId": "6392",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 671.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- }
- ]
- },
- {
- "fileId": "7537",
- "contributors": [
+ "id": 15797935,
+ "username": "florita",
+ "totalCosts": 494.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797935/medium/d50b4242e896ee8d17a6a7547f77f598_default.png"
+ },
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 371.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15245258,
+ "username": "pedroxbm",
+ "totalCosts": 473.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15245258/medium/561e3ccf7fbe927b61111e79f7ffdd9a_default.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 431.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
}
]
},
{
- "fileId": "7541",
+ "fileId": "6388",
"contributors": [
{
- "id": 15891369,
- "username": "kacperm",
- "totalCosts": 679.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 318.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 226.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 71.71,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
},
{
- "id": 15284800,
- "username": "msliwinski123",
+ "id": 15431346,
+ "username": "BenedettiLucca",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
"totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png"
- }
- ]
- },
- {
- "fileId": "7521",
- "contributors": [
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ },
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 186.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "8035",
+ "fileId": "5553",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1194.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
- }
- ]
- },
- {
- "fileId": "6187",
- "contributors": [
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 506.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ },
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 2348.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15082587,
+ "username": "PLimabrz",
+ "totalCosts": 268.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
},
{
- "id": 15891369,
- "username": "kacperm",
- "totalCosts": 239.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 245.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
},
{
- "id": 14113969,
- "username": "mbiesiad",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 26.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15088607,
+ "username": "Fred.rodovalho",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15088607/medium/60387eb11f8184d82ef350969d7006f4_default.png"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
+ {
+ "id": 14633592,
+ "username": "Jhosephecacau",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
}
]
},
{
- "fileId": "6518",
+ "fileId": "7585",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 851.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 206.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6524",
+ "fileId": "5555",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 889.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 232.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15921847,
- "username": "adrian-pusty",
- "totalCosts": 208.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921847/medium/5ab50081cb5e98a40782221efcda3a42.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
}
]
},
{
- "fileId": "6526",
+ "fileId": "7581",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 2059.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7591",
+ "fileId": "7589",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 2013.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 77.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6428",
+ "fileId": "6412",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1631.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1059.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15821191,
- "username": "jkmharambe",
- "totalCosts": 106.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15821191/medium/98569265061586f339bdfcbfcaba42fd_default.png"
- }
- ]
- },
- {
- "fileId": "7465",
- "contributors": [
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 602.97,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 3235.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15728117,
+ "username": "alnrsnd",
+ "totalCosts": 461.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15728117/medium/7631d966177edc87bcb5a0cbd146ca21_default.png"
},
{
- "id": 15966401,
- "username": "daniel.zarzecki047",
- "totalCosts": 29.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png"
- }
- ]
- },
- {
- "fileId": "7533",
- "contributors": [
+ "id": 15269576,
+ "username": "camolina",
+ "totalCosts": 437.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15269576/medium/1a3566292dbbb3d62c42cba932c6509c_default.png"
+ },
+ {
+ "id": 15657153,
+ "username": "leomarar",
+ "totalCosts": 119.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657153/medium/83f088e12e6711ed615f8dd77c3f2be7_default.png"
+ },
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 306.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 15417044,
+ "username": "venus_alva",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417044/medium/dcb0e341b1708f9b01351dcf1703d406.jpeg"
}
]
},
{
- "fileId": "7919",
+ "fileId": "5559",
"contributors": [
{
- "id": 15894449,
- "username": "wosek_",
- "totalCosts": 1321.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 488.84,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 348.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ },
+ {
+ "id": 15373000,
+ "username": "Fradique",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373000/medium/c69edcb05bc9178ba24cd99f3373ea9b.JPG"
}
]
- }
- ]
- },
- {
- "lang": "pt-br",
- "data": [
+ },
{
- "fileId": "2966",
+ "fileId": "7316",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 535.3,
+ "totalCosts": 2107.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14636118,
- "username": "frontedu",
- "totalCosts": 71.71,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14636118/medium/d3d3ec3fab34702c4b19674b06e1ddff.png"
- },
- {
- "id": 14677262,
- "username": "paulagoes",
- "totalCosts": 69.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14677262/medium/abca98edc7fcbc7867e6aa1e9d6bddfb.jpeg"
+ "id": 15454064,
+ "username": "thormiranda",
+ "totalCosts": 520.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454064/medium/9a469555fbc3d3c781b12b438d7f0211_default.png"
},
{
- "id": 14787358,
- "username": "leideribeiro9150",
- "totalCosts": 69.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
- },
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 63.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "5561",
+ "contributors": [
{
- "id": 14922369,
- "username": "halley.oliveira",
- "totalCosts": 15.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14922369/medium/c91c158a8482cfbea025748acc623b80_default.png"
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 1105.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 15.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15082587,
+ "username": "PLimabrz",
+ "totalCosts": 474.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
},
{
- "id": 14733356,
- "username": "isadorasst",
- "totalCosts": 15.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733356/medium/1c669e45c53fc5c3653082d0d04727ad_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15240392,
- "username": "kaioPoentes",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240392/medium/bb269e410561d6b5854bcd5a0a61b358.jpeg"
+ "id": 15025129,
+ "username": "willianpaixao",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025129/medium/ef1be11b8020b45c11dbd5a0bbea1aac_default.png"
},
{
- "id": 15405030,
- "username": "Yoann3",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15405030/medium/2e9f0dada88ba25d3880c78b8a32ba14_default.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
}
]
},
{
- "fileId": "7320",
+ "fileId": "7461",
"contributors": [
- {
- "id": 15363256,
- "username": "keyla88",
- "totalCosts": 860.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363256/medium/ec0ae3c1332b4c006ba843c9969716f5.png"
- },
- {
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 415.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 49.49,
+ "totalCosts": 1076.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 609.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6161",
+ "fileId": "2766",
"contributors": [
{
- "id": 14702518,
- "username": "Byrde",
- "totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
+ "id": 14712840,
+ "username": "FelipeMaitan",
+ "totalCosts": 229.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712840/medium/cfd99eb4dba39d60d3f78be48724cebe.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1.01,
+ "totalCosts": 228.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- }
- ]
- },
- {
- "fileId": "6163",
- "contributors": [
+ },
{
- "id": 14702518,
- "username": "Byrde",
- "totalCosts": 346.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
+ "id": 15160588,
+ "username": "R_Dark",
+ "totalCosts": 202,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15160588/medium/3903ef1af6faeec9604b6db70b5e6233_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 144.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14956337,
+ "username": "lidianycs",
+ "totalCosts": 189.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 33.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14659020,
+ "username": "DanielTaqueto",
+ "totalCosts": 115.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14659020/medium/56f5cb0b5617518f3cd660cb1834c9d7_default.png"
+ },
+ {
+ "id": 14687376,
+ "username": "KlmnZ",
+ "totalCosts": 90.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 89.89,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
}
]
},
{
- "fileId": "5557",
+ "fileId": "2868",
"contributors": [
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 221.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 14725224,
+ "username": "julioabrahao",
+ "totalCosts": 104.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14725224/medium/71c544a5f76fec25c5a1f156b4e74474.jpeg"
},
{
- "id": 15082587,
- "username": "PLimabrz",
- "totalCosts": 199.98,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
+ "id": 14713748,
+ "username": "flyng12",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14713748/medium/c9ee0ecb2c8ecdb140bc6fdf8e7002b4.jpg"
},
{
- "id": 15072851,
- "username": "digocherri",
- "totalCosts": 126.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15072851/medium/a35aa7f19e9250a5e916b2092556235e.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 85.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
- "id": 15088607,
- "username": "Fred.rodovalho",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15088607/medium/60387eb11f8184d82ef350969d7006f4_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 54.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 7.07,
+ "totalCosts": 5.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15240392,
- "username": "kaioPoentes",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240392/medium/bb269e410561d6b5854bcd5a0a61b358.jpeg"
+ "id": 14712840,
+ "username": "FelipeMaitan",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712840/medium/cfd99eb4dba39d60d3f78be48724cebe.png"
}
]
},
{
- "fileId": "6185",
+ "fileId": "2872",
"contributors": [
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 237.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14733026,
+ "username": "iborba",
+ "totalCosts": 375.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733026/medium/ffb6aa67fea863e4898aa8a6e5c69e87.jpeg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 80.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 116.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 14790884,
- "username": "rubemarjr18",
- "totalCosts": 72.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14790884/medium/1cec4afc62c4a1a483abe29e485d48e2.jpg"
+ "id": 14687376,
+ "username": "KlmnZ",
+ "totalCosts": 110.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
+ },
+ {
+ "id": 14727924,
+ "username": "YuriNascimento",
+ "totalCosts": 92.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14727924/medium/64551c4f06627c3dc665d55f0c240b6f.jpeg"
+ },
+ {
+ "id": 15446690,
+ "username": "danielevilela",
+ "totalCosts": 48.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15446690/medium/27e62df7f8d8d68479bced43d27bd11c.jpeg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 69.69,
+ "totalCosts": 41.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
- },
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 7.07,
+ "totalCosts": 23.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "6165",
+ "fileId": "5529",
"contributors": [
- {
- "id": 15214190,
- "username": "felipecardosoruff",
- "totalCosts": 76.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214190/medium/05a412a9e565b4b662dce5d9f39dfaa8.jpeg"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 64.64,
+ "totalCosts": 745.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
+ {
+ "id": 15469896,
+ "username": "matheussalcedoruiz",
+ "totalCosts": 160.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15469896/medium/ce6eed4a36d8d7724e2d1537a41f7337.jpeg"
+ },
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 16.16,
+ "totalCosts": 60.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- }
- ]
- },
- {
- "fileId": "6167",
- "contributors": [
+ },
{
- "id": 15116197,
- "username": "marciob",
- "totalCosts": 422.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15116197/medium/defe31fc631358c105140f44b22e84f7.png"
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 49.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 124.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14861994,
+ "username": "DougPimentel",
+ "totalCosts": 34.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861994/medium/6be234f83f98e8db755074900cf25b3d_default.png"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 46.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15830251,
+ "username": "paodequeijocompingado",
+ "totalCosts": 31.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830251/medium/df305c6124650d8f50add955b4770062_default.png"
+ },
+ {
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ },
+ {
+ "id": 15646745,
+ "username": "Mateusduartelima",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 1.01,
+ "totalCosts": 9.09,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "7569",
+ "fileId": "2894",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 375.72,
+ "totalCosts": 820.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14607364,
+ "username": "Guzzt",
+ "totalCosts": 177.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607364/medium/36f0bb0ce943d4d6b9b4de36a71d160a_default.png"
+ },
+ {
+ "id": 14837106,
+ "username": "rofis",
+ "totalCosts": 46.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 14956337,
+ "username": "lidianycs",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
+ },
+ {
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
}
]
},
{
- "fileId": "6398",
+ "fileId": "7453",
"contributors": [
- {
- "id": 15188518,
- "username": "Matheus_Ferreira",
- "totalCosts": 260.58,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15188518/medium/6390516aed2ed06ec760ae6ed81d3e09.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 22.22,
+ "totalCosts": 1856.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 153.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
}
]
},
{
- "fileId": "6400",
+ "fileId": "2704",
"contributors": [
{
- "id": 15210560,
- "username": "Vitor_Pinheiro",
- "totalCosts": 181.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15210560/medium/ff8ea1936b838affc178037b3d436634.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 608.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14711642,
+ "username": "kenowlee",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14711642/medium/cc1ab7ad933f06b0fc99de7457c6b3c9.jpeg"
+ },
+ {
+ "id": 14749926,
+ "username": "gabekings",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14749926/medium/85cf883e521a00c66e9d0aed65b93778_default.png"
}
]
},
{
- "fileId": "6404",
+ "fileId": "7503",
"contributors": [
{
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 150.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 5180.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6446",
+ "fileId": "7495",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 745.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 268.66,
+ "totalCosts": 56.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6408",
+ "fileId": "7605",
"contributors": [
{
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 202,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
- {
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 112.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ "id": 15790247,
+ "username": "Callzonie",
+ "totalCosts": 1042.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15790247/medium/bff2a46c8f3d2ee8027ca05362da9757_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 19.19,
+ "totalCosts": 33.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6448",
+ "fileId": "7601",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 316.13,
+ "totalCosts": 2021.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 119.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15724803,
+ "username": "Izabel_chaves",
+ "totalCosts": 588.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724803/medium/7f2b4419d308a52a62f3b8f9ca9b4adf.jpg"
},
{
- "id": 15260596,
- "username": "Zepphire",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15260596/medium/cb3b9f65b0b6d8338eb83bd78128df3b.jpeg"
- }
- ]
- },
- {
- "fileId": "7565",
- "contributors": [
- {
- "id": 14845960,
- "username": "matusame",
- "totalCosts": 661.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
- }
- ]
- },
- {
- "fileId": "6416",
- "contributors": [
- {
- "id": 15210560,
- "username": "Vitor_Pinheiro",
- "totalCosts": 163.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15210560/medium/ff8ea1936b838affc178037b3d436634.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 34.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6392",
+ "fileId": "6564",
"contributors": [
{
- "id": 15797935,
- "username": "florita",
- "totalCosts": 494.9,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797935/medium/d50b4242e896ee8d17a6a7547f77f598_default.png"
- },
- {
- "id": 15245258,
- "username": "pedroxbm",
- "totalCosts": 473.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15245258/medium/561e3ccf7fbe927b61111e79f7ffdd9a_default.png"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 979.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 431.27,
+ "totalCosts": 126.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
}
]
},
{
- "fileId": "6388",
+ "fileId": "2702",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 318.15,
+ "totalCosts": 578.73,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 15165600,
- "username": "Horberlan",
- "totalCosts": 71.71,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
- },
- {
- "id": 15431346,
- "username": "BenedettiLucca",
- "totalCosts": 38.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
- },
- {
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 4.04,
+ "totalCosts": 292.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- }
- ]
- },
- {
- "fileId": "5553",
- "contributors": [
+ },
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 506.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 67.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
},
{
- "id": 15082587,
- "username": "PLimabrz",
- "totalCosts": 268.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
+ "id": 15646745,
+ "username": "Mateusduartelima",
+ "totalCosts": 61.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
},
{
- "id": 15165600,
- "username": "Horberlan",
- "totalCosts": 245.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
+ "id": 14733026,
+ "username": "iborba",
+ "totalCosts": 32.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733026/medium/ffb6aa67fea863e4898aa8a6e5c69e87.jpeg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 26.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15661337,
+ "username": "dariovlopes",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15661337/medium/7bdad35b42bb2e81620660e6456a90f9.jpeg"
},
{
- "id": 15088607,
- "username": "Fred.rodovalho",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15088607/medium/60387eb11f8184d82ef350969d7006f4_default.png"
+ "id": 14631192,
+ "username": "rafael.yanase",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631192/medium/543e6b0627ae51d46ab52d78181f46be.jpeg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 14950197,
+ "username": "SlashHash",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14950197/medium/20d99cde077abaee189a2dc7908d26f2.png"
},
{
- "id": 14633592,
- "username": "Jhosephecacau",
- "totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
},
{
"id": 14247352,
"username": "borja_reverter",
- "totalCosts": 14.14,
+ "totalCosts": 2.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
}
]
},
{
- "fileId": "7585",
+ "fileId": "7507",
"contributors": [
- {
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 206.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 4.04,
+ "totalCosts": 773.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 194.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "5555",
+ "fileId": "7499",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 232.3,
+ "totalCosts": 940.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 66.66,
+ "totalCosts": 513.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 29.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 15830291,
+ "username": "juanlozano01534",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830291/medium/2163d30ac425b25292277c1e7b77f930.png"
}
]
},
{
- "fileId": "7581",
+ "fileId": "6562",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 833.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "7589",
+ "fileId": "2712",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 77.77,
+ "totalCosts": 685.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- }
- ]
- },
- {
- "fileId": "6412",
- "contributors": [
+ },
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1067.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14978447,
+ "username": "DanDaro",
+ "totalCosts": 118.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14978447/medium/6c0a867cdc72f871a6dd35862afa1562.jpg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 615.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14751422,
+ "username": "Alexusz",
+ "totalCosts": 116.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14751422/medium/1b45356738263d0753c5d9f87eacce86.jpg"
},
{
- "id": 15728117,
- "username": "alnrsnd",
- "totalCosts": 482.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15728117/medium/7631d966177edc87bcb5a0cbd146ca21_default.png"
+ "id": 14814106,
+ "username": "agatavital13",
+ "totalCosts": 73.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
},
{
- "id": 15269576,
- "username": "camolina",
- "totalCosts": 459.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15269576/medium/1a3566292dbbb3d62c42cba932c6509c_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 18.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15657153,
- "username": "leomarar",
- "totalCosts": 119.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657153/medium/83f088e12e6711ed615f8dd77c3f2be7_default.png"
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
},
{
- "id": 15417044,
- "username": "venus_alva",
- "totalCosts": 80.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417044/medium/dcb0e341b1708f9b01351dcf1703d406.jpeg"
+ "id": 14788998,
+ "username": "ccosds",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788998/medium/c017c1ad3be88d19989d9a4619c3a4a4_default.png"
}
]
},
{
- "fileId": "5559",
+ "fileId": "2710",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 488.84,
+ "totalCosts": 410.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 348.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 14738174,
+ "username": "viniciusfortuna",
+ "totalCosts": 199.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14738174/medium/a23ee260095a908ffd92c2aa8dd6d7e6.jpeg"
},
{
- "id": 15373000,
- "username": "Fradique",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373000/medium/c69edcb05bc9178ba24cd99f3373ea9b.JPG"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 149.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 13193338,
+ "username": "brunoviniciusrp",
+ "totalCosts": 145.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13193338/medium/9f0dcf40dbd88d79fb56251f14440d90.jpg"
+ },
+ {
+ "id": 14776668,
+ "username": "ana.rodrigues",
+ "totalCosts": 130.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14776668/medium/33b69f1a9782852b41fd3fc57c204d12_default.png"
}
]
},
{
- "fileId": "7316",
+ "fileId": "6550",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1646.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 2123.02,
+ "totalCosts": 22.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15454064,
- "username": "thormiranda",
- "totalCosts": 520.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454064/medium/9a469555fbc3d3c781b12b438d7f0211_default.png"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 63.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "5561",
+ "fileId": "6546",
"contributors": [
- {
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 1105.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
- },
- {
- "id": 15082587,
- "username": "PLimabrz",
- "totalCosts": 474.7,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 151.5,
+ "totalCosts": 892.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15025129,
- "username": "willianpaixao",
- "totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025129/medium/ef1be11b8020b45c11dbd5a0bbea1aac_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 97.97,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15374622,
+ "username": "ronyszu",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15374622/medium/9fb47af6577de3e35fe691bb1dd02370.jpeg"
}
]
},
{
- "fileId": "7461",
+ "fileId": "6540",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1106.96,
+ "totalCosts": 539.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 609.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "2766",
+ "fileId": "2716",
"contributors": [
{
- "id": 14712840,
- "username": "FelipeMaitan",
- "totalCosts": 229.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712840/medium/cfd99eb4dba39d60d3f78be48724cebe.png"
+ "id": 14787358,
+ "username": "leideribeiro9150",
+ "totalCosts": 366.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 228.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 94.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15160588,
- "username": "R_Dark",
- "totalCosts": 202,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15160588/medium/3903ef1af6faeec9604b6db70b5e6233_default.png"
+ "id": 14788680,
+ "username": "lucasmelo.dev",
+ "totalCosts": 92.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788680/medium/21e30608f219ad1c980e7b7a5eabbf5b_default.png"
},
{
- "id": 14956337,
- "username": "lidianycs",
- "totalCosts": 189.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 87.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14659020,
- "username": "DanielTaqueto",
- "totalCosts": 115.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14659020/medium/56f5cb0b5617518f3cd660cb1834c9d7_default.png"
+ "id": 15532281,
+ "username": "betonogueira",
+ "totalCosts": 76.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532281/medium/7c1f4bf3375c193933afb4f969bd27e9_default.png"
},
{
"id": 14687376,
"username": "KlmnZ",
- "totalCosts": 90.9,
+ "totalCosts": 28.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 89.89,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 14785220,
+ "username": "rokinot",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14785220/medium/4a6f6852105b606735b08d45c74b0fd7.png"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 14768694,
+ "username": "ricardo85x",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14768694/medium/e63f9b8d3d789dc08be178d569abef0d.jpeg"
}
]
},
{
- "fileId": "2868",
+ "fileId": "2884",
"contributors": [
{
- "id": 14725224,
- "username": "julioabrahao",
- "totalCosts": 104.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14725224/medium/71c544a5f76fec25c5a1f156b4e74474.jpeg"
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 1054.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
},
{
- "id": 14713748,
- "username": "flyng12",
- "totalCosts": 88.88,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14713748/medium/c9ee0ecb2c8ecdb140bc6fdf8e7002b4.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 265.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 85.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 14787358,
+ "username": "leideribeiro9150",
+ "totalCosts": 146.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 54.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 40.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 37.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 14896188,
+ "username": "Megalo-don",
+ "totalCosts": 26.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14896188/medium/f5f379d22d24f76f3a69d28b32c68e08.png"
},
{
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ "id": 15158848,
+ "username": "massardo",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
},
+ {
+ "id": 14837284,
+ "username": "PaN-0-1",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2880",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 5.05,
+ "totalCosts": 188.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14712840,
- "username": "FelipeMaitan",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712840/medium/cfd99eb4dba39d60d3f78be48724cebe.png"
+ "id": 14687376,
+ "username": "KlmnZ",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
}
]
},
{
- "fileId": "2872",
+ "fileId": "7479",
"contributors": [
{
- "id": 14733026,
- "username": "iborba",
- "totalCosts": 375.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733026/medium/ffb6aa67fea863e4898aa8a6e5c69e87.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 1856.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 116.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 105.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7328",
+ "contributors": [
{
- "id": 14687376,
- "username": "KlmnZ",
- "totalCosts": 110.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 151.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7340",
+ "contributors": [
{
- "id": 14727924,
- "username": "YuriNascimento",
- "totalCosts": 92.92,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14727924/medium/64551c4f06627c3dc665d55f0c240b6f.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1489.75,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15446690,
- "username": "danielevilela",
- "totalCosts": 48.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15446690/medium/27e62df7f8d8d68479bced43d27bd11c.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 75.75,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7334",
+ "contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 947.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
+ {
+ "id": 15522236,
+ "username": "ferchahud",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522236/medium/d62cad2430fd3f86c7866e71e786133c_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7336",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 41.41,
+ "totalCosts": 965.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "5529",
+ "fileId": "7483",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 490.86,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 754.47,
+ "totalCosts": 357.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "2888",
+ "contributors": [
{
- "id": 15469896,
- "username": "matheussalcedoruiz",
- "totalCosts": 160.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15469896/medium/ce6eed4a36d8d7724e2d1537a41f7337.jpeg"
+ "id": 14801934,
+ "username": "allanalves",
+ "totalCosts": 280.78,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14801934/medium/71d98e9687c56244dd24046eb47d56fe_default.png"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 60.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 127.26,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15435992,
"username": "italosantana",
- "totalCosts": 49.49,
+ "totalCosts": 62.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
},
{
- "id": 14861994,
- "username": "DougPimentel",
- "totalCosts": 34.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861994/medium/6be234f83f98e8db755074900cf25b3d_default.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 57.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2852",
+ "contributors": [
+ {
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 188.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 15830251,
- "username": "paodequeijocompingado",
- "totalCosts": 31.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830251/medium/df305c6124650d8f50add955b4770062_default.png"
+ "id": 14824370,
+ "username": "wholopes",
+ "totalCosts": 174.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14824370/medium/824bf476fdbf27598a1617f08815c2da_default.png"
},
{
- "id": 15849127,
- "username": "IagoEmanuel15",
- "totalCosts": 20.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15646745,
- "username": "Mateusduartelima",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
+ "id": 15742705,
+ "username": "franciscosanchezzavala7",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15742705/medium/30cabea660ed3468b1d8fd9e701b0328.jpeg"
},
{
- "id": 15515516,
- "username": "MCreimer",
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
"totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
}
]
},
{
- "fileId": "2894",
+ "fileId": "2908",
"contributors": [
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 206.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 14858450,
+ "username": "marcio.vallep",
+ "totalCosts": 132.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14858450/medium/78a1cc0054358247a009cd3993270109.jpeg"
+ },
+ {
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 114.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 820.12,
+ "totalCosts": 94.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14607364,
- "username": "Guzzt",
- "totalCosts": 177.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14607364/medium/36f0bb0ce943d4d6b9b4de36a71d160a_default.png"
- },
- {
- "id": 14837106,
- "username": "rofis",
+ "id": 14789894,
+ "username": "Cruca",
"totalCosts": 46.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14789894/medium/7f33e6af512c3e8b86b684aa8f93ba8f_default.png"
},
{
"id": 14875990,
"username": "guilhermevendramini",
- "totalCosts": 38.38,
+ "totalCosts": 34.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 14956337,
- "username": "lidianycs",
- "totalCosts": 36.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 15080541,
"username": "Don_Martinez",
- "totalCosts": 2.02,
+ "totalCosts": 16.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
}
]
},
{
- "fileId": "7453",
+ "fileId": "7597",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1856.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 153.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ "id": 15422032,
+ "username": "Fritzhoy",
+ "totalCosts": 116.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
}
]
},
{
- "fileId": "2704",
+ "fileId": "2856",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 608.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14711642,
- "username": "kenowlee",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14711642/medium/cc1ab7ad933f06b0fc99de7457c6b3c9.jpeg"
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
},
{
- "id": 14749926,
- "username": "gabekings",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14749926/medium/85cf883e521a00c66e9d0aed65b93778_default.png"
+ "id": 14789894,
+ "username": "Cruca",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14789894/medium/7f33e6af512c3e8b86b684aa8f93ba8f_default.png"
+ },
+ {
+ "id": 14837284,
+ "username": "PaN-0-1",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
}
]
},
{
- "fileId": "7503",
+ "fileId": "2860",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 5180.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 17.17,
+ "totalCosts": 671.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- }
- ]
- },
- {
- "fileId": "7495",
- "contributors": [
+ },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 784.77,
+ "totalCosts": 135.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 56.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14787358,
+ "username": "leideribeiro9150",
+ "totalCosts": 55.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
+ {
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 48.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
}
]
},
{
- "fileId": "7605",
+ "fileId": "2752",
"contributors": [
{
- "id": 15790247,
- "username": "Callzonie",
- "totalCosts": 1042.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15790247/medium/bff2a46c8f3d2ee8027ca05362da9757_default.png"
+ "id": 14702518,
+ "username": "Byrde",
+ "totalCosts": 105.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 33.33,
+ "totalCosts": 93.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
}
]
},
{
- "fileId": "7601",
+ "fileId": "2786",
+ "contributors": []
+ },
+ {
+ "fileId": "5533",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 2040.2,
+ "totalCosts": 253.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15724803,
- "username": "Izabel_chaves",
- "totalCosts": 588.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724803/medium/7f2b4419d308a52a62f3b8f9ca9b4adf.jpg"
+ "id": 14967689,
+ "username": "leonardoluan2018",
+ "totalCosts": 126.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14967689/medium/e9e918da4dba2bd0a481b1cb2e1473c3.png"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 34.34,
+ "totalCosts": 52.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6564",
+ "fileId": "2914",
"contributors": [
- {
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 979.7,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 126.25,
+ "totalCosts": 366.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- }
- ]
- },
- {
- "fileId": "2702",
- "contributors": [
+ },
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 578.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14648500,
+ "username": "eduardogomes",
+ "totalCosts": 74.74,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14648500/medium/5a5e8744d81337987ba555be0e3dfdf2_default.png"
+ },
+ {
+ "id": 14837284,
+ "username": "PaN-0-1",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 292.9,
+ "totalCosts": 36.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 67.67,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
- },
- {
- "id": 15646745,
- "username": "Mateusduartelima",
- "totalCosts": 61.61,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
+ "id": 15171274,
+ "username": "matheuspoleza",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171274/medium/116eb81288db5943f5421648cd28c040.png"
},
{
- "id": 14733026,
- "username": "iborba",
- "totalCosts": 32.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14733026/medium/ffb6aa67fea863e4898aa8a6e5c69e87.jpeg"
- },
+ "id": 15468184,
+ "username": "0x7Ot",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15468184/medium/b625726e5392ff762e38fc10a38155c1.png"
+ }
+ ]
+ },
+ {
+ "fileId": "5525",
+ "contributors": [
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1764.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15661337,
- "username": "dariovlopes",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15661337/medium/7bdad35b42bb2e81620660e6456a90f9.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 540.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14631192,
- "username": "rafael.yanase",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631192/medium/543e6b0627ae51d46ab52d78181f46be.jpeg"
+ "id": 15221742,
+ "username": "Marlonfernandes7",
+ "totalCosts": 102.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
},
{
- "id": 14950197,
- "username": "SlashHash",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14950197/medium/20d99cde077abaee189a2dc7908d26f2.png"
+ "id": 15036833,
+ "username": "Cubano.brito",
+ "totalCosts": 75.75,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036833/medium/4988573ecbd20a37fe3504a4fd98b573_default.png"
},
{
"id": 14247352,
"username": "borja_reverter",
- "totalCosts": 2.02,
+ "totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- },
- {
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "7507",
+ "fileId": "6568",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 773.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 194.93,
+ "totalCosts": 2318.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7499",
+ "fileId": "6572",
"contributors": [
- {
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 940.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 513.08,
+ "totalCosts": 357.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15830291,
- "username": "juanlozano01534",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830291/medium/2163d30ac425b25292277c1e7b77f930.png"
- }
- ]
- },
- {
- "fileId": "6562",
- "contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 833.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "2712",
+ "fileId": "2898",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 685.79,
+ "totalCosts": 250.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14978447,
- "username": "DanDaro",
- "totalCosts": 118.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14978447/medium/6c0a867cdc72f871a6dd35862afa1562.jpg"
- },
- {
- "id": 14751422,
- "username": "Alexusz",
- "totalCosts": 116.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14751422/medium/1b45356738263d0753c5d9f87eacce86.jpg"
- },
- {
- "id": 14814106,
- "username": "agatavital13",
- "totalCosts": 73.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 239.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 18.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 14713664,
+ "username": "joaopaulomoraes",
+ "totalCosts": 150.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14713664/medium/2e6434d8e55ed74b8e43e168348d6ca0_default.png"
},
{
"id": 14247352,
"username": "borja_reverter",
- "totalCosts": 2.02,
+ "totalCosts": 16.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
},
{
- "id": 14788998,
- "username": "ccosds",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788998/medium/c017c1ad3be88d19989d9a4619c3a4a4_default.png"
+ "id": 16099664,
+ "username": "yanvictorsn",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
}
]
},
{
- "fileId": "2710",
+ "fileId": "7609",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 410.06,
+ "totalCosts": 1067.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 14738174,
- "username": "viniciusfortuna",
- "totalCosts": 199.98,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14738174/medium/a23ee260095a908ffd92c2aa8dd6d7e6.jpeg"
- },
- {
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 149.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "7617",
+ "contributors": [
{
- "id": 13193338,
- "username": "brunoviniciusrp",
- "totalCosts": 145.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13193338/medium/9f0dcf40dbd88d79fb56251f14440d90.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 343.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14776668,
- "username": "ana.rodrigues",
- "totalCosts": 130.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14776668/medium/33b69f1a9782852b41fd3fc57c204d12_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6550",
+ "fileId": "7324",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1646.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 22.22,
+ "totalCosts": 1145.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "6546",
+ "fileId": "2778",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 892.84,
+ "totalCosts": 512.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 97.97,
+ "totalCosts": 431.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15374622,
- "username": "ronyszu",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15374622/medium/9fb47af6577de3e35fe691bb1dd02370.jpeg"
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 51.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 14821880,
+ "username": "jonathanandrade10",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14821880/medium/59c6c840e75ec03af8b88b5005744137.jpeg"
+ },
+ {
+ "id": 14891780,
+ "username": "GabrielaAndere",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14891780/medium/27acbd59c98271b2bbb592ad38bc5f87.jpg"
}
]
},
{
- "fileId": "6540",
+ "fileId": "7619",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 539.34,
+ "totalCosts": 1490.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "2716",
+ "fileId": "7621",
"contributors": [
{
- "id": 14787358,
- "username": "leideribeiro9150",
- "totalCosts": 366.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 725.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2776",
+ "contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 115.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 94.94,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 14725224,
+ "username": "julioabrahao",
+ "totalCosts": 93.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14725224/medium/71c544a5f76fec25c5a1f156b4e74474.jpeg"
},
{
- "id": 14788680,
- "username": "lucasmelo.dev",
- "totalCosts": 92.92,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788680/medium/21e30608f219ad1c980e7b7a5eabbf5b_default.png"
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 78.78,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 87.87,
+ "totalCosts": 44.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15532281,
- "username": "betonogueira",
- "totalCosts": 76.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532281/medium/7c1f4bf3375c193933afb4f969bd27e9_default.png"
- },
- {
- "id": 14687376,
- "username": "KlmnZ",
- "totalCosts": 28.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
- },
- {
- "id": 14785220,
- "username": "rokinot",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14785220/medium/4a6f6852105b606735b08d45c74b0fd7.png"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
},
{
- "id": 14768694,
- "username": "ricardo85x",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14768694/medium/e63f9b8d3d789dc08be178d569abef0d.jpeg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "2884",
+ "fileId": "6173",
"contributors": [
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 325.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
{
"id": 15435992,
"username": "italosantana",
- "totalCosts": 1054.44,
+ "totalCosts": 148.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
},
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 87.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 14788998,
+ "username": "ccosds",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788998/medium/c017c1ad3be88d19989d9a4619c3a4a4_default.png"
+ },
+ {
+ "id": 15131067,
+ "username": "zazirskas",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15131067/medium/fc246a5fdbf0502a4a21ca7740bc19c8.jpeg"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2876",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 265.63,
+ "totalCosts": 1371.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 14787358,
- "username": "leideribeiro9150",
- "totalCosts": 146.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
- },
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 40.4,
+ "totalCosts": 521.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14896188,
- "username": "Megalo-don",
- "totalCosts": 26.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14896188/medium/f5f379d22d24f76f3a69d28b32c68e08.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 496.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15158848,
- "username": "massardo",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
+ "id": 15584703,
+ "username": "fcarva",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15584703/medium/fb380bf7a259c295e182898d9c5e5d34.png"
},
{
- "id": 14837284,
- "username": "PaN-0-1",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
+ "id": 14844258,
+ "username": "lincoln019",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14844258/medium/134fdb9bbfb5aaf221eee2470f148e58_default.png"
+ },
+ {
+ "id": 14633592,
+ "username": "Jhosephecacau",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
}
]
},
{
- "fileId": "2880",
+ "fileId": "6169",
"contributors": [
+ {
+ "id": 15158848,
+ "username": "massardo",
+ "totalCosts": 126.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 188.87,
+ "totalCosts": 20.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14687376,
- "username": "KlmnZ",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
}
]
},
{
- "fileId": "7479",
+ "fileId": "2736",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 1856.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14814106,
+ "username": "agatavital13",
+ "totalCosts": 88.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 105.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "7328",
+ "fileId": "2740",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 151.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 74.74,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "7340",
+ "fileId": "2748",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1573.58,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 75.75,
+ "totalCosts": 68.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7334",
+ "fileId": "2732",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 947.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14814106,
+ "username": "agatavital13",
+ "totalCosts": 57.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
},
{
- "id": 15522236,
- "username": "ferchahud",
- "totalCosts": 22.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522236/medium/d62cad2430fd3f86c7866e71e786133c_default.png"
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "7336",
+ "fileId": "2722",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 965.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15038969,
+ "username": "lalemcar260",
+ "totalCosts": 242.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038969/medium/ba1eb8218fc49239854c28720092989e.png"
+ },
+ {
+ "id": 14814106,
+ "username": "agatavital13",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
}
]
},
{
- "fileId": "7483",
+ "fileId": "2744",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 490.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14778302,
+ "username": "TheBrazilianDude",
+ "totalCosts": 63.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778302/medium/37d2cd78d18169087cd02610e823c074_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 357.54,
+ "totalCosts": 57.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
}
]
},
{
- "fileId": "2888",
+ "fileId": "2730",
"contributors": [
{
- "id": 14801934,
- "username": "allanalves",
- "totalCosts": 280.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14801934/medium/71d98e9687c56244dd24046eb47d56fe_default.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15887043,
+ "username": "vivianebuge",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 127.26,
+ "totalCosts": 8.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 62.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
- },
+ "id": 14814106,
+ "username": "agatavital13",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6424",
+ "contributors": [
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 57.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 295.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "2852",
+ "fileId": "2726",
"contributors": [
{
- "id": 14382632,
- "username": "gabe_san_",
- "totalCosts": 188.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
},
{
- "id": 14824370,
- "username": "wholopes",
- "totalCosts": 174.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14824370/medium/824bf476fdbf27598a1617f08815c2da_default.png"
+ "id": 15027079,
+ "username": "wmduuh",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 38.38,
+ "totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15742705,
- "username": "franciscosanchezzavala7",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15742705/medium/30cabea660ed3468b1d8fd9e701b0328.jpeg"
- },
- {
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15621485,
+ "username": "behzin",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15621485/medium/77e5257f434dea7677892a0d4a3f712f_default.png"
}
]
},
{
- "fileId": "2908",
+ "fileId": "2756",
"contributors": [
{
"id": 14247352,
"username": "borja_reverter",
- "totalCosts": 206.04,
+ "totalCosts": 378.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
},
{
- "id": 14858450,
- "username": "marcio.vallep",
- "totalCosts": 132.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14858450/medium/78a1cc0054358247a009cd3993270109.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 183.82,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14382632,
- "username": "gabe_san_",
- "totalCosts": 114.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 121.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6384",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 94.94,
+ "totalCosts": 3359.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14789894,
- "username": "Cruca",
+ "id": 15431346,
+ "username": "BenedettiLucca",
+ "totalCosts": 739.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
+ },
+ {
+ "id": 15430526,
+ "username": "arthuralfenascosta",
"totalCosts": 46.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14789894/medium/7f33e6af512c3e8b86b684aa8f93ba8f_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430526/medium/c8a8d1b819742228ea538934cb5cac49.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 34.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 43.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ }
+ ]
+ },
+ {
+ "fileId": "5489",
+ "contributors": [
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 1755.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 23.23,
+ "totalCosts": 574.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 307.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "7597",
+ "fileId": "5487",
"contributors": [
{
- "id": 15422032,
- "username": "Fritzhoy",
- "totalCosts": 116.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 697.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 53.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "5485",
+ "contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 2638.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 880.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15214190,
+ "username": "felipecardosoruff",
+ "totalCosts": 53.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214190/medium/05a412a9e565b4b662dce5d9f39dfaa8.jpeg"
}
]
},
{
- "fileId": "2856",
+ "fileId": "5483",
"contributors": [
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- },
- {
- "id": 15849127,
- "username": "IagoEmanuel15",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
- },
- {
- "id": 14789894,
- "username": "Cruca",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14789894/medium/7f33e6af512c3e8b86b684aa8f93ba8f_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 2223.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14837284,
- "username": "PaN-0-1",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
+ "id": 15522236,
+ "username": "ferchahud",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522236/medium/d62cad2430fd3f86c7866e71e786133c_default.png"
}
]
},
{
- "fileId": "2860",
+ "fileId": "6382",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 671.65,
+ "totalCosts": 3314.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 135.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 14787358,
- "username": "leideribeiro9150",
- "totalCosts": 55.55,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787358/medium/23937ae5016b2a370875018580c2905b.jpeg"
+ "id": 15657153,
+ "username": "leomarar",
+ "totalCosts": 362.59,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657153/medium/83f088e12e6711ed615f8dd77c3f2be7_default.png"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
- },
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 254.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ }
+ ]
+ },
+ {
+ "fileId": "2830",
+ "contributors": [
{
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 48.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 14667626,
+ "username": "matheusrrugolo",
+ "totalCosts": 451.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14667626/medium/8f3c59f10649fb1abbd53bee5614aa2b.jpeg"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14837106,
+ "username": "rofis",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
}
]
},
{
- "fileId": "2752",
+ "fileId": "2818",
"contributors": [
{
- "id": 14702518,
- "username": "Byrde",
- "totalCosts": 105.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14702518/medium/cc9b682031319fe073d73822ee71f11a_default.png"
+ "id": 14845960,
+ "username": "matusame",
+ "totalCosts": 687.81,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 93.93,
+ "totalCosts": 26.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
}
]
},
{
- "fileId": "2786",
- "contributors": []
- },
- {
- "fileId": "5533",
+ "fileId": "2814",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 253.51,
+ "totalCosts": 516.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14967689,
- "username": "leonardoluan2018",
- "totalCosts": 126.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14967689/medium/e9e918da4dba2bd0a481b1cb2e1473c3.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 175.74,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14544944,
+ "username": "emersonlaurentino",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14544944/medium/307497c490b2c0b11fd011f5f1938cf8.jpeg"
}
]
},
{
- "fileId": "2914",
+ "fileId": "2822",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 366.63,
+ "totalCosts": 49.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 14648500,
- "username": "eduardogomes",
- "totalCosts": 74.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14648500/medium/5a5e8744d81337987ba555be0e3dfdf2_default.png"
- },
- {
- "id": 14837284,
- "username": "PaN-0-1",
- "totalCosts": 37.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 36.36,
+ "totalCosts": 34.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 15171274,
- "username": "matheuspoleza",
- "totalCosts": 8.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171274/medium/116eb81288db5943f5421648cd28c040.png"
- },
- {
- "id": 15468184,
- "username": "0x7Ot",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15468184/medium/b625726e5392ff762e38fc10a38155c1.png"
}
]
},
{
- "fileId": "5525",
+ "fileId": "7473",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 1777.6,
+ "totalCosts": 3303.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 540.35,
+ "totalCosts": 874.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15221742,
- "username": "Marlonfernandes7",
- "totalCosts": 102.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
- },
- {
- "id": 15036833,
- "username": "Cubano.brito",
- "totalCosts": 77.77,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036833/medium/4988573ecbd20a37fe3504a4fd98b573_default.png"
- },
- {
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 47.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
- },
- {
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 38.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "6568",
+ "fileId": "2810",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 2332.09,
+ "totalCosts": 208.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 137.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "6572",
+ "fileId": "2808",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 357.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 520.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 28.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- }
- ]
- },
- {
- "fileId": "2898",
- "contributors": [
+ "id": 14837106,
+ "username": "rofis",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 250.48,
+ "totalCosts": 46.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 239.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 14713664,
- "username": "joaopaulomoraes",
- "totalCosts": 150.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14713664/medium/2e6434d8e55ed74b8e43e168348d6ca0_default.png"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15027079,
+ "username": "wmduuh",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
},
{
- "id": 16099664,
- "username": "yanvictorsn",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
+ "id": 14837284,
+ "username": "PaN-0-1",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
}
]
},
{
- "fileId": "7609",
+ "fileId": "2826",
"contributors": [
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 48.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1067.57,
+ "totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7617",
+ "fileId": "2902",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 343.4,
+ "totalCosts": 3989.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 408.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 15435992,
+ "username": "italosantana",
+ "totalCosts": 394.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 12.12,
+ "totalCosts": 99.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- }
- ]
- },
- {
- "fileId": "7324",
- "contributors": [
+ },
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 1145.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14815414,
+ "username": "KoelhoSec",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14815414/medium/cc746b15dd6d2fa3bc01369caaef44ed.png"
}
]
},
{
- "fileId": "2778",
+ "fileId": "2804",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 526.21,
+ "totalCosts": 2083.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
+ {
+ "id": 14573604,
+ "username": "bceschini",
+ "totalCosts": 759.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 431.27,
+ "totalCosts": 264.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 66.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ "id": 15957415,
+ "username": "viniblack",
+ "totalCosts": 62.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957415/medium/4a20bc04c8d7834f8f7b7e76ad4c7f97.jpeg"
},
+ {
+ "id": 12557683,
+ "username": "lucasrl",
+ "totalCosts": 44.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12557683/medium/5c01a0fc29af9e0b22d8d00c40fd8d61.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "2848",
+ "contributors": [
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 51.51,
+ "totalCosts": 106.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14821880,
- "username": "jonathanandrade10",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14821880/medium/59c6c840e75ec03af8b88b5005744137.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14891780,
- "username": "GabrielaAndere",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14891780/medium/27acbd59c98271b2bbb592ad38bc5f87.jpg"
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 14956337,
+ "username": "lidianycs",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
}
]
},
{
- "fileId": "7619",
+ "fileId": "6171",
"contributors": [
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 647.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1490.76,
+ "totalCosts": 58.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "7621",
+ "fileId": "2840",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 725.18,
+ "totalCosts": 148.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 46.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "2776",
+ "fileId": "6532",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 115.14,
+ "totalCosts": 491.87,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2846",
+ "contributors": [
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 51.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14725224,
- "username": "julioabrahao",
- "totalCosts": 93.93,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14725224/medium/71c544a5f76fec25c5a1f156b4e74474.jpeg"
+ "id": 14956337,
+ "username": "lidianycs",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "5521",
+ "contributors": [
+ {
+ "id": 15000979,
+ "username": "mauri.lustosa",
+ "totalCosts": 74.74,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15000979/medium/d3463e880ee39ff00ec110108c7c1711.png"
},
{
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 78.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 65.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 44.44,
+ "totalCosts": 29.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 39.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 36.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "6173",
+ "fileId": "2842",
"contributors": [
- {
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 325.22,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 148.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
- },
{
"id": 14247352,
"username": "borja_reverter",
- "totalCosts": 87.87,
+ "totalCosts": 33.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
},
{
- "id": 14788998,
- "username": "ccosds",
- "totalCosts": 38.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788998/medium/c017c1ad3be88d19989d9a4619c3a4a4_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15131067,
- "username": "zazirskas",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15131067/medium/fc246a5fdbf0502a4a21ca7740bc19c8.jpeg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "2876",
+ "fileId": "2798",
"contributors": [
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 186.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1371.58,
+ "totalCosts": 72.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 521.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 496.92,
+ "totalCosts": 65.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15584703,
- "username": "fcarva",
+ "id": 15317682,
+ "username": "junowoz",
"totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15584703/medium/fb380bf7a259c295e182898d9c5e5d34.png"
- },
- {
- "id": 14844258,
- "username": "lincoln019",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14844258/medium/134fdb9bbfb5aaf221eee2470f148e58_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14633592,
- "username": "Jhosephecacau",
+ "id": 14382632,
+ "username": "gabe_san_",
"totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
}
]
},
{
- "fileId": "6169",
+ "fileId": "2792",
"contributors": [
- {
- "id": 15158848,
- "username": "massardo",
- "totalCosts": 126.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 20.2,
+ "totalCosts": 500.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
- }
- ]
- },
- {
- "fileId": "2736",
- "contributors": [
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
- "id": 14814106,
- "username": "agatavital13",
- "totalCosts": 99.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
}
]
},
{
- "fileId": "2740",
+ "fileId": "2762",
"contributors": [
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 74.74,
+ "totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
}
]
},
{
- "fileId": "2748",
+ "fileId": "3128",
"contributors": [
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 407.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 68.68,
+ "totalCosts": 60.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "2732",
+ "fileId": "3002",
"contributors": [
{
- "id": 14814106,
- "username": "agatavital13",
- "totalCosts": 57.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 520.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
+ "id": 19793,
+ "username": "cadu",
+ "totalCosts": 95.95,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/19793/medium/e2b4385d621e616e71301f11eaae32c5_default.png"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14888266,
+ "username": "sandrogomes101",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14888266/medium/ec3720087a2af8b90ac90119f026a2f8.png"
}
]
},
{
- "fileId": "2722",
+ "fileId": "6227",
"contributors": [
{
- "id": 15038969,
- "username": "lalemcar260",
+ "id": 15158848,
+ "username": "massardo",
+ "totalCosts": 992.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 465.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
"totalCosts": 253.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038969/medium/ba1eb8218fc49239854c28720092989e.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14814106,
- "username": "agatavital13",
- "totalCosts": 20.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ "id": 14790884,
+ "username": "rubemarjr18",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14790884/medium/1cec4afc62c4a1a483abe29e485d48e2.jpg"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 50.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "2744",
+ "fileId": "6223",
"contributors": [
{
- "id": 14778302,
- "username": "TheBrazilianDude",
- "totalCosts": 63.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778302/medium/37d2cd78d18169087cd02610e823c074_default.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 368.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 57.57,
+ "totalCosts": 364.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 237.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
},
{
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
+ "id": 15584703,
+ "username": "fcarva",
+ "totalCosts": 102.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15584703/medium/fb380bf7a259c295e182898d9c5e5d34.png"
}
]
},
{
- "fileId": "2730",
+ "fileId": "6225",
"contributors": [
{
"id": 15114963,
"username": "tiagoyonamine.eth",
- "totalCosts": 24.24,
+ "totalCosts": 256.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
},
- {
- "id": 15887043,
- "username": "vivianebuge",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 8.08,
+ "totalCosts": 89.89,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14814106,
- "username": "agatavital13",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814106/medium/4a3a75b77ba9e8f3ed12460e0191e03b_default.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 53.53,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "6424",
+ "fileId": "6221",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 307.04,
+ "totalCosts": 294.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 135.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ },
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "2726",
+ "fileId": "3082",
"contributors": [
{
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 27.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 13719925,
+ "username": "alexpaganmin",
+ "totalCosts": 707,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13719925/medium/d065a18c910db1080c95637ecc28d6da.jpg"
},
{
- "id": 15027079,
- "username": "wmduuh",
- "totalCosts": 21.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 301.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 6.06,
+ "totalCosts": 234.32,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15621485,
- "username": "behzin",
+ "id": 15526425,
+ "username": "xReDzin",
+ "totalCosts": 47.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15526425/medium/69278630b1c357a38d62e3e762fcf45b.gif"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
"totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15621485/medium/77e5257f434dea7677892a0d4a3f712f_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
}
]
},
{
- "fileId": "2756",
+ "fileId": "3018",
"contributors": [
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 378.75,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14981089,
+ "username": "daniloraisi",
+ "totalCosts": 132.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14981089/medium/37d319f7ff289b5141aea317cb808deb.jpeg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 183.82,
+ "totalCosts": 47.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 121.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15912891,
+ "username": "Cristianoluizz",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15258752,
+ "username": "joserrbv",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15258752/medium/ec21ac21287dcdbd73ab57b6fb0dc50e_default.png"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "6384",
+ "fileId": "3006",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 3386.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15431346,
- "username": "BenedettiLucca",
- "totalCosts": 739.32,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
- },
- {
- "id": 15430526,
- "username": "arthuralfenascosta",
- "totalCosts": 46.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430526/medium/c8a8d1b819742228ea538934cb5cac49.png"
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 108.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 43.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "5489",
+ "fileId": "6239",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 1755.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15422032,
+ "username": "Fritzhoy",
+ "totalCosts": 6739.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 574.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 2645.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 307.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15124669,
+ "username": "iankressin",
+ "totalCosts": 173.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15124669/medium/6fa8b8d345657331557c5c67de45680c.jpeg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 80.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15446690,
+ "username": "danielevilela",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15446690/medium/27e62df7f8d8d68479bced43d27bd11c.jpeg"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "5487",
+ "fileId": "2950",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 713.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 273.71,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15454064,
+ "username": "thormiranda",
+ "totalCosts": 142.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454064/medium/9a469555fbc3d3c781b12b438d7f0211_default.png"
},
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 53.53,
+ "totalCosts": 52.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "5485",
+ "fileId": "6183",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 2638.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 92.92,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 880.72,
+ "totalCosts": 78.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15214190,
- "username": "felipecardosoruff",
- "totalCosts": 53.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214190/medium/05a412a9e565b4b662dce5d9f39dfaa8.jpeg"
- }
- ]
- },
- {
- "fileId": "5483",
- "contributors": [
+ "id": 15623763,
+ "username": "luanitaa",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15623763/medium/09023a39325813d6499aa3ddf184f212_default.png"
+ },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 2223.01,
+ "totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15522236,
- "username": "ferchahud",
- "totalCosts": 25.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522236/medium/d62cad2430fd3f86c7866e71e786133c_default.png"
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
+ {
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
}
]
},
{
- "fileId": "6382",
+ "fileId": "2680",
"contributors": [
+ {
+ "id": 13893213,
+ "username": "RelliuG",
+ "totalCosts": 314.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13893213/medium/88d6b8bda7b6073efd27b5a1799694cc.jpeg"
+ },
+ {
+ "id": 14711810,
+ "username": "malzebu",
+ "totalCosts": 169.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14711810/medium/cd03191615e232f82ead1a505c725868.jpeg"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 3325.93,
+ "totalCosts": 44.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15657153,
- "username": "leomarar",
- "totalCosts": 362.59,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657153/medium/83f088e12e6711ed615f8dd77c3f2be7_default.png"
+ "id": 15575979,
+ "username": "MarianeNavarro",
+ "totalCosts": 43.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15575979/medium/06bee989c7903c83e2ebe29f4cb44d17.jpeg"
},
{
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 254.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "2830",
+ "fileId": "2684",
"contributors": [
{
- "id": 14667626,
- "username": "matheusrrugolo",
- "totalCosts": 457.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14667626/medium/8f3c59f10649fb1abbd53bee5614aa2b.jpeg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14837106,
- "username": "rofis",
- "totalCosts": 66.66,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "2818",
+ "fileId": "2962",
"contributors": [
{
- "id": 14845960,
- "username": "matusame",
- "totalCosts": 687.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
+ "id": 14636118,
+ "username": "frontedu",
+ "totalCosts": 158.57,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14636118/medium/d3d3ec3fab34702c4b19674b06e1ddff.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 26.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 65.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14687376,
+ "username": "KlmnZ",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
}
]
},
{
- "fileId": "2814",
+ "fileId": "2954",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 516.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 175.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 14544944,
- "username": "emersonlaurentino",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14544944/medium/307497c490b2c0b11fd011f5f1938cf8.jpeg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "2822",
+ "fileId": "5563",
"contributors": [
+ {
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 1588.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 49.49,
+ "totalCosts": 178.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 34.34,
+ "totalCosts": 30.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
}
]
},
{
- "fileId": "7473",
+ "fileId": "7529",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 3303.71,
+ "totalCosts": 483.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 874.66,
+ "totalCosts": 48.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "2810",
+ "fileId": "7533",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 230.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 208.06,
+ "totalCosts": 38.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 137.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "2808",
+ "fileId": "7537",
"contributors": [
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 520.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- },
- {
- "id": 14837106,
- "username": "rofis",
- "totalCosts": 68.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837106/medium/e87698d84d41483de2a57483ff5d9455.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 251.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 46.46,
+ "totalCosts": 95.95,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7541",
+ "contributors": [
+ {
+ "id": 15728117,
+ "username": "alnrsnd",
+ "totalCosts": 338.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15728117/medium/7631d966177edc87bcb5a0cbd146ca21_default.png"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 241.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15027079,
- "username": "wmduuh",
- "totalCosts": 10.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 231.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14837284,
- "username": "PaN-0-1",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837284/medium/7f1ad04832bb028fe66564804f5326ee.png"
+ "id": 16099664,
+ "username": "yanvictorsn",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
}
]
},
{
- "fileId": "2826",
+ "fileId": "7521",
"contributors": [
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 48.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 91.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 13.13,
+ "totalCosts": 31.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15887043,
+ "username": "vivianebuge",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png"
}
]
},
{
- "fileId": "2902",
+ "fileId": "2672",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 3989.5,
+ "totalCosts": 339.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 408.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15652697,
+ "username": "ThewsyRum",
+ "totalCosts": 227.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15652697/medium/416cd66d87d185091af51f9aecb60262.jpeg"
},
{
- "id": 15435992,
- "username": "italosantana",
- "totalCosts": 394.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 63.63,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 99.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14687376,
+ "username": "KlmnZ",
+ "totalCosts": 58.58,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
},
{
- "id": 14815414,
- "username": "KoelhoSec",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14815414/medium/cc746b15dd6d2fa3bc01369caaef44ed.png"
- }
- ]
- },
- {
- "fileId": "2804",
- "contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 2083.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
},
{
- "id": 14573604,
- "username": "bceschini",
- "totalCosts": 759.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
+ "id": 15932353,
+ "username": "nickksoares",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 264.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 15575979,
+ "username": "MarianeNavarro",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15575979/medium/06bee989c7903c83e2ebe29f4cb44d17.jpeg"
},
{
- "id": 15957415,
- "username": "viniblack",
- "totalCosts": 62.62,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957415/medium/4a20bc04c8d7834f8f7b7e76ad4c7f97.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 12557683,
- "username": "lucasrl",
- "totalCosts": 44.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12557683/medium/5c01a0fc29af9e0b22d8d00c40fd8d61.jpg"
+ "id": 15025129,
+ "username": "willianpaixao",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025129/medium/ef1be11b8020b45c11dbd5a0bbea1aac_default.png"
}
]
},
{
- "fileId": "2848",
+ "fileId": "5565",
"contributors": [
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 106.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 16099664,
+ "username": "yanvictorsn",
+ "totalCosts": 245.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 21.21,
+ "totalCosts": 207.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 23.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
},
{
- "id": 14956337,
- "username": "lidianycs",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
- }
- ]
- },
- {
- "fileId": "6171",
- "contributors": [
+ "id": 15912891,
+ "username": "Cristianoluizz",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ },
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 647.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15646745,
+ "username": "Mateusduartelima",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
+ },
+ {
+ "id": 15756451,
+ "username": "Renatoossuna",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15756451/medium/5110e7d1d4cd5bd96c8ba7e33dbd3fa5_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 58.58,
+ "totalCosts": 3.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
- },
- {
- "id": 15515516,
- "username": "MCreimer",
+ "id": 15207648,
+ "username": "bettercallvictor.eth",
"totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15207648/medium/1e33933ce378946f204d7c76d7c246e5_default.png"
}
]
},
{
- "fileId": "2840",
+ "fileId": "2946",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 148.47,
+ "totalCosts": 279.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 46.46,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15431346,
+ "username": "BenedettiLucca",
+ "totalCosts": 80.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- }
- ]
- },
- {
- "fileId": "6532",
- "contributors": [
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 491.87,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- }
- ]
- },
- {
- "fileId": "2846",
- "contributors": [
+ "id": 14546464,
+ "username": "LucyCroft",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14546464/medium/23420a0e95c1f9a0fd75df5dba6ad564_default.png"
+ },
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 51.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 14676296,
+ "username": "RenataBrito",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14676296/medium/55c59b8d0a0a3366ed1c96d361c661a6_default.png"
},
{
- "id": 14956337,
- "username": "lidianycs",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956337/medium/918c6540264cbd711a5a6616ebb2c3ee.jpg"
- }
- ]
- },
- {
- "fileId": "5521",
- "contributors": [
+ "id": 14957477,
+ "username": "asdcBRA",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ },
{
- "id": 15000979,
- "username": "mauri.lustosa",
- "totalCosts": 74.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15000979/medium/d3463e880ee39ff00ec110108c7c1711.png"
+ "id": 14564426,
+ "username": "bschorchit",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564426/medium/85aa92771b96f81e3a10f1580a58e799.jpeg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 65.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 14554170,
+ "username": "eriknoronha",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14554170/medium/b6bf26ec67d0187f0829c5a6256d68b2.jpeg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 29.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "2842",
+ "fileId": "2926",
"contributors": [
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 33.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 1553.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14845960,
+ "username": "matusame",
+ "totalCosts": 249.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
+ },
+ {
+ "id": 14573604,
+ "username": "bceschini",
+ "totalCosts": 190.89,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
},
{
"id": 15317682,
"username": "junowoz",
- "totalCosts": 8.08,
+ "totalCosts": 71.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- }
- ]
- },
- {
- "fileId": "2798",
- "contributors": [
+ "id": 15407760,
+ "username": "copolicarpo",
+ "totalCosts": 56.56,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15407760/medium/0bb4e29f63caab6a171545e2b9f816c0.jpeg"
+ },
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 186.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15451376,
+ "username": "ingrid.gomes",
+ "totalCosts": 41.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451376/medium/d3c5b2232f1bd59cd3d64e0c7acb6a29_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 72.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14564426,
+ "username": "bschorchit",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564426/medium/85aa92771b96f81e3a10f1580a58e799.jpeg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 65.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15403124,
+ "username": "thipatriota",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15403124/medium/644dd7d6fdb31184faa67b00f7914d5b.jpg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15171456,
+ "username": "batatinhachipis",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171456/medium/74e0a699c86e8002bdf83efee754d5c5_default.png"
},
{
- "id": 14382632,
- "username": "gabe_san_",
+ "id": 14571740,
+ "username": "DeFalT_910",
"totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14571740/medium/b9399646973ad106a1c00dfbc772b708.jpg"
}
]
},
{
- "fileId": "2792",
+ "fileId": "7515",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 500.96,
+ "totalCosts": 1372.59,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
- },
- {
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 15323182,
+ "username": "cerberushades",
+ "totalCosts": 139.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15323182/medium/e643040993dd40ba24bb0a13b41a322b.jpeg"
}
]
},
{
- "fileId": "2762",
+ "fileId": "6187",
"contributors": [
+ {
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 603.98,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 223.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 222.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15119565,
+ "username": "leandroauzier",
+ "totalCosts": 184.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15119565/medium/72e054dacc99c0b30a5fe95c85676915_default.png"
+ },
+ {
+ "id": 15114593,
+ "username": "RiquinPassaRodo",
+ "totalCosts": 111.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114593/medium/45a10f0be483ccb1556ea7f51d741677.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 38.38,
+ "totalCosts": 44.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15171456,
+ "username": "batatinhachipis",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171456/medium/74e0a699c86e8002bdf83efee754d5c5_default.png"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 13475374,
+ "username": "mayumiadati",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13475374/medium/864bb3fcfb0c72599d60763779987c84_default.png"
},
{
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "3128",
+ "fileId": "6440",
"contributors": [
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 452.48,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 298.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 60.6,
+ "totalCosts": 69.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15221742,
+ "username": "Marlonfernandes7",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
}
]
},
{
- "fileId": "3002",
+ "fileId": "7314",
"contributors": [
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 520.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 1086.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
- "id": 19793,
- "username": "cadu",
- "totalCosts": 95.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/19793/medium/e2b4385d621e616e71301f11eaae32c5_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 136.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 13.13,
+ "totalCosts": 70.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14888266,
- "username": "sandrogomes101",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14888266/medium/ec3720087a2af8b90ac90119f026a2f8.png"
+ "id": 14668114,
+ "username": "ttinho",
+ "totalCosts": 42.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668114/medium/abb6c5088e9fedee0db9d42e5079b776.jpeg"
+ },
+ {
+ "id": 15370734,
+ "username": "Vinegario",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15370734/medium/a535a547d7a22cf7a467645270f464fb.png"
}
]
},
{
- "fileId": "6227",
+ "fileId": "6518",
"contributors": [
{
- "id": 15158848,
- "username": "massardo",
- "totalCosts": 992.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15158848/medium/e71dc81c159e8a7f2393636435ad6e09.jpeg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 382.79,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 465.61,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 181.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 253.51,
+ "totalCosts": 134.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14790884,
- "username": "rubemarjr18",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14790884/medium/1cec4afc62c4a1a483abe29e485d48e2.jpg"
+ "id": 15207648,
+ "username": "bettercallvictor.eth",
+ "totalCosts": 37.37,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15207648/medium/1e33933ce378946f204d7c76d7c246e5_default.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 50.5,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15036833,
+ "username": "Cubano.brito",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036833/medium/4988573ecbd20a37fe3504a4fd98b573_default.png"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 16183768,
+ "username": "zxya",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16183768/medium/9d897b4b01fb6b6399e896256b998abf.png"
+ },
+ {
+ "id": 15965949,
+ "username": "Lazaro0809",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965949/medium/9020c1f4fa4c1fa572cb78f2ee3a3257_default.png"
+ },
+ {
+ "id": 15912891,
+ "username": "Cristianoluizz",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
}
]
},
{
- "fileId": "6223",
+ "fileId": "6524",
"contributors": [
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 368.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 509.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 364.61,
+ "totalCosts": 269.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 237.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
- },
- {
- "id": 15584703,
- "username": "fcarva",
- "totalCosts": 102.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15584703/medium/fb380bf7a259c295e182898d9c5e5d34.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 187.86,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6225",
+ "fileId": "6526",
"contributors": [
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 256.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15226778,
+ "username": "paulogio",
+ "totalCosts": 1691.75,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 143.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 89.89,
+ "totalCosts": 122.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 53.53,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ },
+ {
+ "id": 15912891,
+ "username": "Cristianoluizz",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
}
]
},
{
- "fileId": "6221",
+ "fileId": "7591",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 294.92,
+ "totalCosts": 1706.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 135.34,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15813703,
+ "username": "Brian1997",
+ "totalCosts": 399.96,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813703/medium/4fbeb047eb6a975b8edfd526c0c05bee_default.png"
},
{
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 36.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ "id": 15912891,
+ "username": "Cristianoluizz",
+ "totalCosts": 170.69,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
},
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15932353,
+ "username": "nickksoares",
+ "totalCosts": 134.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
+ },
+ {
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 65.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ },
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 42.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "3082",
+ "fileId": "6428",
"contributors": [
{
- "id": 13719925,
- "username": "alexpaganmin",
- "totalCosts": 707,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13719925/medium/d065a18c910db1080c95637ecc28d6da.jpg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 301.99,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15245586,
+ "username": "s3ttings",
+ "totalCosts": 444.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15245586/medium/255e604fc64ada6f55a802ea9de2204a_default.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 234.32,
+ "totalCosts": 405.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15526425,
- "username": "xReDzin",
- "totalCosts": 47.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15526425/medium/69278630b1c357a38d62e3e762fcf45b.gif"
+ "id": 15241638,
+ "username": "Panegali",
+ "totalCosts": 247.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
},
{
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ "id": 14788762,
+ "username": "cafeweb",
+ "totalCosts": 51.51,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788762/medium/1ec3f24a57a4081619b7bb8014a245bb.png"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "3018",
+ "fileId": "2958",
"contributors": [
- {
- "id": 14981089,
- "username": "daniloraisi",
- "totalCosts": 132.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14981089/medium/37d319f7ff289b5141aea317cb808deb.jpeg"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 47.47,
+ "totalCosts": 9191,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15912891,
- "username": "Cristianoluizz",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 1433.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
"id": 15258752,
"username": "joserrbv",
- "totalCosts": 12.12,
+ "totalCosts": 833.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15258752/medium/ec21ac21287dcdbd73ab57b6fb0dc50e_default.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- }
- ]
- },
- {
- "fileId": "3006",
- "contributors": [
+ "id": 14978447,
+ "username": "DanDaro",
+ "totalCosts": 445.41,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14978447/medium/6c0a867cdc72f871a6dd35862afa1562.jpg"
+ },
{
- "id": 14382632,
- "username": "gabe_san_",
- "totalCosts": 108.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ "id": 15027079,
+ "username": "wmduuh",
+ "totalCosts": 422.18,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 27.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15221742,
+ "username": "Marlonfernandes7",
+ "totalCosts": 43.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
- }
- ]
- },
- {
- "fileId": "6239",
- "contributors": [
+ "id": 15038625,
+ "username": "maelsonfide",
+ "totalCosts": 33.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038625/medium/8d1ebb7c168fd35417c24d77dfb8f135.jpeg"
+ },
{
- "id": 15422032,
- "username": "Fritzhoy",
- "totalCosts": 6739.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
+ "id": 14668742,
+ "username": "lmichelin",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668742/medium/4795bc8addc58e5321b69990d43cf3b4_default.png"
},
{
- "id": 15165600,
- "username": "Horberlan",
- "totalCosts": 2645.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
+ "id": 15080541,
+ "username": "Don_Martinez",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
},
{
- "id": 15124669,
- "username": "iankressin",
- "totalCosts": 173.72,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15124669/medium/6fa8b8d345657331557c5c67de45680c.jpeg"
+ "id": 15050333,
+ "username": "rafacris10",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15050333/medium/e6ffe2282c3dbc63a3c3f69a65a9244f.jpeg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 15212290,
+ "username": "danicuki",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15212290/medium/2fe9878b523e9a9baf3a9bd997ba84fb.jpeg"
},
{
- "id": 15446690,
- "username": "danielevilela",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15446690/medium/27e62df7f8d8d68479bced43d27bd11c.jpeg"
+ "id": 15646745,
+ "username": "Mateusduartelima",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 10.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 13893213,
+ "username": "RelliuG",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13893213/medium/88d6b8bda7b6073efd27b5a1799694cc.jpeg"
}
]
},
{
- "fileId": "2950",
+ "fileId": "7465",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 2257.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 273.71,
+ "totalCosts": 966.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15454064,
- "username": "thormiranda",
- "totalCosts": 142.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454064/medium/9a469555fbc3d3c781b12b438d7f0211_default.png"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "6183",
+ "fileId": "8019",
"contributors": [
{
- "id": 15849127,
- "username": "IagoEmanuel15",
- "totalCosts": 92.92,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 532.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "8023",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 78.78,
+ "totalCosts": 1100.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 15623763,
- "username": "luanitaa",
- "totalCosts": 15.15,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15623763/medium/09023a39325813d6499aa3ddf184f212_default.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 14.14,
+ "totalCosts": 884.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
- {
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
- },
- {
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
}
]
},
{
- "fileId": "2680",
+ "fileId": "7927",
"contributors": [
- {
- "id": 13893213,
- "username": "RelliuG",
- "totalCosts": 314.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13893213/medium/88d6b8bda7b6073efd27b5a1799694cc.jpeg"
- },
- {
- "id": 14711810,
- "username": "malzebu",
- "totalCosts": 169.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14711810/medium/cd03191615e232f82ead1a505c725868.jpeg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 68.68,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 44.44,
+ "totalCosts": 1505.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
- {
- "id": 15575979,
- "username": "MarianeNavarro",
- "totalCosts": 43.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15575979/medium/06bee989c7903c83e2ebe29f4cb44d17.jpeg"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 13.13,
+ "totalCosts": 24.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "2684",
+ "fileId": "7525",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 590.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 14247352,
+ "username": "borja_reverter",
+ "totalCosts": 153.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 20.2,
+ "totalCosts": 78.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 15740363,
+ "username": "Claudiojmoreira",
+ "totalCosts": 36.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15740363/medium/b998f6d1784d3b5ec2cd69dac9ca5e8c.jpeg"
}
]
},
{
- "fileId": "2962",
+ "fileId": "8027",
"contributors": [
{
- "id": 14636118,
- "username": "frontedu",
- "totalCosts": 158.57,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14636118/medium/d3d3ec3fab34702c4b19674b06e1ddff.png"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1070.6,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "8035",
+ "contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 65.65,
+ "totalCosts": 1165.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14687376,
- "username": "KlmnZ",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
+ "id": 16099664,
+ "username": "yanvictorsn",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
}
]
},
{
- "fileId": "2954",
+ "fileId": "7713",
"contributors": [
{
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 13.13,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 2207.86,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14382632,
- "username": "gabe_san_",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
+ "id": 15836847,
+ "username": "k77",
+ "totalCosts": 208.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15836847/medium/a83e58c4be6c8ef96bda97967d4703cd.png"
},
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15830251,
+ "username": "paodequeijocompingado",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830251/medium/df305c6124650d8f50add955b4770062_default.png"
}
]
},
{
- "fileId": "5563",
+ "fileId": "7717",
"contributors": [
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 1588.73,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 1244.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 178.77,
+ "totalCosts": 501.97,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 31.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
- },
+ "id": 15849127,
+ "username": "IagoEmanuel15",
+ "totalCosts": 61.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7721",
+ "contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 493.89,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
}
]
},
{
- "fileId": "7529",
+ "fileId": "7803",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 483.79,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 1087.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 48.48,
+ "totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7533",
+ "fileId": "7725",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 230.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 38.38,
+ "totalCosts": 962.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14573604,
+ "username": "bceschini",
+ "totalCosts": 150.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
}
]
},
{
- "fileId": "7537",
+ "fileId": "7729",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 251.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 95.95,
+ "totalCosts": 394.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14573604,
+ "username": "bceschini",
+ "totalCosts": 334.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
}
]
},
{
- "fileId": "7541",
+ "fileId": "7733",
"contributors": [
- {
- "id": 15728117,
- "username": "alnrsnd",
- "totalCosts": 338.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15728117/medium/7631d966177edc87bcb5a0cbd146ca21_default.png"
- },
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 241.39,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 231.29,
+ "totalCosts": 560.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 16099664,
- "username": "yanvictorsn",
- "totalCosts": 16.16,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
+ "id": 15902117,
+ "username": "cassio.gusson",
+ "totalCosts": 221.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902117/medium/07ad2db947468fb4ed35ed2b9e51f8d2.png"
}
]
},
{
- "fileId": "7521",
+ "fileId": "7737",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 91.91,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 850.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7741",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 31.31,
+ "totalCosts": 1289.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15887043,
- "username": "vivianebuge",
- "totalCosts": 28.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png"
+ "id": 15422032,
+ "username": "Fritzhoy",
+ "totalCosts": 508.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
}
]
},
{
- "fileId": "2672",
+ "fileId": "7745",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 339.36,
+ "totalCosts": 1883.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15652697,
- "username": "ThewsyRum",
- "totalCosts": 227.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15652697/medium/416cd66d87d185091af51f9aecb60262.jpeg"
- },
- {
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 63.63,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
- },
- {
- "id": 14687376,
- "username": "KlmnZ",
- "totalCosts": 58.58,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14687376/medium/d2bdfed3972ab3df1ac68ab0ad851dab_default.png"
- },
+ "id": 15902493,
+ "username": "victorsalles",
+ "totalCosts": 137.36,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902493/medium/d8ecbd67e54b44d12e95650bd9371463_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7749",
+ "contributors": [
{
"id": 15350616,
"username": "Carlos_Silva",
- "totalCosts": 30.3,
+ "totalCosts": 517.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
},
{
- "id": 15932353,
- "username": "nickksoares",
- "totalCosts": 25.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
- },
- {
- "id": 15575979,
- "username": "MarianeNavarro",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15575979/medium/06bee989c7903c83e2ebe29f4cb44d17.jpeg"
+ "id": 15837087,
+ "username": "gabekoin",
+ "totalCosts": 52.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837087/medium/198e2d3ce88fd597d2f6a39fcc40964a.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 9.09,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 17.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7753",
+ "contributors": [
{
- "id": 15025129,
- "username": "willianpaixao",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025129/medium/ef1be11b8020b45c11dbd5a0bbea1aac_default.png"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 1256.44,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
}
]
},
{
- "fileId": "5565",
+ "fileId": "7919",
"contributors": [
{
- "id": 16099664,
- "username": "yanvictorsn",
- "totalCosts": 245.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
+ "id": 15932353,
+ "username": "nickksoares",
+ "totalCosts": 749.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 207.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 511.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 23.23,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 107.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
},
{
- "id": 15912891,
- "username": "Cristianoluizz",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ "id": 15929325,
+ "username": "jsantann",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15929325/medium/dfe876696a9c986f4bc248f2aab9c5ed_default.png"
},
{
- "id": 15646745,
- "username": "Mateusduartelima",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
},
{
- "id": 15756451,
- "username": "Renatoossuna",
+ "id": 15912891,
+ "username": "Cristianoluizz",
"totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15756451/medium/5110e7d1d4cd5bd96c8ba7e33dbd3fa5_default.png"
- },
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ }
+ ]
+ },
+ {
+ "fileId": "7939",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 3.03,
+ "totalCosts": 389.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15207648,
- "username": "bettercallvictor.eth",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15207648/medium/1e33933ce378946f204d7c76d7c246e5_default.png"
}
]
},
{
- "fileId": "2946",
+ "fileId": "7935",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 316.13,
+ "totalCosts": 668.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15431346,
- "username": "BenedettiLucca",
- "totalCosts": 80.8,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15431346/medium/d5bf45d5fbceebd23be3d23b2f8c8a1a_default.png"
- },
- {
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
- },
- {
- "id": 14546464,
- "username": "LucyCroft",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14546464/medium/23420a0e95c1f9a0fd75df5dba6ad564_default.png"
- },
- {
- "id": 14676296,
- "username": "RenataBrito",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14676296/medium/55c59b8d0a0a3366ed1c96d361c661a6_default.png"
- },
- {
- "id": 14957477,
- "username": "asdcBRA",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg"
- },
- {
- "id": 14564426,
- "username": "bschorchit",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564426/medium/85aa92771b96f81e3a10f1580a58e799.jpeg"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "8007",
+ "contributors": [
{
- "id": 14554170,
- "username": "eriknoronha",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14554170/medium/b6bf26ec67d0187f0829c5a6256d68b2.jpeg"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 349.46,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "8011",
+ "contributors": [
{
- "id": 14875990,
- "username": "guilhermevendramini",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1101.91,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "2926",
+ "fileId": "7757",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1664.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1589.74,
+ "totalCosts": 493.89,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 14845960,
- "username": "matusame",
- "totalCosts": 249.47,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg"
- },
- {
- "id": 14573604,
- "username": "bceschini",
- "totalCosts": 190.89,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 71.71,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- },
- {
- "id": 15407760,
- "username": "copolicarpo",
- "totalCosts": 56.56,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15407760/medium/0bb4e29f63caab6a171545e2b9f816c0.jpeg"
- },
- {
- "id": 15451376,
- "username": "ingrid.gomes",
- "totalCosts": 41.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451376/medium/d3c5b2232f1bd59cd3d64e0c7acb6a29_default.png"
- },
- {
- "id": 14564426,
- "username": "bschorchit",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564426/medium/85aa92771b96f81e3a10f1580a58e799.jpeg"
- },
- {
- "id": 15403124,
- "username": "thipatriota",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15403124/medium/644dd7d6fdb31184faa67b00f7914d5b.jpg"
- },
- {
- "id": 15171456,
- "username": "batatinhachipis",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171456/medium/74e0a699c86e8002bdf83efee754d5c5_default.png"
- },
- {
- "id": 14571740,
- "username": "DeFalT_910",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14571740/medium/b9399646973ad106a1c00dfbc772b708.jpg"
}
]
},
{
- "fileId": "7515",
+ "fileId": "7801",
"contributors": [
+ {
+ "id": 15917951,
+ "username": "maisa.m",
+ "totalCosts": 947.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15917951/medium/399d31990fbb5c2b964adeaaeb05b6a0.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1372.59,
+ "totalCosts": 742.35,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7631",
+ "contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 2944.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15323182,
- "username": "cerberushades",
- "totalCosts": 139.38,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15323182/medium/e643040993dd40ba24bb0a13b41a322b.jpeg"
+ "id": 15960287,
+ "username": "fabiannycnd",
+ "totalCosts": 66.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
}
]
},
{
- "fileId": "6187",
+ "fileId": "6241",
"contributors": [
{
- "id": 13855929,
- "username": "gabriel.silva",
- "totalCosts": 603.98,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
+ "id": 15123265,
+ "username": "teachertialorena",
+ "totalCosts": 522.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123265/medium/322692ee8934a652c6dbae39a499eb0f.png"
},
{
- "id": 15121067,
- "username": "DiegoCabral",
- "totalCosts": 223.21,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 487.83,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
},
{
- "id": 15114963,
- "username": "tiagoyonamine.eth",
- "totalCosts": 222.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ "id": 14946409,
+ "username": "giu.roperto",
+ "totalCosts": 254.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14946409/medium/56d3187cc785e71756040654b7eeabb4.png"
},
{
- "id": 15119565,
- "username": "leandroauzier",
- "totalCosts": 184.83,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15119565/medium/72e054dacc99c0b30a5fe95c85676915_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 72.72,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 15114593,
- "username": "RiquinPassaRodo",
- "totalCosts": 111.1,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114593/medium/45a10f0be483ccb1556ea7f51d741677.jpeg"
+ "id": 15711897,
+ "username": "deymison",
+ "totalCosts": 31.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15711897/medium/1ef720cca42e3af55c16939ac1143b9c_default.png"
+ },
+ {
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
+ },
+ {
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3056",
+ "contributors": [
+ {
+ "id": 14659020,
+ "username": "DanielTaqueto",
+ "totalCosts": 602.97,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14659020/medium/56f5cb0b5617518f3cd660cb1834c9d7_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 44.44,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 181.8,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15171456,
- "username": "batatinhachipis",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171456/medium/74e0a699c86e8002bdf83efee754d5c5_default.png"
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 68.68,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
},
{
- "id": 13475374,
- "username": "mayumiadati",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13475374/medium/864bb3fcfb0c72599d60763779987c84_default.png"
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15526425,
+ "username": "xReDzin",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15526425/medium/69278630b1c357a38d62e3e762fcf45b.gif"
}
]
},
{
- "fileId": "6440",
+ "fileId": "3124",
"contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 303,
+ "totalCosts": 77.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 79.79,
+ "totalCosts": 43.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15221742,
- "username": "Marlonfernandes7",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 4.04,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
}
]
},
{
- "fileId": "7314",
+ "fileId": "7995",
"contributors": [
{
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 1086.76,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1165.54,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ }
+ ]
+ },
+ {
+ "fileId": "6267",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 136.35,
+ "totalCosts": 990.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 70.7,
+ "totalCosts": 599.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
- "id": 14668114,
- "username": "ttinho",
- "totalCosts": 42.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668114/medium/abb6c5088e9fedee0db9d42e5079b776.jpeg"
+ "id": 15160588,
+ "username": "R_Dark",
+ "totalCosts": 578.73,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15160588/medium/3903ef1af6faeec9604b6db70b5e6233_default.png"
},
{
- "id": 15370734,
- "username": "Vinegario",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15370734/medium/a535a547d7a22cf7a467645270f464fb.png"
+ "id": 15960287,
+ "username": "fabiannycnd",
+ "totalCosts": 43.43,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
}
]
},
{
- "fileId": "6518",
+ "fileId": "6243",
"contributors": [
{
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 382.79,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 58.58,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "7627",
+ "contributors": [
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 181.8,
+ "totalCosts": 1077.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 134.33,
+ "totalCosts": 386.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15207648,
- "username": "bettercallvictor.eth",
- "totalCosts": 37.37,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15207648/medium/1e33933ce378946f204d7c76d7c246e5_default.png"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "3100",
+ "contributors": [
{
- "id": 15036833,
- "username": "Cubano.brito",
- "totalCosts": 36.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036833/medium/4988573ecbd20a37fe3504a4fd98b573_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 326.23,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 16183768,
- "username": "zxya",
- "totalCosts": 20.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16183768/medium/9d897b4b01fb6b6399e896256b998abf.png"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 48.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
},
{
- "id": 15965949,
- "username": "Lazaro0809",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965949/medium/9020c1f4fa4c1fa572cb78f2ee3a3257_default.png"
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15912891,
- "username": "Cristianoluizz",
- "totalCosts": 11.11,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ "id": 14746732,
+ "username": "asdealmeida1",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14746732/medium/41ad9e6c8c212d49a5e493167a43de8e.jpeg"
}
]
},
{
- "fileId": "6524",
+ "fileId": "3160",
"contributors": [
- {
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 513.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 269.67,
+ "totalCosts": 37.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 187.86,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
},
{
- "fileId": "6526",
+ "fileId": "7999",
"contributors": [
- {
- "id": 15226778,
- "username": "paulogio",
- "totalCosts": 1693.77,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226778/medium/1bed9c865119e5246c9ac5cc55851dae_default.png"
- },
{
"id": 15515516,
"username": "MCreimer",
- "totalCosts": 143.42,
+ "totalCosts": 5126.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
},
+ {
+ "id": 15960287,
+ "username": "fabiannycnd",
+ "totalCosts": 295.93,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 122.21,
+ "totalCosts": 1.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
- },
- {
- "id": 15849127,
- "username": "IagoEmanuel15",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
- },
- {
- "id": 15912891,
- "username": "Cristianoluizz",
- "totalCosts": 4.04,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
}
]
},
{
- "fileId": "7591",
+ "fileId": "3074",
"contributors": [
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 1706.9,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
- },
- {
- "id": 15813703,
- "username": "Brian1997",
- "totalCosts": 399.96,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813703/medium/4fbeb047eb6a975b8edfd526c0c05bee_default.png"
- },
- {
- "id": 15912891,
- "username": "Cristianoluizz",
- "totalCosts": 170.69,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
- },
- {
- "id": 15932353,
- "username": "nickksoares",
- "totalCosts": 134.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
- },
- {
- "id": 15849127,
- "username": "IagoEmanuel15",
- "totalCosts": 65.65,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
+ "id": 14896196,
+ "username": "leoclark",
+ "totalCosts": 70.7,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14896196/medium/495d3305573cff327e6707a437689055_default.png"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 42.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15376854,
+ "username": "RenanDeveloper",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
}
]
},
{
- "fileId": "6428",
+ "fileId": "3120",
"contributors": [
- {
- "id": 15245586,
- "username": "s3ttings",
- "totalCosts": 444.4,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15245586/medium/255e604fc64ada6f55a802ea9de2204a_default.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 405.01,
+ "totalCosts": 536.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15241638,
- "username": "Panegali",
- "totalCosts": 247.45,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg"
- },
- {
- "id": 14788762,
- "username": "cafeweb",
- "totalCosts": 51.51,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14788762/medium/1ec3f24a57a4081619b7bb8014a245bb.png"
+ "id": 15502802,
+ "username": "soo659215",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15502802/medium/46ff8617d7a0337d86eb94536f7b090d.png"
},
{
- "id": 15317682,
- "username": "junowoz",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ "id": 14633592,
+ "username": "Jhosephecacau",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
}
]
},
{
- "fileId": "2958",
+ "fileId": "3164",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 9210.19,
+ "totalCosts": 65.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
"id": 13855929,
"username": "gabriel.silva",
- "totalCosts": 1433.19,
+ "totalCosts": 5.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
- },
- {
- "id": 15258752,
- "username": "joserrbv",
- "totalCosts": 833.25,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15258752/medium/ec21ac21287dcdbd73ab57b6fb0dc50e_default.png"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "2994",
+ "contributors": [
{
- "id": 14978447,
- "username": "DanDaro",
- "totalCosts": 445.41,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14978447/medium/6c0a867cdc72f871a6dd35862afa1562.jpg"
+ "id": 14815414,
+ "username": "KoelhoSec",
+ "totalCosts": 290.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14815414/medium/cc746b15dd6d2fa3bc01369caaef44ed.png"
},
{
- "id": 15027079,
- "username": "wmduuh",
- "totalCosts": 422.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15027079/medium/827d9b374220d233a59c4a1f2ffb1452.jpg"
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 85.85,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 15221742,
- "username": "Marlonfernandes7",
- "totalCosts": 43.43,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221742/medium/54e5adfe14e974d37dd5fb25bde84a77.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 77.77,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15038625,
- "username": "maelsonfide",
- "totalCosts": 33.33,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038625/medium/8d1ebb7c168fd35417c24d77dfb8f135.jpeg"
+ "id": 14820852,
+ "username": "btclient",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14820852/medium/6d3e4e81b1dd0aa840959da8c8bcf63f.jpg"
},
{
- "id": 14668742,
- "username": "lmichelin",
- "totalCosts": 28.28,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668742/medium/4795bc8addc58e5321b69990d43cf3b4_default.png"
- },
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ }
+ ]
+ },
+ {
+ "fileId": "2986",
+ "contributors": [
{
- "id": 15080541,
- "username": "Don_Martinez",
- "totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080541/medium/95c7708608034869cdc2388d2027b2b5.jpg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 49.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15050333,
- "username": "rafacris10",
- "totalCosts": 8.08,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15050333/medium/e6ffe2282c3dbc63a3c3f69a65a9244f.jpeg"
+ "id": 14815414,
+ "username": "KoelhoSec",
+ "totalCosts": 33.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14815414/medium/cc746b15dd6d2fa3bc01369caaef44ed.png"
},
{
- "id": 15212290,
- "username": "danicuki",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15212290/medium/2fe9878b523e9a9baf3a9bd997ba84fb.jpeg"
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
},
{
- "id": 15646745,
- "username": "Mateusduartelima",
+ "id": 14633592,
+ "username": "Jhosephecacau",
"totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15646745/medium/cc73bc2eeaa1181c059fedc12a42dca5_default.png"
- },
- {
- "id": 13893213,
- "username": "RelliuG",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13893213/medium/88d6b8bda7b6073efd27b5a1799694cc.jpeg"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
}
]
},
{
- "fileId": "7465",
+ "fileId": "6259",
"contributors": [
- {
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 2257.35,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
- },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 990.81,
+ "totalCosts": 350.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
}
]
},
{
- "fileId": "8019",
+ "fileId": "3088",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 532.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 129.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
+ {
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
}
]
},
{
- "fileId": "8023",
+ "fileId": "3116",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1100.9,
+ "totalCosts": 145.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 889.81,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "7927",
+ "fileId": "6261",
"contributors": [
+ {
+ "id": 15267214,
+ "username": "GihOB",
+ "totalCosts": 755.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15267214/medium/5e39792fb994591df54a7e4e3eed8ebd_default.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1505.91,
+ "totalCosts": 439.35,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 24.24,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15237912,
+ "username": "jmontanholi",
+ "totalCosts": 32.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15237912/medium/57ba37fabf85691003181b0eec197893.jpeg"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
}
]
},
{
- "fileId": "7525",
+ "fileId": "2980",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 590.85,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15258752,
+ "username": "joserrbv",
+ "totalCosts": 149.48,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15258752/medium/ec21ac21287dcdbd73ab57b6fb0dc50e_default.png"
},
{
- "id": 14247352,
- "username": "borja_reverter",
- "totalCosts": 153.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14247352/medium/88273f0b60397d738624b328fe45c13e.png"
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 78.78,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 13855929,
+ "username": "gabriel.silva",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg"
},
{
- "id": 15740363,
- "username": "Claudiojmoreira",
- "totalCosts": 36.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15740363/medium/b998f6d1784d3b5ec2cd69dac9ca5e8c.jpeg"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "8027",
+ "fileId": "6245",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1070.6,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 579.74,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
+ },
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 148.47,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "8035",
+ "fileId": "6263",
"contributors": [
{
- "id": 15515516,
- "username": "MCreimer",
- "totalCosts": 1165.54,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ "id": 15171274,
+ "username": "matheuspoleza",
+ "totalCosts": 738.31,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171274/medium/116eb81288db5943f5421648cd28c040.png"
},
{
- "id": 16099664,
- "username": "yanvictorsn",
- "totalCosts": 29.29,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16099664/medium/0be252ecf72e8e4d5021a63cd4ad3353.png"
+ "id": 15350616,
+ "username": "Carlos_Silva",
+ "totalCosts": 34.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
}
]
},
{
- "fileId": "7713",
+ "fileId": "6432",
"contributors": [
+ {
+ "id": 15422032,
+ "username": "Fritzhoy",
+ "totalCosts": 4072.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 2207.86,
+ "totalCosts": 231.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15836847,
- "username": "k77",
- "totalCosts": 208.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15836847/medium/a83e58c4be6c8ef96bda97967d4703cd.png"
+ "id": 15711897,
+ "username": "deymison",
+ "totalCosts": 99.99,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15711897/medium/1ef720cca42e3af55c16939ac1143b9c_default.png"
},
{
- "id": 15830251,
- "username": "paodequeijocompingado",
- "totalCosts": 12.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830251/medium/df305c6124650d8f50add955b4770062_default.png"
+ "id": 15724803,
+ "username": "Izabel_chaves",
+ "totalCosts": 32.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724803/medium/7f2b4419d308a52a62f3b8f9ca9b4adf.jpg"
}
]
},
{
- "fileId": "7717",
+ "fileId": "6436",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 2934.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 15960287,
+ "username": "fabiannycnd",
+ "totalCosts": 364.61,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
+ },
+ {
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 167.66,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
+ },
+ {
+ "id": 15703467,
+ "username": "rsrosabio",
+ "totalCosts": 166.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15703467/medium/d318a4131cc261c314fbda858991c360_default.png"
+ },
{
"id": 15350616,
"username": "Carlos_Silva",
- "totalCosts": 1256.44,
+ "totalCosts": 2.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
- },
+ }
+ ]
+ },
+ {
+ "fileId": "7308",
+ "contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 501.97,
+ "totalCosts": 2602.77,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
+ {
+ "id": 15503932,
+ "username": "patriciamatos85",
+ "totalCosts": 352.49,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15503932/medium/1f4d1dfc4e99b2dc05937dc75a1b9c90.jpeg"
+ },
{
"id": 15849127,
"username": "IagoEmanuel15",
- "totalCosts": 61.61,
+ "totalCosts": 53.53,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg"
}
]
},
{
- "fileId": "7721",
+ "fileId": "3144",
"contributors": [
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 496.92,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ "id": 15171274,
+ "username": "matheuspoleza",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171274/medium/116eb81288db5943f5421648cd28c040.png"
}
]
},
{
- "fileId": "7803",
+ "fileId": "6247",
"contributors": [
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 1087.77,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ "id": 15165600,
+ "username": "Horberlan",
+ "totalCosts": 134.33,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15165600/medium/5ba9d519f33745fa64879cff2511ace4.png"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 15.15,
+ "totalCosts": 72.72,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
}
]
},
{
- "fileId": "7725",
+ "fileId": "3138",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 962.53,
+ "totalCosts": 384.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14573604,
- "username": "bceschini",
- "totalCosts": 150.49,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
+ "id": 15245586,
+ "username": "s3ttings",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15245586/medium/255e604fc64ada6f55a802ea9de2204a_default.png"
+ },
+ {
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
+ },
+ {
+ "id": 14633592,
+ "username": "Jhosephecacau",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
}
]
},
{
- "fileId": "7729",
+ "fileId": "3156",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 394.91,
+ "totalCosts": 209.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 14573604,
- "username": "bceschini",
- "totalCosts": 334.31,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg"
+ "id": 15000979,
+ "username": "mauri.lustosa",
+ "totalCosts": 10.1,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15000979/medium/d3463e880ee39ff00ec110108c7c1711.png"
}
]
},
{
- "fileId": "7733",
+ "fileId": "7304",
"contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 1567.52,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 560.55,
+ "totalCosts": 294.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15902117,
- "username": "cassio.gusson",
- "totalCosts": 221.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902117/medium/07ad2db947468fb4ed35ed2b9e51f8d2.png"
+ "id": 15651827,
+ "username": "Jerdson",
+ "totalCosts": 189.88,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15651827/medium/39b72be0409a6ec42eb98042f2151986.png"
}
]
},
{
- "fileId": "7737",
+ "fileId": "2998",
"contributors": [
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 850.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ "id": 14903162,
+ "username": "MatheusItagiba",
+ "totalCosts": 993.84,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14903162/medium/6214f00c88eff4c33a4a7b1b6d429926_default.png"
+ },
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
}
]
},
{
- "fileId": "7741",
+ "fileId": "3148",
"contributors": [
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1289.77,
+ "totalCosts": 28.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15422032,
- "username": "Fritzhoy",
- "totalCosts": 508.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png"
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 6.06,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
+ },
+ {
+ "id": 14633592,
+ "username": "Jhosephecacau",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633592/medium/48fcc09a9eaa9888c49977a97140109d_default.png"
}
]
},
{
- "fileId": "7745",
+ "fileId": "6265",
+ "contributors": [
+ {
+ "id": 15114963,
+ "username": "tiagoyonamine.eth",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3036",
"contributors": [
+ {
+ "id": 15317682,
+ "username": "junowoz",
+ "totalCosts": 133.32,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 34.34,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
+ },
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 1883.65,
+ "totalCosts": 21.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
},
{
- "id": 15902493,
- "username": "victorsalles",
- "totalCosts": 137.36,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902493/medium/d8ecbd67e54b44d12e95650bd9371463_default.png"
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 21.21,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
+ },
+ {
+ "id": 15814229,
+ "username": "andrebz",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15814229/medium/d83277686444f13c2426fd05f4529437.jpeg"
+ },
+ {
+ "id": 15121067,
+ "username": "DiegoCabral",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png"
}
]
},
{
- "fileId": "7749",
+ "fileId": "3010",
"contributors": [
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 517.12,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 342.39,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
- "id": 15837087,
- "username": "gabekoin",
- "totalCosts": 52.52,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837087/medium/198e2d3ce88fd597d2f6a39fcc40964a.png"
+ "id": 15992039,
+ "username": "isgoingtozero",
+ "totalCosts": 62.62,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "3092",
+ "contributors": [
+ {
+ "id": 14693050,
+ "username": "Luuck4s",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14693050/medium/4c771a227b48f3be61dedc652acbefe1.jpeg"
},
{
"id": 13986387,
"username": "rafarocha",
- "totalCosts": 17.17,
+ "totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ },
+ {
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "7753",
+ "fileId": "3024",
"contributors": [
{
- "id": 15350616,
- "username": "Carlos_Silva",
- "totalCosts": 1286.74,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
}
]
},
{
- "fileId": "7919",
+ "fileId": "3070",
"contributors": [
{
- "id": 15932353,
- "username": "nickksoares",
- "totalCosts": 749.42,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png"
+ "id": 14382632,
+ "username": "gabe_san_",
+ "totalCosts": 130.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png"
},
{
- "id": 13986387,
- "username": "rafarocha",
- "totalCosts": 511.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ "id": 14676296,
+ "username": "RenataBrito",
+ "totalCosts": 87.87,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14676296/medium/55c59b8d0a0a3366ed1c96d361c661a6_default.png"
},
{
- "id": 15376854,
- "username": "RenanDeveloper",
- "totalCosts": 107.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png"
+ "id": 14821880,
+ "username": "jonathanandrade10",
+ "totalCosts": 65.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14821880/medium/59c6c840e75ec03af8b88b5005744137.jpeg"
},
{
- "id": 15929325,
- "username": "jsantann",
- "totalCosts": 19.19,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15929325/medium/dfe876696a9c986f4bc248f2aab9c5ed_default.png"
+ "id": 14875990,
+ "username": "guilhermevendramini",
+ "totalCosts": 50.5,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg"
},
{
"id": 15992039,
"username": "isgoingtozero",
- "totalCosts": 6.06,
+ "totalCosts": 22.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg"
},
{
- "id": 15912891,
- "username": "Cristianoluizz",
+ "id": 14982023,
+ "username": "jdgomes",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14982023/medium/5a7cb2f4e765675058a56ef1b52a69dc_default.png"
+ },
+ {
+ "id": 15960287,
+ "username": "fabiannycnd",
"totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png"
+ }
+ ]
+ },
+ {
+ "fileId": "3110",
+ "contributors": [
+ {
+ "id": 13986387,
+ "username": "rafarocha",
+ "totalCosts": 914.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg"
+ }
+ ]
+ },
+ {
+ "fileId": "8003",
+ "contributors": [
+ {
+ "id": 15515516,
+ "username": "MCreimer",
+ "totalCosts": 3459.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png"
}
]
}
@@ -46111,7 +48987,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 468.64,
+ "totalCosts": 445.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -46252,7 +49128,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 66.66,
+ "totalCosts": 60.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -46471,7 +49347,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1162.51,
+ "totalCosts": 1152.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -46548,7 +49424,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 196.95,
+ "totalCosts": 185.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
},
{
@@ -46751,13 +49627,13 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1368.55,
+ "totalCosts": 1337.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
},
{
"id": 12804952,
"username": "imgelu",
- "totalCosts": 137.36,
+ "totalCosts": 134.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12804952/medium/59d5d165d5b422c57908e7797d3b83ee.jpg"
}
]
@@ -46836,7 +49712,7 @@
{
"id": 12804952,
"username": "imgelu",
- "totalCosts": 473.69,
+ "totalCosts": 465.61,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12804952/medium/59d5d165d5b422c57908e7797d3b83ee.jpg"
}
]
@@ -46908,7 +49784,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 461.57,
+ "totalCosts": 456.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -46919,7 +49795,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 685.79,
+ "totalCosts": 680.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -46991,7 +49867,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1060.5,
+ "totalCosts": 858.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
},
{
@@ -47348,7 +50224,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1031.21,
+ "totalCosts": 995.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -47436,7 +50312,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1034.24,
+ "totalCosts": 1017.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -47458,7 +50334,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 487.83,
+ "totalCosts": 475.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -47535,7 +50411,7 @@
{
"id": 14087195,
"username": "nicklcanada",
- "totalCosts": 1577.62,
+ "totalCosts": 1571.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png"
}
]
@@ -47658,7 +50534,7 @@
{
"id": 14514124,
"username": "ViktorOn",
- "totalCosts": 311.08,
+ "totalCosts": 305.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png"
},
{
@@ -47798,7 +50674,7 @@
{
"id": 14514124,
"username": "ViktorOn",
- "totalCosts": 558.53,
+ "totalCosts": 528.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png"
},
{
@@ -48110,7 +50986,7 @@
{
"id": 14514124,
"username": "ViktorOn",
- "totalCosts": 20.2,
+ "totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png"
},
{
@@ -48528,6 +51404,12 @@
"totalCosts": 40.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14884558/medium/0094ad75d25cfe8961a0e8318ff5d7f8.jpg"
},
+ {
+ "id": 15720271,
+ "username": "storming_heaven",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15720271/medium/8af1a5867d08e0a56b993cc13a0cd15f.png"
+ },
{
"id": 14724864,
"username": "deepweed",
@@ -48548,7 +51430,7 @@
{
"id": 15947515,
"username": "blockson",
- "totalCosts": 344.41,
+ "totalCosts": 343.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg"
},
{
@@ -48581,6 +51463,12 @@
"totalCosts": 8.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16041772/medium/fa169700ad14f27bdb85e5e6b2590e7b.png"
},
+ {
+ "id": 15720271,
+ "username": "storming_heaven",
+ "totalCosts": 3.03,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15720271/medium/8af1a5867d08e0a56b993cc13a0cd15f.png"
+ },
{
"id": 14514124,
"username": "ViktorOn",
@@ -48806,7 +51694,7 @@
{
"id": 14514124,
"username": "ViktorOn",
- "totalCosts": 498.94,
+ "totalCosts": 492.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png"
},
{
@@ -48838,6 +51726,12 @@
"totalCosts": 230.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966943/medium/0d340104d53d3ff4df1c7c2412e8c86e_default.png"
},
+ {
+ "id": 15720271,
+ "username": "storming_heaven",
+ "totalCosts": 106.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15720271/medium/8af1a5867d08e0a56b993cc13a0cd15f.png"
+ },
{
"id": 16090810,
"username": "ShurikSl",
@@ -48894,7 +51788,7 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 710.03,
+ "totalCosts": 673.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
@@ -48977,7 +51871,7 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 2283.61,
+ "totalCosts": 2229.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
@@ -49023,19 +51917,19 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
"id": 15214436,
"username": "cheremmmisin",
- "totalCosts": 60.6,
+ "totalCosts": 58.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214436/medium/cebd8b7747a8b3ae790e25828eb135ed_default.png"
},
{
"id": 15206754,
"username": "nixorn",
- "totalCosts": 19.19,
+ "totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15206754/medium/1f6bb058858c9608582b83fe050bdf67.jpeg"
},
{
@@ -49093,7 +51987,7 @@
{
"id": 15619839,
"username": "mediaquest",
- "totalCosts": 1777.6,
+ "totalCosts": 1762.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15619839/medium/99c14ce4e8161f6b077fa0849ac4c5b0.png"
},
{
@@ -49152,7 +52046,7 @@
{
"id": 15566151,
"username": "AlexanderSh",
- "totalCosts": 1191.8,
+ "totalCosts": 1163.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566151/medium/2044a8dd6ae21fc4f7d8a8dad0190230_default.png"
},
{
@@ -49487,7 +52381,7 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 651.45,
+ "totalCosts": 649.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
@@ -49564,7 +52458,7 @@
{
"id": 14514124,
"username": "ViktorOn",
- "totalCosts": 34.34,
+ "totalCosts": 30.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png"
},
{
@@ -49604,7 +52498,7 @@
{
"id": 15763855,
"username": "dovbyshbgd",
- "totalCosts": 3222.91,
+ "totalCosts": 3198.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png"
},
{
@@ -49638,7 +52532,7 @@
{
"id": 15947515,
"username": "blockson",
- "totalCosts": 1973.54,
+ "totalCosts": 1968.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg"
},
{
@@ -49690,13 +52584,13 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 1758.41,
+ "totalCosts": 1746.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
"id": 15763855,
"username": "dovbyshbgd",
- "totalCosts": 1500.86,
+ "totalCosts": 1488.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png"
},
{
@@ -49793,7 +52687,7 @@
{
"id": 15763855,
"username": "dovbyshbgd",
- "totalCosts": 672.66,
+ "totalCosts": 669.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png"
}
]
@@ -49901,7 +52795,7 @@
{
"id": 15763855,
"username": "dovbyshbgd",
- "totalCosts": 1247.35,
+ "totalCosts": 1217.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png"
},
{
@@ -50026,7 +52920,7 @@
{
"id": 14977831,
"username": "PeterKecman",
- "totalCosts": 1289.77,
+ "totalCosts": 1279.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png"
}
]
@@ -50133,7 +53027,7 @@
{
"id": 14977831,
"username": "PeterKecman",
- "totalCosts": 307.04,
+ "totalCosts": 301.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png"
}
]
@@ -50144,7 +53038,7 @@
{
"id": 14977831,
"username": "PeterKecman",
- "totalCosts": 497.93,
+ "totalCosts": 492.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png"
}
]
@@ -50188,7 +53082,7 @@
{
"id": 14977831,
"username": "PeterKecman",
- "totalCosts": 1622.06,
+ "totalCosts": 1616,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png"
}
]
@@ -50247,7 +53141,7 @@
{
"id": 14957177,
"username": "joeurassa",
- "totalCosts": 423.19,
+ "totalCosts": 417.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957177/medium/8323f79a3f73f2e723da72db082c0c22.jpg"
}
]
@@ -50290,7 +53184,7 @@
{
"id": 14957177,
"username": "joeurassa",
- "totalCosts": 526.21,
+ "totalCosts": 502.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957177/medium/8323f79a3f73f2e723da72db082c0c22.jpg"
}
]
@@ -50374,7 +53268,7 @@
{
"id": 15908487,
"username": "insidetrader",
- "totalCosts": 513.08,
+ "totalCosts": 455.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg"
},
{
@@ -50440,12 +53334,6 @@
"username": "FDNTL",
"totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396134/medium/12f9c36dce596d73529770adb87db81e.png"
- },
- {
- "id": 15310732,
- "username": "0x_Ozan",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15310732/medium/0f00d931e8912ab78e17097621c79886_default.png"
}
]
},
@@ -50548,13 +53436,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 472.68,
+ "totalCosts": 449.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15532699,
"username": "okurus",
- "totalCosts": 64.64,
+ "totalCosts": 57.57,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532699/medium/d28f6d5a89890907282d0a9ea5161174_default.png"
},
{
@@ -50866,13 +53754,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 523.18,
+ "totalCosts": 509.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 14690454,
"username": "sekoman01",
- "totalCosts": 350.47,
+ "totalCosts": 341.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690454/medium/595a121d4a7427f7a21b75b32017c247.jpg"
},
{
@@ -50886,12 +53774,6 @@
"username": "Berke37",
"totalCosts": 26.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg"
- },
- {
- "id": 15082707,
- "username": "selcuk45",
- "totalCosts": 7.07,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
}
]
},
@@ -50945,18 +53827,18 @@
{
"fileId": "7316",
"contributors": [
- {
- "id": 15357538,
- "username": "yakupgurhangurcan",
- "totalCosts": 914.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357538/medium/c1b4eeb66ab399014df370502e9d2c6e.jpeg"
- },
{
"id": 14610740,
"username": "realdeep",
"totalCosts": 910.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610740/medium/970ca23cc257e03e86efefca66979df2.png"
},
+ {
+ "id": 15357538,
+ "username": "yakupgurhangurcan",
+ "totalCosts": 898.9,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357538/medium/c1b4eeb66ab399014df370502e9d2c6e.jpeg"
+ },
{
"id": 15396134,
"username": "FDNTL",
@@ -51004,12 +53886,6 @@
"username": "sekoman01",
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690454/medium/595a121d4a7427f7a21b75b32017c247.jpg"
- },
- {
- "id": 15467576,
- "username": "augur",
- "totalCosts": 2.02,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15467576/medium/471f881427c816c83c952446739e01d8_default.png"
}
]
},
@@ -51165,13 +54041,13 @@
{
"id": 14131653,
"username": "Berke37",
- "totalCosts": 319.16,
+ "totalCosts": 310.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg"
},
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 265.63,
+ "totalCosts": 256.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -51300,7 +54176,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 121.2,
+ "totalCosts": 115.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -51800,7 +54676,7 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 1444.3,
+ "totalCosts": 1433.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -51812,13 +54688,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 874.66,
+ "totalCosts": 864.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15964741,
"username": "0xberil",
- "totalCosts": 296.94,
+ "totalCosts": 294.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png"
},
{
@@ -51906,7 +54782,7 @@
{
"id": 15963921,
"username": "bicebaris",
- "totalCosts": 654.48,
+ "totalCosts": 640.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg"
},
{
@@ -51947,7 +54823,7 @@
{
"id": 15966007,
"username": "0xselimc",
- "totalCosts": 277.75,
+ "totalCosts": 276.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg"
},
{
@@ -51988,7 +54864,7 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 3089.59,
+ "totalCosts": 3074.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -52099,7 +54975,7 @@
{
"id": 14726116,
"username": "salih.keyf",
- "totalCosts": 21.21,
+ "totalCosts": 10.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14726116/medium/276f7773be59d0dd0ea1252e816006ca.jpg"
},
{
@@ -52302,7 +55178,7 @@
{
"id": 14690454,
"username": "sekoman01",
- "totalCosts": 369.66,
+ "totalCosts": 358.55,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690454/medium/595a121d4a7427f7a21b75b32017c247.jpg"
},
{
@@ -52383,13 +55259,13 @@
{
"id": 14131653,
"username": "Berke37",
- "totalCosts": 2719.93,
+ "totalCosts": 2692.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg"
},
{
"id": 15966271,
"username": "zeydrm",
- "totalCosts": 2167.46,
+ "totalCosts": 2140.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png"
},
{
@@ -52471,7 +55347,7 @@
{
"id": 14610740,
"username": "realdeep",
- "totalCosts": 168.67,
+ "totalCosts": 153.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610740/medium/970ca23cc257e03e86efefca66979df2.png"
},
{
@@ -52546,7 +55422,7 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 310.07,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -52587,13 +55463,13 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 901.93,
+ "totalCosts": 888.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 63.63,
+ "totalCosts": 51.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -52714,7 +55590,7 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 771.64,
+ "totalCosts": 763.56,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -52894,13 +55770,13 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 205.03,
+ "totalCosts": 204.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 98.98,
+ "totalCosts": 93.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -52929,7 +55805,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 349.46,
+ "totalCosts": 344.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -53133,13 +56009,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 467.63,
+ "totalCosts": 296.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 301.99,
+ "totalCosts": 282.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -53151,7 +56027,7 @@
{
"id": 15964741,
"username": "0xberil",
- "totalCosts": 165.64,
+ "totalCosts": 130.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png"
},
{
@@ -53169,7 +56045,7 @@
{
"id": 15084373,
"username": "tarcanhursit",
- "totalCosts": 48.48,
+ "totalCosts": 36.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg"
},
{
@@ -53966,7 +56842,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 251.49,
+ "totalCosts": 245.43,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -54119,7 +56995,7 @@
{
"id": 15963921,
"username": "bicebaris",
- "totalCosts": 363.6,
+ "totalCosts": 327.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg"
},
{
@@ -54202,13 +57078,13 @@
{
"id": 15467576,
"username": "augur",
- "totalCosts": 93.93,
+ "totalCosts": 39.39,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15467576/medium/471f881427c816c83c952446739e01d8_default.png"
},
{
"id": 15547847,
"username": "sue-a",
- "totalCosts": 59.59,
+ "totalCosts": 36.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15547847/medium/4df0260e4db384d42ff80a09e0a00d6e.jpeg"
},
{
@@ -54272,13 +57148,13 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 225.23,
+ "totalCosts": 215.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
"id": 15956471,
"username": "nugen0x",
- "totalCosts": 159.58,
+ "totalCosts": 155.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956471/medium/0af49a07f4f83e5a5180858a4760868e.jpeg"
},
{
@@ -54383,7 +57259,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 484.8,
+ "totalCosts": 480.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -54418,7 +57294,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 1685.69,
+ "totalCosts": 1681.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -54482,7 +57358,7 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 8318.36,
+ "totalCosts": 8299.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
@@ -54641,7 +57517,7 @@
{
"id": 15963921,
"username": "bicebaris",
- "totalCosts": 388.85,
+ "totalCosts": 383.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg"
},
{
@@ -54679,18 +57555,18 @@
"totalCosts": 226.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810797/medium/fffa31f58ceab96c6db901b98fabf132.png"
},
- {
- "id": 15672817,
- "username": "thebuzagi",
- "totalCosts": 196.95,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15672817/medium/51945b15a89b4d9de324372227ac36de_default.png"
- },
{
"id": 15901569,
"username": "ezraike",
"totalCosts": 183.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15901569/medium/6f25011ba2194f82c502e04e4da44f22.png"
},
+ {
+ "id": 15672817,
+ "username": "thebuzagi",
+ "totalCosts": 168.67,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15672817/medium/51945b15a89b4d9de324372227ac36de_default.png"
+ },
{
"id": 15709983,
"username": "muggyw",
@@ -55067,7 +57943,7 @@
{
"id": 15963921,
"username": "bicebaris",
- "totalCosts": 1445.31,
+ "totalCosts": 1433.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg"
},
{
@@ -55266,7 +58142,7 @@
{
"id": 15967667,
"username": "iremkoci",
- "totalCosts": 1286.74,
+ "totalCosts": 1256.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967667/medium/ac3a3d86bf757e56162d0faa7a03058d_default.png"
}
]
@@ -55366,7 +58242,7 @@
{
"id": 14559918,
"username": "Muzaffer015",
- "totalCosts": 30.3,
+ "totalCosts": 27.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14559918/medium/72674bda7c61d3f06e65cc4d140e8af5_default.png"
}
]
@@ -55383,7 +58259,7 @@
{
"id": 15966289,
"username": "cinaryasemin",
- "totalCosts": 611.05,
+ "totalCosts": 586.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png"
},
{
@@ -55469,7 +58345,7 @@
{
"id": 15964741,
"username": "0xberil",
- "totalCosts": 681.75,
+ "totalCosts": 668.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png"
}
]
@@ -55635,7 +58511,7 @@
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 768.61,
+ "totalCosts": 740.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -55669,7 +58545,7 @@
{
"id": 15966271,
"username": "zeydrm",
- "totalCosts": 1740.23,
+ "totalCosts": 1721.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png"
},
{
@@ -55850,18 +58726,18 @@
"totalCosts": 923.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg"
},
- {
- "id": 15966271,
- "username": "zeydrm",
- "totalCosts": 624.18,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png"
- },
{
"id": 14131653,
"username": "Berke37",
"totalCosts": 617.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg"
},
+ {
+ "id": 15966271,
+ "username": "zeydrm",
+ "totalCosts": 540.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png"
+ },
{
"id": 14996861,
"username": "kaanmetu",
@@ -55981,7 +58857,7 @@
{
"id": 15964741,
"username": "0xberil",
- "totalCosts": 386.83,
+ "totalCosts": 372.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png"
},
{
@@ -56004,19 +58880,19 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 1840.22,
+ "totalCosts": 1833.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15964741,
"username": "0xberil",
- "totalCosts": 474.7,
+ "totalCosts": 468.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png"
},
{
"id": 14131653,
"username": "Berke37",
- "totalCosts": 76.76,
+ "totalCosts": 70.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg"
},
{
@@ -56777,13 +59653,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 877.69,
+ "totalCosts": 842.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 169.68,
+ "totalCosts": 143.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -56904,13 +59780,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 806.99,
+ "totalCosts": 789.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 119.18,
+ "totalCosts": 102.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
},
{
@@ -56933,13 +59809,13 @@
{
"id": 14996861,
"username": "kaanmetu",
- "totalCosts": 680.74,
+ "totalCosts": 673.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg"
},
{
"id": 15082707,
"username": "selcuk45",
- "totalCosts": 282.8,
+ "totalCosts": 272.7,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg"
}
]
@@ -57056,18 +59932,18 @@
"totalCosts": 90.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg"
},
- {
- "id": 14102529,
- "username": "Nezila",
- "totalCosts": 26.26,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14102529/medium/b68a69263d9c77b9078ffee899b05c02_default.png"
- },
{
"id": 15141064,
"username": "OlhaHavr",
"totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15141064/medium/337f7507816e470c381c870e8ef54acb_default.png"
},
+ {
+ "id": 14102529,
+ "username": "Nezila",
+ "totalCosts": 20.2,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14102529/medium/b68a69263d9c77b9078ffee899b05c02_default.png"
+ },
{
"id": 15585897,
"username": "rich_man",
@@ -57145,19 +60021,19 @@
{
"id": 15144404,
"username": "addlemaddle096",
- "totalCosts": 333.3,
+ "totalCosts": 322.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144404/medium/27385dc54f5a7a5a602cb6ae4f9c409a.png"
},
{
"id": 15129995,
"username": "alinabilyk",
- "totalCosts": 142.41,
+ "totalCosts": 130.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15129995/medium/91175a3cc7e81c64ccdb5b22139074e3_default.png"
},
{
"id": 14102529,
"username": "Nezila",
- "totalCosts": 123.22,
+ "totalCosts": 116.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14102529/medium/b68a69263d9c77b9078ffee899b05c02_default.png"
},
{
@@ -57174,7 +60050,7 @@
{
"id": 15551683,
"username": "sashathefck",
- "totalCosts": 473.69,
+ "totalCosts": 471.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15551683/medium/89389ac4c9211911a107017bd6784870.jpeg"
},
{
@@ -57203,13 +60079,13 @@
{
"id": 15473664,
"username": "hotr1pak",
- "totalCosts": 1449.35,
+ "totalCosts": 1521.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
},
{
"id": 15585897,
"username": "rich_man",
- "totalCosts": 715.08,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15585897/medium/fd7b02c0fe40afe5bb82dc812d16cf30_default.png"
},
{
@@ -57261,9 +60137,15 @@
{
"id": 15804803,
"username": "sun_dariia",
- "totalCosts": 1635.19,
+ "totalCosts": 1606.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png"
},
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 55.55,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15800361,
"username": "nazarenkooleksij0",
@@ -57292,6 +60174,12 @@
{
"fileId": "6183",
"contributors": [
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 421.17,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15869379,
"username": "viktoriia.mykytiuk02",
@@ -57404,17 +60292,23 @@
"totalCosts": 177.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14951861/medium/d5a9304f836af504ad35d48759c700ed.jpeg"
},
+ {
+ "id": 15300418,
+ "username": "globart",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg"
+ },
{
"id": 15143910,
"username": "vkulpinova6",
- "totalCosts": 31.31,
+ "totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15143910/medium/c51e6458948ee8d9c7deb546cbb114a6_default.png"
},
{
- "id": 15300418,
- "username": "globart",
- "totalCosts": 30.3,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg"
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
},
{
"id": 14686790,
@@ -57427,6 +60321,12 @@
{
"fileId": "5565",
"contributors": [
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 379.76,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15967233,
"username": "jasminesprout",
@@ -57451,12 +60351,6 @@
"totalCosts": 3.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15895803/medium/96636c4279311f716614648a85940e81_default.png"
},
- {
- "id": 15473664,
- "username": "hotr1pak",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
- },
{
"id": 13490273,
"username": "Cmml",
@@ -57591,6 +60485,12 @@
"username": "Horus267",
"totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14686790/medium/9695742f9165e3cf2585e31e74898270.png"
+ },
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
}
]
},
@@ -57600,13 +60500,13 @@
{
"id": 15967233,
"username": "jasminesprout",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
},
{
"id": 14686790,
"username": "Horus267",
- "totalCosts": 85.85,
+ "totalCosts": 75.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14686790/medium/9695742f9165e3cf2585e31e74898270.png"
}
]
@@ -57672,6 +60572,12 @@
"totalCosts": 86.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15825921/medium/75b88c5c4f949a723e15dccdaeb69c16.jpeg"
},
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15824883,
"username": "anastasiia.danchuk",
@@ -57768,6 +60674,12 @@
"username": "jasminesprout",
"totalCosts": 30.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
+ },
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 25.25,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
}
]
},
@@ -57796,6 +60708,12 @@
"username": "jasminesprout",
"totalCosts": 1165.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg"
+ },
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
}
]
},
@@ -57831,6 +60749,12 @@
"totalCosts": 64.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png"
},
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15895803,
"username": "KristiKris",
@@ -57845,7 +60769,7 @@
{
"id": 15585897,
"username": "rich_man",
- "totalCosts": 580.75,
+ "totalCosts": 576.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15585897/medium/fd7b02c0fe40afe5bb82dc812d16cf30_default.png"
},
{
@@ -57874,7 +60798,7 @@
{
"id": 15585897,
"username": "rich_man",
- "totalCosts": 1773.56,
+ "totalCosts": 1769.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15585897/medium/fd7b02c0fe40afe5bb82dc812d16cf30_default.png"
},
{
@@ -57936,6 +60860,12 @@
"totalCosts": 84.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg"
},
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 45.45,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
+ },
{
"id": 15967233,
"username": "jasminesprout",
@@ -57988,6 +60918,12 @@
"username": "dmytro.zalatukhin",
"totalCosts": 8.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg"
+ },
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
}
]
},
@@ -58021,7 +60957,7 @@
{
"id": 15300418,
"username": "globart",
- "totalCosts": 93.93,
+ "totalCosts": 69.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg"
},
{
@@ -58029,6 +60965,12 @@
"username": "makc7",
"totalCosts": 49.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860037/medium/9c2048ac721bc2d7abd49d178bf2857e.png"
+ },
+ {
+ "id": 15473664,
+ "username": "hotr1pak",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15473664/medium/97a49851d4c929fd21f8ebcc8947a400.jpeg"
}
]
}
@@ -58063,6 +61005,12 @@
{
"fileId": "5565",
"contributors": [
+ {
+ "id": 16230594,
+ "username": "LIulyEmpty",
+ "totalCosts": 230.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16230594/medium/cd7250313adac6c32fcac7ef601c0343.jpg"
+ },
{
"id": 15967193,
"username": "minhkek",
@@ -58131,7 +61079,7 @@
{
"id": 15369062,
"username": "datiq9999",
- "totalCosts": 13.13,
+ "totalCosts": 10.1,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15369062/medium/2f838f2a38f728234f3124c6515f7656.png"
},
{
@@ -58165,7 +61113,7 @@
{
"id": 15729281,
"username": "Junel",
- "totalCosts": 560.55,
+ "totalCosts": 502.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15729281/medium/0be4e0167eb236dea935c2ecf60ab99e_default.png"
},
{
@@ -58180,6 +61128,12 @@
"totalCosts": 38.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13935595/medium/1906e23b6a9407fdde92b4e0b6f5acf5_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 35.35,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 16201976,
"username": "Tjmin",
@@ -58328,10 +61282,10 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
},
{
- "id": 14870630,
- "username": "a8832021",
- "totalCosts": 6.06,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14870630/medium/b36889c699124e54c6b781e3ba477726.png"
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -58464,13 +61418,13 @@
{
"id": 14829178,
"username": "EffectChen",
- "totalCosts": 468.64,
+ "totalCosts": 445.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
{
"id": 14870630,
"username": "a8832021",
- "totalCosts": 75.75,
+ "totalCosts": 68.68,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14870630/medium/b36889c699124e54c6b781e3ba477726.png"
},
{
@@ -58479,6 +61433,12 @@
"totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15314206,
"username": "cuijia",
@@ -58695,6 +61655,12 @@
"totalCosts": 106.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16201976/medium/e4c92be84c0c0b1f08c76ad801087656_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15923725,
"username": "xyx986",
@@ -58740,6 +61706,12 @@
"username": "yuping",
"totalCosts": 328.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -58794,6 +61766,12 @@
"totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016629/medium/aaff09e3b204facc4da78652554ec80b.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15314206,
"username": "cuijia",
@@ -58870,6 +61848,12 @@
"totalCosts": 27.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15145320,
"username": "Unili",
@@ -58890,7 +61874,7 @@
{
"id": 15193608,
"username": "yuping",
- "totalCosts": 838.3,
+ "totalCosts": 808,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
},
{
@@ -58937,7 +61921,7 @@
{
"id": 15506758,
"username": "Z_Zircon",
- "totalCosts": 384.81,
+ "totalCosts": 382.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15506758/medium/12b5a3865ebef9bd988207c36d88c0a7.jpg"
},
{
@@ -58981,6 +61965,12 @@
"username": "YangIO",
"totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15219862/medium/9e4172499882462a3fc790d83b7a1a9d.jpg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -58990,7 +61980,7 @@
{
"id": 15314206,
"username": "cuijia",
- "totalCosts": 1709.93,
+ "totalCosts": 1694.78,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
{
@@ -59022,6 +62012,12 @@
"username": "iPhantasmLavender",
"totalCosts": 45.45,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373768/medium/fb5b03de96ccb41bad412ed79ca8e690_default.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -59063,6 +62059,12 @@
"username": "mdranger",
"totalCosts": 12.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15126233/medium/626a747d0f645d3b176bcd58d6835175_default.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -59072,7 +62074,7 @@
{
"id": 15657887,
"username": "DreamInMorning",
- "totalCosts": 1357.44,
+ "totalCosts": 1329.16,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg"
},
{
@@ -59090,7 +62092,7 @@
{
"id": 15680993,
"username": "nzinmymind",
- "totalCosts": 111.1,
+ "totalCosts": 109.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680993/medium/c48e18c9909ca14dd2c4796c916a6007.jpeg"
},
{
@@ -59117,6 +62119,12 @@
"totalCosts": 39.39,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15722739/medium/316f09f87baa8a22fbb7fc449db7ed1e.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 29.29,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 16051140,
"username": "MichaelQubycn",
@@ -59374,7 +62382,7 @@
{
"id": 15314206,
"username": "cuijia",
- "totalCosts": 463.59,
+ "totalCosts": 454.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
{
@@ -59413,6 +62421,12 @@
"totalCosts": 11.11,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15381970,
"username": "tzbkk",
@@ -59657,9 +62671,15 @@
{
"id": 15657887,
"username": "DreamInMorning",
- "totalCosts": 784.77,
+ "totalCosts": 745.38,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 94.94,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15871701,
"username": "maxwellcotto",
@@ -59754,24 +62774,30 @@
"totalCosts": 30.3,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15242372/medium/23bf740e9d096ee0b3de7b9f5528c8c9.JPG"
},
- {
- "id": 15112343,
- "username": "Vanfer",
- "totalCosts": 17.17,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15112343/medium/87c5413d17c005198e47cecbef5fcbef.jpeg"
- },
{
"id": 14771456,
"username": "marcusma",
"totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14771456/medium/bc3f51e759b958dabc1b61845df639e4_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14708696,
"username": "wmswms938",
"totalCosts": 12.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708696/medium/2303f2ec8760f6fa46ad1117e61d23b5.jpg"
},
+ {
+ "id": 15112343,
+ "username": "Vanfer",
+ "totalCosts": 11.11,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15112343/medium/87c5413d17c005198e47cecbef5fcbef.jpeg"
+ },
{
"id": 15314206,
"username": "cuijia",
@@ -60041,6 +63067,12 @@
"totalCosts": 12.12,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14870630/medium/b36889c699124e54c6b781e3ba477726.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15381970,
"username": "tzbkk",
@@ -60251,6 +63283,12 @@
"username": "nzinmymind",
"totalCosts": 85.85,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680993/medium/c48e18c9909ca14dd2c4796c916a6007.jpeg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -60283,7 +63321,7 @@
{
"id": 15657887,
"username": "DreamInMorning",
- "totalCosts": 733.26,
+ "totalCosts": 673.67,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg"
},
{
@@ -60298,6 +63336,12 @@
"totalCosts": 490.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350892/medium/12f685a4bf7fab1e51d80ba3b7b0e55d_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 267.65,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15425018,
"username": "TTa77",
@@ -60307,21 +63351,21 @@
{
"id": 16105472,
"username": "Mindy00",
- "totalCosts": 140.39,
+ "totalCosts": 116.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16105472/medium/e3c4ba4f35bd3c3e5bc13053976cd282.png"
},
- {
- "id": 15680993,
- "username": "nzinmymind",
- "totalCosts": 58.58,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680993/medium/c48e18c9909ca14dd2c4796c916a6007.jpeg"
- },
{
"id": 15911295,
"username": "Xin_Cheng",
"totalCosts": 51.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png"
},
+ {
+ "id": 15680993,
+ "username": "nzinmymind",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680993/medium/c48e18c9909ca14dd2c4796c916a6007.jpeg"
+ },
{
"id": 15871701,
"username": "maxwellcotto",
@@ -60573,6 +63617,12 @@
"username": "penglaishan.cn",
"totalCosts": 5.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690748/medium/dd3be098cca6b66915e02147fd6407e7.jpg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -60632,6 +63682,12 @@
"totalCosts": 47.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
+ {
+ "id": 15236832,
+ "username": "Andypsl8",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
+ },
{
"id": 15895151,
"username": "ChaosGod",
@@ -60644,12 +63700,6 @@
"totalCosts": 5.05,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515726/medium/98af5d1ee9b8c33327474cf6dce467b5.jpeg"
},
- {
- "id": 15236832,
- "username": "Andypsl8",
- "totalCosts": 5.05,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
- },
{
"id": 16044050,
"username": "noahazael",
@@ -60875,19 +63925,19 @@
{
"id": 15558917,
"username": "imalittlemole",
- "totalCosts": 1729.12,
+ "totalCosts": 1721.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png"
},
{
"id": 14553216,
"username": "rielychen",
- "totalCosts": 619.13,
+ "totalCosts": 613.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
{
"id": 14958061,
"username": "Dearry",
- "totalCosts": 543.38,
+ "totalCosts": 539.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958061/medium/120296ee25b4bfc07225bfbc8a6d5666_default.png"
},
{
@@ -60905,7 +63955,7 @@
{
"id": 15651555,
"username": "Mseth",
- "totalCosts": 42.42,
+ "totalCosts": 40.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15651555/medium/1154b8dc970d67063e739ed4676bc549.jpeg"
},
{
@@ -60929,7 +63979,7 @@
{
"id": 15577913,
"username": "FU-xinkuan1988",
- "totalCosts": 18.18,
+ "totalCosts": 13.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15577913/medium/dd04d6df3d97ccdbd1db1571b8509a84_default.png"
},
{
@@ -60958,7 +64008,7 @@
{
"id": 15314206,
"username": "cuijia",
- "totalCosts": 862.54,
+ "totalCosts": 849.41,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
{
@@ -61186,10 +64236,16 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357618/medium/12f023106f6a24e98bfc6553c07a46f4.jpg"
},
{
- "id": 15848653,
- "username": "QueenNot",
+ "id": 15073799,
+ "username": "GoForceX",
"totalCosts": 14.14,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848653/medium/9506bee8d4f41073b7c7fb3523239878_default.png"
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
+ {
+ "id": 15236832,
+ "username": "Andypsl8",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
},
{
"id": 16072688,
@@ -61202,12 +64258,6 @@
"username": "sheepskin1",
"totalCosts": 1.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15524545/medium/7777b3e0ba87243b51733b6016b6a945.png"
- },
- {
- "id": 15236832,
- "username": "Andypsl8",
- "totalCosts": 1.01,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
}
]
},
@@ -61241,7 +64291,7 @@
{
"id": 15657887,
"username": "DreamInMorning",
- "totalCosts": 84.84,
+ "totalCosts": 83.83,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg"
},
{
@@ -61381,6 +64431,12 @@
"totalCosts": 20.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15535025/medium/03f9f00ea9a0897fc885fe9cc74a8536.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14829178,
"username": "EffectChen",
@@ -61407,7 +64463,7 @@
{
"id": 15924353,
"username": "Li_Rui",
- "totalCosts": 668.62,
+ "totalCosts": 658.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924353/medium/24be33af9672c1afbe79146c7acda3a0_default.png"
},
{
@@ -61434,6 +64490,12 @@
"totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16072062/medium/f98dda376a3f55bce2703d631f5be0f6_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 9.09,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15911295,
"username": "Xin_Cheng",
@@ -61489,7 +64551,7 @@
{
"id": 14125747,
"username": "misakajwk",
- "totalCosts": 110.09,
+ "totalCosts": 98.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14125747/medium/27c8b5a8d49f829339205e8f4bf47ca0.jpeg"
},
{
@@ -61692,7 +64754,7 @@
{
"id": 15193608,
"username": "yuping",
- "totalCosts": 312.09,
+ "totalCosts": 300.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
}
]
@@ -61726,7 +64788,7 @@
{
"id": 15314206,
"username": "cuijia",
- "totalCosts": 4060.2,
+ "totalCosts": 4032.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
{
@@ -61735,6 +64797,12 @@
"totalCosts": 32.32,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15558917,
"username": "imalittlemole",
@@ -61808,7 +64876,7 @@
{
"id": 14829178,
"username": "EffectChen",
- "totalCosts": 726.19,
+ "totalCosts": 711.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
{
@@ -61817,6 +64885,12 @@
"totalCosts": 114.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14712154,
"username": "fivenicerice",
@@ -61946,6 +65020,12 @@
"totalCosts": 90.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381970/medium/b43b331e365346453668db293656f269.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 40.4,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15531743,
"username": "Meriky",
@@ -61966,7 +65046,7 @@
{
"id": 14770398,
"username": "zhangyuenet",
- "totalCosts": 1360.47,
+ "totalCosts": 1334.21,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14770398/medium/8895f12e399c436af12059556ba1aaf7_default.png"
},
{
@@ -62170,7 +65250,7 @@
{
"id": 14553216,
"username": "rielychen",
- "totalCosts": 665.59,
+ "totalCosts": 657.51,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
{
@@ -62188,7 +65268,7 @@
{
"id": 14792498,
"username": "tyevlag",
- "totalCosts": 128.27,
+ "totalCosts": 120.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png"
},
{
@@ -62220,6 +65300,12 @@
"username": "wl10909",
"totalCosts": 8.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14678674/medium/d424c03f1cd6ad02ffb8017194999917_default.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 8.08,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -62482,7 +65568,7 @@
{
"id": 14690748,
"username": "penglaishan.cn",
- "totalCosts": 392.89,
+ "totalCosts": 387.84,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690748/medium/dd3be098cca6b66915e02147fd6407e7.jpg"
},
{
@@ -62540,7 +65626,7 @@
{
"id": 14771456,
"username": "marcusma",
- "totalCosts": 499.95,
+ "totalCosts": 494.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14771456/medium/bc3f51e759b958dabc1b61845df639e4_default.png"
},
{
@@ -62767,6 +65853,12 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15156816,
"username": "Fengfeng0157",
@@ -62858,25 +65950,25 @@
{
"id": 14792498,
"username": "tyevlag",
- "totalCosts": 1081.71,
+ "totalCosts": 879.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png"
},
{
"id": 14553216,
"username": "rielychen",
- "totalCosts": 658.52,
+ "totalCosts": 475.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
{
"id": 14969167,
"username": "Chenguang",
- "totalCosts": 449.45,
+ "totalCosts": 430.26,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14969167/medium/836403c60f29409ef8ca2acc585c8d61.jpeg"
},
{
"id": 15314206,
"username": "cuijia",
- "totalCosts": 110.09,
+ "totalCosts": 74.74,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
},
{
@@ -62885,6 +65977,12 @@
"totalCosts": 44.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 42.42,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15224386,
"username": "telebee",
@@ -63408,6 +66506,12 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381970/medium/b43b331e365346453668db293656f269.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 15.15,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 16201976,
"username": "Tjmin",
@@ -63912,7 +67016,7 @@
{
"id": 15097185,
"username": "sunbeam.",
- "totalCosts": 1201.9,
+ "totalCosts": 1197.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097185/medium/ef91246c2b7ee8bc15d5b2834ce6fc70.jpg"
},
{
@@ -63962,6 +67066,12 @@
"totalCosts": 23.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15242372/medium/23bf740e9d096ee0b3de7b9f5528c8c9.JPG"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15424846,
"username": "Josevff03",
@@ -64192,7 +67302,7 @@
{
"id": 14792498,
"username": "tyevlag",
- "totalCosts": 245.43,
+ "totalCosts": 210.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png"
},
{
@@ -64201,6 +67311,12 @@
"totalCosts": 48.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15314206,
"username": "cuijia",
@@ -64312,6 +67428,12 @@
"totalCosts": 29.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 14.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 16201976,
"username": "Tjmin",
@@ -64472,7 +67594,7 @@
{
"id": 14792498,
"username": "tyevlag",
- "totalCosts": 1033.23,
+ "totalCosts": 1016.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png"
},
{
@@ -64498,12 +67620,24 @@
"username": "yuping",
"totalCosts": 14.14,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 13.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
{
"fileId": "3024",
"contributors": [
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14957901,
"username": "LiwenGou",
@@ -64530,13 +67664,13 @@
{
"id": 14732424,
"username": "WUBAOYU",
- "totalCosts": 342.39,
+ "totalCosts": 330.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14732424/medium/75217f83736977871d3e128f01d75bab_default.png"
},
{
"id": 14553216,
"username": "rielychen",
- "totalCosts": 328.25,
+ "totalCosts": 316.13,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
{
@@ -64544,6 +67678,12 @@
"username": "hypebeans",
"totalCosts": 54.54,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/c99d5e08a676eaebe6f2a383a81222e1.jpg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 7.07,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -64774,6 +67914,12 @@
"totalCosts": 244.42,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792200/medium/651095028597144eac73720a0c320b3d.jpeg"
},
+ {
+ "id": 15617973,
+ "username": "Dasferco",
+ "totalCosts": 30.3,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15617973/medium/3dfc9ee8000385d013ae2c9f4ca88f25_default.png"
+ },
{
"id": 14829178,
"username": "EffectChen",
@@ -64815,6 +67961,12 @@
"totalCosts": 23.23,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 16.16,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14792498,
"username": "tyevlag",
@@ -64870,7 +68022,7 @@
{
"id": 14829178,
"username": "EffectChen",
- "totalCosts": 176.75,
+ "totalCosts": 170.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
{
@@ -64891,6 +68043,12 @@
"totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086195/medium/cb67cfa9d14a4cb5d9cb8c9ad9fa18b9.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 22.22,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15156816,
"username": "Fengfeng0157",
@@ -65119,6 +68277,12 @@
"totalCosts": 19.19,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png"
},
+ {
+ "id": 15617973,
+ "username": "Dasferco",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15617973/medium/3dfc9ee8000385d013ae2c9f4ca88f25_default.png"
+ },
{
"id": 15751745,
"username": "zookeeper",
@@ -65237,6 +68401,12 @@
"username": "cuijia",
"totalCosts": 3.03,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 1.01,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -65249,18 +68419,18 @@
"totalCosts": 251.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
},
- {
- "id": 15511366,
- "username": "NikoDi2000",
- "totalCosts": 64.64,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15511366/medium/bcddefb5a1f3c4cc9d023f5c0271bb26.png"
- },
{
"id": 15425018,
"username": "TTa77",
"totalCosts": 52.52,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15425018/medium/a0ec669dae445a589d6b020b2fd856c8.png"
},
+ {
+ "id": 15511366,
+ "username": "NikoDi2000",
+ "totalCosts": 28.28,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15511366/medium/bcddefb5a1f3c4cc9d023f5c0271bb26.png"
+ },
{
"id": 14829178,
"username": "EffectChen",
@@ -65333,6 +68503,12 @@
"totalCosts": 2.02,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13962433/medium/6a8b7d48c93a310b833e5f26db2aab4f.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14948719,
"username": "zhao16813888",
@@ -65389,7 +68565,7 @@
{
"id": 15511366,
"username": "NikoDi2000",
- "totalCosts": 117.16,
+ "totalCosts": 80.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15511366/medium/bcddefb5a1f3c4cc9d023f5c0271bb26.png"
},
{
@@ -65434,6 +68610,12 @@
"totalCosts": 4.04,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14556868/medium/e73365d23b16289c375cdc7b684c7150.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 14712154,
"username": "fivenicerice",
@@ -65548,13 +68730,13 @@
{
"id": 15156816,
"username": "Fengfeng0157",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png"
},
{
"id": 15193608,
"username": "yuping",
- "totalCosts": 85.85,
+ "totalCosts": 75.75,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
},
{
@@ -65657,18 +68839,18 @@
"totalCosts": 40.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15311346/medium/62e0a2b5c543569c10511bcf1f84c112_default.png"
},
- {
- "id": 15101527,
- "username": "alexanderhawl",
- "totalCosts": 27.27,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101527/medium/d5363de72b7fd3067a430db7ac9ad8ab.jpeg"
- },
{
"id": 15236832,
"username": "Andypsl8",
"totalCosts": 27.27,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg"
},
+ {
+ "id": 15101527,
+ "username": "alexanderhawl",
+ "totalCosts": 27.27,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101527/medium/d5363de72b7fd3067a430db7ac9ad8ab.jpeg"
+ },
{
"id": 15635039,
"username": "farmerlesheng",
@@ -65680,6 +68862,12 @@
"username": "Fengfeng0157",
"totalCosts": 7.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -65689,7 +68877,7 @@
{
"id": 15101527,
"username": "alexanderhawl",
- "totalCosts": 496.92,
+ "totalCosts": 492.88,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101527/medium/d5363de72b7fd3067a430db7ac9ad8ab.jpeg"
},
{
@@ -65739,6 +68927,12 @@
"username": "Bombarda",
"totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314032/medium/fe5947709f5700c989cfe91917850390_default.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -65754,7 +68948,7 @@
{
"id": 14829178,
"username": "EffectChen",
- "totalCosts": 252.5,
+ "totalCosts": 250.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
{
@@ -65784,7 +68978,7 @@
{
"id": 15242372,
"username": "billwang",
- "totalCosts": 22.22,
+ "totalCosts": 20.2,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15242372/medium/23bf740e9d096ee0b3de7b9f5528c8c9.JPG"
},
{
@@ -65792,6 +68986,12 @@
"username": "cuijia",
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -65801,7 +69001,7 @@
{
"id": 15773245,
"username": "Tykoo",
- "totalCosts": 901.93,
+ "totalCosts": 898.9,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15773245/medium/68e99c266c13a7685c01896596d05b7d.png"
},
{
@@ -65851,6 +69051,12 @@
"username": "ying.ying09",
"totalCosts": 18.18,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906651/medium/7fbb552cabdbfcd79477e56fc90a2670.png"
+ },
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 2.02,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
}
]
},
@@ -65937,7 +69143,7 @@
{
"id": 15193608,
"username": "yuping",
- "totalCosts": 5838.81,
+ "totalCosts": 5819.62,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg"
},
{
@@ -66066,6 +69272,12 @@
"totalCosts": 22.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284354/medium/e4f19dd54c37569ecf884aeeb57776aa.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15314206,
"username": "cuijia",
@@ -66098,13 +69310,13 @@
{
"id": 15657887,
"username": "DreamInMorning",
- "totalCosts": 2962.33,
+ "totalCosts": 2951.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg"
},
{
"id": 15680993,
"username": "nzinmymind",
- "totalCosts": 564.59,
+ "totalCosts": 551.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680993/medium/c48e18c9909ca14dd2c4796c916a6007.jpeg"
},
{
@@ -66119,6 +69331,12 @@
"totalCosts": 31.31,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730443/medium/66ac38b84d1d3ef0166033202f82e355.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15871701,
"username": "maxwellcotto",
@@ -66150,7 +69368,7 @@
{
"id": 14829178,
"username": "EffectChen",
- "totalCosts": 2009.9,
+ "totalCosts": 1990.71,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg"
},
{
@@ -66159,6 +69377,12 @@
"totalCosts": 318.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15623859/medium/1b48569cd42fdf8a9e5af38841b58d4f.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 19.19,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15773245,
"username": "Tykoo",
@@ -66423,7 +69647,7 @@
{
"id": 15871701,
"username": "maxwellcotto",
- "totalCosts": 1014.04,
+ "totalCosts": 1001.92,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png"
},
{
@@ -66435,7 +69659,7 @@
{
"id": 15924353,
"username": "Li_Rui",
- "totalCosts": 456.52,
+ "totalCosts": 444.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924353/medium/24be33af9672c1afbe79146c7acda3a0_default.png"
},
{
@@ -66480,6 +69704,12 @@
"totalCosts": 49.49,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816363/medium/a2ca44a459e8ce152ba8dfce117cb8fa.jpeg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 12.12,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15156816,
"username": "Fengfeng0157",
@@ -66508,12 +69738,6 @@
"username": "Fred-Porlock",
"totalCosts": 15.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png"
- },
- {
- "id": 15871701,
- "username": "maxwellcotto",
- "totalCosts": 3.03,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png"
}
]
},
@@ -66627,7 +69851,7 @@
{
"id": 15871701,
"username": "maxwellcotto",
- "totalCosts": 718.11,
+ "totalCosts": 715.08,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png"
},
{
@@ -66767,7 +69991,7 @@
{
"id": 15918181,
"username": "QuinnHou",
- "totalCosts": 795.88,
+ "totalCosts": 765.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918181/medium/17e80957f6d7eef4f215c6cc41951dae_default.png"
},
{
@@ -66794,6 +70018,12 @@
"totalCosts": 66.66,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906651/medium/7fbb552cabdbfcd79477e56fc90a2670.png"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 38.38,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15904893,
"username": "Yuki139",
@@ -67047,7 +70277,7 @@
{
"id": 15924353,
"username": "Li_Rui",
- "totalCosts": 979.7,
+ "totalCosts": 974.65,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924353/medium/24be33af9672c1afbe79146c7acda3a0_default.png"
},
{
@@ -67080,6 +70310,12 @@
"totalCosts": 6.06,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965647/medium/96faf61b3b59c29adf03dca21e03582c.jpg"
},
+ {
+ "id": 15073799,
+ "username": "GoForceX",
+ "totalCosts": 5.05,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png"
+ },
{
"id": 15438492,
"username": "XiaoLi-sach",
@@ -67087,6 +70323,17 @@
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15438492/medium/cccf6914fa8683665b5a72a175b712a7.jpeg"
}
]
+ },
+ {
+ "fileId": "8011",
+ "contributors": [
+ {
+ "id": 16158452,
+ "username": "sang_shi",
+ "totalCosts": 1124.13,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16158452/medium/8544f339158effd95f9bda0987cb93aa_default.png"
+ }
+ ]
}
]
},
@@ -67140,7 +70387,7 @@
{
"id": 15201846,
"username": "boyinlee",
- "totalCosts": 2151.3,
+ "totalCosts": 2136.15,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201846/medium/3d9d29022427094faeb700ddbd5c078a.jpeg"
},
{
@@ -67152,7 +70399,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 31.31,
+ "totalCosts": 46.46,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
}
]
@@ -67303,13 +70550,13 @@
{
"id": 15055487,
"username": "xaviershen1",
- "totalCosts": 303,
+ "totalCosts": 298.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15055487/medium/10522705934133754c3c30644a91e987.png"
},
{
"id": 14765612,
"username": "mintleaf",
- "totalCosts": 78.78,
+ "totalCosts": 64.64,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14765612/medium/95146c9af272a6aa0fe1ee9060d19ab4.jpeg"
},
{
@@ -67414,7 +70661,7 @@
{
"id": 15201846,
"username": "boyinlee",
- "totalCosts": 510.05,
+ "totalCosts": 506.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201846/medium/3d9d29022427094faeb700ddbd5c078a.jpeg"
},
{
@@ -67449,7 +70696,7 @@
{
"id": 15201846,
"username": "boyinlee",
- "totalCosts": 1728.11,
+ "totalCosts": 1724.07,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201846/medium/3d9d29022427094faeb700ddbd5c078a.jpeg"
},
{
@@ -67714,7 +70961,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 391.88,
+ "totalCosts": 405.01,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
},
{
@@ -67916,7 +71163,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 154.53,
+ "totalCosts": 161.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
},
{
@@ -67925,18 +71172,18 @@
"totalCosts": 145.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955263/medium/51ba4f008f63f1b37ac900269bcaccc0_default.png"
},
- {
- "id": 14298362,
- "username": "chtyozi88",
- "totalCosts": 121.2,
- "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14298362/medium/faa58e5522ded9b4f4fe7628c5352a59.png"
- },
{
"id": 15174096,
"username": "13u22",
"totalCosts": 118.17,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15174096/medium/2c7598abbcf6dc776b41f9443584bf8f.jpeg"
},
+ {
+ "id": 14298362,
+ "username": "chtyozi88",
+ "totalCosts": 115.14,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14298362/medium/faa58e5522ded9b4f4fe7628c5352a59.png"
+ },
{
"id": 15247752,
"username": "18349693112mingdong",
@@ -68049,13 +71296,13 @@
{
"id": 15222542,
"username": "Jcys",
- "totalCosts": 519.14,
+ "totalCosts": 495.91,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15222542/medium/c4b538278714558f9a5430c0cef783de.JPG"
},
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 87.87,
+ "totalCosts": 80.8,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
}
]
@@ -68184,7 +71431,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 59.59,
+ "totalCosts": 81.81,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
},
{
@@ -68202,7 +71449,7 @@
{
"id": 14817838,
"username": "Tadashi1024",
- "totalCosts": 31.31,
+ "totalCosts": 25.25,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14817838/medium/e8bbda9fb55464b5d13482f3f1bef0d4.jpg"
}
]
@@ -68391,7 +71638,7 @@
{
"id": 14449556,
"username": "LuckyPigeon",
- "totalCosts": 86.86,
+ "totalCosts": 50.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14449556/medium/2a538164f71dc2cdbec9b9279eed934e.png"
},
{
@@ -68484,7 +71731,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 873.65,
+ "totalCosts": 848.4,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
},
{
@@ -68501,7 +71748,7 @@
{
"id": 15508914,
"username": "0xycl",
- "totalCosts": 1115.04,
+ "totalCosts": 1060.5,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15508914/medium/98fd4c1396bf4b16bcf44f291ee28fcc.png"
},
{
@@ -68678,7 +71925,7 @@
{
"id": 15399006,
"username": "Xeift",
- "totalCosts": 694.88,
+ "totalCosts": 702.96,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
},
{
@@ -68771,7 +72018,7 @@
{
"id": 15957819,
"username": "ming30650",
- "totalCosts": 664.58,
+ "totalCosts": 640.34,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957819/medium/2baae61ca579f0a04efd89cd210f2c6a_default.png"
},
{
@@ -68785,6 +72032,12 @@
"username": "0xycl",
"totalCosts": 129.28,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15508914/medium/98fd4c1396bf4b16bcf44f291ee28fcc.png"
+ },
+ {
+ "id": 15399006,
+ "username": "Xeift",
+ "totalCosts": 24.24,
+ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png"
}
]
},
@@ -68794,7 +72047,7 @@
{
"id": 14779158,
"username": "K0ue1",
- "totalCosts": 1489.75,
+ "totalCosts": 1458.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14779158/medium/a0145bfd442c7c2b368c5aeae336f176.png"
}
]
@@ -68862,7 +72115,7 @@
{
"id": 14779158,
"username": "K0ue1",
- "totalCosts": 876.68,
+ "totalCosts": 868.6,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14779158/medium/a0145bfd442c7c2b368c5aeae336f176.png"
},
{
@@ -68977,7 +72230,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 1356.43,
+ "totalCosts": 1342.29,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
},
{
@@ -69035,7 +72288,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 1653.37,
+ "totalCosts": 1638.22,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
},
{
@@ -69069,7 +72322,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 1642.26,
+ "totalCosts": 1613.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69091,7 +72344,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 718.11,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69135,7 +72388,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 957.48,
+ "totalCosts": 953.44,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69146,7 +72399,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 2059.39,
+ "totalCosts": 2057.37,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69190,7 +72443,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 2111.91,
+ "totalCosts": 2089.69,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69295,7 +72548,7 @@
{
"id": 15837955,
"username": "Magdalena_",
- "totalCosts": 3235.03,
+ "totalCosts": 3210.79,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg"
}
]
@@ -69338,7 +72591,7 @@
{
"id": 15952403,
"username": "Ezejoe36",
- "totalCosts": 1357.44,
+ "totalCosts": 1346.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952403/medium/70fcdec4d0f8ee875339e30b96862a26.jpeg"
}
]
@@ -69464,7 +72717,7 @@
{
"id": 15967847,
"username": "luniacllama",
- "totalCosts": 1282.7,
+ "totalCosts": 1270.58,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg"
}
]
@@ -69492,7 +72745,7 @@
{
"id": 15967185,
"username": "waseemnaik",
- "totalCosts": 2016.97,
+ "totalCosts": 2001.82,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
},
{
@@ -69509,7 +72762,7 @@
{
"id": 15967185,
"username": "waseemnaik",
- "totalCosts": 3109.79,
+ "totalCosts": 3106.76,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
}
]
@@ -69520,7 +72773,7 @@
{
"id": 15967847,
"username": "luniacllama",
- "totalCosts": 1125.14,
+ "totalCosts": 1096.86,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg"
},
{
@@ -69554,7 +72807,7 @@
{
"id": 15967185,
"username": "waseemnaik",
- "totalCosts": 469.65,
+ "totalCosts": 451.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png"
},
{
@@ -69593,7 +72846,7 @@
{
"id": 15962007,
"username": "omkarkamale001",
- "totalCosts": 1360.47,
+ "totalCosts": 1346.33,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg"
}
]
@@ -69604,7 +72857,7 @@
{
"id": 15962007,
"username": "omkarkamale001",
- "totalCosts": 2183.62,
+ "totalCosts": 2168.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg"
}
]
@@ -69615,7 +72868,7 @@
{
"id": 15962007,
"username": "omkarkamale001",
- "totalCosts": 3096.66,
+ "totalCosts": 3093.63,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg"
}
]
@@ -69626,7 +72879,7 @@
{
"id": 15962007,
"username": "omkarkamale001",
- "totalCosts": 1642.26,
+ "totalCosts": 1613.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg"
}
]
@@ -69659,7 +72912,7 @@
{
"id": 15962007,
"username": "omkarkamale001",
- "totalCosts": 718.11,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg"
}
]
@@ -69709,7 +72962,7 @@
{
"id": 15934037,
"username": "fuji.anggara10",
- "totalCosts": 1348.35,
+ "totalCosts": 1337.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg"
},
{
@@ -69792,7 +73045,7 @@
{
"id": 15934037,
"username": "fuji.anggara10",
- "totalCosts": 13702.67,
+ "totalCosts": 13683.48,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg"
},
{
@@ -69825,13 +73078,13 @@
{
"id": 15769467,
"username": "seunbayo",
- "totalCosts": 1018.08,
+ "totalCosts": 1006.97,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15769467/medium/8532abcb64313bbe86bddfbe926187ea_default.png"
},
{
"id": 15813587,
"username": "Melasin",
- "totalCosts": 342.39,
+ "totalCosts": 339.36,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813587/medium/07b0aaedbd8922799e42b1707269a374.jpg"
}
]
@@ -69870,7 +73123,7 @@
{
"id": 15885247,
"username": "ct1aic.eth",
- "totalCosts": 1317.04,
+ "totalCosts": 1305.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png"
},
{
@@ -69910,7 +73163,7 @@
{
"id": 15885247,
"username": "ct1aic.eth",
- "totalCosts": 2133.12,
+ "totalCosts": 2117.97,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png"
},
{
@@ -69956,7 +73209,7 @@
{
"id": 15885247,
"username": "ct1aic.eth",
- "totalCosts": 1642.26,
+ "totalCosts": 1613.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png"
}
]
@@ -69984,13 +73237,13 @@
{
"id": 15938189,
"username": "altinocoelho",
- "totalCosts": 306.03,
+ "totalCosts": 301.99,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938189/medium/a94b70c2f9891e65834e1864392d4912.png"
},
{
"id": 15885247,
"username": "ct1aic.eth",
- "totalCosts": 105.04,
+ "totalCosts": 94.94,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png"
}
]
@@ -70017,7 +73270,7 @@
{
"id": 15967793,
"username": "TanjaPale",
- "totalCosts": 1348.35,
+ "totalCosts": 1337.24,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png"
}
]
@@ -70045,7 +73298,7 @@
{
"id": 15967793,
"username": "TanjaPale",
- "totalCosts": 2183.62,
+ "totalCosts": 2168.47,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png"
}
]
@@ -70067,7 +73320,7 @@
{
"id": 15967793,
"username": "TanjaPale",
- "totalCosts": 1642.26,
+ "totalCosts": 1613.98,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png"
}
]
@@ -70089,7 +73342,7 @@
{
"id": 15967793,
"username": "TanjaPale",
- "totalCosts": 718.11,
+ "totalCosts": 699.93,
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png"
}
]
diff --git a/src/data/crowdin/file-ids.json b/src/data/crowdin/file-ids.json
index 4888d3fef95..3c8203a253f 100644
--- a/src/data/crowdin/file-ids.json
+++ b/src/data/crowdin/file-ids.json
@@ -1103,10 +1103,6 @@
"id": 2966,
"path": "/about/index.md"
},
- {
- "id": 8031,
- "path": "/deprecated-software/index.md"
- },
{
"id": 8037,
"path": "/page-bug-bounty.json"
diff --git a/src/data/crowdin/translation-buckets-dirs.json b/src/data/crowdin/translation-buckets-dirs.json
index d8a003ebaa7..047969f7919 100644
--- a/src/data/crowdin/translation-buckets-dirs.json
+++ b/src/data/crowdin/translation-buckets-dirs.json
@@ -110,5 +110,9 @@
{
"id": 7833,
"name": "28) Developer Tutorials IV"
+ },
+ {
+ "id": 8218,
+ "name": "Menu redesign & language picker"
}
]
\ No newline at end of file
diff --git a/src/data/developer-docs-links.yaml b/src/data/developer-docs-links.yaml
index 3005d2b0030..5a6070ad1c3 100644
--- a/src/data/developer-docs-links.yaml
+++ b/src/data/developer-docs-links.yaml
@@ -4,253 +4,253 @@
# To display item as a collapsible directory vs. a link
# use the `path` property (of the directory) vs. the `to` property
- id: docs-nav-readme
- to: /developers/docs
+ to: /developers/docs/
- id: docs-nav-foundational-topics
path: /developers/docs/
items:
- id: docs-nav-intro-to-ethereum
- to: /developers/docs/intro-to-ethereum
+ to: /developers/docs/intro-to-ethereum/
description: docs-nav-intro-to-ethereum-description
- id: docs-nav-intro-to-ether
- to: /developers/docs/intro-to-ether
+ to: /developers/docs/intro-to-ether/
description: docs-nav-intro-to-ether-description
- id: docs-nav-intro-to-dapps
- to: /developers/docs/dapps
+ to: /developers/docs/dapps/
description: docs-nav-intro-to-dapps-description
- id: docs-nav-web2-vs-web3
- to: /developers/docs/web2-vs-web3
+ to: /developers/docs/web2-vs-web3/
description: docs-nav-web2-vs-web3-description
- id: docs-nav-accounts
- to: /developers/docs/accounts
+ to: /developers/docs/accounts/
description: docs-nav-accounts-description
- id: docs-nav-transactions
- to: /developers/docs/transactions
+ to: /developers/docs/transactions/
description: docs-nav-transactions-description
- id: docs-nav-blocks
- to: /developers/docs/blocks
+ to: /developers/docs/blocks/
description: docs-nav-blocks-description
- id: docs-nav-evm
- to: /developers/docs/evm
+ to: /developers/docs/evm/
description: docs-nav-evm-description
items:
- id: docs-nav-opcodes
- to: /developers/docs/evm/opcodes
+ to: /developers/docs/evm/opcodes/
- id: docs-nav-gas
- to: /developers/docs/gas
+ to: /developers/docs/gas/
description: docs-nav-gas-description
- id: docs-nav-nodes-and-clients
- to: /developers/docs/nodes-and-clients
+ to: /developers/docs/nodes-and-clients/
description: docs-nav-nodes-and-clients-description
items:
- id: docs-nav-run-a-node
- to: /developers/docs/nodes-and-clients/run-a-node
+ to: /developers/docs/nodes-and-clients/run-a-node/
- id: docs-nav-client-diversity
- to: /developers/docs/nodes-and-clients/client-diversity
+ to: /developers/docs/nodes-and-clients/client-diversity/
- id: docs-nav-nodes-as-a-service
- to: /developers/docs/nodes-and-clients/nodes-as-a-service
+ to: /developers/docs/nodes-and-clients/nodes-as-a-service/
- id: docs-nav-node-architecture
- to: /developers/docs/nodes-and-clients/node-architecture
+ to: /developers/docs/nodes-and-clients/node-architecture/
- id: docs-nav-light-clients
- to: /developers/docs/nodes-and-clients/light-clients
+ to: /developers/docs/nodes-and-clients/light-clients/
- id: docs-nav-archive-nodes
- to: /developers/docs/nodes-and-clients/archive-nodes
+ to: /developers/docs/nodes-and-clients/archive-nodes/
- id: docs-nav-bootnodes
- to: /developers/docs/nodes-and-clients/bootnodes
+ to: /developers/docs/nodes-and-clients/bootnodes/
- id: docs-nav-networks
- to: /developers/docs/networks
+ to: /developers/docs/networks/
description: docs-nav-networks-description
- id: docs-nav-consensus-mechanisms
- to: /developers/docs/consensus-mechanisms
+ to: /developers/docs/consensus-mechanisms/
description: docs-nav-consensus-mechanisms-description
items:
- id: docs-nav-proof-of-work
- to: /developers/docs/consensus-mechanisms/pow
+ to: /developers/docs/consensus-mechanisms/pow/
items:
- id: docs-nav-mining
- to: /developers/docs/consensus-mechanisms/pow/mining
+ to: /developers/docs/consensus-mechanisms/pow/mining/
items:
- id: docs-nav-mining-algorithms
- to: /developers/docs/consensus-mechanisms/pow/mining-algorithms
+ to: /developers/docs/consensus-mechanisms/pow/mining-algorithms/
items:
- id: docs-nav-dagger-hashimoto
- to: /developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto
+ to: /developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/
- id: docs-nav-ethash
- to: /developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash
+ to: /developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/
- id: docs-nav-proof-of-stake
- to: /developers/docs/consensus-mechanisms/pos
+ to: /developers/docs/consensus-mechanisms/pos/
items:
- id: docs-nav-gasper
- to: /developers/docs/consensus-mechanisms/pos/gasper
+ to: /developers/docs/consensus-mechanisms/pos/gasper/
- id: docs-nav-weak-subjectivity
- to: /developers/docs/consensus-mechanisms/pos/weak-subjectivity
+ to: /developers/docs/consensus-mechanisms/pos/weak-subjectivity/
- id: docs-nav-attestations
- to: /developers/docs/consensus-mechanisms/pos/attestations
+ to: /developers/docs/consensus-mechanisms/pos/attestations/
- id: docs-nav-rewards-and-penalties
- to: /developers/docs/consensus-mechanisms/pos/rewards-and-penalties
+ to: /developers/docs/consensus-mechanisms/pos/rewards-and-penalties/
- id: docs-nav-attack-and-defense
- to: /developers/docs/consensus-mechanisms/pos/attack-and-defense
+ to: /developers/docs/consensus-mechanisms/pos/attack-and-defense/
- id: docs-nav-keys
- to: /developers/docs/consensus-mechanisms/pos/keys
+ to: /developers/docs/consensus-mechanisms/pos/keys/
- id: docs-nav-pos-vs-pow
- to: /developers/docs/consensus-mechanisms/pos/pos-vs-pow
+ to: /developers/docs/consensus-mechanisms/pos/pos-vs-pow/
- id: docs-nav-block-proposal
- to: /developers/docs/consensus-mechanisms/pos/block-proposal
+ to: /developers/docs/consensus-mechanisms/pos/block-proposal/
- id: docs-nav-pos-faqs
- to: /developers/docs/consensus-mechanisms/pos/faqs
+ to: /developers/docs/consensus-mechanisms/pos/faqs/
- id: docs-nav-ethereum-stack
path: /developers/docs/
items:
- id: docs-nav-intro-to-the-stack
- to: /developers/docs/ethereum-stack
+ to: /developers/docs/ethereum-stack/
description: docs-nav-intro-to-the-stack-description
- id: docs-nav-smart-contracts
- to: /developers/docs/smart-contracts
+ to: /developers/docs/smart-contracts/
description: docs-nav-smart-contracts-description
items:
- id: docs-nav-smart-contract-languages
- to: /developers/docs/smart-contracts/languages
+ to: /developers/docs/smart-contracts/languages/
- id: docs-nav-smart-contract-anatomy
- to: /developers/docs/smart-contracts/anatomy
+ to: /developers/docs/smart-contracts/anatomy/
- id: docs-nav-smart-contracts-libraries
- to: /developers/docs/smart-contracts/libraries
+ to: /developers/docs/smart-contracts/libraries/
- id: docs-nav-testing-smart-contracts
- to: /developers/docs/smart-contracts/testing
+ to: /developers/docs/smart-contracts/testing/
- id: docs-nav-compiling-smart-contracts
- to: /developers/docs/smart-contracts/compiling
+ to: /developers/docs/smart-contracts/compiling/
- id: docs-nav-deploying-smart-contracts
- to: /developers/docs/smart-contracts/deploying
+ to: /developers/docs/smart-contracts/deploying/
- id: docs-nav-verifying-smart-contracts
- to: /developers/docs/smart-contracts/verifying
+ to: /developers/docs/smart-contracts/verifying/
- id: docs-nav-upgrading-smart-contracts
- to: /developers/docs/smart-contracts/upgrading
+ to: /developers/docs/smart-contracts/upgrading/
- id: docs-nav-smart-contract-security
- to: /developers/docs/smart-contracts/security
+ to: /developers/docs/smart-contracts/security/
description: docs-nav-smart-contract-security-description
- id: docs-nav-smart-contract-formal-verification
- to: /developers/docs/smart-contracts/formal-verification
+ to: /developers/docs/smart-contracts/formal-verification/
description: docs-nav-smart-contract-formal-verification-description
- id: docs-nav-composability
- to: /developers/docs/smart-contracts/composability
+ to: /developers/docs/smart-contracts/composability/
- id: docs-nav-development-networks
- to: /developers/docs/development-networks
+ to: /developers/docs/development-networks/
description: docs-nav-development-networks-description
- id: docs-nav-development-frameworks
- to: /developers/docs/frameworks
+ to: /developers/docs/frameworks/
description: docs-nav-development-frameworks-description
- id: docs-nav-ethereum-client-apis
description: docs-nav-ethereum-client-apis-description
items:
- id: docs-nav-java-script-apis
- to: /developers/docs/apis/javascript
+ to: /developers/docs/apis/javascript/
- id: docs-nav-backend-apis
- to: /developers/docs/apis/backend
+ to: /developers/docs/apis/backend/
- id: docs-nav-json-rpc
- to: /developers/docs/apis/json-rpc
+ to: /developers/docs/apis/json-rpc/
- id: docs-nav-data-and-analytics
- to: /developers/docs/data-and-analytics
+ to: /developers/docs/data-and-analytics/
description: docs-nav-data-and-analytics-description
items:
- id: docs-nav-block-explorers
- to: /developers/docs/data-and-analytics/block-explorers
+ to: /developers/docs/data-and-analytics/block-explorers/
- id: docs-nav-storage
- to: /developers/docs/storage
+ to: /developers/docs/storage/
description: docs-nav-storage-description
- id: docs-nav-integrated-development-environments-ides
- to: /developers/docs/ides
+ to: /developers/docs/ides/
description: docs-nav-integrated-development-environments-ides-description
- id: docs-nav-programming-languages
- to: /developers/docs/programming-languages
+ to: /developers/docs/programming-languages/
description: docs-nav-programming-languages-description
items:
- id: docs-nav-dart
- to: /developers/docs/programming-languages/dart
+ to: /developers/docs/programming-languages/dart/
- id: docs-nav-delphi
- to: /developers/docs/programming-languages/delphi
+ to: /developers/docs/programming-languages/delphi/
- id: docs-nav-dot-net
- to: /developers/docs/programming-languages/dot-net
+ to: /developers/docs/programming-languages/dot-net/
- id: docs-nav-golang
- to: /developers/docs/programming-languages/golang
+ to: /developers/docs/programming-languages/golang/
- id: docs-nav-java
- to: /developers/docs/programming-languages/java
+ to: /developers/docs/programming-languages/java/
- id: docs-nav-javascript
- to: /developers/docs/programming-languages/javascript
+ to: /developers/docs/programming-languages/javascript/
- id: docs-nav-python
- to: /developers/docs/programming-languages/python
+ to: /developers/docs/programming-languages/python/
- id: docs-nav-ruby
- to: /developers/docs/programming-languages/ruby
+ to: /developers/docs/programming-languages/ruby/
- id: docs-nav-rust
- to: /developers/docs/programming-languages/rust
+ to: /developers/docs/programming-languages/rust/
- id: docs-nav-advanced
path: /developers/docs/
items:
- id: docs-nav-bridges
- to: /developers/docs/bridges
+ to: /developers/docs/bridges/
description: docs-nav-bridges-description
- id: docs-nav-standards
- to: /developers/docs/standards
+ to: /developers/docs/standards/
description: docs-nav-standards-description
items:
- id: docs-nav-token-standards
- to: /developers/docs/standards/tokens
+ to: /developers/docs/standards/tokens/
items:
- id: docs-nav-erc-20
- to: /developers/docs/standards/tokens/erc-20
+ to: /developers/docs/standards/tokens/erc-20/
- id: docs-nav-erc-721
- to: /developers/docs/standards/tokens/erc-721
+ to: /developers/docs/standards/tokens/erc-721/
- id: docs-nav-erc-777
- to: /developers/docs/standards/tokens/erc-777
+ to: /developers/docs/standards/tokens/erc-777/
- id: docs-nav-erc-1155
- to: /developers/docs/standards/tokens/erc-1155
+ to: /developers/docs/standards/tokens/erc-1155/
- id: docs-nav-erc-4626
- to: /developers/docs/standards/tokens/erc-4626
+ to: /developers/docs/standards/tokens/erc-4626/
- id: docs-nav-mev
- to: /developers/docs/mev
+ to: /developers/docs/mev/
description: docs-nav-mev-description
- id: docs-nav-oracles
- to: /developers/docs/oracles
+ to: /developers/docs/oracles/
description: docs-nav-oracles-description
- id: docs-nav-scaling
- to: /developers/docs/scaling
+ to: /developers/docs/scaling/
description: docs-nav-scaling-description
items:
- id: docs-nav-scaling-optimistic-rollups
- to: /developers/docs/scaling/optimistic-rollups
+ to: /developers/docs/scaling/optimistic-rollups/
- id: docs-nav-scaling-zk-rollups
- to: /developers/docs/scaling/zk-rollups
+ to: /developers/docs/scaling/zk-rollups/
- id: docs-nav-scaling-channels
- to: /developers/docs/scaling/state-channels
+ to: /developers/docs/scaling/state-channels/
- id: docs-nav-scaling-sidechains
- to: /developers/docs/scaling/sidechains
+ to: /developers/docs/scaling/sidechains/
- id: docs-nav-scaling-plasma
- to: /developers/docs/scaling/plasma
+ to: /developers/docs/scaling/plasma/
- id: docs-nav-scaling-validium
- to: /developers/docs/scaling/validium
+ to: /developers/docs/scaling/validium/
- id: docs-nav-data-availability
- to: /developers/docs/data-availability
+ to: /developers/docs/data-availability/
description: docs-nav-data-availability-description
- id: docs-nav-networking-layer
- to: /developers/docs/networking-layer
+ to: /developers/docs/networking-layer/
description: docs-nav-networking-layer-description
items:
- id: docs-nav-networking-layer-network-addresses
- to: /developers/docs/networking-layer/network-addresses
+ to: /developers/docs/networking-layer/network-addresses/
- id: docs-nav-networking-layer-portal-network
- to: /developers/docs/networking-layer/portal-network
+ to: /developers/docs/networking-layer/portal-network/
- id: docs-nav-data-structures-and-encoding
- to: /developers/docs/data-structures-and-encoding
+ to: /developers/docs/data-structures-and-encoding/
description: docs-nav-data-structures-and-encoding-description
items:
- id: docs-nav-data-structures-and-encoding-patricia-merkle-trie
- to: /developers/docs/data-structures-and-encoding/patricia-merkle-trie
+ to: /developers/docs/data-structures-and-encoding/patricia-merkle-trie/
- id: docs-nav-data-structures-and-encoding-rlp
- to: /developers/docs/data-structures-and-encoding/rlp
+ to: /developers/docs/data-structures-and-encoding/rlp/
- id: docs-nav-data-structures-and-encoding-ssz
- to: /developers/docs/data-structures-and-encoding/ssz
+ to: /developers/docs/data-structures-and-encoding/ssz/
- id: docs-nav-data-structures-and-encoding-web3-secret-storage
- to: /developers/docs/data-structures-and-encoding/web3-secret-storage
+ to: /developers/docs/data-structures-and-encoding/web3-secret-storage/
- id: docs-nav-design-fundamentals
path: /developers/docs/
items:
- id: docs-nav-design-and-ux
- to: /developers/docs/design-and-ux
+ to: /developers/docs/design-and-ux/
description: docs-nav-design-and-ux-description
diff --git a/src/data/execution-bounty-hunters.json b/src/data/execution-bounty-hunters.json
index f1282594b14..5a95dc3d751 100644
--- a/src/data/execution-bounty-hunters.json
+++ b/src/data/execution-bounty-hunters.json
@@ -24,6 +24,11 @@
"name": "Yoonho Kim (team Hithereum)",
"score": 20000
},
+ {
+ "username": "",
+ "name": "nrv (@nervoir)",
+ "score": 31000
+ },
{
"username": "johnyangk",
"name": "John Youngseok Yang (Software Platform Lab)",
diff --git a/src/data/layer-2/layer-2.ts b/src/data/layer-2/layer-2.ts
index 5034de20394..47e6a62d2ae 100644
--- a/src/data/layer-2/layer-2.ts
+++ b/src/data/layer-2/layer-2.ts
@@ -4,6 +4,7 @@ import type { TranslationKey } from "@/lib/types"
import ArbitrumImage from "@/public/layer-2/arbitrum.png"
import AztecImage from "@/public/layer-2/aztec.png"
+import BaseImage from "@/public/layer-2/base.png"
import BobaImage from "@/public/layer-2/boba.png"
import LoopringImage from "@/public/layer-2/loopring.png"
import OptimismImage from "@/public/layer-2/optimism.png"
@@ -83,6 +84,22 @@ export const layer2Data: Rollups = {
image: BobaImage,
background: "black",
},
+ {
+ name: "Base",
+ website: "https://base.org/",
+ developerDocs: "https://docs.base.org/",
+ l2beat: "https://l2beat.com/scaling/projects/base",
+ bridge: "https://bridge.base.org/deposit",
+ bridgeWallets: ["MetaMask", "WalletConnect", "Coinbase Wallet"],
+ blockExplorer: "https://basescan.org/",
+ ecosystemPortal: "https://www.base.org/ecosystem",
+ tokenLists: "",
+ noteKey: "layer-2-base-note",
+ purpose: ["universal"],
+ descriptionKey: "base-description",
+ image: BaseImage,
+ background: "white",
+ },
],
zk: [
{
diff --git a/src/data/translationProgress.json b/src/data/translationProgress.json
new file mode 100644
index 00000000000..aca3891e1f5
--- /dev/null
+++ b/src/data/translationProgress.json
@@ -0,0 +1,639 @@
+[
+ {
+ "languageId": "af",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "am",
+ "words": {
+ "approved": 10516,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ar",
+ "words": {
+ "approved": 40902,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "az",
+ "words": {
+ "approved": 29436,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "be",
+ "words": {
+ "approved": 6760,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "bg",
+ "words": {
+ "approved": 15409,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "bi",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "bn",
+ "words": {
+ "approved": 36780,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "br-FR",
+ "words": {
+ "approved": 82,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "bs",
+ "words": {
+ "approved": 6760,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ca",
+ "words": {
+ "approved": 20404,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "cs",
+ "words": {
+ "approved": 41514,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "da",
+ "words": {
+ "approved": 2335,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "de",
+ "words": {
+ "approved": 166447,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "el",
+ "words": {
+ "approved": 104465,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "eo",
+ "words": {
+ "approved": 169,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "es-EM",
+ "words": {
+ "approved": 329876,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "et",
+ "words": {
+ "approved": 75,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "eu",
+ "words": {
+ "approved": 36,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "fa",
+ "words": {
+ "approved": 99242,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "fa-AF",
+ "words": {
+ "approved": 186,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "fi",
+ "words": {
+ "approved": 23380,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "fil",
+ "words": {
+ "approved": 55187,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "fr",
+ "words": {
+ "approved": 336161,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "gi",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "gl",
+ "words": {
+ "approved": 2199,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "gu-IN",
+ "words": {
+ "approved": 2431,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ha",
+ "words": {
+ "approved": 4,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "he",
+ "words": {
+ "approved": 2223,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "hi",
+ "words": {
+ "approved": 58108,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "hr",
+ "words": {
+ "approved": 14180,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "hu",
+ "words": {
+ "approved": 201829,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "hy-AM",
+ "words": {
+ "approved": 10512,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "id",
+ "words": {
+ "approved": 159765,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ig",
+ "words": {
+ "approved": 24352,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "it",
+ "words": {
+ "approved": 335275,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ja",
+ "words": {
+ "approved": 287545,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ka",
+ "words": {
+ "approved": 2315,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "kk",
+ "words": {
+ "approved": 2366,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "km",
+ "words": {
+ "approved": 16315,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "kn",
+ "words": {
+ "approved": 27759,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ko",
+ "words": {
+ "approved": 53303,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ku",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ky",
+ "words": {
+ "approved": 12,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "lb",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "lt",
+ "words": {
+ "approved": 2714,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "mai",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "mk",
+ "words": {
+ "approved": 88,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ml-IN",
+ "words": {
+ "approved": 12307,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "mn",
+ "words": {
+ "approved": 64,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "mr",
+ "words": {
+ "approved": 26603,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ms",
+ "words": {
+ "approved": 37835,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "my",
+ "words": {
+ "approved": 706,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ne-NP",
+ "words": {
+ "approved": 2315,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "nl",
+ "words": {
+ "approved": 38061,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "no",
+ "words": {
+ "approved": 2711,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "or",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "pa-IN",
+ "words": {
+ "approved": 6,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "pcm",
+ "words": {
+ "approved": 17866,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "pl",
+ "words": {
+ "approved": 95709,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "pt-BR",
+ "words": {
+ "approved": 318622,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "pt-PT",
+ "words": {
+ "approved": 26713,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ro",
+ "words": {
+ "approved": 78570,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ru",
+ "words": {
+ "approved": 96995,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sat",
+ "words": {
+ "approved": 57,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "si-LK",
+ "words": {
+ "approved": 706,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sk",
+ "words": {
+ "approved": 7243,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sl",
+ "words": {
+ "approved": 27166,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sn",
+ "words": {
+ "approved": 465,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "so",
+ "words": {
+ "approved": 493,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sq",
+ "words": {
+ "approved": 693,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sr-CS",
+ "words": {
+ "approved": 26854,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sv-SE",
+ "words": {
+ "approved": 10874,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "sw",
+ "words": {
+ "approved": 17237,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ta",
+ "words": {
+ "approved": 2319,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "te",
+ "words": {
+ "approved": 694,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "tg",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "th",
+ "words": {
+ "approved": 6817,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ti",
+ "words": {
+ "approved": 0,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "tk",
+ "words": {
+ "approved": 6762,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "tl",
+ "words": {
+ "approved": 86,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "tr",
+ "words": {
+ "approved": 320901,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "uk",
+ "words": {
+ "approved": 65054,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ur-IN",
+ "words": {
+ "approved": 2315,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "ur-PK",
+ "words": {
+ "approved": 725,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "uz",
+ "words": {
+ "approved": 2907,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "vi",
+ "words": {
+ "approved": 19284,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "yo",
+ "words": {
+ "approved": 687,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "zh-CN",
+ "words": {
+ "approved": 311060,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "zh-TW",
+ "words": {
+ "approved": 125769,
+ "total": 339941
+ }
+ },
+ {
+ "languageId": "zu",
+ "words": {
+ "approved": 109,
+ "total": 339941
+ }
+ }
+]
\ No newline at end of file
diff --git a/src/data/wallets/wallet-data.ts b/src/data/wallets/wallet-data.ts
index bbd3b9401af..bd24885092e 100644
--- a/src/data/wallets/wallet-data.ts
+++ b/src/data/wallets/wallet-data.ts
@@ -2,15 +2,14 @@ import { StaticImageData } from "next/image"
import OneInchWalletImage from "@/public/wallets/1inch.png"
import AirgapImage from "@/public/wallets/airgap.png"
-import AktionariatImage from "@/public/wallets/aktionariat.png"
import AlphaWalletImage from "@/public/wallets/alpha.png"
import AmbireImage from "@/public/wallets/ambire.png"
import ApexImage from "@/public/wallets/apex.png"
import ArgentImage from "@/public/wallets/argent.png"
+import AuroxImage from "@/public/wallets/aurox.png"
import BitcoindotcomImage from "@/public/wallets/bitcoindotcom.png"
import BitkeepImage from "@/public/wallets/bitkeep.png"
import BlockWalletImage from "@/public/wallets/blockwallet.png"
-import BraveImage from "@/public/wallets/brave.png"
import BridgeWalletImage from "@/public/wallets/bridge.png"
import Coin98Image from "@/public/wallets/coin98.png"
import CoinbaseImage from "@/public/wallets/coinbase.png"
@@ -28,27 +27,19 @@ import LedgerImage from "@/public/wallets/ledger.png"
import LoopringImage from "@/public/wallets/loopring.png"
import MetaMaskImage from "@/public/wallets/metamask.png"
import MewImage from "@/public/wallets/mew.png"
-import MyCryptoImage from "@/public/wallets/mycrypto.png"
import MyEtherWalletImage from "@/public/wallets/myetherwallet.png"
-import NumioImage from "@/public/wallets/numio.png"
import OKXImage from "@/public/wallets/okx.jpeg"
import OneKeyImage from "@/public/wallets/onekey.png"
-import OperaImage from "@/public/wallets/opera.png"
import PhantomImage from "@/public/wallets/phantom.png"
import PillarImage from "@/public/wallets/pillar.png"
-import PortisImage from "@/public/wallets/portis.png"
import RabbyWalletImage from "@/public/wallets/rabbywallet.png"
import RainbowImage from "@/public/wallets/rainbow.png"
import SafeImage from "@/public/wallets/safe.png"
-import SequenceImage from "@/public/wallets/sequence.png"
-import ShapeShiftImage from "@/public/wallets/shapeshift.png"
-import StatusImage from "@/public/wallets/status.png"
import TahoImage from "@/public/wallets/taho.png"
import TokenPocketImage from "@/public/wallets/tokenpocket.png"
import TorusImage from "@/public/wallets/torus.png"
import TrezorImage from "@/public/wallets/trezor.png"
import UnstoppableWalletImage from "@/public/wallets/unstoppable.png"
-import Web3AuthImage from "@/public/wallets/web3auth.png"
import XDEFIImage from "@/public/wallets/xdefi.png"
import ZengoImage from "@/public/wallets/zengo.png"
import ZerionImage from "@/public/wallets/zerion.png"
@@ -150,51 +141,6 @@ const walletData: WalletData[] = [
onboard_documentation: "https://support.keyst.one/",
documentation: "",
},
- {
- last_updated: "June 22, 2022",
- name: "Numio",
- image: NumioImage,
- brand_color: "#3F3F3F",
- url: "https://www.numio.one/",
- wallet_live_date: "December 2020",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/GetNumio/",
- discord: "",
- reddit: "",
- telegram: "",
- ios: true,
- android: true,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: false,
- repo_url: "",
- non_custodial: true,
- security_audit: [],
- scam_protection: false,
- hardware_support: false,
- walletconnect: true,
- rpc_importing: false,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: true,
- layer_2: true,
- gas_fee_customization: false,
- ens_support: false,
- erc_20_support: false,
- eip_1559_support: false,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "https://docs.numio.one/",
- documentation: "",
- },
{
last_updated: "June 22, 2022",
name: "Coin98",
@@ -397,51 +343,6 @@ const walletData: WalletData[] = [
onboard_documentation: "https://www.argent.xyz/learn/",
documentation: "",
},
- {
- last_updated: "June 22, 2022",
- name: "Portis",
- image: PortisImage,
- brand_color: "#ffffff",
- url: "https://www.portis.io",
- wallet_live_date: "Nov, 2018",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/portis_io",
- discord: "",
- reddit: "",
- telegram: "https://t.me/PortisHQ",
- ios: false,
- android: false,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: false,
- repo_url: "",
- non_custodial: true,
- security_audit: [],
- scam_protection: false,
- hardware_support: false,
- walletconnect: false,
- rpc_importing: true,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: false,
- layer_2: true,
- gas_fee_customization: false,
- ens_support: false,
- erc_20_support: true,
- eip_1559_support: false,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "https://docs.portis.io/",
- documentation: "",
- },
{
last_updated: "November 15, 2022",
name: "Coinbase Wallet",
@@ -534,53 +435,6 @@ const walletData: WalletData[] = [
"https://framelabs.notion.site/Getting-Started-Guide-775a95edec3244ce80e118ead8ea6516",
documentation: "",
},
- {
- last_updated: "June 22, 2022",
- name: "Brave Wallet",
- image: BraveImage,
- brand_color: "#fe1f02",
- url: "https://brave.com/wallet",
- wallet_live_date: "November 2021",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/brave",
- discord: "",
- reddit: "https://www.reddit.com/r/brave_browser",
- telegram: "",
- ios: true,
- android: true,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: true,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/brave/brave-core/ ",
- non_custodial: true,
- security_audit: ["asked if these are available"],
- scam_protection: true,
- hardware_support: true,
- walletconnect: false,
- rpc_importing: true,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: true,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation:
- "https://wallet-docs.brave.com/, https://support.brave.com/hc/en-us/articles/4415497656461-Brave-Wallet-FAQ",
- documentation:
- "https://wallet-docs.brave.com/, https://support.brave.com/hc/en-us/articles/4415497656461-Brave-Wallet-FAQ",
- },
{
last_updated: "June 22, 2022",
name: "MetaMask",
@@ -993,72 +847,6 @@ const walletData: WalletData[] = [
onboard_documentation: "https://hc.foxwallet.com/docs/",
documentation: "https://hc.foxwallet.com/docs/faq",
},
- {
- last_updated: "June 24, 2022",
- name: "MyCrypto",
- image: MyCryptoImage,
- brand_color: "#FFFFFF",
- url: "https://mycrypto.com",
- wallet_live_date: "Feb, 2018",
- active_development_team: true,
- languages_supported: [
- "en",
- "de",
- "el",
- "es",
- "fi",
- "fr",
- "hu",
- "id",
- "it",
- "jp",
- "nl",
- "no",
- "pl",
- "pt",
- "ru",
- "ko",
- "tr",
- "vi",
- "zh",
- "zh-tw",
- ],
- twitter: "https://twitter.com/mycrypto",
- discord: "",
- reddit: "",
- telegram: "",
- ios: false,
- android: false,
- linux: true,
- windows: true,
- macOS: true,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/MyCryptoHQ",
- non_custodial: true,
- security_audit: [""],
- scam_protection: false,
- hardware_support: true,
- walletconnect: true,
- rpc_importing: true,
- nft_support: false,
- connect_to_dapps: true,
- staking: false,
- swaps: true,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "https://blog.mycrypto.com",
- documentation: "",
- },
{
last_updated: "June 24, 2022",
name: "Pillar",
@@ -1291,52 +1079,6 @@ const walletData: WalletData[] = [
onboard_documentation: "https://alphawallet.zendesk.com/hc/en-us",
documentation: "",
},
- {
- last_updated: "June 24, 2022",
- name: "Opera wallet",
- image: OperaImage,
- brand_color: "#ffffff",
- url: "https://crypto.opera.com/",
- wallet_live_date: "January 19 2022",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/Opera_Crypto",
- discord: "https://discord.gg/operacrypto",
- reddit: "",
- telegram: "",
- ios: true,
- android: true,
- linux: true,
- windows: true,
- macOS: true,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: false,
- repo_url: "",
- non_custodial: true,
- security_audit: [""],
- scam_protection: true,
- hardware_support: false,
- walletconnect: false,
- rpc_importing: false,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: true,
- multichain: true,
- layer_2: false,
- gas_fee_customization: false,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: false,
- buy_crypto: true,
- withdraw_crypto: true,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "",
- documentation: "",
- },
{
last_updated: "June 24, 2022",
name: "Guarda",
@@ -1383,53 +1125,6 @@ const walletData: WalletData[] = [
onboard_documentation: "",
documentation: "https://support.guarda.com/",
},
- {
- last_updated: "September 14, 2022",
- name: "Web3Auth",
- image: Web3AuthImage,
- brand_color: "#0364ff",
- url: "https://web3auth.io",
- wallet_live_date: "Jan, 2022",
- active_development_team: true,
- languages_supported: ["en", "de", "ja", "ko", "zh", "es"],
- twitter: "https://twitter.com/web3auth",
- discord: "https://discord.gg/web3auth",
- reddit: "",
- telegram: "https://t.me/web3authdev",
- ios: true,
- android: true,
- linux: false,
- windows: true,
- macOS: true,
- firefox: true,
- chromium: true,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/web3auth/web3auth",
- non_custodial: true,
- security_audit: ["https://web3auth.io/docs/overview/key-management/audits"],
- scam_protection: false,
- hardware_support: true,
- walletconnect: true,
- rpc_importing: true,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: false,
- multichain: true,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: true,
- social_recovery: false,
- onboard_documentation: "https://web3auth.io/docs/overview/what-is-web3auth",
- documentation: "https://web3auth.io/docs/",
- mpc: true,
- },
{
last_updated: "June 24, 2022",
name: "Bridge wallet",
@@ -1626,171 +1321,6 @@ const walletData: WalletData[] = [
onboard_documentation: "https://learn.rainbow.me/",
documentation: "",
},
- {
- last_updated: "June 30, 2022",
- name: "Status",
- image: StatusImage,
- brand_color: "#4360DF",
- url: "https://status.im/",
- wallet_live_date:
- "Status Mobile has been available in beta since 2017, with the 1.0 version released in Feb 2020.",
- active_development_team: true,
- languages_supported: [
- "ar",
- "bn",
- "de",
- "el",
- "en",
- "es",
- "ph",
- "fr",
- "hi",
- "id",
- "it",
- "jp",
- "ko",
- "my",
- "nl",
- "pl",
- "pt",
- "pt-br",
- "ru",
- "tr",
- "vi",
- "zh",
- "zh-tw",
- ],
- twitter: "https://twitter.com/ethstatus",
- discord: "https://discord.gg/HGSAcAHGMA",
- reddit: "https://www.reddit.com/r/statusim/",
- telegram: "",
- ios: true,
- android: true,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/status-im/",
- non_custodial: true,
- security_audit: ["https://github.com/status-im/status-security#audits"],
- scam_protection: true,
- hardware_support: true,
- walletconnect: true,
- rpc_importing: true,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: false,
- multichain: false,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "https://status.im/faq/",
- documentation: "https://our.status.im/",
- },
- {
- last_updated: "June 30, 2022",
- name: "Aktionariat",
- image: AktionariatImage,
- brand_color: "#ffffff",
- url: "https://www.aktionariat.com/",
- wallet_live_date: "28.01.2021",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/aktionariat",
- discord: "",
- reddit: "",
- telegram: "https://t.me/Aktionariat",
- ios: true,
- android: true,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: false,
- repo_url: "",
- non_custodial: true,
- security_audit: [""],
- scam_protection: false,
- hardware_support: false,
- walletconnect: true,
- rpc_importing: false,
- nft_support: false,
- connect_to_dapps: true,
- staking: false,
- swaps: false,
- multichain: false,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: false,
- erc_20_support: false,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: false,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "",
- documentation: "https://www.aktionariat.com/faq/en#wallet",
- },
- {
- last_updated: "2022-08-21",
- name: "Sequence",
- image: SequenceImage,
- brand_color: "#000000",
- url: "https://www.sequence.xyz",
- wallet_live_date: "2021-11-04",
- active_development_team: true,
- languages_supported: ["en"],
- twitter: "https://twitter.com/0xsequence",
- discord: "https://discord.gg/sequence",
- reddit: "https://www.reddit.com/r/0xSequence/",
- telegram: "",
- ios: false,
- android: false,
- linux: false,
- windows: false,
- macOS: false,
- firefox: true,
- chromium: true,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/0xsequence/wallet-contracts",
- non_custodial: true,
- security_audit: [
- "https://docs.sequence.build/wallet-contracts/contract-audits",
- ],
- scam_protection: true,
- hardware_support: false,
- walletconnect: true,
- rpc_importing: false,
- nft_support: true,
- connect_to_dapps: true,
- staking: false,
- swaps: true,
- multichain: true,
- layer_2: false,
- gas_fee_customization: false,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: false,
- withdraw_crypto: false,
- multisig: true,
- social_recovery: false,
- onboard_documentation: "https://support.sequence.xyz/",
- documentation: "https://docs.sequence.xyz/",
- },
{
last_updated: "2022-08-21",
name: "Trezor",
@@ -2538,52 +2068,6 @@ const walletData: WalletData[] = [
documentation:
"https://tahowallet.notion.site/Taho-Knowledge-Base-4d95ed5439c64d6db3d3d27abf1fdae5",
},
- {
- last_updated: "2023-05-01",
- name: "ShapeShift Wallet",
- image: ShapeShiftImage,
- brand_color: "#386FF9",
- url: "https://app.shapeshift.com/",
- wallet_live_date: "2020-07-01",
- active_development_team: true,
- languages_supported: ["en", "es", "pt", "fr", "de", "tr", "ru", "uk"],
- twitter: "https://twitter.com/shapeshift",
- discord: "https://discord.gg/shapeshift",
- reddit: "",
- telegram: "https://t.me/shapeshiftofficial",
- ios: true,
- android: true,
- linux: false,
- windows: false,
- macOS: false,
- firefox: false,
- chromium: false,
- hardware: false,
- open_source: true,
- repo_url: "https://github.com/shapeshift/hdwallet",
- non_custodial: true,
- security_audit: ["https://www.defisafety.com/app/pqrs/108"],
- scam_protection: false,
- hardware_support: true,
- walletconnect: true,
- rpc_importing: false,
- nft_support: true,
- connect_to_dapps: true,
- staking: true,
- swaps: true,
- multichain: true,
- layer_2: true,
- gas_fee_customization: true,
- ens_support: true,
- erc_20_support: true,
- eip_1559_support: true,
- buy_crypto: true,
- withdraw_crypto: true,
- multisig: false,
- social_recovery: false,
- onboard_documentation: "https://shapeshift.zendesk.com/hc/en-us/",
- documentation: "https://docs.shapeshift.com/",
- },
{
last_updated: "2023-07-19",
name: "Phantom",
@@ -2712,6 +2196,54 @@ const walletData: WalletData[] = [
documentation:
"https://docs.xdefi.io/xdefi-wallet-v2-draft/technical-docs/extension-integration",
},
+ {
+ last_updated: "2023-10-30",
+ name: "Aurox Wallet",
+ image: AuroxImage,
+ brand_color: "#1F47FF",
+ url: "https://getaurox.com/wallet",
+ wallet_live_date: "2022-12-06",
+ active_development_team: true,
+ languages_supported: ["en"],
+ twitter: "https://twitter.com/getaurox",
+ discord: "https://aurox.app/discord",
+ reddit: "",
+ telegram: "",
+ ios: false,
+ android: false,
+ linux: false,
+ windows: false,
+ macOS: false,
+ firefox: false,
+ chromium: true,
+ hardware: false,
+ open_source: true,
+ repo_url: "https://github.com/GetAurox/Aurox-Wallet",
+ non_custodial: true,
+ security_audit: ["https://skynet.certik.com/projects/aurox"],
+ scam_protection: true,
+ hardware_support: true,
+ walletconnect: false,
+ rpc_importing: true,
+ nft_support: true,
+ connect_to_dapps: true,
+ staking: false,
+ swaps: true,
+ multichain: true,
+ layer_2: true,
+ gas_fee_customization: true,
+ ens_support: true,
+ erc_20_support: true,
+ eip_1559_support: true,
+ buy_crypto: false,
+ withdraw_crypto: false,
+ multisig: false,
+ social_recovery: false,
+ onboard_documentation:
+ "https://docs.getaurox.com/product-docs/aurox-ecosystem/what-is-the-aurox-ecosystem",
+ documentation:
+ "https://docs.getaurox.com/product-docs/aurox-ecosystem/what-is-the-aurox-ecosystem",
+ },
]
export default walletData
diff --git a/src/hooks/useNavMenuColors.ts b/src/hooks/useNavMenuColors.ts
new file mode 100644
index 00000000000..5fa622dc496
--- /dev/null
+++ b/src/hooks/useNavMenuColors.ts
@@ -0,0 +1,46 @@
+import { useColorModeValue } from "@chakra-ui/react"
+
+import { Level } from "@/components/Nav/types"
+
+type LevelColors = {
+ subtext: string
+ background: string
+ activeBackground: string
+}
+
+type NavMenuColors = {
+ body: string
+ stroke: string
+ highlight: string
+ active: string
+ lvl: Record
+}
+
+export const useNavMenuColors = (): NavMenuColors => ({
+ body: "body.base",
+ stroke: "body.light",
+ highlight: "primary.base",
+ active: "primary.highContrast",
+ lvl: {
+ 1: {
+ subtext: useColorModeValue("gray.400", "gray.400"),
+ background: useColorModeValue("white", "black"),
+ activeBackground: useColorModeValue("gray.150", "gray.700"),
+ },
+ 2: {
+ subtext: useColorModeValue("gray.400", "gray.300"),
+ background: useColorModeValue("gray.150", "gray.700"),
+ activeBackground: useColorModeValue("gray.200", "gray.600"),
+ },
+ 3: {
+ subtext: useColorModeValue("gray.500", "gray.300"),
+ background: useColorModeValue("gray.200", "gray.600"),
+ activeBackground: useColorModeValue("gray.100", "gray.700"),
+ },
+ 4: {
+ subtext: useColorModeValue("gray.700", "gray.300"),
+ background: useColorModeValue("gray.300", "gray.700"),
+ activeBackground: useColorModeValue("gray.200", "gray.800"),
+ },
+ },
+})
diff --git a/src/hooks/useSurvey.ts b/src/hooks/useSurvey.ts
index 86e5105bfae..950c7dfe1fa 100644
--- a/src/hooks/useSurvey.ts
+++ b/src/hooks/useSurvey.ts
@@ -5,7 +5,7 @@ import { SITE_URL } from "@/lib/constants"
export const useSurvey = (feedbackSubmitted: boolean) => {
const { asPath } = useRouter()
- const url = SITE_URL + asPath
+ const { href: url } = new URL(asPath, SITE_URL)
return useMemo((): string | null => {
if (!feedbackSubmitted) return null
return `https://iwokuhuz.paperform.co//?url=${url}`
diff --git a/src/intl/am/common.json b/src/intl/am/common.json
index 20178488c16..3e188d51ed4 100644
--- a/src/intl/am/common.json
+++ b/src/intl/am/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "የመለያ ረቂቅ",
"about-ethereum-org": "ስለ Ethereum.org",
"about-us": "ስለ እኛ",
+ "adding-desci-projects": "Desci ፕሮጀክቶችን በማከል ላይ",
+ "adding-developer-tools": "ማበልጸጊያ መሳሪያዎችን በማከል ላይ",
+ "adding-exchanges": "ልውውጦችን በማከል ላይ",
+ "adding-glossary-terms": "የመዝገበ ቃላት አባባሎችን በማከል ላይ",
+ "adding-staking-products": "የስታኪንግ ምርቶችን በማከል ላይ",
+ "adding-wallets": "ዋሌቶችን በማከል ላይ",
+ "account-abstraction": "የመለያ ረቂቅ",
+ "acknowledgements": "እውቅና",
"aria-toggle-search-button": "የመፈለጊያ ቁልፍን ቀያይር",
"aria-toggle-menu-button": "የማውጫ ቁልፍን ቀያይር",
"beacon-chain": "ቢከን ሰንሰለት",
"bridges": "የብሎክቼይን ድልድዮች",
- "clear": "አጽዳ",
- "close": "ዝጋ",
+ "bug-bounty": "ሽልማት",
+ "build": "ይገንቡ",
+ "build-menu": "DeFiን ይገንቡ",
+ "clear": "ያጽዱ",
+ "close": "ይዝጉ",
"community": "ማህበረሰብ",
"community-hub": "የማህበረሰብ ማዕከል",
"community-menu": "የማህበረሰብ ማውጫ",
- "contact": "ማግኛ",
+ "contact": "እውቂያ",
+ "content-buckets": "የይዘት ማከማቻ",
+ "content-resources": "የይዘት መረጃ ማዕከል",
"content-standardization": "የይዘት መደበኛነት",
"contributing": "አስተዋጽኦ ማድረግ",
"contributors": "አስተዋጽኦ ያደረጉ ሰዎች",
@@ -20,14 +32,17 @@
"copied": "ተገልብጧል",
"copy": "መገልበጥ",
"danksharding": "ዳንክሻርዲንግ",
- "dao-page": "ያልተማከሉ ራስ ገዝ ድርጅቶች (DAOs)",
+ "dao-page": "DAOs - ያልተማከሉ ራስ ገዝ ድርጅቶች",
"dark-mode": "ጨለማ",
"data-provided-by": "የዳታ ምንጭ:",
- "decentralized-applications-dapps": "ያልተማከሉ መተግበሪያዎች (dapps)",
+ "decentralized-applications-dapps": "Dapps - ያልተማከሉ መተግበሪያዎች",
"decentralized-identity": "ያልተማከለ ማንነት",
"decentralized-social-networks": "ያልተማከሉ ማህበራዊ አውታረ-መረቦች፡፡",
- "decentralized-science": "ያልተማከለ ሳይንስ (DeSci)",
- "defi-page": "ያልተማከለ ፋይናንስ (DeFi)",
+ "decentralized-science": "DeSci - ያልተማከለ ሳይንስ",
+ "description": "ለnav ንጥል መግለጫ",
+ "defi-page": "DeFi - ያልተማከለ ፋይናንስ",
+ "design": "ንድፍ",
+ "design-principles": "የንድፍ መርሆች",
"devcon": "የገንቢዎች ጉባኤ (Devcon)",
"developers": "ገንቢዎች",
"developers-home": "የገንቢዎች መነሻ-ገፅ",
@@ -75,7 +90,7 @@
"ethereum-protocol": "የኢቲሪየም ፕሮቶኮል",
"ethereum-security": "የኢቲሪየም ደህንነትና ማጭበርበርን መከላከል",
"ethereum-support": "የኢቲሪየም ድጋፍ",
- "ethereum-wallets": "Ethereum Wallets",
+ "ethereum-wallets": "የኢቴርየም ቦርሳዎች",
"ethereum-whitepaper": "የኢቲሪየም ነጭ ወረቀት",
"feedback-widget-prompt": "ይህ ገፅ አግዞዎታል?",
"feedback-card-prompt-page": "ይህ ገፅ አግዞዎት ነበር?",
@@ -83,22 +98,22 @@
"feedback-card-prompt-tutorial": "ይህ ስልጠና አግዞዎት ነበር?",
"feedback-widget-thank-you-title": "ለአስተያየተዎ እናመሰግናለን!",
"feedback-widget-thank-you-subtitle": "ጥቂት ጥያቄዎችን በመመለስ ይህን ገፅ ከዚህ የተሻለ ያድርጉ፡፡",
- "feedback-widget-thank-you-subtitle-ext": "እርዳታ ከፈለጉ በDiscord ላይ ያለዉን ማህበረሰብ ማግኘት ይችላሉ፡፡",
+ "feedback-widget-thank-you-subtitle-ext": "እርዳታ ከፈለጉ ማህበረሰቡን በእኛ <ዲስኮርዶች ላይ ማግኘት ይችላሉ።",
"feedback-widget-thank-you-timing": "2–3 ደቂቃ ",
"feedback-widget-thank-you-cta": "የፈጣን ንግድ ዳሰሳ ጥናት",
"find-wallet": "ቦርሳ ያግኙ",
"future-proofing": "የወደፊቱን-ማረጋገጫ",
- "get-eth": "ኤቴሪየም(ETH) ያግኙ",
+ "get-eth": "ETHን ያግኙ",
"get-involved": "ይሳተፉ",
"get-started": "ጀምር",
"grants": "ፍቃዶች",
"grant-programs": "የስነ-ምህዳረ ፍቃድ ፕሮግራሞች",
"guides": "መመሪያዎች",
- "guides-hub": "የመመሪያዎች ማዕከል",
+ "guides-hub": "እንዴት ለሚለው ጥያቄ መመሪያ",
"history-of-ethereum": "የኢቲሪየም ታሪክ",
"home": "መነሻ-ገጽ",
"how-ethereum-works": "ኢቲሪየም እንዴት ይሰራል",
- "how-to-register-an-ethereum-account": "ለኢቲሪየም መለያ እንዴት \"መመዝገብ\" ይቻላል",
+ "how-to-create-an-ethereum-account": "የኢቲሪየም መለያ እንዴት \"መፍጠር\" ይቻላል",
"how-to-revoke-token-access": "እንዴት በእርሰዎ ክሪፐቶ ገንዘብ ላይ ፈቃድ ያለውን ዘመናዊ ውል መሻር ይቻላል",
"how-to-swap-tokens": "ቶከኖችን እንዴት መለዋወጥ ይቻላል",
"how-to-use-a-bridge": "እንዴት ቶከኖችን ወደ ንብርብር 2 ማሻገር ይቻላል",
@@ -128,11 +143,108 @@
"loading-error-try-again-later": "ዳታ መጫን አልተቻለም፣ ትንሽ ቆይተው ይሞክሩ፡፡",
"logo": "አርማ",
"mainnet-ethereum": "የኢቲሪየም ዋና አውታረ-መረብ",
+ "merge": "መደባለቅ",
"more": "ተጨማሪ",
- "nav-developers": "ገንቢዎች",
+ "nav-about-description": "ለEthereum ማህበረሰብ ይፋዊ፣ ክፍት ምንጭ ፕሮጀክት",
+ "nav-advanced-description": "የበለጠ ውስብስብ ርዕሶችን ይማሩ",
+ "nav-advanced-label": "የላቀ",
+ "nav-basics-description": "የEthereum መሰረታዊ ነገሮችን ይረዱ",
+ "nav-basics-label": "መሰረታውያን",
+ "nav-bridges-description": "Web3 ወደ አንደኛ ደረጃ L1 ብሎክ ቼይን እና L2 የምጣኔ መፍትሄዎች ሥነ-ምህዳር ተለውጧል",
+ "nav-builders-home-description": "ለEthereum የገንቢዎች መመሪያ—በገንቢዎች፣ ለገንቢዎች።",
+ "nav-builders-home-label": "የገንቢዎች መነሻ",
+ "nav-contribute-description": "እርዳታ ከፈለጉ፣ ይህ ይመራዎታል",
+ "nav-contribute-label": "ለ ethereum.org አስተዋጽኦ ማበርከት",
+ "nav-dao-description": "ያለ ማዕከላዊ ባለስልጣን በአባል ባለቤትነት ያሉ ማህበረሰቦች",
+ "nav-dapps-description": "Ethereumን በመጠቀም የበለጸጉ የመተግበሪያዎች ስነ-ምህዳርን ያስሱ",
+ "nav-defi-description": "ለባህላዊው የፋይናንስ ገበያ ዓለም አቀፋዊና ክፍት አማራጭ",
+ "nav-desci-description": "አሁን ላለው የሳይንስ ሥርዓት ዓለም አቀፋዊና ክፍት አማራጭ",
+ "nav-desoc-description": "ለማህበራዊ መስተጋብር እና ይዘት ፈጠራ በብሎክቼይን ላይ የተመሰረቱ መድረኮች",
"nav-developers-docs": "የገንቢዎች ሰነዶች",
+ "nav-developers": "ገንቢዎች",
+ "nav-did-description": "የእርስዎን ልዩ ያልተማከሉ መለያዎች ይስጡ እና ባለቤት ይሁኑ",
+ "nav-docs-description": "Ethereumን ለመረዳት እና በእሱ ለመገንባት የሚያግዙ ሰነዶች",
+ "nav-docs-design-description": "የልዩ web3 ዲዛይን ፈተናዎች፣ ምርጥ ልምዶች እና የተጠቃሚ ምርምር ግንዛቤዎች መግለጫ",
+ "nav-docs-design-label": "የUX/UI ዲዛይን መሰረታዊ ነገሮች",
+ "nav-docs-foundation-description": "በEthereum ላይ ለማዳበር ዋና መሰረታዊ ነገሮች",
+ "nav-docs-foundation-label": "መሰረታዊ ርዕሰ ጉዳዮች",
+ "nav-docs-overview-description": "የእርስዎ መነሻ ለገንቢ ሰነዶች",
+ "nav-docs-stack-description": "የEthereum ቁልል ሁሉንም ዝርዝሮች ይረዱ",
+ "nav-docs-stack-label": "የኢቲሪየም ስታክ",
+ "nav-eip-description": "አዲስ ባህሪያትን ወይም ሂደቶችን የሚገልጹ ደረጃዎች",
+ "nav-eip-label": "EIPዎች - የEthereum ማሻሻያ ፕሮፖዛል",
+ "nav-emerging-description": "ለEthereum ሌሎች አዳዲስ የጉዳዩ ጥቅሞችን ይወቁ",
+ "nav-enterprise-description": "ለEthereum የንግድ መተግበሪያዎች",
+ "nav-ethereum-org-description": "ይህ ድረ ገጽ በማህበረሰብ የሚመራ ነው - ይቀላቀሉን እና እርስዎም ያዋጡ",
+ "nav-ethereum-wallets-description": "ከEthereum መለያዎ ጋር መገናኛ መተግበሪያ",
+ "nav-events-description": "ያልተማከለ እና ለማንኛውም ሰው የመሳተፍ ነፃነት",
+ "nav-events-irl-description": "በየወሩ በአካል እና በመስመር ላይ ዋና ዋና የEthereum ዝግጅቶች አሉ",
+ "nav-events-label": "ማህበረሰቦች እና ዝግጅቶች",
+ "nav-events-online-description": "በመቶ ሺዎች የሚቆጠሩ የEthereum አድናቂዎች በእነዚህ የመስመር ላይ ማህበረሰቦች ውስጥ ይጠለላሉ",
+ "nav-find-wallet-description": "ዋሌቶች ክሪፕቶ እንዲጠቀሙ ያስችሉዎታል",
+ "nav-find-wallet-label": "ዋሌትዎን ይምረጡ",
+ "nav-gas-fees-description": "የETH ግብይት ክፍያዎች እንዴት ይሰላሉ",
+ "nav-get-eth-description": "የEthereum መተግበሪያዎችን ለመጠቀም ኤተር (ETH) ያስፈልግዎታል",
+ "nav-get-started-description": "Ethereum ለመጠቀም የመጀመሪያ እርምጃዎችዎ",
+ "nav-governance-description": "የEthereum ፕሮቶኮልን ማሻሻል ውስጥ የተካተተው ሂደት",
+ "nav-grants-description": "የእርዳታ የገንዘብ ድጋፍ ፕሮግራሞችን በሚሰጡ ፕሮጀክቶች ላይ በማህበረሰባችን የተሰበሰበ ዝርዝር",
+ "nav-guide-create-account-description": "ማንኛውም ሰው በማንኛውም ጊዜ በኪስ ቦርሳ በነጻ የEthereum መለያ መፍጠር ይችላል",
+ "nav-guide-create-account-label": "የኢቲሪየም አካውንት እንዴት መፍጠር ይቻላል",
+ "nav-guide-revoke-access-description": "በEthereum ስነ ምህዳር ውስጥ ካሉ ዘመናዊ ኮንትራቶች እና መተግበሪያዎች ጋር ሲገናኙ ደህንነትዎን ይጠብቁ",
+ "nav-guide-revoke-access-label": "የዘመናዊ ኮንትራት መዳረሻን እንዴት መሻር እንደሚቻል",
+ "nav-guide-use-wallet-description": "የዋሌት ሁሉንም መሰረታዊ ተግባራት እንዴት እንደሚሠሩ ይወቁ",
+ "nav-guide-use-wallet-label": "ቦርሳ እንዴት መጠቀም ይቻላል",
+ "nav-guides-description": "ለመጀመር የሚያግዙ ተግባራዊ የደረጃ በደረጃ መመሪያዎች",
+ "nav-guides-label": "እንዴት እንደሚደረጉ መመሪያዎች",
+ "nav-history-description": "የሁሉም ዋና ዋና ፎርኮች እና ዝመናዎች የጊዜ መስመር",
+ "nav-history-label": "የEthereum ቴክኒካዊ ታሪክ",
+ "nav-layer-2-description": "ለEthereum ርካሽ እና ፈጣን ግብይቶች",
+ "nav-learn-by-coding-description": "በEthereum ለመሞከር የሚረዱዎት መሳሪያዎች",
+ "nav-local-env-description": "የእርስዎን የEthereum ልማት ቁልል ይምረጡ እና ያቀናብሩ",
+ "nav-mainnet-description": "የድርጅት ብሎክቼይን መተግበሪያዎች በይፋዊው Ethereum ዋና መረብ ላይ ሊገነቡ ይችላሉ",
+ "nav-nft-description": "ማንኛውንም ልዩ የሆነ ነገር የሚወከልበት መንገድ እንደ Ethereum-ተኮር ንብረት",
+ "nav-open-research-description": "ከEthereum ዋነኛ ጥንካሬዎች አንዱ ንቁ የምርምር ማህበረሰቡ ነው",
+ "nav-open-research-label": "ምርምሩን ይክፈቱ",
+ "nav-overview-description": "ሁሉም ነገሮች Ethereum ትምህርት",
+ "nav-overview-label": "አጠቃላይ እይታ",
+ "nav-participate-overview-description": "እንዴት መሳተፍ እንደሚቻል አጠቃላይ እይታ",
"nav-primary": "ዋነኛ",
- "nft-page": "የማይተኩ ቶከኖች (NFTs)",
+ "nav-quizzes-description": "Ethereumን እና ክሪፕቶከረንሲዎችን ምን ያህል እንደሚረዱ ይወቁ",
+ "nav-quizzes-label": "እውቀትዎን ይፈትሹ",
+ "nav-refi-description": "በመልሶ ማልማት መርሆዎች ላይ የተገነባ አማራጭ የኢኮኖሚ ስርዓት",
+ "nav-research-description": "Ethereumን ለማሻሻል ጥቅም ላይ የዋሉ ሂደቶች",
+ "nav-research-label": "ምርምር እና እድገት",
+ "nav-roadmap-description": "ለEthereum የበለጠ መስፋፋት፣ ደህንነት እና ዘላቂነት ያለው መንገድ",
+ "nav-roadmap-future-description": "Ethereumን እንደ ጠንካራ እና ያልተማከለ አውታረ መረብ ማጠናከር",
+ "nav-roadmap-future-label": "የወደፊቱን-ማረጋገጫ",
+ "nav-roadmap-label": "ዕቅድ",
+ "nav-roadmap-scaling-description": "የግብይት ወጪዎችን እና ፍጥነትን የበለጠ ለመቀነስ የአውታረ መረብ ዝመናዎች",
+ "nav-roadmap-security-description": "Ethereum ለወደፊቱ ሁሉንም አይነት ጥቃቶች የሚቋቋም መሆኑን ማረጋገጥ",
+ "nav-roadmap-security-label": "Ethereum ለወደፊቱ ሁሉንም አይነት ጥቃቶች የሚቋቋም መሆኑን ማረጋገጥ",
+ "nav-roadmap-ux-description": "Ethereumን መጠቀም ቀላል መሆን አለበት",
+ "nav-run-a-node-description": "የአውታረ መረቡን ደህንነት በማገዝ ሙሉ በሙሉ ሉዓላዊ ይሁኑ",
+ "nav-security-description": "ክሪፕቶከረንሲ ሲጠቀሙ ምርጥ ልምዶችን ይማሩ",
+ "nav-smart-contracts-description": "የEthereum ሥነ-ምህዳር መሰረታዊ ማነቆዎች",
+ "nav-stablecoins-description": "Stablecoins በቋሚ እሴት ላይ ለመቆየት የተነደፉ የEthereum ቶከኖች ናቸው",
+ "nav-stake-description": "Ethereumን ለማስጠበቅ ሽልማቶችን ያግኙ",
+ "nav-stake-label": "ስቴክ",
+ "nav-staking-home-description": "ስቴክ ለማድረግ የተለያዩ አማራጮች አጠቃላይ እይታ",
+ "nav-staking-home-label": "የቀብድ ማስያዝ የፊት-ገፅ",
+ "nav-staking-pool-description": "ከሌሎች ጋር በመቀላቀል በማንኛውም የETH መጠን ስቴክ ያድርጉ እንዲሁም ሽልማቶችን ያግኙ",
+ "nav-staking-pool-label": "የተዋሃዱ ቀብዶች",
+ "nav-staking-saas-label": "በአገልግሎት ስቴክ ማድረግ",
+ "nav-staking-solo-label": "የብቻ ስታኪንግ",
+ "nav-start-building-description": "ለአዲስ መጪዎች ጠቃሚ መረጃ",
+ "nav-translation-program-description": "ethereum.org ወደ ሁሉም ቋንቋዎች ለመተርጎም የትብብር ጥረት",
+ "nav-tutorials-description": "የተመረጡ የማህበረሰብ አጋዥ ስልጠናዎች ዝርዝር",
+ "nav-use-cases-description": "ለEthereum አጠቃቀም የተለያዩ ሀሳቦችን ያግኙ",
+ "nav-what-is-ether-description": "የEthereum መተግበሪያዎች መገበያያ ገንዘብ",
+ "nav-what-is-ethereum-description": "Ethereumን ልዩ የሚያደርገው ምን እንደሆነ ይረዱ",
+ "nav-what-is-web3-label": "Web3 ምንደን ነው?",
+ "nav-what-is-web3-description": "ደንቦቹን ከሚወስኑት የተማከሉ ሞኖፖሊዎች አማራጭ",
+ "nav-whitepaper-description": "በ2014 በቪታሊክ ቡቴሪን የተፃፈው ዋናው የEthereum ነጭ ወረቀት",
+ "nav-zkp-description": "መግለጫውን ራሱ ሳይገልጥ የመግለጫውን ትክክለኛነት የሚያረጋግጥበት መንገድ",
+ "nft-page": "NFTs - የማይተኩ ቶከኖች",
"nfts": "NFTዎች",
"no": "አይደለም",
"on-this-page": "በዚህ ገፅ ላይ",
@@ -140,6 +252,7 @@
"page-developers-aria-label": "የገንቢዎች መነሻ-ገጽ",
"page-index-meta-title": "መነሻ-ገጽ",
"page-last-updated": "ገፁ በቅርብ ጊዜ የዘመነው",
+ "participate-menu": "መሳተፊያ ምናሌ",
"pbs": "የፕሮፖሰር-ገንቢ መለያየት",
"pools": "የተዋሃዱ ቀብዶች",
"privacy-policy": "የግላዊነት ፖሊሲ",
@@ -150,10 +263,11 @@
"refresh": "አባኮዎትን ገጹን ያድሱ፡፡",
"return-home": "ወደ መነሻ-ገፅ ይመለሱ",
"roadmap": "የኢቲሪየም ፍኖተ ካርታ",
+ "research": "ምርምር",
+ "research-menu": "የምርምር ምናሌ",
"resources": "የትርጉም ምንጮች",
- "regenerative-finance": "መልሶ ማልሚያ ፋይናንስ (ReFi)",
+ "regenerative-finance": "ReFi - መልሶ ማልሚያ ፋይናንስ",
"run-a-node": "ኖድ ማንቀሳቀስ ይጀምሩ",
- "rollup-component-website": "Website",
"rollup-component-developer-docs": "የገንቢዎች ሰነዶች",
"rollup-component-technology-and-risk-summary": "የቴክኖሎጂ እና የስጋት ማጠቃለያ",
"scaling": "ማሳደግ",
@@ -168,19 +282,16 @@
"statelessness": "ይዞታ አልባነት",
"see-contributors": "አስተዋጽዖ አበርካቾችን ይመልከቱ",
"set-up-local-env": "ሎካል ኢንቫይሮመንተ ያዘጋጁ",
- "sharding": "Sharding",
"show-all": "ሁሉንም አሳይ",
"show-less": "ቀንሰህ አሳይ",
"site-description": "ኢቴሪየም ለገንዘብ እና አዲስ ዓይነት መተግበሪያዎች የሚውል ዓለም አቀፍ፣ ያልተማከለ መድረክ ነው። \nበኢቴሪየም ላይ ገንዘብን የሚቆጣጠር ኮድ መጻፍ ይችላሉ፣ እና በዓለም ላይ በየትኛውም ቦታ የሚገኙ መተግበሪያዎችን መገንባት ይችላሉ።.",
- "site-title": "ethereum.org",
"skip-to-main-content": "ወደ ዋናው ይዘት ይዝለሉ",
"smart-contracts": "ስማርት ኮንትራቶች",
"stablecoins": "ስቴብልኮይኖች",
"stake-eth": "ETHን ያስይዙ",
"staking": "ቀብድ ማስያዝ",
"start-here": "እዚህ ጋር ይጀምሩ",
- "style-guide": "Style guide",
- "solo": "የብቸኛ ቀብዶች",
+ "solo": "የብቻ ስታኪንግ",
"terms-of-use": "የአጠቃቀም መመሪያ",
"translation-banner-body-new": "ይህን ገጽ ገና ስላልተረጎምነው በእንግሊዝኛ እያዩት ነው። ይህንን ይዘት ለመተርጎም ይርዱን።",
"translation-banner-body-update": "የዚህ ገጽ አዲስ ስሪት አለ ግን አሁን በእንግሊዝኛ ብቻ ነው። የቅርብ ጊዜውን ስሪት ለመተርጎም ይረዱን።",
@@ -191,17 +302,19 @@
"translation-banner-no-bugs-title": "አዚህ ምንም ችግር የለም!",
"translation-banner-no-bugs-content": "ይህ ገጽ እየተተረጎመ አይደለም። ለጊዜው ይህ ገጽ በእንግሊዝኛ ብቻ እንዲሆን ትተነዋል።",
"translation-banner-no-bugs-dont-show-again": "ድጋሚ እንዳታሳይ",
+ "translation-program": "የትርጉም ፕሮግራም",
"try-using-search": "የሚፈልጉትን ለማግኘት ይፈልጉ የሚለውን ይጠቀሙ ወይም",
"tutorials": "ስልጠናዎች",
"up": "ወደ ላይ",
+ "use": "ጥቅም",
"use-ethereum": "ኢቲሪየምን ይጠቀሙ",
"use-ethereum-menu": "የኢቲሪየም ማውጫን ይጠቀሙ",
+ "use-menu": "የጥቅም ምናሌ",
"user-experience": "የተጠቃሚው ልምድ",
"verkle-trees": "የቨርክል ዛፎች",
"wallets": "ቦርሳዎች",
"we-couldnt-find-that-page": "ያሉትን ገፅ ልናገኝ አልቻልንም",
"web3": "Web3 ምንደን ነው?",
- "web3-title": "Web3",
"website-last-updated": "ድህረ-ገጹ ለመጨረሻ ጊዜ የተሻሻለበት",
"what-is-ether": "Ether (ETH) ምንድን ነው?",
"what-is-ethereum": "ኢቴርየምን ምንድን ነው?",
diff --git a/src/intl/am/page-dapps.json b/src/intl/am/page-dapps.json
index 48189195d88..cf14ba8e6ba 100644
--- a/src/intl/am/page-dapps.json
+++ b/src/intl/am/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "ገንዘብን በቅጽበት ያሰራጩ።",
"page-dapps-dapp-description-superrare": "የዲጂታል የጥበብ ስራዎችን በቀጥታ ከአርቲስቶች ወይም ከሁለተኛ ገበያዎች ይግዙ።",
"page-dapps-dapp-description-token-sets": "ራሳቸውን የሚያመጣጥኑ የክሪፕቶ ኢንቨስትመንት ስልቶች።",
- "page-dapps-dapp-description-tornado-cash": "በኢተርየም ላይ ማንነትዎን ሳይገልጽ ግብይቶችን ይላኩ።",
"page-dapps-dapp-description-uniswap": "ቶከኖችን በቀላሉ ይቀይሩ ወይም የ% ድርሻ ያለው ሽልማቶችን ለማግኘት ቶከኖችን ያቅርቡ።",
"page-dapps-dapp-description-dexguru": "ለDeFi ነጋዴዎች ጥበቃ የሌለው የንግድ ተርሚናል",
"page-dapps-dapp-description-synthetix": "Synthetix ሰው ሰራሽ ንብረቶችን ለማውጣት እና ለመገበያየት ፕሮቶኮል ነው።",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "እነዚህ የገንቢ መሣሪያዎችን ያልተማከለ ማድረግ፣ ክሪፕቶኢኮኖሚያዊ ሥርዓቶችን አሁን ባለው ቴክኖሎጂ ውስጥ በማካተት እና ለክፍት ምንጭ ልማት ሥራ የገበያ ቦታዎችን በመፍጠር ላይ ያተኮሩ መተግበሪያዎች ናቸው።",
"page-dapps-technology-title": "ያልተማከለ ቴክኖሎጂ",
"page-dapps-token-sets-logo-alt": "የToken Sets አርማ",
- "page-dapps-tornado-cash-logo-alt": "የTornado cash አርማ",
"page-dapps-uniswap-logo-alt": "የUniswap አርማ",
"page-dapps-wallet-callout-button": "ቦርሳ ያግኙ",
"page-dapps-wallet-callout-description": "ቦርሳዎችም ራሳቸው dappዎች ናቸው። እርስዎን በሚያስማማዎ ባህሪያት ላይ በመመስረት አንዱን ይፈልጉ።",
diff --git a/src/intl/am/page-languages.json b/src/intl/am/page-languages.json
new file mode 100644
index 00000000000..8beba82967c
--- /dev/null
+++ b/src/intl/am/page-languages.json
@@ -0,0 +1,82 @@
+{
+ "page-languages-h1": "የቋንቋ ድጋፍ",
+ "page-languages-interested": "አስተዋጽዖ ለማድረግ ይፈልጋሉ?",
+ "page-languages-learn-more": "ስለ ትርጉም ፕሮግራማችን የበለጠ ይወቁ",
+ "page-languages-meta-desc": "በethereum.org ስለሚደገፉ ቋንቋዎች መረጃዎች እና እንደ ተርጓሚ መሳተፍ የሚችሉባቸው መንገዶች።",
+ "page-languages-meta-title": "ethereum.org የቋንቋ ትርጉሞች",
+ "page-languages-p1": "ኢተርየም ዓለም አቀፍ ፕሮጀክት ነው እና ethereum.org ዜግነታቸው ወይም ቋንቋቸው ምንም ይሁን ምን ለሁሉም ሰው ተደራሽ መሆኑ በጣም አስፈላጊ ነው። ይህንን ራዕይ እውን ለማድረግ ማህበረሰባችን በትኩረት ሲሰራ ቆይቷል።",
+ "page-languages-translations-available": "ethereum.org በሚከተሉት ቋንቋዎች ይገኛል።",
+ "page-languages-resources-paragraph": "የ ethereum.org ይዘትን ከመተርጎም በተጨማሪ የምንደግፋቸው",
+ "page-languages-resources-link": "በብዙ ቋንቋዎች ተመርጠው የተሰበሰቡ የኢተርየም መረጃዎች ዝርዝር",
+ "page-languages-want-more-header": "ethereum.orgን በኤላ ቋንቋ ማየት ይፈልጋሉ?",
+ "page-languages-want-more-link": "የትርጉም ፕሮግራም",
+ "page-languages-want-more-paragraph": "የethereum.org ተርጓሚዎች በተቻለ መጠን ገጾችን ወደ ብዙ ቋንቋዎች እየተረጎሙ ነው። አሁን ምን እየሰሩ እንዳሉ ለማየት ወይም እነሱን ለመቀላቀል ስለእኛ ያንብቡ",
+ "page-languages-filter-label": "የማጣሪያ ዝርዝር",
+ "page-languages-filter-placeholder": "ለማጣሪያ አይነት",
+ "page-languages-browser-default": "የአሳሽ ነባሪ",
+ "page-languages-translated": "ተተርጉሟል",
+ "page-languages-words": "ቃላት",
+ "page-languages-recruit-community": "ethereum.org እንድንተረጉም ይርዱን።",
+ "langauge-am": "Amharic",
+ "language-ar": "አረብኛ",
+ "language-az": "አዘርባጃንኛ",
+ "langauge-be": "Belarusian",
+ "language-bg": "ቡልጋርያኛ",
+ "language-bn": "ቤንጋሊኛ",
+ "language-bs": "Bosnian",
+ "language-ca": "ካታላንኛ",
+ "language-cs": "Czech",
+ "language-da": "ዳኒሸኛ",
+ "language-de": "German",
+ "language-el": "ግሪክኛ",
+ "language-en": "እንግሊዝኛ",
+ "language-es": "Spanish",
+ "language-fa": "ፋርስኛ",
+ "language-fi": "ፊኒሽኛ",
+ "language-fr": "French",
+ "language-gl": "ጋሊሺያኛ",
+ "language-gu": "ጉጅራቲኛ",
+ "language-he": "እብራይስጥ",
+ "language-hi": "ህንደኛ",
+ "language-hr": "ክሮሺያኛ",
+ "language-hu": "ሃጋሪኛ",
+ "language-hy-am": "Armenian",
+ "language-id": "ኢንዶኔዢያኛ",
+ "language-ig": "የኢግቦ ቋንቋ",
+ "language-it": "Italian",
+ "language-ja": "Japanese",
+ "language-ka": "ጆርጂያኛ",
+ "language-kk": "ካዛክኛ",
+ "language-km": "ክመርኛ",
+ "language-kn": "Kannada",
+ "language-ko": "ኮርያኛ",
+ "language-lt": "ሉቲኒያኛ",
+ "language-ml": "የማላያላም ቋንቋ",
+ "language-mr": "የማራቲ ቋንቋ",
+ "language-ms": "ማላይኛ",
+ "language-nb": "ኖርዌጂያኛ",
+ "language-ne-np": "Nepali",
+ "language-nl": "ደች",
+ "language-pcm": "የናይጀሪያ ፒድጊን",
+ "language-fil": "ፊልፒንኛ",
+ "language-pl": "ፖሊሽኛ",
+ "language-pt": "ፖርቹጋልኛ",
+ "language-pt-br": "ፖርቹጋልኛ(የብራዚል)",
+ "language-ro": "ሮማንያንኛ",
+ "language-ru": "Russian",
+ "language-se": "ስዊድንኛ",
+ "language-sk": "ስሎቫክኛ",
+ "language-sl": "ስሎቬንያኛ",
+ "language-sr": "ሰርቢያኛ",
+ "language-sw": "የስዋሂሊ ቋንቋ",
+ "language-ta": "ታሚልኛ",
+ "language-th": "የታይ ቋንቋ",
+ "language-tk": "Turkmen",
+ "language-tr": "Turkish",
+ "language-uk": "ዩክሬንኛ",
+ "language-ur": "ኡድሩኛ",
+ "language-uz": "ኡዝቤክኛ",
+ "language-vi": "Vietnamese",
+ "language-zh": "ቻይንኛ (ቀላሉ)",
+ "language-zh-tw": "ቻይንኛ (ባህላዊ)"
+}
diff --git a/src/intl/am/page-stablecoins.json b/src/intl/am/page-stablecoins.json
index cb1c3939a70..4ed2e33a40b 100644
--- a/src/intl/am/page-stablecoins.json
+++ b/src/intl/am/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "ምንጭ",
"page-stablecoins-bitcoin-pizza": "በመጥፎ የሚታወቀው የቢትኮይን ፒዛ",
"page-stablecoins-bitcoin-pizza-body": "እ. ኤ. አ. በ 2010 አንድ ሰው 2 ፒዛዎችን በ 10,000 ቢትኮይን ገዛ። በወቅቱ እነዚህ ዋጋ ~$41 አካባቢ ነበር። ዛሬ ባለው ገበያ ይህ በሚሊዮን የሚቆጠር ዶላር ነው። በኢቴርየም ታሪክ ውስጥም ብዙ ተመሳሳይ የሚያስቆጩ ግብይቶች አሉ። ስቴብልኮይኖች ይህንን ችግር ይፈታሉ፣ ስለዚህ ፒዛዎን ማጣጣም እና ETHዎንም መያዝ ይችላሉ።",
+ "page-stablecoins-category-dashboard-and-education": "ማንቸስተር & ትምህርት",
"page-stablecoins-coin-price-change": "የሳንቲም የዋጋ ለውጥ (ባለፉት 30 ቀናት)",
"page-stablecoins-crypto-backed": "በክሪፕቶ የሚደገፉ",
"page-stablecoins-crypto-backed-con-1": "በገንዘብ ኖት ከሚደገፉ ስቴብልኮይኖች ያነሰ የተረጋጋ።",
diff --git a/src/intl/ar/common.json b/src/intl/ar/common.json
index 1e0aea21d31..f5a4c6f0cc0 100644
--- a/src/intl/ar/common.json
+++ b/src/intl/ar/common.json
@@ -1,17 +1,30 @@
{
- "account-abstraction": "تجريد حساب",
"about-ethereum-org": "نبذة عن ethereum.org",
"about-us": "نبذة عنا",
+ "adding-desci-projects": "إضافة مشاريع علمية لامركزية",
+ "adding-developer-tools": "إضافة أدوات المبرمج",
+ "adding-exchanges": "إضافة مبادلات",
+ "adding-glossary-terms": "إضافة مصطلحات المسرد",
+ "adding-layer-2s": "إضافة الطبقة الثانية",
+ "adding-staking-products": "إضافة منتجات تجميد العملات",
+ "adding-wallets": "إضافة محافظ",
+ "account-abstraction": "تجريد الحساب",
+ "acknowledgements": "الإقرارات",
"aria-toggle-search-button": "تبديل زر البحث",
"aria-toggle-menu-button": "تبديل زر القائمة",
"beacon-chain": "سلسلة المنارة",
- "bridges": "جسور سلسلة الكتل",
+ "bridges": "جسور البلوكتشين",
+ "bug-bounty": "مكافأة اكتشاف الخلل",
+ "build": "بناء",
+ "build-menu": "بناء القائمة",
"clear": "مسح",
"close": "إغلاق",
"community": "المجتمع",
"community-hub": "مركز المجتمع",
"community-menu": "قائمة المجتمع",
"contact": "تواصل",
+ "content-buckets": "مجموعات المحتوى",
+ "content-resources": "موارد المحتوى",
"content-standardization": "توحيد المحتوى",
"contributing": "المساهمة",
"contributors": "المساهمون",
@@ -20,14 +33,17 @@
"copied": "تم النسخ",
"copy": "نسخ",
"danksharding": "Danksharding",
- "dao-page": "المنظمات المستقلة اللامركزية (DAO)",
+ "dao-page": "DAO - المنظمات المستقلة اللامركزية",
"dark-mode": "داكن",
"data-provided-by": "مصدر البيانات:",
- "decentralized-applications-dapps": "التطبيقات اللامركزية (dapps)",
+ "decentralized-applications-dapps": "Dapps - التطبيقات اللامركزية",
"decentralized-identity": "الهوية اللامركزية",
"decentralized-social-networks": "الشبكات الاجتماعية اللامركزية",
- "decentralized-science": "لا مركزية العلوم (DeSci)",
- "defi-page": "التمويل اللامركزي (DeFi)",
+ "decentralized-science": "DeSci - لا مركزية العلوم",
+ "description": "وصف عنصر التنقل",
+ "defi-page": "DeFi - التمويل اللامركزي",
+ "design": "التصميم",
+ "design-principles": "مبادئ التصميم",
"devcon": "ديفكون",
"developers": "المبرمجون",
"developers-home": "الصفحة الرئيسية للمبرمجين",
@@ -83,22 +99,22 @@
"feedback-card-prompt-tutorial": "هل كانت تعليمات الاستخدام هذه مفيدة؟",
"feedback-widget-thank-you-title": "شكرًا لك على إبداء ملاحظاتك!",
"feedback-widget-thank-you-subtitle": "اجعل هذه الصفحة أفضل من خلال الإجابة عن بعض الأسئلة.",
- "feedback-widget-thank-you-subtitle-ext": "إذا كنت بحاجة إلى المساعدة، فإنه يمكنك التواصل مع المجتمع على Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "إذا كنت بحاجة إلى المساعدة، يمكنك التواصل مع المجتمع على Discord.",
"feedback-widget-thank-you-timing": "٢-٣ دقائق",
"feedback-widget-thank-you-cta": "فتح استبيان قصير",
"find-wallet": "البحث عن المحفظة",
"future-proofing": "إثبات مستقبلي",
- "get-eth": "الحصول إلى إثير",
+ "get-eth": "احصل على عملات إثير",
"get-involved": "المشاركة",
- "get-started": "بدء الاستخدام",
+ "get-started": "ابدأ الاستخدام",
"grants": "منح",
"grant-programs": "برامج منح النظام البيئي",
"guides": "الأدلة",
- "guides-hub": "مركز الأدلة",
+ "guides-hub": "أدلة إرشادية",
"history-of-ethereum": "تاريخ إثيريوم",
"home": "الصفحة الرئيسية",
"how-ethereum-works": "كيفية عمل إثيريوم",
- "how-to-register-an-ethereum-account": "كيفية \"تسجيل\" حساب إثيريوم",
+ "how-to-create-an-ethereum-account": "كيف \"تُنشئ\" حساب إيثريوم",
"how-to-revoke-token-access": "كيفية إلغاء وصول العقد الذكي إلى أموال العملات المشفرة",
"how-to-swap-tokens": "كيفية مبادلة الرموز المميزة",
"how-to-use-a-bridge": "كيفية نقل الرموز المميزة عبر جسر إلى الطبقة 2",
@@ -115,7 +131,7 @@
"last-edit": "آخر تعديل",
"layer-2": "الطبقة ٢",
"learn": "تعلّم",
- "learn-by-coding": "تعلّم عن طريق البرمجة",
+ "learn-by-coding": "تعلم عن طريق البرمجة",
"learn-hub": "مركز التعلم",
"learn-menu": "قائمة التعلّم",
"learn-more": "معرفة المزيد",
@@ -128,18 +144,122 @@
"loading-error-try-again-later": "يتعذر تحميل البيانات، يُرجى إعادة المحاولة لاحقًا.",
"logo": "الشعار",
"mainnet-ethereum": "إثيريوم للشبكة الرئيسية",
+ "merge": "دمج",
"more": "المزيد",
- "nav-developers": "المبرمجون",
+ "nav-about-description": "مشروع عام مفتوح المصدر لمجتمع إيثيريوم",
+ "nav-advanced-description": "تعلّم أكثر المواضيع تعقيدًا",
+ "nav-advanced-label": "إعدادات متقدمة",
+ "nav-basics-description": "فهم أساسيات إيثيريوم",
+ "nav-basics-label": "الأساسيات",
+ "nav-bridges-description": "لقد تطور الإصدار الثالث من الويب Web3 إلى منظومة من البلوكتشين من الطبقة الأولى الأساسية وحلول التوسع من الطبقة الثانية",
+ "nav-builders-home-description": "دليل مبرمجي إيثيريوم—من المطورين، للمطورين",
+ "nav-builders-home-label": "الصفحة الرئيسية للمطورين",
+ "nav-contribute-description": "إذا كنت تريد المساعدة، فهذا سيوجهك",
+ "nav-contribute-label": "الإسهام في ethereum.org",
+ "nav-dao-description": "المجتمعات التي يمتلكها الأعضاء من دون سلطة مركزية",
+ "nav-dapps-description": "استكشف منظومة غنية من التطبيقات باستخدام إيثريوم",
+ "nav-defi-description": "بديل عالمي مفتوح عن السوق المالية التقليدية",
+ "nav-desci-description": "بديل عالمي مفتوح عن النظام العلمي الحالي",
+ "nav-desoc-description": "منصات قائمة على البلوكتشين للتفاعل الاجتماعي وإنشاء المحتوى",
"nav-developers-docs": "وثائق المبرمجين",
+ "nav-developers": "المبرمجون",
+ "nav-did-description": "يمكنك إصدار المعرّفات اللامركزية الفريدة الخاصة بك وامتلاكها",
+ "nav-docs-description": "مستندات لمساعدتك على الفهم والبناء باستخدام إيثريوم",
+ "nav-docs-design-description": "وصف للتحديات وأفضل الممارسات ونتائج بحث المستخدم المتعلقة بتصميم الإصدار الثالث من الويب web3",
+ "nav-docs-design-label": "أساسيات تصميم تجربة المستخدم/واجهة المستخدم",
+ "nav-docs-foundation-description": "الأساسيات الجوهرية للتطوير اعتمادًا على إيثريوم",
+ "nav-docs-foundation-label": "مواضيع أساسية",
+ "nav-docs-overview-description": "الصفحة الرئيسية لمستندات المبرمج",
+ "nav-docs-stack-description": "فهم جميع التفاصيل المتعلقة بحزمة إيثيريوم",
+ "nav-docs-stack-label": "كومة ايثيريوم",
+ "nav-eip-description": "المعايير التي تحدد الميزات أو العمليات الجديدة",
+ "nav-eip-label": "EIP - مقترحات تحسين إيثيريوم",
+ "nav-emerging-description": "تعرَّف على أحدث حالات استخدام إيثريوم الأخرى",
+ "nav-emerging-label": "حالات الاستخدام الناشئة",
+ "nav-enterprise-description": "تطبيقات إيثريوم للأعمال",
+ "nav-ethereum-org-description": "هذا الموقع الإلكتروني يقوده المجتمع—انضم إلينا وساهم أيضًا",
+ "nav-ethereum-wallets-description": "تطبيق للتفاعل مع حساب إيثريوم الخاص بك",
+ "nav-events-description": "اللامركزية وحرية المشاركة لأي شخص",
+ "nav-events-irl-description": "تقام أحداث كبرى تخص إيثريوم بشكل شخصي أو على الإنترنت كل شهر",
+ "nav-events-label": "المجتمعات والأحداث",
+ "nav-events-online-description": "ينشأ مئات الآلاف من المتحمسين لإيثريوم في تلك المجتمعات على الإنترنت",
+ "nav-find-wallet-description": "تتيح لك المحافظ استخدام العملات الرقمية",
+ "nav-find-wallet-label": "اختر محفظتك",
+ "nav-gas-fees-description": "كيف يتم حساب رسوم تحويل ETH",
+ "nav-gas-fees-label": "رسوم الغاز",
+ "nav-get-eth-description": "تحتاج إلى ether (ETH) لاستخدام تطبيقات إيثريوم",
+ "nav-get-started-description": "خطواتك الأولى لاستخدام إيثريوم",
+ "nav-governance-description": "العملية التي تنطوي عليها ترقية بروتوكول إيثريوم",
+ "nav-governance-label": "إرشادات",
+ "nav-grants-description": "قائمة منسقة من قِبل مجتمعنا عن المشاريع التي تقدم برامج التمويل بالمِنح",
+ "nav-guide-create-account-description": "يمكن لأي شخص إنشاء حساب إيثريوم في أي وقت وبشكل مجاني باستخدام تطبيق محفظة",
+ "nav-guide-create-account-label": "كيف تُنشئ حساب إيثريوم",
+ "nav-guide-revoke-access-description": "حافظ على أمانك عند التفاعل مع العقود الذكية والتطبيقات في منظومة إيثريوم",
+ "nav-guide-revoke-access-label": "كيفية إلغاء وصول العقد الذكي",
+ "nav-guide-use-wallet-description": "تعرَّف على كيفية تشغيل جميع الوظائف الأساسية للمحفظة",
+ "nav-guide-use-wallet-label": "كيفية استخدام محفظة",
+ "nav-guides-description": "إرشادات عملية خطوة بخطوة لمساعدتك على البدء",
+ "nav-guides-label": "أدلة إرشادية",
+ "nav-history-description": "جدول زمني لجميع التَّفَرُّعات والتحديثات الرئيسية",
+ "nav-history-label": "التاريخ الفني للإيثريوم",
+ "nav-layer-2-description": "معاملات أرخص وأسرع لإيثريوم",
+ "nav-learn-by-coding-description": "أدوات ستساعدك على تجربة إيثريوم",
+ "nav-local-env-description": "اختر حزمة تطوير إيثريوم الخاصة بك وقم بإعدادها",
+ "nav-mainnet-description": "يمكن بناء تطبيقات بلوكتشين الخاصة بالشركات على شبكة إيثريوم الرئيسية العامة",
+ "nav-nft-description": "طريقة لتمثيل أي شيء فريد بوصفه أصلاً مستندًا إلى إيثريوم",
+ "nav-open-research-description": "تُعَد إحدى نقاط القوة الأساسية في إيثريوم هي مجتمع البحوث النشط الخاص به",
+ "nav-open-research-label": "البحث المفتوح",
+ "nav-overview-description": "كل ما يتعلق بالمحتوى التعليمي عن إيثريوم",
+ "nav-overview-label": "نظرة عامة",
+ "nav-participate-overview-description": "نظرة عامة إلى طريقة المشاركة",
"nav-primary": "رئيسي",
- "nft-page": "رموز رقمية غير قابلة للاستبدال (NFT)",
+ "nav-quizzes-description": "اكتشف مدى فهمك لإيثريوم والعملات الرقمية",
+ "nav-quizzes-label": "اختبر معلوماتك",
+ "nav-refi-description": "نظام اقتصادي بديل قائم على أُسُس متجددة",
+ "nav-research-description": "العمليات المتبعة لتحسين إيثريوم",
+ "nav-research-label": "البحث والتطوير",
+ "nav-roadmap-description": "الطريق إلى زيادة إمكانية توسيع نطاق إيثريوم وأمنه واستدامته",
+ "nav-roadmap-future-description": "ترسيخ إيثريوم بوصفه شبكة قوية ولامركزية",
+ "nav-roadmap-future-label": "إثبات مستقبلي",
+ "nav-roadmap-label": "خريطة الطريق",
+ "nav-roadmap-scaling-description": "تحديثات الشبكة لتقليل تكاليف المعاملات والوقت الذي تستغرقه بشكل أكبر",
+ "nav-roadmap-security-description": "التأكد من حفاظ إيثريوم على مرونته في مواجهة جميع أنواع الهجمات في المستقبل",
+ "nav-roadmap-security-label": "تحسين الأمان",
+ "nav-roadmap-ux-description": "يلزم تبسيط استخدام إيثريوم",
+ "nav-run-a-node-description": "تمتع بالسيادة الكاملة في أثناء المساعدة على تأمين الشبكة",
+ "nav-security-description": "تعلّم أفضل الممارسات عند استخدام العملة الرقمية",
+ "nav-smart-contracts-description": "المكونات الأساسية لمنظومة إيثريوم",
+ "nav-stablecoins-description": "العملات المستقرة هي رموز لإيثريوم مصممة للبقاء عند قيمة ثابتة",
+ "nav-stake-description": "اربح المكافآت مقابل حماية إيثريوم",
+ "nav-stake-label": "تجميد العملات",
+ "nav-staking-home-description": "نظرة عامة إلى الخيارات المختلفة لتجميد العملات",
+ "nav-staking-home-label": "الصفحة الرئيسية للمراهنة",
+ "nav-staking-pool-description": "جمّد العملات واربح مكافآت بأي مبلغ من ETH من خلال الانضمام إلى الآخرين",
+ "nav-staking-pool-label": "تجميد العملات المجمّع",
+ "nav-staking-saas-description": "تتولى جهة خارجية مختصة بتشغيل العقد عمليات تشغيل عميلك المدقق",
+ "nav-staking-saas-label": "تجميد العملات باستخدام خدمة",
+ "nav-staking-solo-description": "تشغيل الأجهزة المنزلية، وتعزيز أمان ولامركزية شبكة إيثريوم بشكلٍ شخصي",
+ "nav-staking-solo-label": "تجميد العملات الفردي",
+ "nav-start-building-description": "معلومات مفيدة للمستجدين",
+ "nav-translation-program-description": "جهد تعاوني لترجمة موقع ethereum.org إلى جميع اللغات",
+ "nav-tutorials-description": "قائمة منسقة من تعليمات الاستخدام المجتمعية",
+ "nav-use-cases-description": "اكتشف أفكارًا مختلفة لاستخدام إيثريوم",
+ "nav-what-is-ether-description": "عملة تطبيقات إيثريوم",
+ "nav-what-is-ethereum-description": "فهم ما يميز إيثريوم",
+ "nav-what-is-web3-label": "ما هو Web3؟",
+ "nav-what-is-web3-description": "بديل عن الاحتكارات المركزية التي تفرض القواعد",
+ "nav-whitepaper-description": "المستند الفني الأصلي لإيثريوم الذي أعده فيتاليك بوتيرين في عام 2014",
+ "nav-zkp-description": "طريقة لإثبات صحة مسألة ما دون الحاجة إلى كشف هذه المسألة",
+ "nft-page": "NFT - رموز رقمية غير قابلة للاستبدال",
"nfts": "الرموز المميزة غير القابلة للاستبدال",
"no": "لا",
"on-this-page": "في هذه الصفحة",
"open-research": "البحث المفتوح",
- "page-developers-aria-label": "قائمة المطورين",
+ "page-developers-aria-label": "قائمة المبرمجين",
"page-index-meta-title": "الصفحة الرئيسية",
"page-last-updated": "آخر تحديث للصفحة",
+ "participate": "المشاركة",
+ "participate-menu": "قائمة المشاركة",
"pbs": "الفصل بين المقدم والمنشيء",
"pools": "تجميد العملات المجمّع",
"privacy-policy": "سياسة الخصوصية",
@@ -150,9 +270,11 @@
"refresh": "يُرجى تحديث الصفحة.",
"return-home": "العودة إلى الرئيسية",
"roadmap": "خارطة طريق إثيريوم",
+ "research": "البحوث",
+ "research-menu": "قائمة البحوث",
"resources": "مصادر الترجمة",
- "regenerative-finance": "التمويل المتجدد (ري فاي)",
- "run-a-node": "تشغيل عقدة",
+ "regenerative-finance": "ري فاي - التمويل المتجدد",
+ "run-a-node": "إضافة عقدة",
"rollup-component-website": "الموقع الإلكتروني",
"rollup-component-developer-docs": "وثائق المبرمج",
"rollup-component-technology-and-risk-summary": "ملخص التكنولوجيا والخطر",
@@ -164,10 +286,11 @@
"search-box-blank-state-text": "البحث بعيدًا!",
"search-eth-address": "يبدو هذا كعنوان إثيريوم. نحن لا نقدم بيانات محددة للعناوين. حاول البحث عنه في مستكشف كتلة مثل",
"search-no-results": "لا توجد نتائج لهذا البحث",
+ "security": "الأمان",
"single-slot-finality": "نهائية فتحة واحدة",
"statelessness": "انعدام الجنسية",
"see-contributors": "عرض المساهمين",
- "set-up-local-env": "إعداد البيئة المحلية",
+ "set-up-local-env": "إعداد البيئة المحلية الخاصة بك",
"sharding": "التقسيم",
"show-all": "إظهار الكل",
"show-less": "إظهار أقل",
@@ -175,12 +298,12 @@
"site-title": "ethereum.org",
"skip-to-main-content": "تخطٍ إلى المحتوى الرئيسي",
"smart-contracts": "العقود الذكية",
- "stablecoins": "العملات الثابتة",
+ "stablecoins": "العملات المستقرة",
"stake-eth": "تجميد عملات إثير",
"staking": "تجميد العملات",
"start-here": "البدء من هنا",
- "style-guide": "Style guide",
"solo": "تجميد العملات الفردي",
+ "support": "الدعم",
"terms-of-use": "شروط الاستخدام",
"translation-banner-body-new": "ترى هذه الصفحة بالإنجليزية لأننا لم نترجمها بعد. ساعدنا في ترجمة هذا المحتوى.",
"translation-banner-body-update": "هناك نسخة جديدة من هذه الصفحة لكنها باللغة الإنجليزية فقط الآن. ساعدنا في ترجمة أحدث نسخة.",
@@ -191,20 +314,23 @@
"translation-banner-no-bugs-title": "لا توجد أخطاء هنا!",
"translation-banner-no-bugs-content": "هذه الصفحة ليست مترجمة. لقد تركنا هذه الصفحة باللغة الإنجليزية بشكل متعمد للوقت الحالي.",
"translation-banner-no-bugs-dont-show-again": "عدم الإظهار مجدّدًا",
+ "translation-program": "برنامج الترجمة",
"try-using-search": "حاول استخدام البحث للعثور على ما تبحث عنه أو",
"tutorials": "تعليمات الاستخدام",
"up": "فوق",
+ "use": "الاستخدام",
"use-ethereum": "استخدام إثيريوم",
"use-ethereum-menu": "استخدام قائمة إثيريوم",
+ "use-menu": "قائمة الاستخدام",
"user-experience": "تجربة المستخدم",
"verkle-trees": "أشجار فيركل",
- "wallets": "المحافظ",
+ "wallets": "المحافظ الإلكترونية",
"we-couldnt-find-that-page": "لا يمكننا العثور على تلك الصفحة",
"web3": "ما هو Web3؟",
- "web3-title": "Web3",
+ "web3-title": "الإصدار الثالث من الويب. تم اقتراح Web3 لأول مرة من قبل الدكتور جافين وود، ويمثل رؤية جديدة وتركيزًا لتطبيقات الويب - من التطبيقات المملوكة والمدارة مركزيًا ، إلى التطبيقات المبنية على البروتوكولات اللامركزية (انظر Dapp)",
"website-last-updated": "آخر تحديث للموقع",
- "what-is-ether": "ما إيثر (ETH)؟",
- "what-is-ethereum": "ما هو الإثيريوم؟",
+ "what-is-ether": "ما إثير (ETH)؟",
+ "what-is-ethereum": "ما إثيريوم؟",
"withdrawals": "عمليات سحب تجميد العملات",
"yes": "نعم",
"zero-knowledge-proofs": "براهين المعرفة الصفرية"
diff --git a/src/intl/ar/page-dapps.json b/src/intl/ar/page-dapps.json
index f20a88c38ca..fbc6324c35b 100644
--- a/src/intl/ar/page-dapps.json
+++ b/src/intl/ar/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "تدفق الأموال في الوقت الحقيقي.",
"page-dapps-dapp-description-superrare": "شراء الأعمال الفنية الرقمية مباشرة من الفنانين أو في الأسواق الثانوية.",
"page-dapps-dapp-description-token-sets": "استراتيجيات استثمار العملات المشفرة التي تعيد التوازن تلقائيًا.",
- "page-dapps-dapp-description-tornado-cash": "إرسال معاملات مجهولة على إثيريوم.",
"page-dapps-dapp-description-uniswap": "مبادلة الرموز ببساطة أو توفير الرموز المميزة لمكافآت بنسبة مئوية.",
"page-dapps-dapp-description-dexguru": "بوابة تداول غير مقيدة للحرية لمتداولي دي فاي",
"page-dapps-dapp-description-synthetix": "Synthetix هو بروتوكول لإصدار الأصول الاصطناعية وتداولها",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "هذه هي التطبيقات التي تركز على لامركزية أدوات المطور، ودمج أنظمة الاقتصاد المشفر في التكنولوجيا الحالية، وإنشاء أسواق لأعمال التطوير مفتوحة المصدر.",
"page-dapps-technology-title": "التكنولوجيا اللامركزية",
"page-dapps-token-sets-logo-alt": "شعار مجموعات الرموز",
- "page-dapps-tornado-cash-logo-alt": "شعار Tornado cash",
"page-dapps-uniswap-logo-alt": "شعار Uniswap",
"page-dapps-wallet-callout-button": "العثور على محفظة",
"page-dapps-wallet-callout-description": "المحفظة هي تطبيقات أيضًا. ابحث عن واحدة على أساس الميزات التي تناسبك.",
diff --git a/src/intl/ar/page-languages.json b/src/intl/ar/page-languages.json
index 2481df2d3a3..9a46aea4e51 100644
--- a/src/intl/ar/page-languages.json
+++ b/src/intl/ar/page-languages.json
@@ -11,9 +11,16 @@
"page-languages-want-more-header": "هل ترغب في الاطلاع على ethereum.org بلغة مختلفة؟",
"page-languages-want-more-link": "برنامج الترجمة",
"page-languages-want-more-paragraph": "مترجمو ethereum.org دائمًا يترجمون الصفحات بأكبر عدد ممكن من اللغات. للاطلاع على ما يعملون عليه الآن أو للتسجيل للانضمام إليهم، اقرأ عن",
- "page-languages-filter-placeholder": "فلتر",
+ "page-languages-filter-label": "قائمة عوامل التصفية",
+ "page-languages-filter-placeholder": "اكتب للتصفية",
+ "page-languages-browser-default": "الإعدادات الافتراضية للمتصفح",
+ "page-languages-translated": "تمت الترجَمة",
+ "page-languages-words": "من الكلمات",
+ "page-languages-recruit-community": "ساعدنا على ترجَمة ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "العربية",
"language-az": "الأذربيجانية",
+ "langauge-be": "البيلاروسية",
"language-bg": "البلغارية",
"language-bn": "البنغالية",
"language-ca": "الكتالونية",
@@ -32,6 +39,7 @@
"language-hi": "الهندية",
"language-hr": "الكرواتية",
"language-hu": "الهنغارية",
+ "language-hy-am": "Armenian",
"language-id": "الإندونيسية",
"language-ig": "الإيجبو",
"language-it": "الإيطالية",
@@ -39,12 +47,14 @@
"language-ka": "الجورجية",
"language-kk": "الكازاخستانية",
"language-km": "الخميرية",
+ "language-kn": "الكانادا",
"language-ko": "الكورية",
"language-lt": "الليتوانية",
"language-ml": "المالايالامية",
"language-mr": "الماراثية",
"language-ms": "المالاوية",
"language-nb": "النرويجية",
+ "language-ne-np": "Nepali",
"language-nl": "الهولندية",
"language-pcm": "اللغة الهجين النيجيرية",
"language-fil": "الفلبينية",
@@ -58,8 +68,9 @@
"language-sl": "السلوفينية",
"language-sr": "الصربية",
"language-sw": "السواحيلية",
- "language-th": "التايلاندية",
"language-ta": "التاميلية",
+ "language-th": "التايلاندية",
+ "language-tk": "Turkmen",
"language-tr": "التركية",
"language-uk": "الأوكرانية",
"language-ur": "الأوردية",
diff --git a/src/intl/ar/page-run-a-node.json b/src/intl/ar/page-run-a-node.json
index c1fe2774b48..669d0ffa923 100644
--- a/src/intl/ar/page-run-a-node.json
+++ b/src/intl/ar/page-run-a-node.json
@@ -106,7 +106,7 @@
"page-run-a-node-staking-description": "على الرغم من أنه غير مطلوب، مع عقدة قيد التشغيل أنت أقرب خطوة إلى تجميد عملات إثير الخاصة بك لكسب المكافآت والمساعدة في المساهمة في مكون مختلف من مكونات أمان إثيريوم.",
"page-run-a-node-staking-link": "تجميد عملات إثير",
"page-run-a-node-staking-plans-title": "هل تخطط لتجميد العملات؟",
- "page-run-a-node-staking-plans-description": "لتعظيم كفاءة المصادق من المفضل استخدام 16 جيجابايت من الذاكرة العشوائية، ولكن استخدام 32 جيجا يعتبر أفضل، مع استخدام وحدة معالجة مركزية بتقييم يزيد علي 6667 وفق ما يرد علي موقع cpubenchmark.net. من الموصي به أيضاً أن يتمكن المراهن من الوصول إلي سرعة عالية وغير محدودة للانترنت ولكنه لا يعتبر خيار إجباري.",
+ "page-run-a-node-staking-plans-description": "لتعظيم كفاءة المصادق من المفضل استخدام 16 جيجابايت من الذاكرة العشوائية، ولكن استخدام 32 جيجا يعتبر أفضل، مع استخدام وحدة معالجة مركزية بتقييم يزيد علي 6667 وفق ما يرد علي موقع cpubenchmark.net. من الموصي به أيضاً أن يتمكن المراهن من الوصول إلي سرعة عالية وغير محدودة للانترنت ولكنه لا يعتبر خيار إجباري.",
"page-run-a-node-staking-plans-ethstaker-link-label": "كيفية التسوّق لأجهزة برنامج المدقق لإثيريوم",
"page-run-a-node-staking-plans-ethstaker-link-description": "EthStaker يتناول المزيد من التفاصيل لمدة ساعة خاصة",
"page-run-a-node-sovereignty-title": "السيادة",
diff --git a/src/intl/ar/page-stablecoins.json b/src/intl/ar/page-stablecoins.json
index 029d335311e..95d8a81897a 100644
--- a/src/intl/ar/page-stablecoins.json
+++ b/src/intl/ar/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "المصدر",
"page-stablecoins-bitcoin-pizza": "بيتزا بيتكوين سيئة السمعة",
"page-stablecoins-bitcoin-pizza-body": "في عام 2010، اشترى شخص 2 بيتزا مقابل 10,000 بيتكوين. في ذلك الوقت كانت قيمتها حوالي 41 دولارًا أمريكيًا. في سوق اليوم، يساوي هذا ملايين الدولارات. هناك العديد من المعاملات المؤسفة المماثلة في تاريخ إثيريوم. العملات المستقرة تحل هذه المشكلة، حتى تتمكن من الاستمتاع بالبيتزا والتمسك بعملات الإثير الخاصة بك.",
+ "page-stablecoins-category-dashboard-and-education": "لوحة المعلومات والتعليم",
"page-stablecoins-coin-price-change": "تغير سعر العملة (آخر 30 يومًا)",
"page-stablecoins-crypto-backed": "العملة المشفرة المدعومة",
"page-stablecoins-crypto-backed-con-1": "أقل ثباتًا من العملات المستقرة المدعومة بالعملة الورقية.",
diff --git a/src/intl/az/common.json b/src/intl/az/common.json
index 7902cf319e3..6c053c6a171 100644
--- a/src/intl/az/common.json
+++ b/src/intl/az/common.json
@@ -5,23 +5,24 @@
"adding-developer-tools": "Tərtibatçı Alətlərinin əlavə edilməsi",
"adding-exchanges": "Mübadilələrin əlavə edilməsi",
"adding-glossary-terms": "Lüğət Şərtlərinin əlavə edilməsi",
- "adding-layer-2s": "Adding Layer 2s",
- "adding-products": "Adding Products",
- "adding-staking-products": "Staking Məhsullarının əlavə edilməsi",
- "adding-wallets": "Pulqablarının əlavə edilməsi",
+ "adding-staking-products": "Payçı məhsulların əlavə edilməsi",
+ "adding-wallets": "Pul kisələrinin əlavə edilməsi",
"account-abstraction": "Hesab abstraksiyası",
"acknowledgements": "Təsdiqlər",
"aria-toggle-search-button": "Axtarış düyməsini aç/bağla",
"aria-toggle-menu-button": "Menyu düyməsini aç/bağla",
"beacon-chain": "İşarə (Beacon) zənciri",
"bridges": "Blockchain körpüləri",
+ "bug-bounty": "Xəta bonusu",
+ "build": "Yarat",
+ "build-menu": "Yaratma menyusu",
"clear": "Təmizlə",
"close": "Bağla",
"community": "İcma",
"community-hub": "İcma mərkəzi",
"community-menu": "İcma Menyusu",
"contact": "Əlaqə",
- "content-buckets": "Məzmun Kovaları",
+ "content-buckets": "Məzmun qutuları",
"content-resources": "Məzmun Resursları",
"content-standardization": "Məzmun standartlaşdırılması",
"contributing": "Töhfələr",
@@ -31,14 +32,15 @@
"copied": "Kopyalandı",
"copy": "Kopyala",
"danksharding": "Dankşardinq",
- "dao-page": "Mərkəzləşdirilməmiş muxtar təşkilatlar (DAO)",
+ "dao-page": "DAO - Mərkəzləşdirilməmiş yerli təşkilatlar",
"dark-mode": "Tünd",
"data-provided-by": "Məlumat mənbəyi:",
- "decentralized-applications-dapps": "Mərkəzləşdirilməmiş tətbiqlər (dapps)",
- "decentralized-identity": "Mərkəzləşdirilməmiş şəxsiyyət",
+ "decentralized-applications-dapps": "Dapps - Mərkəzləşdirilməmiş tətbiqlər",
+ "decentralized-identity": "Mərkəzləşdirilməmiş eynilik",
"decentralized-social-networks": "Mərkəzləşdirilməmiş sosial şəbəkələr",
- "decentralized-science": "Mərkəzləşdirilməmiş elm (DeSci)",
- "defi-page": "Mərkəzləşdirilməmiş maliyyə (DeFi)",
+ "decentralized-science": "DeSci - Mərkəzləşdirilməmiş elm",
+ "description": "Naviqasiya elementi üçün təsvir",
+ "defi-page": "DeFi - Mərkəzləşdirilməmiş maliyyə",
"design": "Dizayn",
"design-principles": "Dizayn Prinsipləri",
"devcon": "İllik konfrans (Devcon)",
@@ -72,8 +74,7 @@
"enterprise-menu": "Müəssisə Menyu",
"esp": "Ekosistemə Dəstək Proqramı",
"eth-current-price": "Cari ETH qiyməti (USD)",
- "ethereum-basics": "Ethereum basics",
- "ethereum-bug-bounty": "Ethereum baq mükafatı proqramı",
+ "ethereum-bug-bounty": "Ethereum bug bounty proqramı",
"consensus-when-shipping": "Nə vaxt göndərilir?",
"ethereum-upgrades": "Ethereum yenilənmələri",
"ethereum-brand-assets": "Ethereum brend aktivləri",
@@ -88,15 +89,15 @@
"ethereum-protocol": "Ethereum protokolu",
"ethereum-security": "Ethereum təhlükəsizliyi və saxtakarlığın qarşısının alınması",
"ethereum-support": "Ethereum dəstəyi",
- "ethereum-wallets": "Ethereum pull kisəsi",
- "ethereum-whitepaper": "Ethereum Ağ Sənədi",
+ "ethereum-wallets": "Ethereum pulqabısı",
+ "ethereum-whitepaper": "Ethereum üzrə texniki sənəd",
"feedback-widget-prompt": "Bu səhifə faydalıdır?",
"feedback-card-prompt-page": "Bu səhifə faydalı oldu?",
"feedback-card-prompt-article": "Bu məqalə faydalı oldu?",
"feedback-card-prompt-tutorial": "Bu təlimat faydalı oldu?",
- "feedback-widget-thank-you-title": "Rəyə görə təşəkkür edirik!",
+ "feedback-widget-thank-you-title": "Rəyiniz üçün təşəkkür edirik!",
"feedback-widget-thank-you-subtitle": "Bir neçə sualı cavablandırmaqla bu səhifəni daha da yaxşılaşdırın.",
- "feedback-widget-thank-you-subtitle-ext": "Köməyə ehtiyacınız varsa, bizim səhifəmizdə icma ilə əlaqə saxlaya bilərsiniz: Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Əgər köməyə ehtiyacınız varsa, Discord vasitəsilə icma ilə əlaqə saxlaya bilərsiniz.",
"feedback-widget-thank-you-timing": "2-3 dəqiqə",
"feedback-widget-thank-you-cta": "Qısa sorğunu aç",
"find-wallet": "Pulqabı tap",
@@ -107,15 +108,14 @@
"grants": "Qrantlar",
"grant-programs": "Ekosistem dəstək proqramları",
"guides": "Bələdçilər",
- "guides-hub": "Bələdçi mərkəzi",
+ "guides-hub": "Təlimatlar",
"history-of-ethereum": "Ethereumun tarixi",
"home": "Əsas səhifə",
"how-ethereum-works": "Ethereumun işləmə prinsipi",
- "how-to-create-an-ethereum-account": "How to \"create\" an Ethereum account",
"how-to-revoke-token-access": "Kriptofondlarınıza ağıllı müqavilə girişini necə ləğv etmək olar",
"how-to-swap-tokens": "Tokenləri necə dəyişmək olar",
"how-to-use-a-bridge": "Tokenləri 2-ci Qrupla necə əlaqələndirmək olar",
- "how-to-use-a-wallet": "Pulqabını necə istifadə etmək olar",
+ "how-to-use-a-wallet": "Pul kisəsindən necə istifadə etmək olar",
"image": "şəkil",
"in-this-section": "Bu bölmədə",
"individuals": "Fərdlər",
@@ -128,25 +128,118 @@
"last-edit": "Son redaktə",
"layer-2": "2-ci Qrup",
"learn": "Öyrən",
- "learn-by-coding": "Kodlaşdırma yolu ilə öyrən",
+ "learn-by-coding": "Kodlaşdırma ilə öyrənin",
"learn-hub": "Öyrənmə mərkəzi",
"learn-menu": "Menyunu öyrən",
"learn-more": "Daha ətraflı",
"less": "Daha az",
"light-mode": "İşıq",
- "listing-policy-disclaimer": "Bu səhifədə sadalanan məhsullar rəsmi tövsiyələr olmamaqla yanaşı, sadəcə məlumat məqsədi üçün nəzərdə tutulub. Məhsul əlavə etmək və ya bu siyasətlə bağlı rəy bildirmək istəyirsinizsə, GitHub-da bununla bağlı məsələ qaldırın.",
+ "listing-policy-disclaimer": "Bu səhifədə sadalanan bütün məhsullar rəsmi tövsiyələr olmamaqla yanaşı, sadəcə məlumat məqsədi üçün nəzərdə tutulub. Məhsul əlavə etmək və ya bu siyasətlə bağlı rəy bildirmək istəyirsinizsə, GitHub-da bununla bağlı məsələ qaldırın.",
"loading": "Yüklənilir...",
"loading-error": "Yükləmə xətası.",
"loading-error-refresh": "Xəta, lütfən yeniləyin.",
"loading-error-try-again-later": "Datanı yükləmək alınmadı. Biraz sonra yenidən cəhd edin.",
- "logo": "logo",
+ "logo": "loqo",
"mainnet-ethereum": "Mainnet Ethereum",
"merge": "Birləşdirmə",
"more": "Daha çox",
- "nav-developers": "Tərtibatçılar",
+ "nav-about-description": "Ethereum icması üçün ictimai, açıq mənbə layihəsi",
+ "nav-advanced-description": "Daha mürəkkəb mövzuları öyrənin",
+ "nav-advanced-label": "Təkmilləşmiş",
+ "nav-basics-description": "Ethereum-un əsaslarını anlayın",
+ "nav-basics-label": "Əsaslar",
+ "nav-bridges-description": "Web3 təməl L1 blokçeynləri və L2 genişləmə həlləri üçün ekosistemə çevrilib",
+ "nav-builders-home-description": "Ethereum üçün yaradıcı təlimatı. Yaradıcılar tərəfindən yaradıcılar üçün",
+ "nav-builders-home-label": "Yaradıcının əsas səhifəsi",
+ "nav-contribute-description": "Kömək etmək istəyirsinizsə, bu sizi yönləndirəcək",
+ "nav-contribute-label": "ethereum.org saytına töhfə et",
+ "nav-dao-description": "Mərkəzləşdirilmiş rəhbərliyi olmayan üzvlərə məxsus icmalar",
+ "nav-dapps-description": "Ethereum-dan istifadə edərək tətbiqlərin zəngin ekosistemini araşdırın",
+ "nav-defi-description": "Ənənəvi maliyyə bazarının qlobal, açıq alternativi",
+ "nav-desci-description": "Hazırkı elmi sistemin qlobal, açıq alternativi",
+ "nav-desoc-description": "Sosial qarşılıqlı əlaqə və məzmun yaradılması üçün blokçeyn əsaslı platformalar",
"nav-developers-docs": "Tərtibatçı sənədləri",
+ "nav-developers": "Tərtibatçılar",
+ "nav-did-description": "Unikal mərkəzləşdirilməmiş eyniləşdiricilərinizi yaradın və sahib olun",
+ "nav-docs-description": "Ethereum-u anlamaq və qurmağınıza kömək edəcək sənədlər",
+ "nav-docs-design-description": "Unikal web3 dizayn çətinliklərinin, qabaqcıl təcrübələrin və istifadəçi araşdırması nəticələrinin təsviri",
+ "nav-docs-design-label": "UX/UI dizayn əsasları",
+ "nav-docs-foundation-description": "Ethereum-da inkişaf etmək üçün əsaslar",
+ "nav-docs-overview-description": "Tərtibatçı sənədləri üçün mərkəz",
+ "nav-docs-stack-description": "Ethereum platformasının bütün təfərrüatlarını anlayın",
+ "nav-eip-description": "Yeni xüsusiyyətləri və ya prosesləri müəyyən edən standartlar",
+ "nav-eip-label": "EIP-lər - Ethereum təkmilləşdirmə təklifləri",
+ "nav-emerging-description": "Ethereum-un digər daha yeni istifadə halları barədə öyrənin",
+ "nav-enterprise-description": "Ethereum üçün biznes tətbiqləri",
+ "nav-ethereum-org-description": "Bu vebsayt icma tərəfindən idarə edilir—bizə qoşulun və öz töhfənizi verin",
+ "nav-ethereum-wallets-description": "Ethereum hesabınızla əlaqədə olmaq üçün tətbiq",
+ "nav-events-description": "Hər kəs üçün mərkəzləşdirilməmiş və sərbəst iştirak imkanı",
+ "nav-events-irl-description": "Hər ay Ethereum ilə bağlı geniş canlı və onlayn tədbirlər keçirilir",
+ "nav-events-label": "İcmalar və tədbirlər",
+ "nav-events-online-description": "Yüz minlərlə Ethereum entuziastı bu onlayn icmalarda birləşir",
+ "nav-find-wallet-description": "Cüzdanlar sizə kriptovalyutadan istifadə etmək imkanı verir",
+ "nav-find-wallet-label": "Cüzdan seç",
+ "nav-gas-fees-description": "ETH tranzaksiya haqları necə hesablanır",
+ "nav-gas-fees-label": "Qaz haqları",
+ "nav-get-eth-description": "Ethereum tətbiqlərindən istifadə etmək üçün sizə ether (ETH) lazımdır",
+ "nav-get-started-description": "Ethereum-dan istifadə edilməsində ilk addımlarınız",
+ "nav-governance-description": "Ethereum protokolunun təkmilləşdirilməsinin həyata keçirildiyi proses",
+ "nav-governance-label": "İdarəçilik",
+ "nav-grants-description": "Qrant maliyyələşdirmə proqramlarını təmin edən layihələrin icmamız tərəfindən seçilmiş siyahısı",
+ "nav-guide-create-account-description": "Hər kəs istənilən vaxt cüzdan tətbiqi ilə pulsuz Ethereum hesabı yarada bilər",
+ "nav-guide-revoke-access-description": "Ethereum ekosistemindəki ağıllı müqavilələr və tətbiqlər ilə qarşılıqlı əlaqə zamanı təhlükəsizliyinizi təmin edin",
+ "nav-guide-revoke-access-label": "Ağıllı müqaviləyə çıxışı necə ləğv etmək olar",
+ "nav-guide-use-wallet-description": "Cüzdanın bütün əsas funksiyalarının işlədilməsi qaydasını öyrənin",
+ "nav-guide-use-wallet-label": "Pul kisəsindən necə istifadə etmək olar",
+ "nav-guides-description": "Başlamanıza kömək etmək üçün təfərrüatlı təlimat",
+ "nav-guides-label": "Təlimat",
+ "nav-history-description": "Bütün əsas şaxələnmələr və yeniləmələrin qrafiki",
+ "nav-history-label": "Ethereum-un texnoloji tarixçəsi",
+ "nav-layer-2-description": "Ethereum üçün daha ucuz və daha sürətli tranzaksiyalar",
+ "nav-learn-by-coding-description": "Ethereum-u sınamanıza kömək edən alətlər",
+ "nav-local-env-description": "Ethereum inkişaf platformanızı seçin və quraşdırın",
+ "nav-mainnet-description": "Ethereum-un əsas ictimai şəbəkəsində qurula biləcək olan Müəssisə blokçeyn tətbiqləri",
+ "nav-nft-description": "Unikal olan hər bir şeyin Ethereum əsaslı aktiv kimi təqdim edilmə yolu",
+ "nav-open-research-description": "Ethereum-un əsas güclü tərəflərindən biri onun fəal tədqiqat icmasıdır",
+ "nav-open-research-label": "Açıq araşdırma",
+ "nav-overview-description": "Ethereum təlimləri ilə bağlı bütün məlumatlar",
+ "nav-participate-overview-description": "İştirak etmə qaydalarına ümumi baxış",
"nav-primary": "Əsas",
- "nft-page": "Bir-birini əvəz edə bilməyən nişanlar (NFTs)",
+ "nav-quizzes-description": "Ethereum və kriptovalyutanı nə dərəcədə yaxşı anladığınızı öyrənin",
+ "nav-quizzes-label": "Biliyinizi yoxlayın",
+ "nav-refi-description": "Regenerativ prinsiplər üzərində qurulmuş alternativ iqtisadi sistem",
+ "nav-research-description": "Ethereum-u təkmilləşdirmək üçün istifadə olunan prorseslər",
+ "nav-research-label": "Tədqiqat və inkişaf",
+ "nav-roadmap-description": "Ethereum üçün genişlənmə, təhlükəsizlik və dayanıqlılığa gedən yol",
+ "nav-roadmap-future-description": "Ethereum-un etibarlı və mərkəzləşdirilməmiş şəbəkə kimi gücləndirilməsi",
+ "nav-roadmap-future-label": "Gələcəyin planlaşdırılması",
+ "nav-roadmap-label": "Tədbir planı",
+ "nav-roadmap-scaling-description": "Tranzaksiya xərclərini daha da azaltmaq üçün şəbəkə və sürət yeniləmələri",
+ "nav-roadmap-security-description": "Gələcəkdə Ethereum-un hər cür hücuma qarşı dayanıqlılığının təmin edilməsi",
+ "nav-roadmap-security-label": "Təkmilləşdirilmiş təhlükəsizlik",
+ "nav-roadmap-ux-description": "Ethereum-dan istifadə sadələşdirilməlidir",
+ "nav-run-a-node-description": "Şəbəkənin təhlükəsizliyinin təmin edilməsinə kömək edərkən tamamilə müstəqil ol",
+ "nav-security-description": "Kriptovalyutadan istifadə edərkən qabaqcıl təcrübələr barədə öyrənin",
+ "nav-smart-contracts-description": "Ethereum ekosisteminin təməl komponentləri",
+ "nav-stablecoins-description": "Steyblkoynlar (stablecoin) sabit dəyərdə qalmaq üçün nəzərdə tutulmuş Ethereum tokenləridir",
+ "nav-stake-description": "Ethereum-un təhlükəsizliyinin təmin edilməsi üçün mükafatlar qazanın",
+ "nav-stake-label": "Pay",
+ "nav-staking-home-description": "Pay yerləşdirmə üçün müxtəlif variantların icmalı",
+ "nav-staking-pool-description": "Başqaları ilə qoşularaq payınızla iştirak edin və istənilən ETH məbləği ilə mükafatlar qazanın",
+ "nav-staking-pool-label": "Birləşdirilmiş paylar",
+ "nav-staking-saas-label": "Xidmətlə pay yatırmaq",
+ "nav-staking-solo-label": "Solo payçılıq",
+ "nav-start-building-description": "Yeni başlayanlar üçün faydalı məlumat",
+ "nav-translation-program-description": "ethereum.org saytının bütün dillərə tərcümə edilməsi üçün birgə səy",
+ "nav-tutorials-description": "İcma təlimatlarının seçilmiş siyahısı",
+ "nav-use-cases-description": "Ethereum-un istifadəsi üçün fərqli ideyalar kəşf edin",
+ "nav-what-is-ether-description": "Ethereum tətbiqlərinin valyutası",
+ "nav-what-is-ethereum-description": "Ethereum-u xüsusi edən məqamları anlayın",
+ "nav-what-is-web3-label": "Web3 nədir?",
+ "nav-what-is-web3-description": "Qaydaları diktə edən mərkəzləşdirilməmiş monopoliyaların alternativi",
+ "nav-whitepaper-description": "Vitalik Buterin tərəfindən 2014-cü ildə yazılmış ilk Ethereum texniki məlumat sənədi",
+ "nav-zkp-description": "Bəyanatın özünü açıqlamadan onun hüquqi qüvvəsini sübut etmə yolu",
+ "nft-page": "NFTs - Bir-birini əvəz edə bilməyən tokenlər",
"nfts": "NFT-lər",
"no": "Xeyr",
"on-this-page": "Bu səhifədə",
@@ -154,54 +247,55 @@
"page-developers-aria-label": "Tərtibatçı menyusu",
"page-index-meta-title": "Əsas səhifə",
"page-last-updated": "Səhifə ən son yeniləndi",
+ "participate-menu": "İştirak menyusu",
"pbs": "Təklif edən-qurucu ayrılması",
- "pools": "Birləşdirilmiş steykinq",
- "privacy-policy": "Gizlilik siyasəti",
+ "pools": "Birləşdirilmiş paylar",
+ "privacy-policy": "Məıxfilik siyasəti",
"private-ethereum": "Şəxsi Ethereum",
- "product-disclaimer": "Məhsullar və xidmətlər Ethereum icmasının rahatlığı üçün siyahıya alınmışdır. Məhsul və ya xidmətin daxil edilməsi, ethereum.org veb-sayt komandası və ya Ethereum Fondu tərəfindənonun təsdiqləndiyi demək deyil.",
+ "product-disclaimer": "Məhsullar və xidmətlər Ethereum icmasının rahatlığı üçün siyahıya alınmışdır. Məhsul və ya xidmətin daxil edilməsi, ethereum.org veb-sayt komandası və ya Ethereum Fondu tərəfindən onun təsdiqləndiyi demək deyil.",
"quizzes-title": "Sorğu-sual şəbəkəsi",
"quizzes": "Sorğu-suallar",
"refresh": "Səhifəni yeniləyin.",
"return-home": "əsas səhifəyə qayıdın",
"roadmap": "Ethereum planlama xəritəsi",
+ "research": "Tədqiqat",
+ "research-menu": "Tədqiqat menyusu",
"resources": "Tərcümə resursları",
- "regenerative-finance": "Regenerativ maliyyə (ReFi)",
+ "regenerative-finance": "ReFi - Regenerativ maliyyə",
"run-a-node": "Düyün başladın",
- "rollup-component-website": "Veb-sayt",
+ "rollup-component-website": "Vebsayt",
"rollup-component-developer-docs": "Tərtibatçı sənədləri",
"rollup-component-technology-and-risk-summary": "Texnologiya və risk icmalı",
- "scaling": "Ölçəkləmə",
+ "scaling": "Miqyaslama",
"saas": "Bir xidmət kimi steykinq",
"search": "Axtarış",
"search-ethereum-org": "Ethereum.org-da axtarın",
"secret-leader-election": "Gizli lider seçimi",
"search-box-blank-state-text": "Axtarış et!",
- "search-eth-address": "Bu, Ethereum ünvanına bənzəyir. Biz ünvanlar üçün xüsusi məlumat təqdim etmirik. Gərəkli məlumatları blok tədqiqatçılarında tapmağa çalışın, məsələn:",
+ "search-eth-address": "Bu, Ethereum ünvanına bənzəyir. Biz ünvanlar üçün xüsusi məlumat təqdim etmirik. Lazımi məlumatları blok tədqiqatçılarında tapmağa çalışın, məsələn:",
"search-no-results": "Axtarışınız heç bir nəticə vermədi",
"security": "Təhlükəsizlik",
"single-slot-finality": "Tək yuvalı tamamlama",
"statelessness": "Vətəndaşsızlıq",
"see-contributors": "Töhfəçilərə bax",
"set-up-local-env": "Yerli mühiti qur",
- "sharding": "Parçalanma",
+ "sharding": "Parçalanma(Sharding)",
"show-all": "Hamısını göstər",
"show-less": "Daha az göstər",
- "site-description": "Ethereum, pul və yeni tətbiqetmə növləri üçün qlobal və mərkəzi olmayan bir platformadır. Ethereum-da pula nəzarət edən kodlar yaza bilər və dünyanın hər yerindən müraciət edilən bilən tətbiqetmələr yarada bilərsiniz.",
- "site-title": "ethereum.org",
+ "site-description": "Ethereum pul və yeni tətbiqetmə növləri üçün qlobal və mərkəzi olmayan bir platformadır. Ethereum-da pula nəzarət edən kodlar yaza bilər və dünyanın hər yerindən müraciət edilən bilən tətbiqetmələr yarada bilərsiniz.",
"skip-to-main-content": "Əsas məzmuna keç",
"smart-contracts": "Ağıllı müqavilələr",
- "stablecoins": "Stabil koinlər",
+ "stablecoins": "Stabilkoinlər",
"stake-eth": "ETH-ni steyk",
- "staking": "Steykinq",
+ "staking": "Payçılıq",
"start-here": "Buradan başlayın",
- "style-guide": "Style guide",
- "solo": "Solo steykinq",
+ "solo": "Solo payçılıq",
"support": "Dəstək",
"terms-of-use": "İstifadə şərtləri",
- "translation-banner-body-new": "Bu səhifə hələ tərcümə edilmədiyi üçün İngilis dilində təqdim olunur. Bu məzmunu tərcümə etməyimizə kömək edin.",
+ "translation-banner-body-new": "Bu səhifə hələ tərcümə edilmədiyi üçün ingilis dilində təqdim olunur. Bu məzmunu tərcümə etməyimizə kömək edin.",
"translation-banner-body-update": "Bu səhifənin yeni versiyası var, lakin hazırda yalnız ingilis dilindədir. Ən son versiyanı tərcümə etməkdə bizə kömək edin.",
"translation-banner-button-see-english": "İngiliscə bax",
- "translation-banner-button-translate-page": "Səhifəni tərcümə Et",
+ "translation-banner-button-translate-page": "Səhifəni tərcümə et",
"translation-banner-title-new": "Bu səhifəni tərcümə et",
"translation-banner-title-update": "Bu səhifəni yeniləməyimizə kömək et",
"translation-banner-no-bugs-title": "Burada baq yoxdur!",
@@ -211,18 +305,20 @@
"try-using-search": "Axtardığınızı tapmaq üçün axtarışdan istifadə etməyə çalışın və ya",
"tutorials": "Təlimatlar",
"up": "Yuxarı",
+ "use": "İstifadə",
"use-ethereum": "Ethereum istifadə et",
"use-ethereum-menu": "Ethereum menyusunu istifadə et",
+ "use-menu": "İstifadə menyusu",
"user-experience": "İstifadəçi təcrübəsi",
"verkle-trees": "Verkle ağacı",
"wallets": "Pulqabıları",
"we-couldnt-find-that-page": "Həmin səhifəni tapa bilmədik",
"web3": "Web3 nədir?",
"web3-title": "Web3",
- "website-last-updated": "Veb-səhifə ən son yeniləndi",
- "what-is-ether": "Efir (ETH) nədir?",
+ "website-last-updated": "Veb-saytın ən son yenilənməsi",
+ "what-is-ether": "Ether (ETH) nədir?",
"what-is-ethereum": "Ethereum nədir?",
- "withdrawals": "Steykinq çıxarılması",
+ "withdrawals": "Payın çıxarılması",
"yes": "Bəli",
- "zero-knowledge-proofs": "Sıfır bilik verməklə isbat protokolu"
+ "zero-knowledge-proofs": "Sıfır biliklərlə təsdiqləmə"
}
diff --git a/src/intl/az/page-dapps.json b/src/intl/az/page-dapps.json
index 6fdaf96bcec..65d8f99eb9a 100644
--- a/src/intl/az/page-dapps.json
+++ b/src/intl/az/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "Tokenləşdirilmiş kolleksiya elmentləri yaradın, satın və alın.",
"page-dapps-dapp-description-rubic": "İstifadəçilər və dApplar üçün çarpaz zəncirli texnoloji toplayıcısı.",
"page-dapps-dapp-description-sablier": "Real vaxtda pul axını.",
- "page-dapps-dapp-description-skiff": "Sizə sərbəst ünsiyyət qurmaq imkanı verən ucdan-uca şifrələnmiş e-poçt, təqvim, sənədlər və fayllar.",
"page-dapps-dapp-description-spatial": "Öz fərdi avatarınızı və 3D dünyalarınızı yaradın",
"page-dapps-dapp-description-spruce": "Şəxsiyyət və məlumatlara nəzarəti olması lazım olduğu yerdə tərk etmək üçün açıq mənbə yığını: istifadəçilərlə.",
"page-dapps-dapp-description-status": "Sərbəst məlumat axınını təmin etmək, şəxsi, təhlükəsiz söhbət haqqını qorumaq və fərdlərin suverenliyini irəlilətmək üçün nəzərdə tutulmuşdur.",
"page-dapps-dapp-description-superrare": "Rəqəmsal sənət əsərlərini birbaşa rəssamlardan və ya ikincil bazarlardan alın.",
"page-dapps-dapp-description-synthetix": "Synthetix sintetik aktivlərin buraxılış və ticarəti üçün bir protokoldur",
"page-dapps-dapp-description-token-sets": "Avtomatik olaraq yenidən tarazlaşan kriptovalyuta investisiya strategiyaları.",
- "page-dapps-dapp-description-tornado-cash": "Ethereum-da anonim əməliyyatlar göndərin.",
"page-dapps-dapp-description-uniswap": "Tokenləri sadəcə dəyişdirin və ya % mükafat üçün tokenlər təmin edin.",
"page-dapps-dapp-description-xmtp": "DM-lər, xəbərdarlıqlar, elanlar və s. daxil olmaqla blockchain hesabları arasında mesajlar göndərin.",
"page-dapps-dapp-description-yearn": "Yearn Finance gəlir toplayıcısıdır. Fiziki şəxslərə, DAO-lara və digər protokollara rəqəmsal aktivləri yerləşdirmək və gəlir əldə etmək üçün bir imkan yaradır.",
@@ -248,7 +246,6 @@
"page-dapps-set-up-a-wallet-button": "Pulqabı tap",
"page-dapps-set-up-a-wallet-description": "Pulqabı MT üçün \"girişiniz\"dir",
"page-dapps-set-up-a-wallet-title": "Pulqabı qurun",
- "page-dapps-skiff-logo-alt": "Skiff loqosu",
"page-dapps-social-button": "Sosial",
"page-dapps-social-description": "Bunlar rəqəmsal şəxsiyyətlərin və sosial qrafiklərin istifadəçilərə məxsus olduğu mərkəzləşdirilməmiş şəxsiyyət texnologiyalarından istifadə edərək mərkəzləşdirilməmiş sosial şəbəkələrin yaradılmasına yönəlmiş proqramlardır.",
"page-dapps-social-title": "Sosial",
@@ -260,7 +257,6 @@
"page-dapps-technology-description": "Bunlar tərtibatçı alətlərinin mərkəzsizləşdirilməsinə, kripto-iqtisadi sistemlərin mövcud texnologiyaya daxil edilməsinə və açıq mənbəli inkişaf işləri üçün bazarların yaradılmasına yönəlmiş tətbiqlərdir.",
"page-dapps-technology-title": "Mərkəzləşdirilməmiş texnologiya",
"page-dapps-token-sets-logo-alt": "Token Sets loqosu",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash loqosu",
"page-dapps-uniswap-logo-alt": "Uniswap loqosu",
"page-dapps-wallet-callout-button": "Pulqabı tap",
"page-dapps-wallet-callout-description": "Pulqabılar da mərkəzləşdirilməmiş tətbiqlərdir. Sizə uyğun olan xüsusiyyətlərə əsasən birini tapın.",
diff --git a/src/intl/az/page-gas.json b/src/intl/az/page-gas.json
new file mode 100644
index 00000000000..c2a01a34432
--- /dev/null
+++ b/src/intl/az/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Ethereum-da qaz haqları: necə işləyirlər?",
+ "page-gas-meta-description": "Ethereum-da qaz haqqında məlumat əldə edin: necə işləyirlər və qaz haqlarında necə daha az ödəmək olar",
+ "page-gas-hero-title": "Qaz haqları",
+ "page-gas-hero-header": "Şəbəkə haqları",
+ "page-gas-hero-button-1-content": "Qaz nədir?",
+ "page-gas-hero-subtitle-1": "Ethereum-da şəbəkə haqları qaz adlanır.",
+ "page-gas-hero-subtitle-2": "Qaz Ethereum-a güc verən yanacaqdır.",
+ "page-gas-summary-title": "İcmal",
+ "page-gas-summary-item-1": "Ethereum-da hər bir əməliyyatın işlənməsi üçün kiçik bir ödəniş forması tələb olunur",
+ "page-gas-summary-item-2": "Bu ödənişlər “qaz” haqqı kimi tanınır",
+ "page-gas-summary-item-3": "Qaz ödənişləri şəbəkə sıxlığından asılı olaraq dəyişir",
+ "page-gas-what-are-gas-fees-header": "Qaz haqları nədir?",
+ "page-gas-what-are-gas-fees-text-1": "Ethereum-u insanların mesaj göndərmək və ya proqramları işlətmək kimi işləri yerinə yetirə biləcəyi böyük bir kompüter şəbəkəsi kimi düşünün. Real dünyada olduğu kimi, bu vəzifələri yerinə yetirmək üçün enerji tələb olunur.",
+ "page-gas-what-are-gas-fees-text-2": "Ethereum-da hər bir hesablama hərəkətinin müəyyən bir \"qaz\" qiyməti var. Qaz haqlarınız əməliyyatınızdakı hərəkətlərin ümumi maliyyətidir. Tranzaksiya göndərdiyiniz və ya ağıllı müqavilə bağladığınız zaman onu emal etmək üçün qaz haqqı ödəyirsiniz.",
+ "page-gas-how-do-i-pay-less-gas-header": "Daha az qaz necə ödəyə bilərəm?",
+ "page-gas-how-do-i-pay-less-gas-text": "Ethereum-da daha yüksək ödənişlər bəzən qaçınılmaz olsa da, maliyyəti azaltmaq üçün istifadə edə biləcəyiniz strategiyalar var:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Əməliyyatlarınıza vaxt ayırın",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Pikdən kənarda səyahət etmək daha az izdihamlı və daha sərfəli olduğu kimi, Ethereum da, Şimali Amerika yuxuda olarkən istifadə edildikdə, ümumiyyətlə daha ucuzdur.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Qazın enməsini gözləyin",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Ethereumun nə qədər sıx olduğuna görə qaz qiymətləri hər on iki saniyədə qalxıb enir. Qaz qiymətləri yüksək olduqda, əməliyyat etməzdən əvvəl bir neçə dəqiqə gözləmək, ödədiyiniz məbləğdə əhəmiyyətli bir azalma ola bilər.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Qat 2-dən istifadə edin",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Layer-2 zəncirləri Ethereumun üstündə qurulur, daha aşağı ödənişlər təklif edir və daha çox əməliyyat aparır. Onlar əsas Ethereum şəbəkəsində baş verməsi lazım olmayan əməliyyatlarda ödənişlərə qənaət etmək üçün yaxşı seçimdir.",
+ "page-gas-try-layer-2": "2-ci qatı sınayın",
+ "page-gas-what-causes-high-gas-fees-header": "Qaz qiymətlərinin yüksək olması nədən qaynaqlanır?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Ethereum-da hesablama miqdarı (qaz) müəyyən həddi aşdıqda, qaz haqları artmağa başlayır. Qaz bu həddi nə qədər çox keçərsə, qaz haqları bir o qədər tez artır.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Daha yüksək ödənişlərə, populyar dapplar və ya NFT-lər, DEX-lərdə vaxtaşırı artan ticarət və ya pik vaxtlarda çox sayda istifadəçi fəaliyyəti səbəb ola bilər.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Ethereum-da tərtibatçılar yerləşmədən əvvəl ağıllı müqavilələrdən istifadəni optimallaşdırmağa diqqət yetirməlidirlər. Bir çox insan zəif yazılmış ağıllı müqavilədən istifadə edərsə, o, daha çox qaz istehlak olub təsadüfən şəbəkə tıxanmasına səbəb ola bilər.",
+ "page-gas-want-to-dive-deeper": "Daha ətraflı öyrənmək istəyirsiniz?",
+ "page-gas-check-out-the-developer-docs": "Tərtibatçı sənədlərini yoxlayın.",
+ "page-gas-attack-of-the-cryptokitties-header": "Kriptokitilərin hücumu",
+ "page-gas-attack-of-the-cryptokitties-text": "2017-ci ilin noyabr ayında məşhur Kriptokitilər layihəsi istifadəyə verildi. Onun populyarlığının sürətlə artması şəbəkədə əhəmiyyətli sıxlığa və həddindən artıq yüksək qaz haqlarına səbəb oldu. Kriptokitilərin yaratdığı problemlər Ethereum-un miqyaslandırması üçün həll yolların tapılmasının aktuallığını sürətləndirdi.",
+ "page-gas-why-do-we-need-gas-header": "Niyə qaza ehtiyacımız var?",
+ "page-gas-why-do-we-need-gas-text": "Qaz Ethereum-u təhlükəsiz saxlamaq və əməliyyatları emal etmək üçün vacib elementdir. Qaz bir çox cəhətdən kömək edir:",
+ "page-gas-benefits-1-description": "Qaz, zərərli aktyorların fırıldaqçılıq fəaliyyətləri ilə şəbəkəni sıxışdırmasının qarşısını alaraq Ethereum sybil-ə davamlıdır.",
+ "page-gas-benefits-2-description": "Hesablama qaza başa gəldiyi üçün, Ethereum-a bahalı əməliyyatlarla ya təsadüfən və ya zərərli şəkildə spam göndərmək maliyyə cəhətdən təsirsiz hala gətirilir.",
+ "page-gas-benefits-3-description": "İstənilən vaxt həyata keçirilə bilən hesablamaların miqdarına dair sərt məhdudiyyət Ethereum-un həddindən artıq yüklənməsinin qarşısını alır və şəbəkənin həmişə əlçatan olmasını təmin edir.",
+ "page-gas-how-is-gas-calculated-header": "Qaz necə hesablanır?",
+ "page-gas-advanced": "Təkmilləşmiş",
+ "page-gas-how-is-gas-calculated-text-1": "Ödədiyiniz ümumi qaz haqqı bir neçə hissədən ibarətdir:",
+ "page-gas-how-is-gas-calculated-item-1": "Baza haqq: tranzaksiya üçün ödənilməli olan şəbəkə tərəfindən müəyyən edilmiş haqq",
+ "page-gas-how-is-gas-calculated-item-2": "Prioritet haqqı: qovşaq operatorları əməliyyatınıza daxil etməyə təşviq etmək üçün əlavə bəxşiş",
+ "page-gas-how-is-gas-calculated-item-3": "İstifadə olunan qaz vahidləri*: xatırlayırsınız ki, qaz hesablamanı təmsil edir? Ağıllı müqavilə ilə qarşılıqlı əlaqə kimi, daha mürəkkəb hərəkətlər, əməliyyat göndərmək kimi sadə hərəkətlərdən daha çox qaz istifadə edir.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* Müxtəlif növ əməliyyatların nə qədər qaz istifadə etdiyini görmək üçün Şəkil 1-ə baxın",
+ "page-gas-how-is-gas-calculated-text-2": "Qaz haqqını hesablama düsturu, istifadə olunan qaz vahidləridir * (əsas haqq+ prioritet haqqı). Əksər pulqabları qaz istifadəsini hesablayacaq və onu daha sadə şəkildə göstərəcək.",
+ "page-gas-table-figure": "Şəkil 1: Əməliyyat növünə görə istifadə edilən qaz",
+ "page-gas-table-header-1": "Əməliyyat növü",
+ "page-gas-table-header-2": "İstifadə olunan qaz vahidləri",
+ "page-gas-table-item-1-transaction-type": "ETH göndərmək",
+ "page-gas-table-item-2-transaction-type": "ERC-20 tokenlərini göndərmək",
+ "page-gas-table-item-3-transaction-type": "Köçürmək və NFT",
+ "page-gas-table-item-4-transaction-type": "Uniswap-da dəyişdirmə",
+ "page-gas-faq-header": "Tez-tez soruşulan suallar",
+ "page-gas-faq-question-1-q": "Mənim əməliyyatımda qaz haqqını kim ödəyir?",
+ "page-gas-faq-question-1-a-1": "Əksəriyyət qaz haqqıdır - baza haqqı - protokolla məhv edilir (yandırılır). Əməliyyatınıza daxil edilərsə, prioritet haqqı əməliyyatınızı təklif edən validatora veriləcək.",
+ "page-gas-faq-question-1-a-2": "Prosesin ətraflı təsvirini qaz tərtibatçısı sənədlərində oxuya bilərsiniz",
+ "page-gas-faq-question-2-q": "Mən ETH-də qaz ödəməliyəmmi?",
+ "page-gas-faq-question-2-a-1": "Bəli. Ethereum-da bütün qaz haqları yerli ETH valyutasında ödənilməlidir.",
+ "page-gas-faq-question-2-a-2": "ETH haqqında daha çox",
+ "page-gas-faq-question-3-q": "Gwei nədir?",
+ "page-gas-faq-question-3-a-1": "Əksər pul kisələrində və ya qaz izləyicilərində siz qaz qiymətlərinin 'gwei' olaraq ifadə edildiyini görəcəksiniz.",
+ "page-gas-faq-question-3-a-2": "Gwei, pennilər dollara nisbətdə olduğu kimi, ETH-nin daha kiçik bir vahididir, fərq 1 ETH-nin 1 milyard gwei-yə bərabər olmasıdır. Gwei ETH-nin çox az miqdarında faydalıdır.",
+ "page-gas-use-layer-2": "Qat 2-dən istifadə edin"
+}
diff --git a/src/intl/az/page-languages.json b/src/intl/az/page-languages.json
index e18c5c3dc9d..719812bd66d 100644
--- a/src/intl/az/page-languages.json
+++ b/src/intl/az/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "ethereum.org-u başqa dildə görmək istəyirsiniz?",
"page-languages-want-more-link": "Tərcümə Proqramı",
"page-languages-want-more-paragraph": "ethereum.org tərcüməçiləri həmişə səhifələri mümkün qədər çox dilə tərcümə edirlər. Onların hazırda nə üzərində işlədiyini görmək və ya onlara qoşulmaq üçün qeydiyyatdan keçərək haqqımızda oxuyun",
- "page-languages-filter-placeholder": "Filtr",
+ "page-languages-filter-label": "Filtr siyahısı",
+ "page-languages-filter-placeholder": "Filtrləmək üçün daxil et",
+ "page-languages-browser-default": "Standart brauzer",
+ "page-languages-translated": "tərcümə edilmiş",
+ "page-languages-words": "sözlər",
+ "page-languages-recruit-community": "ethereum.org saytının tərcümə edilməsində bizə kömək edin.",
"langauge-am": "Amhar dili",
"language-ar": "Ərəb dili",
"language-az": "Azərbaycan dili",
diff --git a/src/intl/az/page-stablecoins.json b/src/intl/az/page-stablecoins.json
index e991aa20e29..f6ec953de50 100644
--- a/src/intl/az/page-stablecoins.json
+++ b/src/intl/az/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Mənbə",
"page-stablecoins-bitcoin-pizza": "Məşhur Bitcoin pizzası",
"page-stablecoins-bitcoin-pizza-body": "2010-cu ildə kimsə 10 000 bitkoinə 2 pizza alıb. O zaman bunlar ~41 ABŞ dolları dəyərində idi. İndiki bazarda bu milyonlarla dollardır. Ethereum tarixində bir çox oxşar təəssüf doğuran əməliyyatlar var. Stabilkoinlər bu problemi həll edir, beləliklə siz pizzanızdan həzz ala və ETH-ni saxlaya biləsiniz.",
+ "page-stablecoins-category-dashboard-and-education": "Pult və Təhsil",
"page-stablecoins-coin-price-change": "Token qiymət dəyişikliyi (son 30 gün)",
"page-stablecoins-crypto-backed": "Kripto ilə dəstəklənən",
"page-stablecoins-crypto-backed-con-1": "Fiat dəstəkli stabilkoinlərdən daha az stabildir.",
diff --git a/src/intl/az/page-wallets-find-wallet.json b/src/intl/az/page-wallets-find-wallet.json
index 182e427fb8e..0c5f04e3392 100644
--- a/src/intl/az/page-wallets-find-wallet.json
+++ b/src/intl/az/page-wallets-find-wallet.json
@@ -49,7 +49,7 @@
"page-find-wallet-token-support": "Token dəstəyi",
"page-find-wallet-features": "Xüsusiyyətləri",
"page-find-wallet-security": "Təhlükəsizlik",
- "page-find-wallet-smart-contract": "Ağıllı müqavilələr",
+ "page-find-wallet-smart-contract": "Ağıllı müqavilə",
"page-find-wallet-check-out": "Yoxlayın",
"page-find-wallet-info-updated-on": "məlumat yeniləndi",
"page-find-wallet-showing-all-wallets": "Bütün pulqabılar göstərilir",
diff --git a/src/intl/be/common.json b/src/intl/be/common.json
index b14782dd9ce..3b83299e9df 100644
--- a/src/intl/be/common.json
+++ b/src/intl/be/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Дамашняя старонка",
"about-ethereum-org": "Аб партале ethereum.org",
"about-us": "Пра нас",
+ "adding-desci-projects": "Даданне праектаў Desci",
+ "adding-developer-tools": "Даданне інструментаў распрацоўшчыка",
+ "adding-exchanges": "Даданне біржаў",
+ "adding-glossary-terms": "Даданне тэрмінаў слоўніка",
+ "adding-staking-products": "Даданне прадуктаў для стэйкінгу",
+ "adding-wallets": "Даданне гаманцоў",
+ "account-abstraction": "Дамашняя старонка",
+ "acknowledgements": "Падзякі",
"aria-toggle-search-button": "Пераключэнне кнопкі пошуку",
"aria-toggle-menu-button": "Пераключэнне кнопкі меню",
"beacon-chain": "Beacon Chain",
"bridges": "Масты блокчэйну",
+ "bug-bounty": "Узнагарода за выяўленне памылак",
+ "build": "Стварыць",
+ "build-menu": "Меню стварэння",
"clear": "Ачысціць",
"close": "Закрыць",
"community": "Супольнасць",
"community-hub": "Цэнтр супольніцтва",
"community-menu": "Меню Супольнасці",
"contact": "Кантакты",
+ "content-buckets": "Катэгорыі кантэнту",
+ "content-resources": "Рэсурсы кантэнту",
"content-standardization": "Стандартызацыя кантэнту",
"contributing": "Садзейнічанне",
"contributors": "Саўдзельнікі",
@@ -20,14 +32,17 @@
"copied": "Скапіявана",
"copy": "Капіраваць",
"danksharding": "Danksharding",
- "dao-page": "Дэцэнтралізаваныя аўтаномныя арганізацыі (DAO)",
+ "dao-page": "DAO - Дэцэнтралізаваныя аўтаномныя арганізацыі",
"dark-mode": "Цёмны",
"data-provided-by": "Крыніца дадзеных:",
- "decentralized-applications-dapps": "Дэцэнтралізаваныя дадаткі (dapps)",
+ "decentralized-applications-dapps": "Dapps - Дэцэнтралізаваныя дадаткі",
"decentralized-identity": "Дэцэнтралізаваная ідэнтычнасць",
"decentralized-social-networks": "Дэцэнтралізаваная сацыяльная сетка",
- "decentralized-science": "Дэцэнтралізаваная навука (DeSci)",
- "defi-page": "Дэцэнтралізаваныя фінансы (DeFi)",
+ "decentralized-science": "DeSci - Дэцэнтралізаваная навука",
+ "description": "Апісанне элемента навігацыі",
+ "defi-page": "DeFi - Дэцэнтралізаваныя фінансы",
+ "design": "Дызайн",
+ "design-principles": "Прынцыпы дызайну",
"devcon": "Devcon",
"developers": "Распрацоўшчыкі",
"developers-home": "Галоўная старонка для распрацоўшчыкаў",
@@ -59,7 +74,6 @@
"enterprise-menu": "Меню карпаратыўнага сектару",
"esp": "Праграма падтрымкі экасістэмы",
"eth-current-price": "Бягучая цана ETH (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Праграма ўзнагароды за пошук памылак у Ethereum",
"consensus-when-shipping": "Калі адбудзецца запуск?",
"ethereum-upgrades": "Абновы Ethereum",
@@ -75,7 +89,7 @@
"ethereum-protocol": "Пратакол Ethereum",
"ethereum-security": "Бяспека Ethereum і прадухіленне ашуканства",
"ethereum-support": "Падтрымка Ethereum",
- "ethereum-wallets": "Ethereum гаманцы",
+ "ethereum-wallets": "Гаманцы Ethereum",
"ethereum-whitepaper": "Тэхнічная дакументацыя Ethereum",
"feedback-widget-prompt": "Ці дапамагла вам гэтая старонка?",
"feedback-card-prompt-page": "Ці была гэтая старонка карыснай?",
@@ -83,10 +97,9 @@
"feedback-card-prompt-tutorial": "Ці было гэтае кіраўніцтва карысным?",
"feedback-widget-thank-you-title": "Дзякуй за ваш водгук!",
"feedback-widget-thank-you-subtitle": "Палепшыце старонку шляхам адказу на некалькі пытанняў.",
- "feedback-widget-thank-you-subtitle-ext": "У выпадку калі вам патрэбна дапамога, вы можаце звярнуцца да супольніцтва ў нашым Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Калі вам патрэбна дапамога, вы можаце звярнуцца да супольніцтва праз Discord.",
"feedback-widget-thank-you-timing": "2–3 хвіліны",
"feedback-widget-thank-you-cta": "Адкрыйце кароткую апытанку",
- "find-wallet": "Find wallet",
"future-proofing": "Забеспячэнне будучыні",
"get-eth": "Атрымайце ETH",
"get-involved": "Далучыцца",
@@ -94,11 +107,10 @@
"grants": "Гранты",
"grant-programs": "Праграмы грантаў экасістэмы",
"guides": "Кіраўніцтвы",
- "guides-hub": "Даведачны цэнтр",
+ "guides-hub": "Практычныя кіраўніцтвы",
"history-of-ethereum": "Гісторыя Ethereum",
"home": "Галоўная",
"how-ethereum-works": "Як працуе Ethereum",
- "how-to-register-an-ethereum-account": "Як зарэгістраваць уліковы запіс Ethereum",
"how-to-revoke-token-access": "Як адклікаць доступ смарт-кантракту да вашых рэсурсаў крыптавалюты",
"how-to-swap-tokens": "Як абмяняць токены",
"how-to-use-a-bridge": "Як перанесці токены на ўзровень 2",
@@ -115,11 +127,9 @@
"last-edit": "Апошняя змена",
"layer-2": "Узровень 2",
"learn": "Абучэнне",
- "learn-by-coding": "Learn by coding",
"learn-hub": "Навучальны цэнтр",
"learn-menu": "Меню дапамогі",
"learn-more": "Даведайцеся больш",
- "less": "Less",
"light-mode": "Светлы",
"listing-policy-disclaimer": "Усе прадукты, пералічаныя на гэтай старонцы, не з'яўляюцца афіцыйнымі рэкамендацыямі і прыведзены тут толькі ў інфармацыйных мэтах. Каб дадаць прадукт або адправіць водгук аб палітыцы, паведаміце аб праблеме на GitHub.",
"loading": "Загрузка...",
@@ -128,11 +138,102 @@
"loading-error-try-again-later": "Немагчыма загрузіць даныя. Паўтарыце пазней.",
"logo": "лагатып",
"mainnet-ethereum": "Асноўная сетка Ethereum",
- "more": "More",
- "nav-developers": "Разпрацоўшчыкі",
+ "merge": "Зліццё",
+ "nav-about-description": "Публічны праект з адкрытым зыходным кодам для супольніцтва Ethereum",
+ "nav-advanced-description": "Знаёмцеся з больш складанымі тэмамі",
+ "nav-advanced-label": "Дадаткова",
+ "nav-basics-description": "Зразумейце асновы Ethereum",
+ "nav-basics-label": "Асновы",
+ "nav-bridges-description": "Web3 ператварылася ў экасістэму блокчэйнаў першага ўзроўню L1 і рашэнняў для маштабавання L2",
+ "nav-builders-home-description": "Кіраўніцтва па распрацоўцы для Ethereum: ад распрацоўшчыкаў і для распрацоўшчыкаў",
+ "nav-builders-home-label": "Галоўная старонка для стваральнікаў",
+ "nav-contribute-description": "Калі вы жадаеце дапамагчы, то гэта вам спатрэбіцца",
+ "nav-contribute-label": "Уклад у развіццё ethereum.org",
+ "nav-dao-description": "Супольніцтвы без цэнтралізаванага кіраўніцтва, якія належаць іх удзельнікам",
+ "nav-dapps-description": "Пазнаёмцеся з багатай экасістэмай праграмных дадаткаў з дапамогай Ethereum",
+ "nav-defi-description": "Глабальная, даступная для ўсіх альтэрнатыва традыцыйнаму фінансаваму рынку",
+ "nav-desci-description": "Глабальная, даступная для ўсіх альтэрнатыва існуючай навуковай сістэме",
+ "nav-desoc-description": "Платформы на аснове блокчэйнаў для сацыяльнага ўзаемадзеяння і стварэння кантэнту",
"nav-developers-docs": "Дакументацыя для распрацоўшчыкаў",
+ "nav-developers": "Распрацоўшчыкі",
+ "nav-did-description": "Стварайце свае ўнікальныя дэцэнтралізаваныя ідэнтыфікатары і валодайце імі",
+ "nav-docs-description": "Дакументы, якія дапамогуць зразумець Ethereum і ствараць разам з ім",
+ "nav-docs-design-description": "Апісанне ўнікальных дызайнерскіх задач web3, лепшых практычных рэкамендацый і вынікаў даследаванняў карыстальнікаў",
+ "nav-docs-design-label": "Асновы UX/UI-дызайну",
+ "nav-docs-foundation-description": "Асноўныя прынцыпы распрацоўкі на Ethereum",
+ "nav-docs-overview-description": "Ваша галоўная старонка для дакументаў па распрацоўцы",
+ "nav-docs-stack-description": "Зразумець усё пра стэк Ethereum",
+ "nav-eip-description": "Стандарты, якія вызначаюць новыя функцыі або працэсы",
+ "nav-eip-label": "EIP - Прапановы па паляпшэнні Ethereum",
+ "nav-emerging-description": "Пазнаёмцеся з новымі магчымасцямі выкарыстання Ethereum",
+ "nav-enterprise-description": "Ethereum: праграмныя дадаткі для бізнесу",
+ "nav-ethereum-org-description": "Гэты вэб-сайт быў створаны па ініцыятыве супольнасці — далучайцеся да нас і рабіце свой унёсак разам з намі",
+ "nav-ethereum-wallets-description": "Праграмны дадатак для ўзаемадзеяння з вашым акаўнтам Ethereum",
+ "nav-events-description": "Дэцэнтралізацыя і свабода ўдзелу для кожнага",
+ "nav-events-irl-description": "Кожны месяц праводзяцца буйныя падзеі Ethereum, у якіх можна ўдзельнічаць вочна і анлайн",
+ "nav-events-label": "Супольнасці і падзеі",
+ "nav-events-online-description": "Гэтыя анлайн-супольнасці заснаваны сотнямі тысяч энтузіястаў Ethereum",
+ "nav-find-wallet-description": "Гаманцы дазваляюць вам выкарыстоўваць крыптавалюту",
+ "nav-find-wallet-label": "Выберыце свой гаманец",
+ "nav-gas-fees-description": "Як разлічваецца камісія за транзакцыі ETH",
+ "nav-get-eth-description": "Для выкарыстання праграмных дадаткаў Ethereum вам неабходна мець эфір (ETH)",
+ "nav-get-started-description": "Вашы першыя крокі па выкарыстанні Ethereum",
+ "nav-governance-description": "Працэс, звязаны з абнаўленнем пратакола Ethereum",
+ "nav-grants-description": "Складзены нашым супольніцтвам куратарскі спіс праектаў з праграмамі грантавага фінансавання",
+ "nav-guide-create-account-description": "Кожны можа стварыць акаўнт Ethereum з дапамогай праграмнага дадатку для гаманца бясплатна і ў любы час",
+ "nav-guide-revoke-access-description": "Заставайцеся ў бяспецы пры ўзаемадзеянні са смарт-кантрактамі і праграмнымі дадаткамі ў экасістэме Ethereum",
+ "nav-guide-revoke-access-label": "Як адклікаць доступ смарт-кантракта",
+ "nav-guide-use-wallet-description": "Даведайцеся, як кіраваць усімі асноўнымі функцыямі гаманца",
+ "nav-guide-use-wallet-label": "Як карыстацца кашальком",
+ "nav-guides-description": "Практычныя паслядоўныя даведнікі, якія дапамогуць вам пачаць працу",
+ "nav-guides-label": "Як карыстацца даведнікамі",
+ "nav-history-description": "Храналогія ўсіх асноўных альтэрнатыўных варыянтаў і абнаўленняў",
+ "nav-history-label": "Тэхнічныя звесткі аб Ethereum",
+ "nav-layer-2-description": "Танныя і хуткія транзакцыі для Ethereum",
+ "nav-learn-by-coding-description": "Інструменты, якія дапамагаюць эксперыментаваць з Ethereum",
+ "nav-local-env-description": "Выберыце і наладзьце свой стэк распрацоўкі Ethereum",
+ "nav-mainnet-description": "Праграмныя блокчэйн-дадаткі для прадпрыемстваў можна ствараць у агульнадаступнай асноўнай сетцы Ethereum Mainnet",
+ "nav-nft-description": "Спосаб прадставіць што-небудзь унікальнае ў якасці актыву на аснове Ethereum",
+ "nav-open-research-description": "Адной з галоўных пераваг Ethereum з'яўляецца актыўнае даследчае супольніцтва",
+ "nav-open-research-label": "Адкрытае даследаванне",
+ "nav-overview-description": "Усё, што звязана з адукацыяй Ethereum",
+ "nav-participate-overview-description": "Агляд на тэму удзелу",
"nav-primary": "Головна",
- "nft-page": "Неўзаемназаменныя токены (NFT)",
+ "nav-quizzes-description": "Даведайцеся аб тым, наколькі добра вы разумееце Ethereum і крыптавалюты",
+ "nav-quizzes-label": "Праверце свае веды",
+ "nav-refi-description": "Альтэрнатыўная эканамічная сістэма, заснаваная на прынцыпах рэгенерацыі",
+ "nav-research-description": "Працэсы, якія выкарыстоўваюцца для паляпшэння Ethereum",
+ "nav-research-label": "Даследаванні і распрацоўкі",
+ "nav-roadmap-description": "Шлях да большай бяспечнасці, маштабавання і стабільнасці для Ethereum",
+ "nav-roadmap-future-description": "Умацаванне Ethereum у якасці надзейнай і дэцэнтралізаванай сеткі",
+ "nav-roadmap-future-label": "Забеспячэнне будучыні",
+ "nav-roadmap-label": "План развіцця",
+ "nav-roadmap-scaling-description": "Абнаўленне сеткі для далейшага зніжэння кошту і паляпшэння хуткасці транзакцый",
+ "nav-roadmap-security-description": "Забеспячэнне ўстойлівасці Ethereum для ўсіх тыпаў пагроз у будучыні",
+ "nav-roadmap-security-label": "Палепшаная бяспека",
+ "nav-roadmap-ux-description": "Выкарыстанне Ethereum неабходна зрабіць боль простым",
+ "nav-run-a-node-description": "Стаць поўнасцю самастойным, дапамагаючы забяспечваць бяспеку сеткі",
+ "nav-security-description": "Знаёмцеся з лепшымі практычнымі рэкамендацыямі падчас выкарыстання крыптавалюты",
+ "nav-smart-contracts-description": "Фундаментальныя блокі экасістэмы Ethereum",
+ "nav-stablecoins-description": "Стэйблкойны — гэта токены Ethereum, кошт якіх павінен застаецца нязменным",
+ "nav-stake-description": "Атрымлівайце ўзнагароды за забеспячэнне бяспекі Ethereum",
+ "nav-stake-label": "Стэйкінг",
+ "nav-staking-home-description": "Агляд розных варыянтаў для стэйкінгу",
+ "nav-staking-pool-description": "Стэйкайце і атрымлівайце ўзнагароды з любой колькасцю ETH разам з іншымі людзьмі",
+ "nav-staking-pool-label": "Аб'яднаны стэйкінг",
+ "nav-staking-saas-label": "Стэйкінг пры дапамозе паслуг",
+ "nav-staking-solo-label": "Адзіночны стэйкінг",
+ "nav-start-building-description": "Карысная інфармацыя для тых, хто пачынае",
+ "nav-translation-program-description": "Сумесныя намаганні па перакладу ethereum.org на ўсе мовы",
+ "nav-tutorials-description": "Куратарскі спіс навучальных матэрыялаў супольніцтва",
+ "nav-use-cases-description": "Пазнаёмцеся з рознымі ідэямі выкарыстання Ethereum",
+ "nav-what-is-ether-description": "Валюта праграмных дадаткаў Ethereum",
+ "nav-what-is-ethereum-description": "Разуменне таго, што робіць Ethereum асаблівым",
+ "nav-what-is-web3-label": "Што такое Web3?",
+ "nav-what-is-web3-description": "Альтэрнатыва цэнтралізаваным манаполіям, якія дыктуюць свае правілы",
+ "nav-whitepaper-description": "Арыгінальная тэхнічная дакументацыя Ethereum, якая была напісана Віталікам Бутэрыным у 2014 годзе",
+ "nav-zkp-description": "Спосаб даказаць сапраўднасць сцвярджэння без яго раскрыцця",
+ "nft-page": "NFT - Неўзаемназаменныя токены",
"nfts": "NFT",
"no": "Не",
"on-this-page": "На гэтай старонцы",
@@ -140,6 +241,7 @@
"page-developers-aria-label": "Меню Распрацоўшчыка",
"page-index-meta-title": "Галоўная",
"page-last-updated": "Абноўлена",
+ "participate-menu": "Меню ўдзелу",
"pbs": "Адрозненне аўтара прапановы і распрацоўшчыка",
"pools": "Аб'яднаны стэйкінг",
"privacy-policy": "Палітыка прыватнасці",
@@ -150,13 +252,11 @@
"refresh": "Абнавіць старонку.",
"return-home": "вярнуцца на галоўную старонку",
"roadmap": "План развіцця Ethereum",
+ "research": "Даследаванне",
+ "research-menu": "Меню даследавання",
"resources": "Рэсурсы для перакладу",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
"rollup-component-developer-docs": "Дакументацыя для распрацоўшчыкаў",
"rollup-component-technology-and-risk-summary": "Агляд тэхналогій і рызыкі",
- "scaling": "Scaling",
"saas": "Стэйкінг, як паслуга",
"search": "Пошук",
"search-ethereum-org": "Шукаць на ethereum.org",
@@ -167,19 +267,13 @@
"single-slot-finality": "Завяршэнне ў адзін слот",
"statelessness": "Адсутнасць статусу",
"see-contributors": "Прагляд удзельнікаў",
- "set-up-local-env": "Set up local environment",
- "sharding": "Sharding",
"show-all": "Паказаць усё",
"show-less": "Паказваць менш",
"site-description": "Ethereum гэта глабальная, дэцэнтралізаваная платформа для карыстання грашыма і новымі тыпамі дадаткаў. На гэтай платформе вы можаце пісаць код, які кантралюе грошы і стварае даступныя з усіх краёў свету дадаткі.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Перайсці да асноўнага зместу",
- "smart-contracts": "Smart contracts",
- "stablecoins": "Stablecoins",
"stake-eth": "Стэйкайце ETH",
"staking": "Стэйкінг",
"start-here": "Пачніце тут",
- "style-guide": "Style guide",
"solo": "Адзіночны стэйкінг",
"terms-of-use": "Правілы выкарыстання",
"translation-banner-body-new": "Гэта старонка адлюстроўваецца на англійскай мове, таму што мы яшчэ не пераклалі яе. Дапамажыце нам у гэтым.",
@@ -191,17 +285,18 @@
"translation-banner-no-bugs-title": "Памылак тут няма!",
"translation-banner-no-bugs-content": "Гэтая старонка не перакладзена. Мы наўмысна пакуль пакінулі яе на англійскай мове.",
"translation-banner-no-bugs-dont-show-again": "Больш не паказваць",
+ "translation-program": "Праграму перакладу",
"try-using-search": "Паспрабуйце выкарыстоўваць пошук, каб знайсці тое, што вы шукаеце або",
"tutorials": "Падручнікі",
"up": "Уверх",
+ "use": "Выкарыстанне",
"use-ethereum": "Карыстанне Ethereum",
"use-ethereum-menu": "Выкарыстанне меню Ethereum",
- "user-experience": "User experience",
+ "use-menu": "Меню выкарыстання",
"verkle-trees": "Дрэвы Веркла",
"wallets": "Гаманцы",
"we-couldnt-find-that-page": "Гэтая старонка не знойдзена",
"web3": "Што такое Web3?",
- "web3-title": "Web3",
"website-last-updated": "Абноўлена",
"what-is-ether": "Што такое эфір (ETH)?",
"what-is-ethereum": "Што такое Ethereum?",
diff --git a/src/intl/be/page-languages.json b/src/intl/be/page-languages.json
new file mode 100644
index 00000000000..f2df7c7900d
--- /dev/null
+++ b/src/intl/be/page-languages.json
@@ -0,0 +1,82 @@
+{
+ "page-languages-h1": "Моўная падтрымка",
+ "page-languages-interested": "Зацікаўлены ва ўкладзе?",
+ "page-languages-learn-more": "Даведайцеся больш пра нашу праграму перакладу",
+ "page-languages-meta-desc": "Рэсурсы да ўсіх падтрымліваемых моў ethereum.org і спосабы ўдзелу ў якасці перакладчыка.",
+ "page-languages-meta-title": "ethereum.org Моўныя пераклады",
+ "page-languages-p1": "Ethereum - гэта глабальны праект, і вельмі важна, каб ethereum.org быў даступны кожнаму, незалежна ад яго нацыянальнасці і мовы. Наша супольнасць прыкладае ўсе намаганні, каб зрабіць гэта бачанне рэальнасцю.",
+ "page-languages-translations-available": "ethereum.org даступны на наступных мовах",
+ "page-languages-resources-paragraph": "У дадатак да перакладу кантэнту ethereum.org, мы таксама падтрымліваем",
+ "page-languages-resources-link": "куратарскі спіс рэсурсаў Ethereum на многіх мовах",
+ "page-languages-want-more-header": "Хочаце бачыць ethereum.org на іншай мове?",
+ "page-languages-want-more-link": "Праграму перакладу",
+ "page-languages-want-more-paragraph": "Перакладчыкі ethereum.org заўсёды перакладаюць старонкі на як мага больш моў. Каб убачыць, над чым яны зараз працуюць, або зарэгістравацца, каб далучыцца да іх, прачытайце пра наш",
+ "page-languages-filter-label": "Спіс фільтраў",
+ "page-languages-filter-placeholder": "Увядзіце, каб адфільтраваць",
+ "page-languages-browser-default": "Браўзер па замоўчванню",
+ "page-languages-translated": "перакладзена",
+ "page-languages-words": "словы",
+ "page-languages-recruit-community": "Дапамажыце нам з перакладам ethereum.org.",
+ "langauge-am": "Амхарская",
+ "language-ar": "Арабская",
+ "language-az": "Азербайджанская",
+ "langauge-be": "Беларуская",
+ "language-bg": "Балгарская",
+ "language-bn": "Бенгальская",
+ "language-bs": "Баснійская",
+ "language-ca": "Каталонская",
+ "language-cs": "Czech",
+ "language-da": "Дацкая",
+ "language-de": "German",
+ "language-el": "Грэчаская",
+ "language-en": "Англійская",
+ "language-es": "Spanish",
+ "language-fa": "Фарсі",
+ "language-fi": "Фінская",
+ "language-fr": "French",
+ "language-gl": "Галісійская",
+ "language-gu": "Гуджараці",
+ "language-he": "Іўрыт",
+ "language-hi": "Хіндзі",
+ "language-hr": "Харвацкая",
+ "language-hu": "Венгерская",
+ "language-hy-am": "Армянская",
+ "language-id": "Інданезійская",
+ "language-ig": "Ігба",
+ "language-it": "Italian",
+ "language-ja": "Japanese",
+ "language-ka": "Грузінская",
+ "language-kk": "Казахская",
+ "language-km": "Кхмерская",
+ "language-kn": "Канада",
+ "language-ko": "Карэйская",
+ "language-lt": "Літоўская",
+ "language-ml": "Малаялам",
+ "language-mr": "Маратхі",
+ "language-ms": "Малайская",
+ "language-nb": "Нарвежская",
+ "language-ne-np": "Nepali",
+ "language-nl": "Нідэрландская",
+ "language-pcm": "Піджын, Нігерыя",
+ "language-fil": "Філіпінская",
+ "language-pl": "Польская",
+ "language-pt": "Партугальская",
+ "language-pt-br": "Партугальская (Бразілія)",
+ "language-ro": "Румынская",
+ "language-ru": "Russian",
+ "language-se": "Шведская",
+ "language-sk": "Славацкая",
+ "language-sl": "Славенская",
+ "language-sr": "Сербская",
+ "language-sw": "Суахілі",
+ "language-ta": "Тамільская",
+ "language-th": "Тайская",
+ "language-tk": "Туркменская",
+ "language-tr": "Turkish",
+ "language-uk": "Украінская",
+ "language-ur": "Урду",
+ "language-uz": "Узбекская",
+ "language-vi": "Vietnamese",
+ "language-zh": "Кітайская спрошчаная",
+ "language-zh-tw": "Кітайская традыцыйная"
+}
diff --git a/src/intl/bg/common.json b/src/intl/bg/common.json
index ffdea3aa7e7..e6dbd6b48cf 100644
--- a/src/intl/bg/common.json
+++ b/src/intl/bg/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Абстракция на акаунта",
"about-ethereum-org": "За ethereum.org",
"about-us": "За нас",
+ "adding-desci-projects": "Добавяне на проекти за децентрализирана наука (DeSci)",
+ "adding-developer-tools": "Добавяне на инструменти за разработчици",
+ "adding-exchanges": "Добавяне на борси",
+ "adding-glossary-terms": "Добавяне на термини в речника",
+ "adding-staking-products": "Добавяне на продукти за залагане",
+ "adding-wallets": "Добавяне на портфейли",
+ "account-abstraction": "Абстракция на акаунта",
+ "acknowledgements": "Благодарности",
"aria-toggle-search-button": "Бутон за търсенеToggle",
"aria-toggle-menu-button": "Бутон за Toggle меню",
"beacon-chain": "Сигнална верига",
"bridges": "Мостове на блокова верига",
+ "bug-bounty": "Акция за намиране на бъгове",
+ "build": "Изграждане",
+ "build-menu": "Меню за изграждане",
"clear": "Изчистване",
"close": "Затваряне",
"community": "Общност",
"community-hub": "Център на общността",
"community-menu": "Меню на общността",
"contact": "За контакти",
+ "content-buckets": "Контейнери за съдържание",
+ "content-resources": "Ресурси за съдържание",
"content-standardization": "Стандартизация на съдържанието",
"contributing": "С принос",
"contributors": "Сътрудници",
@@ -20,14 +32,17 @@
"copied": "Копирано",
"copy": "Копиране",
"danksharding": "Danksharding",
- "dao-page": "Децентрализирани автономни организации (DAOs)",
+ "dao-page": "DAOs - Децентрализирани автономни организации",
"dark-mode": "Тъмно",
"data-provided-by": "Източник на данни:",
- "decentralized-applications-dapps": "Децентрализирани приложения (dapps)",
+ "decentralized-applications-dapps": "Dapps - Децентрализирани приложения",
"decentralized-identity": "Децентрализирана самоличност",
"decentralized-social-networks": "Децентрализирани социални мрежи",
- "decentralized-science": "Децентрализирана наука (DeSci)",
- "defi-page": "Децентрализирани финанси (DeFi)",
+ "decentralized-science": "DeSci - Децентрализирана наука",
+ "description": "Описание на елемент за навигация",
+ "defi-page": "DeFi - Децентрализирани финанси",
+ "design": "Дизайн",
+ "design-principles": "Принципи на дизайн",
"devcon": "Девкон/Devcon",
"developers": "Разработчици",
"developers-home": "Начална страница на разработчиците",
@@ -51,7 +66,7 @@
"documentation": "Документация",
"down": "Надолу",
"ecosystem": "Екосистема",
- "edit-page": "Редактиране на страницата",
+ "edit-page": "Редактирай страницата",
"ef-blog": "Блог на фондация Етереум",
"eips": "Предложения за подобрения в Етереум",
"energy-consumption": "Потребление на електричество от Етериум",
@@ -59,11 +74,10 @@
"enterprise-menu": "Меню на предприятието",
"esp": "Програма за поддръжка на екосистемата",
"eth-current-price": "Настояща цена на ETH (в USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Кампания за търсене на бъгове на Етереум",
"consensus-when-shipping": "Кога излиза?",
"ethereum-upgrades": "Подобрения на Етереум",
- "ethereum-brand-assets": "Характеристики на марката Етереум",
+ "ethereum-brand-assets": "Активи на марката Ethereum",
"ethereum-online": "Общности в мрежата",
"ethereum-events": "Събития на Етериум",
"ethereum-foundation": "Фондация Етереум",
@@ -83,22 +97,22 @@
"feedback-card-prompt-tutorial": "Полезено ли беше това обучение?",
"feedback-widget-thank-you-title": "Благодарим за обратната връзка!",
"feedback-widget-thank-you-subtitle": "Помогнете да направим тази страница по-добра, като отговорите на няколко въпроса.",
- "feedback-widget-thank-you-subtitle-ext": "При нужда от помощ, свържете се с общността в нашия Дискорд.",
+ "feedback-widget-thank-you-subtitle-ext": "Ако се нуждаете от помощ, можете да се обърнете към общността на нашата страница Discord.",
"feedback-widget-thank-you-timing": "2 – 3 мин",
"feedback-widget-thank-you-cta": "Започнете кратка анкета",
"find-wallet": "Намери портфейл",
"future-proofing": "Подсигуряване за бъдещето",
"get-eth": "Вземете ETH",
"get-involved": "Включете се",
- "get-started": "Започнете",
+ "get-started": "Начало",
"grants": "Дарения",
"grant-programs": "Програми за дарения в екосистемата",
"guides": "Ръководства",
- "guides-hub": "Център с ръководства",
+ "guides-hub": "Наръчници",
"history-of-ethereum": "Историята на Етереум",
"home": "Начална страница",
"how-ethereum-works": "Как работи Етериум",
- "how-to-register-an-ethereum-account": "Как да „регистрирате“ акаунт в Етереум",
+ "how-to-create-an-ethereum-account": "Как да „регистрирате“ акаунт в Етереум",
"how-to-revoke-token-access": "Как да отмените достъпа на интелигентен договор до средствата ви в криптовалута",
"how-to-swap-tokens": "Как да заменяте токени",
"how-to-use-a-bridge": "Как да прехвърляте токени на слой 2",
@@ -115,7 +129,7 @@
"last-edit": "Последна редакция",
"layer-2": "Слой 2",
"learn": "Научете",
- "learn-by-coding": "Научете, като кодирате",
+ "learn-by-coding": "Учете се, като кодирате",
"learn-hub": "Обучителен център",
"learn-menu": "Как да научиш",
"learn-more": "Научи повече",
@@ -128,11 +142,108 @@
"loading-error-try-again-later": "Данните не могат да се заредят. Опитайте отново по-късно.",
"logo": "лого",
"mainnet-ethereum": "Основната мрежа на Етереум",
- "more": "Още",
- "nav-developers": "Разработчици",
+ "merge": "Сливане",
+ "more": "Повече",
+ "nav-about-description": "Публичен проект с отворен код за общността на Eтереум",
+ "nav-advanced-description": "Научете по-сложните теми",
+ "nav-advanced-label": "Разширени",
+ "nav-basics-description": "Разберете какво е основополагащо в Eтереум",
+ "nav-basics-label": "Основи",
+ "nav-bridges-description": "Web3 се превърна в екосистема от основни блокови вериги от слой 1 ( L1) и решения за мащабируемост от слой 2 ( L2)",
+ "nav-builders-home-description": "Ръководство за изграждане за Eтереум – от разработчици за разработчици",
+ "nav-builders-home-label": "Начална страница за разработчик",
+ "nav-contribute-description": "Ако имате нужда от помощ, това ще ви насочи",
+ "nav-contribute-label": "Допринасяне към ethereum.org",
+ "nav-dao-description": "Общности, притежавани от членовете, без централизирана власт",
+ "nav-dapps-description": "Разгледайте богата екосистема от приложения с помощта на Eтереум",
+ "nav-defi-description": "Глобална, отворена алтернатива на традиционния финансов пазар",
+ "nav-desci-description": "Глобална, отворена алтернатива на настоящата научна система",
+ "nav-desoc-description": "Базирани на блокови вериги платформи за социално взаимодействие и създаване на съдържание",
"nav-developers-docs": "Документация за разработчици",
+ "nav-developers": "Разработчици",
+ "nav-did-description": "Издавайте и притежавайте свой собствени, уникални децентрализирани идентификатори",
+ "nav-docs-description": "Документи, които да ви помогнат да разберете и градите с Eтереум",
+ "nav-docs-design-description": "Описание на уникални предизвикателства с Web3 дизайн, най-добри практики и информация от потребителски проучвания",
+ "nav-docs-design-label": "Основи на UX/UI дизайна",
+ "nav-docs-foundation-description": "Базови фундаменти за разработване в Eтереум",
+ "nav-docs-foundation-label": "Основни теми",
+ "nav-docs-overview-description": "Вашата начална страница за документи за разработчици",
+ "nav-docs-stack-description": "Разберете всички подробности за обема на Етереум",
+ "nav-docs-stack-label": "Обем на Етереум",
+ "nav-eip-description": "Стандарти, които определят нови функции или процеси",
+ "nav-eip-label": "EIP - Предложения за подобряване на Eтереум",
+ "nav-emerging-description": "Запознайте се с други, по-нови случаи на използване за Eтереум",
+ "nav-enterprise-description": "Бизнес приложения за Eтереум",
+ "nav-ethereum-org-description": "Този уебсайт се ръководи от общността – присъединете се към нас и дайте своя принос",
+ "nav-ethereum-wallets-description": "Приложение, което да взаимодейства с вашия акаунт в Eтереум",
+ "nav-events-description": "Децентрализация и свободата всеки да участва",
+ "nav-events-irl-description": "Всеки месец има големи събития на Eтереум – на живо и онлайн",
+ "nav-events-label": "Общности и събития",
+ "nav-events-online-description": "Стотици хиляди Eтереум ентусиасти покровителстват тези онлайн общности",
+ "nav-find-wallet-description": "Портфейлите ви позволяват да използвате криптовалута",
+ "nav-find-wallet-label": "Изберете своя портфейл",
+ "nav-gas-fees-description": "Как се изчисляват таксите за транзакции с ETH",
+ "nav-get-eth-description": "Нужен ви е етер (ETH), за да използвате приложенията на Eтереум",
+ "nav-get-started-description": "Първи стъпки в използването на Eтереум",
+ "nav-governance-description": "Процесът, използван за надграждането на протокола на Eтереум",
+ "nav-governance-label": "Управление",
+ "nav-grants-description": "Списък, подбран от нашата общност, с проекти, които предоставят програми с безвъзмездно финансиране",
+ "nav-guide-create-account-description": "Всеки може да си създаде акаунт в Eтереум по всяко време, безплатно с приложение за портфейл",
+ "nav-guide-revoke-access-description": "Бъдете защитени, когато взаимодействате с интелигентни договори и приложения в екосистемата на Eтереум",
+ "nav-guide-revoke-access-label": "Как да отмените достъпа на интелигентен договор",
+ "nav-guide-use-wallet-description": "Разберете как да управлявате всички основни функции на портфейл",
+ "nav-guide-use-wallet-label": "Как се използва портфейл",
+ "nav-guides-description": "Практични поетапни ръководства, които да ви помогнат да започнете",
+ "nav-guides-label": "Наръчници",
+ "nav-history-description": "Хронологичен списък на всички големи вилки и актуализации",
+ "nav-history-label": "Техническа история на Eтереум",
+ "nav-layer-2-description": "По-евтини и по-бързи трансакции за Eтереум",
+ "nav-learn-by-coding-description": "Инструменти, които ще ви помогнат да експериментирате с Eтереум",
+ "nav-local-env-description": "Изберете и настройте своя обем разработки в Eтереум",
+ "nav-mainnet-description": "Приложения на блоковата верига за предприятия мога да се изграждат на публичната основна мрежа на Eтереум",
+ "nav-nft-description": "Начин, по който да представите всяко уникално нещо като базиран на Етереум актив",
+ "nav-open-research-description": "Една от основните силни страни на Eтереум е активната изследователска общност",
+ "nav-open-research-label": "Отворено проучване",
+ "nav-overview-description": "Всичко за обучение за Eтереум",
+ "nav-overview-label": "Преглед",
+ "nav-participate-overview-description": "Общ преглед на начините да участвате",
"nav-primary": "Основен",
- "nft-page": "Незаменяеми токени (NFTs)",
+ "nav-private-description": "Ресурси на разработчиците за частното предприятие на Етереум",
+ "nav-quizzes-description": "Вижте колко добре разбирате Eтереум и криптовалутите",
+ "nav-quizzes-label": "Тествайте знанията си",
+ "nav-refi-description": "Алтернативна икономическа система, изградена на регенеративни принципи",
+ "nav-research-description": "Процес, използван за подобряване на Eтереум",
+ "nav-research-label": "Научно-изследователска и развойна дейност",
+ "nav-roadmap-description": "Пътят към по-голяма мащабност, сигурност и устойчивост за Eтереум",
+ "nav-roadmap-future-description": "Утвърждаване на Eтереум като стабилна и децентрализирана мрежа",
+ "nav-roadmap-future-label": "Подсигуряване за бъдещето",
+ "nav-roadmap-label": "Пътна карта",
+ "nav-roadmap-scaling-description": "Актуализации на мрежата за допълнително намаляване на цената на трансакциите и скоростта им",
+ "nav-roadmap-security-description": "Гарантиране, че Eтереум ще остане устойчива на всякакви атаки в бъдеще",
+ "nav-roadmap-security-label": "Повишена сигурност",
+ "nav-roadmap-ux-description": "Употребата на Eтереум трябва да е лесна",
+ "nav-run-a-node-description": "Станете напълно суверенни, като същевременно подпомагате обезопасяването на мрежата",
+ "nav-security-description": "Научете кои са най-добрите практики при използване на криптовалута",
+ "nav-smart-contracts-description": "Основните градивни блокове на екосистемата на Eтереум",
+ "nav-stablecoins-description": "Стейбълкойните са токени на Eтереум, създадени да поддържат фиксирана стойност",
+ "nav-stake-description": "Печелете награди за това да правите Eтереум по-безопасна",
+ "nav-stake-label": "Залагане",
+ "nav-staking-home-description": "Преглед на различните опции за залагане",
+ "nav-staking-pool-description": "Залагайте и печелете награди с каквато и да е сума ETH, като се обедините с други",
+ "nav-staking-pool-label": "Групово залагане",
+ "nav-staking-saas-label": "Залагане с услуга",
+ "nav-staking-solo-label": "Самостоятелно залагане",
+ "nav-start-building-description": "Полезна информация за начинаещи",
+ "nav-translation-program-description": "Доброволно сътрудничество за превеждане на ethereum.org на всички езици",
+ "nav-tutorials-description": "Списък на общността с подбрани обучения",
+ "nav-use-cases-description": "Открийте различни идеи за използване на Eтереум",
+ "nav-what-is-ether-description": "Валутата на приложенията на Eтереум",
+ "nav-what-is-ethereum-description": "Научете какво прави Eтереум специална",
+ "nav-what-is-web3-label": "Какво представлява Web3?",
+ "nav-what-is-web3-description": "Алтернатива на централизираните монополи, които диктуват правилата",
+ "nav-whitepaper-description": "Оригиналният Уайтпейпър на Eтереум, написан от Виталик Бутерин през 2014 г.",
+ "nav-zkp-description": "Начин да се докаже валидността на твърдение, без самото твърдение да се разкрива",
+ "nft-page": "NFTs - Незаменяеми токени",
"nfts": "NFT",
"no": "Не",
"on-this-page": "На тази страница",
@@ -140,6 +251,8 @@
"page-developers-aria-label": "Меню за разработчици",
"page-index-meta-title": "Начална страница",
"page-last-updated": "Последна актуализация на страницата",
+ "participate": "Участвайте",
+ "participate-menu": "Меню за участие",
"pbs": "Разделяне на предлагащ и строител",
"pools": "Групово залагане",
"privacy-policy": "Политика за поверителност",
@@ -150,13 +263,14 @@
"refresh": "Моля, обновете страницата.",
"return-home": "към началната страница",
"roadmap": "Пътна карта на Етереум",
+ "research": "Проучване",
+ "research-menu": "Меню за проучване",
"resources": "Източници за превод",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Активиране на възел",
+ "run-a-node": "Активирайте нод",
"rollup-component-website": "Уебсайт",
"rollup-component-developer-docs": "Документация на разработчика",
"rollup-component-technology-and-risk-summary": "Технология и обобщение на рисковете",
- "scaling": "Увеличаване на мащаба",
+ "scaling": "Мащаб",
"saas": "Залагането като услуга",
"search": "Търсене",
"search-ethereum-org": "Търсене на ethereum.org",
@@ -164,6 +278,7 @@
"search-box-blank-state-text": "Търсете по-нататък!",
"search-eth-address": "Това прилича на адреса на Етереум. Ние не предлагаме данни, които са специфични за даден адрес. Опитайте да го намерите в block explorer като",
"search-no-results": "Няма резултати от търсенето ви",
+ "security": "Сигурност",
"single-slot-finality": "Финализиране в рамките на един слот",
"statelessness": "Без състояние",
"see-contributors": "Вижте сътрудниците",
@@ -172,15 +287,14 @@
"show-all": "Покажи всички",
"show-less": "Покажи по-малко",
"site-description": "Етереум е глобална, децентрализирана платформа за пари и нови видове приложения. В Етереум можете да създавате код, който контролира пари, и да правите приложения, достъпни по целия свят.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Прeскачане към основното съдържание",
"smart-contracts": "Умни договори",
- "stablecoins": "Стейбълкойни/Stablecoins",
+ "stablecoins": "Стейбълкойни",
"stake-eth": "Залагайте ETH",
"staking": "Залагане",
"start-here": "Започнете тук",
- "style-guide": "Style guide",
"solo": "Самостоятелно залагане",
+ "support": "Поддръжка",
"terms-of-use": "Условия за ползване",
"translation-banner-body-new": "Виждате тази страница на английски език, защото все още не сме я превели. Помогнете ни да преведем съдържанието.",
"translation-banner-body-update": "Има нова версия на тази страница, но все още е само на английски език. Помогнете ни да преведем последната версия.",
@@ -191,20 +305,22 @@
"translation-banner-no-bugs-title": "Тук няма грешки!",
"translation-banner-no-bugs-content": "Тази страница не се превежда. Засега нарочно сме я оставили на английски език.",
"translation-banner-no-bugs-dont-show-again": "Да не се показва отново",
+ "translation-program": "Програма за преводи",
"try-using-search": "Опитайте да намерите това, което търсите, с търсачката или",
"tutorials": "Ръководства",
"up": "Нагоре",
+ "use": "Използване",
"use-ethereum": "Използвайте Етереум",
"use-ethereum-menu": "Използвайте менюто на Етереум",
- "user-experience": "User experience",
+ "use-menu": "Меню за използване",
"verkle-trees": "Дърво на Verkle",
"wallets": "Портфейли",
"we-couldnt-find-that-page": "Не можахме да намерим тази страница",
"web3": "Какво представлява Web3?",
"web3-title": "Web3",
"website-last-updated": "Последно обновяване на уебсайта",
- "what-is-ether": "Какво е етер/ether (ETH)?",
- "what-is-ethereum": "Какво е Етереум?",
+ "what-is-ether": "Какво е етер (ETH)?",
+ "what-is-ethereum": "Какво е Eтереум?",
"withdrawals": "Тегления на залози",
"yes": "Да",
"zero-knowledge-proofs": "Доказателства за нулево знание"
diff --git a/src/intl/bg/page-dapps.json b/src/intl/bg/page-dapps.json
index f4d06aa58b2..8707d821252 100644
--- a/src/intl/bg/page-dapps.json
+++ b/src/intl/bg/page-dapps.json
@@ -81,7 +81,6 @@
"page-dapps-dapp-description-sablier": "Паричен поток в реално време.",
"page-dapps-dapp-description-superrare": "Купувайте дигитални произведения на изкуството от творци или от вторични пазари.",
"page-dapps-dapp-description-token-sets": "Крипто инвестиционни стратегии, които автоматично отново се балансират.",
- "page-dapps-dapp-description-tornado-cash": "Изпращайте анонимни трансакции в Етереум.",
"page-dapps-dapp-description-uniswap": "Просто разменяйте токени или предлагайте токени за % от наградите.",
"page-dapps-dark-forest-logo-alt": "Лого на Dark Forest",
"page-dapps-decentraland-logo-alt": "Лого на Decentraland",
@@ -189,7 +188,6 @@
"page-dapps-technology-description": "Това са приложения, фокусирани върху децентрализирани пособия на разработчиците, които включват криптоикономически системи в съществуващата технология и създават пазари за разработки с отворен код.",
"page-dapps-technology-title": "Децентрализирана технология",
"page-dapps-token-sets-logo-alt": "Лого на Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Лого на Tornado cash",
"page-dapps-uniswap-logo-alt": "Лого на Uniswap",
"page-dapps-wallet-callout-button": "Намерете портфейл",
"page-dapps-wallet-callout-description": "Портфейлите също са dapps. Намерете такъв, който е на основата на характеристики по ваш избор.",
diff --git a/src/intl/bg/page-languages.json b/src/intl/bg/page-languages.json
index 649bf00500a..73337563552 100644
--- a/src/intl/bg/page-languages.json
+++ b/src/intl/bg/page-languages.json
@@ -1,21 +1,32 @@
{
"page-languages-h1": "Езикова поддръжка",
- "page-languages-interested": "Искате ли да имате принос?",
+ "page-languages-interested": "Желаете да допринесете?",
"page-languages-learn-more": "Научете повече за нашата Програма за преводи",
"page-languages-meta-desc": "Източници за всички поддържани езици в ethereum.org и начини да се включите като преводач.",
"page-languages-meta-title": "езикови преводи на ethereum.org",
"page-languages-p1": "Етереум е глобален проект и достъпът на всички в ethereum.org е от изключително значение, независимо каква е тяхната националност или език. Нашата общност работи усилено да превърне тази визия в реалност.",
"page-languages-translations-available": "ethereum.org е наличен на следните езици",
+ "page-languages-resources-paragraph": "Освен че превеждаме съдържанието на ethereum.org, също така поддържаме и",
+ "page-languages-resources-link": "списък с подбрани ресурси на Етереум на много различни езици",
"page-languages-want-more-header": "Желаете ли да видите ethereum.org на друг език?",
"page-languages-want-more-link": "Програма за преводи",
"page-languages-want-more-paragraph": "преводачите на ethereum.org през цялото време превеждат страниците на възможно най-много езици. За да видите върху какво работят сега или да се запишете при тях, прочетете за нашата",
- "page-languages-filter-placeholder": "Филтър",
+ "page-languages-filter-label": "Списък с филтри",
+ "page-languages-filter-placeholder": "Въведете текст за филтриране",
+ "page-languages-browser-default": "Браузър по подразбиране",
+ "page-languages-translated": "преведено",
+ "page-languages-words": "думи",
+ "page-languages-recruit-community": "Помогнете ни да преведем ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Арабски",
"language-az": "Азербайджански",
+ "langauge-be": "Belarusian",
"language-bg": "Български",
"language-bn": "Бенгалски",
+ "language-bs": "Bosnian",
"language-ca": "Каталунски",
"language-cs": "Чешки",
+ "language-da": "Датски",
"language-de": "Немски",
"language-el": "Гръцки",
"language-en": "Английски",
@@ -24,21 +35,30 @@
"language-fi": "Финландски",
"language-fr": "Френски",
"language-gl": "Галисийски",
+ "language-gu": "Gujarati",
+ "language-he": "Иврит",
"language-hi": "Хинди",
"language-hr": "Хърватски",
"language-hu": "Унгарски",
+ "language-hy-am": "Armenian",
"language-id": "Индонезийски",
"language-ig": "Игбо",
"language-it": "Италиански",
"language-ja": "Японски",
"language-ka": "Грузински",
+ "language-kk": "Казахски",
+ "language-km": "Кхмерски",
+ "language-kn": "Kannada",
"language-ko": "Корейски",
"language-lt": "Литовски",
"language-ml": "Малайски",
"language-mr": "Маратхи",
"language-ms": "Малайски",
"language-nb": "Норвежки",
+ "language-ne-np": "Nepali",
"language-nl": "Нидерландски",
+ "language-pcm": "Nigerian Pidgin",
+ "language-fil": "Филипински",
"language-pl": "Полски",
"language-pt": "Португалски",
"language-pt-br": "Португалски (бразилски)",
@@ -49,9 +69,13 @@
"language-sl": "Словенски",
"language-sr": "Сръбски",
"language-sw": "Суахили",
+ "language-ta": "Тамилски",
"language-th": "Тайландски",
+ "language-tk": "Turkmen",
"language-tr": "Турски",
"language-uk": "Украински",
+ "language-ur": "Urdu",
+ "language-uz": "Узбекски",
"language-vi": "Виетнамски",
"language-zh": "Опростен китайски",
"language-zh-tw": "Традиционен китайски"
diff --git a/src/intl/bg/page-stablecoins.json b/src/intl/bg/page-stablecoins.json
index 2f5037e11d2..afcf5f9031c 100644
--- a/src/intl/bg/page-stablecoins.json
+++ b/src/intl/bg/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Източник",
"page-stablecoins-bitcoin-pizza": "Небезизвестната Биткойн пица",
"page-stablecoins-bitcoin-pizza-body": "През 2010 г. някой купил 2 пици за 10 000 биткойна. По онова време те са стрували около 41 щатски долара. Според днешния пазар това са милиони долари. Съществуват много подобни трансакции, изпълнени със съжаление, в историята на Етереум. Стейбълкойните решават този проблем, така че се наслаждавайте на пицата си и се дръжте за вашите ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Табло & Образование",
"page-stablecoins-coin-price-change": "Промяна в цената на монетите (през последните 30 дни)",
"page-stablecoins-crypto-backed": "Подсигурени от криптовалута",
"page-stablecoins-crypto-backed-con-1": "По-малко стабилни отколкото стейбълкойните, подкрепени от традиционна валута.",
diff --git a/src/intl/bn/common.json b/src/intl/bn/common.json
index 48e34144da8..738641a6dc6 100644
--- a/src/intl/bn/common.json
+++ b/src/intl/bn/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "অ্যাকাউন্ট এবস্ট্রাকশন",
"about-ethereum-org": "ethereum.org সম্পর্কে",
"about-us": "আমাদের সম্পর্কে",
+ "adding-desci-projects": "Desci প্রকল্প যোগ করা হচ্ছে",
+ "adding-developer-tools": "ডেভেলপার টুল যোগ করা হচ্ছে",
+ "adding-exchanges": "এক্সচেঞ্জ যোগ করা হচ্ছে",
+ "adding-glossary-terms": "শব্দকোষের শর্তাদি যোগ করা হচ্ছে",
+ "adding-staking-products": "স্টেকিং পণ্য যোগ করা হচ্ছে",
+ "adding-wallets": "ওয়ালেট যোগ করা হচ্ছে",
+ "account-abstraction": "অ্যাকাউন্ট এবস্ট্রাকশন",
+ "acknowledgements": "অনুমোদন সমূহ",
"aria-toggle-search-button": "সার্চ বাটন টগল করুন",
"aria-toggle-menu-button": "মেনু বাটন টগল করুন",
"beacon-chain": "বীকন চেন",
"bridges": "ব্লকচেইন ব্রীজ",
+ "bug-bounty": "বাগ বাউন্টি",
+ "build": "বিল্ড",
+ "build-menu": "বিল্ড মেনু",
"clear": "পরিষ্কার করুন",
"close": "বন্ধ",
"community": "কমিউনিটি",
"community-hub": "কমিউনিটি হাব",
"community-menu": "কমিউনিটি মেনু",
"contact": "যোগাযোগ",
+ "content-buckets": "বিষয়বস্তু বালতি",
+ "content-resources": "বিষয়বস্তু সম্পদ",
"content-standardization": "কন্টেন্টের মান নির্ধারণ",
"contributing": "অবদান রাখছে",
"contributors": "অবদানকারী",
@@ -20,14 +32,17 @@
"copied": "কপি করা হয়েছে",
"copy": "কপি করুন",
"danksharding": "ড্যাঙ্কশার্ডিং",
- "dao-page": "বিকেন্দ্রীভূত স্বায়ত্তশাসিত সংস্থা (DAOs)",
+ "dao-page": "DAOs - বিকেন্দ্রীভূত স্বায়ত্তশাসিত সংস্থা",
"dark-mode": "ডার্ক",
"data-provided-by": "ডেটার উৎস:",
- "decentralized-applications-dapps": "বিকেন্দ্রীভূত অ্যাপ্লিকেশন (dapps)",
+ "decentralized-applications-dapps": "Dapps - বিকেন্দ্রীভূত অ্যাপ্লিকেশন",
"decentralized-identity": "বিকেন্দ্রীভূত পরিচয়",
"decentralized-social-networks": "বিকেন্দ্রীভূত সামাজিক নেটওয়ার্ক",
- "decentralized-science": "ডিসেন্ট্রালাইজড সায়েন্স (DeSci)",
- "defi-page": "বিকেন্দ্রীভূত অর্থ (DeFi) ",
+ "decentralized-science": "DeSci - ডিসেন্ট্রালাইজড সায়েন্স",
+ "description": "ন্যাভ আইটেমের জন্য বর্ণনা",
+ "defi-page": "DeFi - বিকেন্দ্রীভূত অর্থ ",
+ "design": "ডিজাইন",
+ "design-principles": "ডিজাইনের মূলনীতি",
"devcon": "Devcon",
"developers": "ডেভেলপারগণ",
"developers-home": "ডেভেলপার-এর হোম পেজ",
@@ -63,7 +78,6 @@
"ethereum-bug-bounty": "ইথেরিয়াম বাগ বাউন্টি প্রোগ্রাম",
"consensus-when-shipping": "এটার শিপিং কখন?",
"ethereum-upgrades": "ইথেরিয়াম আপগ্রেড",
- "ethereum-brand-assets": "ইথেরিয়ামের ব্র্যান্ড অ্যাসেট",
"ethereum-online": "অনলাইন কমিউনিটি",
"ethereum-events": "ইথেরিয়াম ইভেন্ট",
"ethereum-foundation": "ইথেরিয়াম ফাইন্ডেশন",
@@ -75,7 +89,7 @@
"ethereum-protocol": "ইথেরিয়াম প্রোটোকল",
"ethereum-security": "ইথেরিয়াম সুরক্ষা এবং স্ক্যাম প্রতিরোধ",
"ethereum-support": "ইথেরিয়াম সাপোর্ট",
- "ethereum-wallets": "ইথেরিয়াম ওয়ালেট",
+ "ethereum-wallets": "ইথেরিয়াম ওয়ালেট",
"ethereum-whitepaper": "ইথেরিয়াম হোয়াইটপেপার",
"feedback-widget-prompt": "এই পৃষ্ঠাটি কি সহায়ক?",
"feedback-card-prompt-page": "এই পৃষ্ঠাটি কি সহায়ক ছিল?",
@@ -83,22 +97,22 @@
"feedback-card-prompt-tutorial": "এই টিউটোরিয়ালটি কি সহায়ক ছিল?",
"feedback-widget-thank-you-title": "আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ!",
"feedback-widget-thank-you-subtitle": "কয়েকটি প্রশ্নের উত্তর দিয়ে এই পৃষ্ঠাটিকে আরও ভালো করুন।",
- "feedback-widget-thank-you-subtitle-ext": "আপনার যদি সাহায্যের প্রয়োজন হয়, আমাদের Discord কমিউনিটির সাথে যোগাযোগ করতে পারেন।",
+ "feedback-widget-thank-you-subtitle-ext": "আপনার সাহায্যের প্রয়োজন হলে, আপনি আমাদের Discord-এ সম্প্রদায়ের সাথে যোগাযোগ করতে পারেন।.",
"feedback-widget-thank-you-timing": "2–3 মিনিট",
"feedback-widget-thank-you-cta": "ওপেন-শর্ট জরিপ",
"find-wallet": "ওয়ালেট খুঁজে নিন",
"future-proofing": "ভবিষ্যত-সুরক্ষাকরণ",
- "get-eth": "ETH পান",
+ "get-eth": "ETH নিন",
"get-involved": "যুক্ত হোন",
- "get-started": "শু্রু করুন",
+ "get-started": "শুরু করা যাক",
"grants": "অনুদান",
"grant-programs": "ইকোসিস্টেম অনুদান কর্মসূচি",
"guides": "নির্দেশিকা",
- "guides-hub": "নির্দেশিকা কেন্দ্র",
+ "guides-hub": "কিভাবে নির্দেশিকা",
"history-of-ethereum": "ইথেরিয়ামের ইতিহাস",
"home": "হোম ",
"how-ethereum-works": "ইথেরিয়াম কীভাবে কাজ করে",
- "how-to-register-an-ethereum-account": "কিভাবে একটি ইথেরিয়াম একাউন্টে \"নিবন্ধন\" করবেন",
+ "how-to-create-an-ethereum-account": "কিভাবে একটি ইথেরিয়াম একাউন্টে \"নিবন্ধন\" করবেন",
"how-to-revoke-token-access": "কিভাবে আপনার ক্রিপ্টো ফান্ড থেকে স্মার্ট কন্ট্রাক্টের অ্যাক্সেস প্রত্যাহার করবেন",
"how-to-swap-tokens": "কিভাবে টোকেন অদলবদল করতে হয়",
"how-to-use-a-bridge": "কিভাবে লেয়ার 2 এর সাথে টোকেন সংযুক্ত করতে হয়",
@@ -128,11 +142,109 @@
"loading-error-try-again-later": "ডেটা লোড করতে অক্ষম। পরে আবার চেষ্টা করুন।",
"logo": "লোগো",
"mainnet-ethereum": "মেননেট ইথেরিয়াম",
+ "merge": "একত্র করুন",
"more": "আরও অনেক কিছু",
- "nav-developers": "ডেভেলপারগণ",
+ "nav-about-description": "ইথেরিয়াম কমিউনিটির জন্য এক পাবলিক, ওপেন-সোর্স প্রোজেক্ট",
+ "nav-advanced-description": "আরও জটিল বিষয়ে জানুন",
+ "nav-advanced-label": "উন্নত",
+ "nav-basics-description": "ইথেরিয়ামের মূলনীতিকে বুঝুন",
+ "nav-basics-label": "প্রাথমিক",
+ "nav-bridges-description": "Web3 নিজেকে উন্নত করে প্রাথমিক L1 ব্লকচেইন এবং L2 স্কেলিং সলিউশনে পরিণত করেছে",
+ "nav-builders-home-description": "ইথেরিয়ামের জন্য বিল্ডারদের একটি নির্দেশপুস্তিকা—বিল্ডারদের দ্বারা, বিল্ডারদের জন্য",
+ "nav-builders-home-label": "বিল্ডারের হোম",
+ "nav-contribute-description": "আপনি সাহায্য করতে চাইলে, এটি আপনাকে গাইড করবে",
+ "nav-contribute-label": "ethereum.org -এ অবদান রাখা",
+ "nav-dao-description": "সদস্যরাই হলেন কমিউনিটির মালিক এবং এখানে কেন্দ্রীয় কোনও নিয়ন্ত্রণ নেই",
+ "nav-dapps-description": "ইথেরিয়ামের সাহায্যে অ্যাপের এক সমৃদ্ধ ইকোসিস্টেম ঘুরে দেখুন",
+ "nav-defi-description": "চিরাচরিত আর্থিক বাজারের নিরিখে এক বিশ্বব্যাপী, উন্মুক্ত বিকল্প",
+ "nav-desci-description": "বর্তমান বৈজ্ঞানিক ব্যবস্থার নিরিখে এক বিশ্বব্যাপী, উন্মুক্ত বিকল্প",
+ "nav-desoc-description": "সোশ্যাল ইন্টার্যাকশন এবং কন্টেন্ট তৈরির জন্য ব্লকচেইন-ভিত্তিক প্ল্যাটফর্ম",
"nav-developers-docs": "ডেভেলপার ডকুমেন্ট",
+ "nav-developers": "ডেভেলপারগণ",
+ "nav-did-description": "আপনার নিজস্ব স্বতন্ত্র ডিসেন্ট্রালাইজ আইডেন্টিফায়ার ইস্যু করুন এবং তার মালিক হোন",
+ "nav-docs-description": "ইথেরিয়ামের সাহায্যে বুঝতে এবং বিল্ড করতে সাহায্য করার জন্য ডক্স",
+ "nav-docs-design-description": "স্বতন্ত্র Web3 ডিজাইনের চ্যালেঞ্জ, সেরা পদ্ধতির বর্ণনা এবং ব্যবহারকারীর বিষয়ে গবেষণার গভীরে আলোকপাত",
+ "nav-docs-design-label": "UX/UI ডিজাইনের মূল বিষয়",
+ "nav-docs-foundation-description": "ইথেরিয়ামে ডেভেলপ করার বিষয়ে প্রধান বিষয়গুলি",
+ "nav-docs-overview-description": "আপনার ডেভেলপার হোমের ডক্স",
+ "nav-docs-stack-description": "ইথেরিয়াম স্ট্যাকের সমস্ত বিস্তারিত বোঝা",
+ "nav-eip-description": "স্ট্যান্ডার্ড যা নতুন ফিচার বা প্রক্রিয়াকে সুনির্দিষ্ট করে",
+ "nav-eip-label": "EIP - ইথেরিয়াম উন্নয়নের প্রস্তাব",
+ "nav-emerging-description": "ইথেরিয়াম আরও নতুন কোন কোন ভাবে ব্যবহার করা সম্ভব তা জানুন",
+ "nav-enterprise-description": "ইথেরিয়ামের জন্য বিজনেস অ্যাপ্লিকেশন",
+ "nav-ethereum-org-description": "এই ওয়েবসাইটটি কমিউনিটির দ্বারা চালিত হয়—আমাদের সাথে যোগ দিন এবং আপনার অবদান রাখুন",
+ "nav-ethereum-wallets-description": "আপনার ইথেরিয়াম অ্যাকাউন্টের সাথে ইন্টার্যাক্ট করার একটি অ্যাপ",
+ "nav-events-description": "ডিসেন্ট্রালাইজ পদ্ধতি এবং সবার অংশগ্রহণ করার স্বাধীনতা",
+ "nav-events-irl-description": "প্রতি মাসেই অফলাইন এবং অনলাইন উভয় মোডেই প্রধান ইথেরিয়াম ইভেন্ট সংগঠিত হয়",
+ "nav-events-label": "কমিউনিটি এবং ইভেন্ট",
+ "nav-events-online-description": "হাজার হাজার ইথেরিয়াম অনুরাগী এইসব অনলাইন কমিউনিটিতে নেতৃত্ব দেন",
+ "nav-find-wallet-description": "আপনি ওয়ালেটের মাধ্যমে ক্রিপ্টো ব্যবহার করতে পারবেন",
+ "nav-find-wallet-label": "আপনার ওয়ালেট বেছে নিন",
+ "nav-gas-fees-description": "কীভাবে ETH ট্রানজ্যাকশন ফি হিসাব করা হয়",
+ "nav-gas-fees-label": "Ethereum-এ গ্যাস সম্পর্কে জানুন: তারা কীভাবে কাজ করে এবং কীভাবে গ্যাস ফি কম দিতে হয়",
+ "nav-get-eth-description": "ইথেরিয়াম অ্যাপ্লিকেশন ব্যবহার করতে হলে আপনার ইথার (ETH) প্রয়োজন",
+ "nav-get-started-description": "ইথেরিয়াম ব্যবহার করতে আপনার প্রথম ধাপ",
+ "nav-governance-description": "ইথেরিয়াম প্রোটোকল আপগ্রেড করার প্রক্রিয়া",
+ "nav-governance-label": "পরিচালনা",
+ "nav-grants-description": "গ্র্যান্ট ফান্ডিং প্রোগ্রাম দেওয়া প্রোজেক্টের বিষয়ে আমাদের কমিউনিটির একত্রিত করা একটি তালিকা",
+ "nav-guide-create-account-description": "একটি ওয়ালেট অ্যাপ দিয়ে বিনামূল্যে যেকেউ যখন খুশি একটি ইথেরিয়াম অ্যাকাউন্ট তৈরি করতে পারবেন",
+ "nav-guide-create-account-label": "কিভাবে একটি ইথেরিয়াম একাউন্টে \"নিবন্ধন\" করবেন",
+ "nav-guide-revoke-access-description": "ইথেরিয়াম ইকোসিস্টেমে স্মার্ট কন্ট্র্যাক্ট এবং অ্যাপ্লিকেশনের সাথে নিরাপদভাবে ইন্টার্যাক্ট করুন",
+ "nav-guide-revoke-access-label": "কীভাবে স্মার্ট কন্ট্র্যাক্টের অ্যাক্সেস প্রত্যাহার করবেন",
+ "nav-guide-use-wallet-description": "কীভাবে কোনও ওয়ালেটের সমস্ত প্রাথমিক বৈশিষ্ট্য ব্যবহার করবেন তা জানুন",
+ "nav-guide-use-wallet-label": "কিভাবে একটি ওয়ালেট ব্যবহার করতে হয়",
+ "nav-guides-description": "আপনাকে শুরু করতে সাহায্য করার জন্য বাস্তবিক ধাপে-ধাপে গাইড",
+ "nav-guides-label": "কীভাবে করবেন তার গাইড",
+ "nav-history-description": "সমস্ত প্রধান ফোর্ক এবং আপডেটের টাইমলাইন",
+ "nav-history-label": "ইথেরিয়ামের টেকনিক্যাল হিস্ট্রি",
+ "nav-layer-2-description": "ইথেরিয়ামের জন্য অপেক্ষাকৃত সস্তায় এবং তাড়াতাড়ি ট্রানজ্যাকশন",
+ "nav-learn-by-coding-description": "ইথেরিয়ামের সাথে পরীক্ষানীরিক্ষা করার টুলস",
+ "nav-local-env-description": "আপনার ইথেরিয়াম ডেভেলপমেন্ট স্ট্যাক বেছে নিন এবং সেট-আপ করুন",
+ "nav-mainnet-description": "এন্টারপ্রাইজ ব্লকচেইন অ্যাপ্লিকেশন পাবলিক ইথেরিয়াম মেইননেটে বানানো সম্ভব",
+ "nav-nft-description": "একটি ইথেরিয়াম-ভিত্তিক সম্পদ হিসেবে অনন্য কিছু উপস্থাপন করার একটি উপায়",
+ "nav-open-research-description": "অ্যাক্টিভ রিসার্চ কমিউনিটি হল ইথেরিয়ামের অন্যতম প্রধান শক্তি",
+ "nav-open-research-label": "উন্মুক্ত গবেষণা",
+ "nav-overview-description": "ইথেরিয়াম শিক্ষার সবকিছু",
+ "nav-participate-overview-description": "কীভাবে অংশগ্রহণ করবেন তা একঝলকে",
"nav-primary": "প্রাইমারি",
- "nft-page": "নন-ফাঞ্জিবল টোকেন (NFT)",
+ "nav-quizzes-description": "আপনি ইথেরিয়াম এবং ক্রিপ্টোকারেন্সি কতটা ভালো বোঝেন তা দেখে নিন",
+ "nav-quizzes-label": "আপনার জ্ঞানের পরীক্ষা করুন",
+ "nav-refi-description": "পুনঃউৎপাদনমূলক নীতির উপর নির্মিত একটি বিকল্প অর্থনৈতিক ব্যবস্থা",
+ "nav-research-description": "ইথেরিয়ামকে উন্নত করতে ব্যবহৃত প্রক্রিয়াগুলি",
+ "nav-research-label": "গবেষণা এবং উন্নয়ন",
+ "nav-roadmap-description": "ইথেরিয়ামের জন্য আরও স্কেল করার, নিরাপত্তার এবং স্থায়িত্বের পথ",
+ "nav-roadmap-future-description": "ইথেরিয়ামকে এক শক্তিশালী এবং ডিসেন্ট্রালাইজড নেটওয়ার্ক হিসাবে আরও মজবুত করে তোলা",
+ "nav-roadmap-future-label": "ভবিষ্যত-সুরক্ষাকরণ",
+ "nav-roadmap-label": "রোডম্যাপ",
+ "nav-roadmap-scaling-description": "ট্রানজ্যাকশন খরচ এবং গতি আরও কমাতে নেটওয়ার্ক আপডেট",
+ "nav-roadmap-security-description": "ভবিষ্যতে সবধরনের আক্রমণ যাতে ইথেরিয়াম প্রতিহত করতে পারে তা নিশ্চিত করে তোলা হচ্ছে",
+ "nav-roadmap-security-label": "উন্নত নিরাপত্তা",
+ "nav-roadmap-ux-description": "ইথেরিয়ামের ব্যবহার আরও সহজ হতে হবে",
+ "nav-run-a-node-description": "নেটওয়ার্ক সুরক্ষিত করতে সাহায্য করার সময় সম্পূর্ণ সার্বভৌম হয়ে উঠুন",
+ "nav-security-description": "সেরা পদ্ধতি মেনে ক্রিপ্টোকারেন্সি ব্যবহার করার বিষয়ে জানুন",
+ "nav-smart-contracts-description": "ইথেরিয়াম ইকোসিস্টেমের প্রাথমিক ভিত্তিপ্রস্তর",
+ "nav-stablecoins-description": "স্টেবলকয়েন হল ইথেরিয়াম টোকেন যা এক নির্দিষ্ট মানে থাকবে বলেই ডিজাইন করা হয়েছে",
+ "nav-stake-description": "ইথেরিয়াম সুরক্ষিত করার জন্য পুরষ্কার অর্জন করুন",
+ "nav-stake-label": "স্টেক",
+ "nav-staking-home-description": "স্টেক করার জন্য বিভিন্ন অপশনের একঝলক",
+ "nav-staking-home-label": "স্টেকিং হোম",
+ "nav-staking-pool-description": "অন্যদের সাথে যোগদান করে যেকোনও পরিমাণের ETH দিয়ে স্টেক করুন এবং পুরস্কার জিতে নিন",
+ "nav-staking-pool-label": "সম্মিলিত স্টেকিং",
+ "nav-staking-saas-description": "থার্ড-পার্টি নোড অপারেটররা আপনার ভ্যালিডেটর ক্লায়েন্টের অপারেশন পরিচালনা করে",
+ "nav-staking-saas-label": "একটি পরিষেবা দিয়ে স্টেকিং",
+ "nav-staking-solo-description": "হোম হার্ডওয়্যার চালান এবং ব্যক্তিগতভাবে ইথেরিয়াম নেটওয়ার্কের নিরাপত্তা এবং বিকেন্দ্রীকরণ যোগ করুন",
+ "nav-staking-solo-label": "স্বতন্ত্র স্টেকিং",
+ "nav-start-building-description": "নতুনদের সাহায্যের জন্য তথ্য",
+ "nav-translation-program-description": "ethereum.org ওয়েবসাইটকে সমস্ত ভাষায় অনুবাদ করার জন্য সকলে মিলে করা এক প্রয়াস",
+ "nav-tutorials-description": "কমিউনিটির টিউটোরিয়ালের একত্রিত করা তালিকা",
+ "nav-use-cases-description": "ইথেরিয়াম ব্যবহারের বিভিন্ন আইডিয়া খুঁজে নিন",
+ "nav-what-is-ether-description": "ইথেরিয়াম অ্যাপের মুদ্রা",
+ "nav-what-is-ethereum-description": "কীভাবে ইথেরিয়াম বিশেষ হয়ে উঠেছে তা বুঝে নেওয়া",
+ "nav-what-is-web3-label": "Web3 কি?",
+ "nav-what-is-web3-description": "নিয়মকে চালিত করা কেন্দ্রীয়ভাবে একচেটিয়া নিয়ন্ত্রণের একটি বিকল্প",
+ "nav-whitepaper-description": "2014 সালে ভিটালিক বুটেরিনের লেখা আসল ইথেরিয়াম হোয়াইটপেপার",
+ "nav-zkp-description": "স্টেটমেন্টটিকে প্রকাশ না করেই স্টেটমেন্টের বৈধতা প্রমাণ করার একটি রাস্তা",
+ "nft-page": "NFT - নন-ফাঞ্জিবল টোকেন",
"nfts": "NFT",
"no": "না",
"on-this-page": "এই পৃষ্ঠাতে যা যা আছে",
@@ -140,6 +252,7 @@
"page-developers-aria-label": "ডেভেলপারদের মেনু",
"page-index-meta-title": "হোম ",
"page-last-updated": "যখন পৃষ্ঠাটি শেষবারের মতো আপডেট করা হয়েছে",
+ "participate-menu": "অংশগ্রহণের মেনু",
"pbs": "প্রস্তাবক-নির্মাতা পৃথকীকরণ",
"pools": "সম্মিলিত স্টেকিং",
"privacy-policy": "গোপনীয়তা সংক্রান্ত নীতি",
@@ -150,10 +263,10 @@
"refresh": "অনুগ্রহ করে পেজটি রিফ্রেস করুন।",
"return-home": "হোম এ ফেরত যান",
"roadmap": "ইথেরিয়াম রোডম্যাপ",
+ "research": "গবেষণা",
+ "research-menu": "গবেষণার মেনু",
"resources": "অনুবাদ সংক্রান্ত রিসোর্সগুলো",
- "regenerative-finance": "রিজেনারেটিভ ফাইনান্স (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
+ "regenerative-finance": "ReFi - রিজেনারেটিভ ফাইনান্স",
"rollup-component-developer-docs": "ডেভেলপারের ডকুমেন্ট",
"rollup-component-technology-and-risk-summary": "প্রযুক্তি এবং ঝুঁকি সংক্রান্ত সারাংশ",
"scaling": "স্কেলিং",
@@ -164,11 +277,11 @@
"search-box-blank-state-text": "খুঁজে নিন!",
"search-eth-address": "এটি একটি ইথেরিয়াম ঠিকানার মতো দেখায়। আমরা ঠিকানার জন্য নির্দিষ্ট ডেটা প্রদান করি না। একটি ব্লক এক্সপ্লোরারে এটির জন্য খোঁজার চেষ্টা করুন যেমন",
"search-no-results": "আপনার সার্চের জন্য কোনও ফলাফল পাওয়া যায়নি",
+ "security": "নিরাপত্তা",
"single-slot-finality": "সিঙ্গেল-স্লট ফাইনালিটি",
"statelessness": "রাষ্ট্রহীনতা",
"see-contributors": "অবদানকারীদের দেখুন",
- "set-up-local-env": "স্থানীয় পরিবেশ সেট-আপ করুন",
- "sharding": "Sharding",
+ "set-up-local-env": "স্থানীয় পরিবেশ সেট আপ করুন",
"show-all": "সবকটি দেখুন",
"show-less": "কম দেখুন",
"site-description": "ইথেরিয়াম হল অর্থ এবং নতুন ধরনের অ্যাপ্লিকেশনগুলির জন্য একটি বিশ্বজনীন, বিকেন্দ্রীভূত প্ল্যাটফর্ম। ইথেরিয়াম-এ আপনি কোড লিখতে পারেন যা অর্থ নিয়ন্ত্রণ করে, এবং বিশ্বের যে কোনো জায়গা থেকে প্রবেশগম্য অ্যাপ্লিকেশন নির্মাণ করে।",
@@ -179,7 +292,6 @@
"stake-eth": "স্টেইক ETH",
"staking": "স্টেকিং",
"start-here": "এখানে শুরু করুন",
- "style-guide": "Style guide",
"solo": "স্বতন্ত্র স্টেকিং",
"terms-of-use": "ব্যবহারের শর্তাবলী",
"translation-banner-body-new": "আপনি এই পৃষ্ঠাটি ইংরেজিতে দেখছেন, কারণ আমরা এখনও এটি অনুবাদ করি নি। এই কন্টেন্ট অনুবাদ করতে আমাদের সাহায্য করুন।",
@@ -187,23 +299,24 @@
"translation-banner-button-see-english": "ইংরেজিতে দেখুন",
"translation-banner-button-translate-page": "পেজ অনুবাদ করুন",
"translation-banner-title-new": "এই পৃষ্ঠাটি অনুবাদ করতে সাহায্য করুন",
- "translation-banner-title-update": "এই পৃষ্ঠাটি আপডেট করতে সাহায্য করুন",
+ "translation-banner-title-update": "এই পাতাটি আপডেট করতে সাহায্য করুন",
"translation-banner-no-bugs-title": "এখানে কোন বাগ নেই!",
"translation-banner-no-bugs-content": "এই পেজটি অনুবাদ করা হয়নি। আমরা ইচ্ছাকৃত এই পেজটি আপাতত ইংরেজিতে রেখেছি।",
"translation-banner-no-bugs-dont-show-again": "পুনরায় দেখাবেন না",
+ "translation-program": "অনুবাদ কর্মসূচি",
"try-using-search": "সার্চ ব্যবহার করে আপনি যা খুঁজছেন তা পাওয়ার চেষ্টা করুন অথবা",
"tutorials": "টিউটোরিয়াল",
"up": "উপরে",
+ "use": "ব্যবহার",
"use-ethereum": "ইথেরিয়াম ব্যবহার করুন",
"use-ethereum-menu": "ইথেরিয়াম মেনু ব্যবহার করুন",
- "user-experience": "User experience",
+ "use-menu": "ব্যবহারের মেনু",
"verkle-trees": "ভার্কল ট্রি",
"wallets": "ওয়ালেটসমূহ",
"we-couldnt-find-that-page": "আমরা সেই পৃষ্ঠাটি খুঁজে পাইনি",
"web3": "Web3 কি?",
- "web3-title": "Web3",
"website-last-updated": "যখন ওয়েবসাইট শেষবারের মতো আপডেট করা হয়েছে",
- "what-is-ether": "ইথার (ETH)বলতে কী বোঝায়?",
+ "what-is-ether": "ইথার (ETH) কী?",
"what-is-ethereum": "ইথেরিয়াম কী?",
"withdrawals": "স্টেকিং উইথড্রয়াল",
"yes": "হ্যাঁ",
diff --git a/src/intl/bn/page-dapps.json b/src/intl/bn/page-dapps.json
index 076a51e8f61..4dd95bed58e 100644
--- a/src/intl/bn/page-dapps.json
+++ b/src/intl/bn/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "রিয়েল-টাইমে অর্থ স্ট্রিম করুন।",
"page-dapps-dapp-description-superrare": "শিল্পীদের কাছ থেকে বা সেকেন্ডারি মার্কেটে সরাসরি ডিজিটাল আর্টওয়ার্ক কিনুন।",
"page-dapps-dapp-description-token-sets": "ক্রিপ্টো বিনিয়োগ কৌশল যা স্বয়ংক্রিয়ভাবে ভারসাম্য বজায় রাখে।",
- "page-dapps-dapp-description-tornado-cash": "ইথেরিয়াম এ বেনামী লেনদেন পাঠান।",
"page-dapps-dapp-description-uniswap": "সহজভাবে টোকেন অদলবদল করুন বা % পুরস্কারের জন্য টোকেন দেন।",
"page-dapps-dapp-description-dexguru": "DeFi ব্যবসায়ীদের জন্য নন-কাস্টোডিয়াল ট্রেডিং টার্মিনাল",
"page-dapps-dapp-description-synthetix": "Synthetix হলো সিন্থেটিক সম্পদ ইস্যু এবং ট্রেড করার জন্য একটি প্রোটোকল",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "এগুলি এমন অ্যাপ্লিকেশন যা ডেভেলপার টুলস-এর বিকেন্দ্রীকরণ, বিদ্যমান প্রযুক্তিতে ক্রিপ্টোইকোনমিক সিস্টেমগুলিকে অন্তর্ভুক্ত করার এবং ওপেন সোর্স ডেভেলপমেন্ট কাজের জন্য মার্কেটপ্লেস তৈরি করার উপর ফোকাস করে।",
"page-dapps-technology-title": "বিকেন্দ্রীভূত প্রযুক্তি",
"page-dapps-token-sets-logo-alt": "Token Sets লোগো",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash লোগো",
"page-dapps-uniswap-logo-alt": "Uniswap লোগো",
"page-dapps-wallet-callout-button": "ওয়ালেট খুঁজে নিন",
"page-dapps-wallet-callout-description": "ওয়ালেটগুলিও dapps। আপনার উপযুক্ত বৈশিষ্ট্যগুলির উপর ভিত্তি করে একটি খুঁজুন।",
diff --git a/src/intl/bn/page-languages.json b/src/intl/bn/page-languages.json
index ae8695ffed4..661bf3e5457 100644
--- a/src/intl/bn/page-languages.json
+++ b/src/intl/bn/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "একটি ভিন্ন ভাষায় ethereum.org দেখতে চান?",
"page-languages-want-more-link": "অনুবাদ কর্মসূচি",
"page-languages-want-more-paragraph": "ethereum.org অনুবাদকরা সবসময় যতটা সম্ভব অনেক ভাষায় পৃষ্ঠাগুলি অনুবাদ করে। তারা এখন কি কাজ করছে তা দেখতে বা তাদের সাথে যোগ দিতে সাইন আপ করতে, আমাদের সম্পর্কে পড়ুন",
- "page-languages-filter-placeholder": "ফিল্টার",
+ "page-languages-filter-label": "তালিকা ফিল্টার করুন",
+ "page-languages-filter-placeholder": "ফিল্টার করতে লিখুন",
+ "page-languages-browser-default": "ব্রাউজারের ডিফল্ট",
+ "page-languages-translated": "অনুবাদ করা হয়েছে",
+ "page-languages-words": "শব্দ",
+ "page-languages-recruit-community": "আমাদের ethereum.org অনুবাদ করতে সাহায্য করুন।",
+ "langauge-am": "Amharic",
"language-ar": "আরবি",
"language-az": "আজারবাইজানীয়",
+ "langauge-be": "Belarusian",
"language-bg": "বুলগেরীয়",
"language-bn": "বাংলা",
+ "language-bs": "Bosnian",
"language-ca": "ক্যাটালান",
"language-cs": "চেক",
"language-da": "ড্যানিশ",
@@ -32,6 +40,7 @@
"language-hi": "হিন্দি",
"language-hr": "ক্রোয়েশিয়ান",
"language-hu": "হাঙ্গেরিয়ান",
+ "language-hy-am": "Armenian",
"language-id": "ইন্দোনেশিয়ান",
"language-ig": "ইগবো",
"language-it": "ইতালিয়ান",
@@ -39,12 +48,14 @@
"language-ka": "জর্জিয়ান",
"language-kk": "কাজাখ",
"language-km": "খেমের",
+ "language-kn": "Kannada",
"language-ko": "কোরিয়ান",
"language-lt": "লিথুয়ানিয়ান",
"language-ml": "মালয়ালম",
"language-mr": "মারাঠী",
"language-ms": "মালায়া",
"language-nb": "নরওয়েজীয়",
+ "language-ne-np": "Nepali",
"language-nl": "ডাচ",
"language-pcm": "নাইজেরিয়ান পিজিন",
"language-fil": "ফিলিপিনো",
@@ -58,8 +69,9 @@
"language-sl": "স্লোভেনিয়ান",
"language-sr": "সার্বিয়ান",
"language-sw": "সোয়াহিলি",
- "language-th": "থাই",
"language-ta": "তামিল",
+ "language-th": "থাই",
+ "language-tk": "Turkmen",
"language-tr": "তুর্কি",
"language-uk": "ইউক্রেনিয়ান",
"language-ur": "উর্দু",
diff --git a/src/intl/bn/page-stablecoins.json b/src/intl/bn/page-stablecoins.json
index e8ca59e78e0..d9f79463877 100644
--- a/src/intl/bn/page-stablecoins.json
+++ b/src/intl/bn/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "উৎস",
"page-stablecoins-bitcoin-pizza": "অখ্যাত বিটকয়েন পিজ্জা",
"page-stablecoins-bitcoin-pizza-body": "2010 সালে, কেউ 10,000 বিটকয়েনের জন্য 2টি পিজা কিনেছিল। তখন এগুলোর মূল্য ছিল ~$41 USD। আজকের বাজারে এটি মিলিয়ন ডলার। ইথেরিয়াম এর ইতিহাসে অনেক অনুরূপ অনুতপ্ত লেনদেন আছে। স্টেবলকয়েন এই সমস্যার সমাধান করে, যাতে আপনি আপনার পিজ্জা উপভোগ করতে পারেন এবং আপনার ETH ধরে রাখতে পারেন।",
+ "page-stablecoins-category-dashboard-and-education": "ড্যাশবোর্ড এবং শিক্ষা",
"page-stablecoins-coin-price-change": "কয়েনের মূল্য পরিবর্তন (গত 30 দিন)",
"page-stablecoins-crypto-backed": "ক্রিপ্টো ব্যাকড",
"page-stablecoins-crypto-backed-con-1": "ফিয়াট-ব্যাকড স্টেবলকয়েনের চেয়ে কম স্থিতিশীল।",
diff --git a/src/intl/bs/common.json b/src/intl/bs/common.json
index a787d68d0d8..49355ad2f9e 100644
--- a/src/intl/bs/common.json
+++ b/src/intl/bs/common.json
@@ -1,17 +1,27 @@
{
- "account-abstraction": "Pregled računa",
"about-ethereum-org": "O ethereum.org",
"about-us": "O nama",
+ "adding-desci-projects": "Dodavanje Desci projekata",
+ "adding-developer-tools": "Dodavanje alata za programere",
+ "adding-exchanges": "Dodavanje konverzija",
+ "adding-glossary-terms": "Dodavanje pojmova iz rječnika",
+ "adding-staking-products": "Dodavanje proizvoda uloga",
+ "adding-wallets": "Dodavanje novčanika",
+ "account-abstraction": "Pregled računa",
"aria-toggle-search-button": "Dugme za pretragu",
"aria-toggle-menu-button": "Dugme za isključivanje/uključivanje menija",
"beacon-chain": "Beacon Chain",
"bridges": "Mostovi za bloklance",
+ "build": "Verzija",
+ "build-menu": "Meni verzije",
"clear": "Obriši",
"close": "Zatvori",
"community": "Zajednica",
"community-hub": "Društveni dom",
"community-menu": "Sadržaj društva",
"contact": "Stupite u kontakt",
+ "content-buckets": "Grupe sadržaja",
+ "content-resources": "Resursi sadržaja",
"content-standardization": "Standardizacija sadržaja",
"contributing": "Doprinosi",
"contributors": "Saradnici",
@@ -20,14 +30,17 @@
"copied": "Kopirano",
"copy": "Kopiraj",
"danksharding": "Danksharding",
- "dao-page": "Decentralizovane autonomne organizacije (DAO)",
+ "dao-page": "DAO - Decentralizovane autonomne organizacije",
"dark-mode": "Tamno",
"data-provided-by": "Izvor podataka:",
- "decentralized-applications-dapps": "Decentralizovane aplikacije (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentralizovane aplikacije",
"decentralized-identity": "Decentralizovan identitet",
"decentralized-social-networks": "Decentralizovane društvene mreže",
- "decentralized-science": "Decentralizovana nauka (DeSci)",
- "defi-page": "Decentralizovane finansije (DeFi)",
+ "decentralized-science": "DeSci - Decentralizovana nauka",
+ "description": "Opis stavke za navigaciju",
+ "defi-page": "DeFi - Decentralizovane finansije",
+ "design": "Dizajn",
+ "design-principles": "Principi dizajna",
"devcon": "Devcon",
"developers": "Programeri",
"developers-home": "Početna stranica za programere",
@@ -51,7 +64,6 @@
"documentation": "Dokumentacija",
"down": "Dolе",
"ecosystem": "Ekosistem",
- "edit-page": "Edit page",
"ef-blog": "Ethereum Foundation Blog",
"eips": "Prejdlozi za Poboljšanje Ethereum-a",
"energy-consumption": "Ethereum potrošnja energije",
@@ -63,7 +75,6 @@
"ethereum-bug-bounty": "Nagradni program za lovce grešaka na Ethereumu",
"consensus-when-shipping": "Kada je isporuka?",
"ethereum-upgrades": "Nadogradnje Ethereuma",
- "ethereum-brand-assets": "Ethereum brand assets",
"ethereum-online": "Zajednice na mreži",
"ethereum-events": "Ethereum događaji",
"ethereum-foundation": "Ethereum Foundation",
@@ -83,22 +94,20 @@
"feedback-card-prompt-tutorial": "Da li vam je ovaj lekcija pomogla?",
"feedback-widget-thank-you-title": "Hvala na povratnim informacijama!",
"feedback-widget-thank-you-subtitle": "Poboljšajte ovu stranicu putem odgovora na nekoliko pitanja.",
- "feedback-widget-thank-you-subtitle-ext": "Ako vam treba pomoć, možete se obratiti zajednici na našem Diskord-u.",
+ "feedback-widget-thank-you-subtitle-ext": "Ako vam je potrebna pomoć, kontaktirajte zajednicu na našoj stranici Discord.",
"feedback-widget-thank-you-timing": "2–3 minute",
"feedback-widget-thank-you-cta": "Otvori kratku anketu",
- "find-wallet": "Find wallet",
"future-proofing": "Osiguranje za budućnost",
"get-eth": "Nabavite ETH",
"get-involved": "Uključite se",
- "get-started": "Get started",
"grants": "Stipendije",
"grant-programs": "Program za Stipendiranje Ekosistema",
"guides": "Vodiči",
- "guides-hub": "Centar za vodiče",
+ "guides-hub": "Vodiči za početak korištenja",
"history-of-ethereum": "Istorija Ethereum-a",
"home": "Početna",
"how-ethereum-works": "Kako Ethereum funkcioniše",
- "how-to-register-an-ethereum-account": "Kako \"registrovati\" Ethereum račun",
+ "how-to-create-an-ethereum-account": "Kako \"registrovati\" Ethereum račun",
"how-to-revoke-token-access": "Kako ukinuti pristup pametnom ugovoru vašim kripto sredstvima",
"how-to-swap-tokens": "Kako razmeniti tokene",
"how-to-use-a-bridge": "Kako premostiti tokene na nivo 2",
@@ -115,11 +124,9 @@
"last-edit": "Posljednje uređivanje",
"layer-2": "Sloj 2",
"learn": "Nauči",
- "learn-by-coding": "Learn by coding",
"learn-hub": "Centar za učenje",
"learn-menu": "Sadržaj centra za učenje",
"learn-more": "Nauči više",
- "less": "Less",
"light-mode": "Svjetlo",
"listing-policy-disclaimer": "Svi proizvodi navedeni na ovoj stranici nisu naše zvanične preporuke, i dati su samo u informativne svrhe. Ukoliko želite da dodate proizvod, ili date vaše mišljenje o pravilima, molimo obratite se GitHub-u.",
"loading": "Učitavanje...",
@@ -128,11 +135,103 @@
"loading-error-try-again-later": "Nije moguće učitati podatke. Pokušajte ponovo kasnije.",
"logo": "logo",
"mainnet-ethereum": "Glavna mreža Ethereum",
- "more": "More",
- "nav-developers": "Programeri",
+ "merge": "Spajanje",
+ "nav-about-description": "Javni projekt otvorenog koda za zajednicu Ethereum",
+ "nav-advanced-description": "Naučite složenije teme",
+ "nav-basics-description": "Naučite osnove Ethereuma",
+ "nav-basics-label": "Osnove",
+ "nav-bridges-description": "Web3 je prerastao u ekosistem primarnih L1 blok-lanaca i L2 skalirajućih rješenja",
+ "nav-builders-home-description": "Priručnik za Ethereum – napravili graditelji za graditelje",
+ "nav-builders-home-label": "Dom graditelja",
+ "nav-contribute-description": "Ako želite pomoći, ovo su smjernice",
+ "nav-contribute-label": "Doprinos platformi ethereum.org",
+ "nav-dao-description": "Zajednice u vlasništvu člana bez centraliziranog tijela",
+ "nav-dapps-description": "Istražite bogati ekosistem aplikacija koje koriste Ethereum",
+ "nav-defi-description": "Globalna, otvorena alternativa tradicionalnom finansijskom tržištu",
+ "nav-desci-description": "Globalna, otvorena alternativa trenutnom naučnom sistemu",
+ "nav-desoc-description": "Platforme na bazi blok-lanaca za socijalnu interakciju i kreiranje sadržaja",
"nav-developers-docs": "Dokumenti za programere",
+ "nav-developers": "Programeri",
+ "nav-did-description": "Izdajte i posjedujte vlastite decentralizirane identifikatore",
+ "nav-docs-description": "Dokumenti koji će vam pomoći da razumijete i gradite uz Ethereum",
+ "nav-docs-design-description": "Opis jedinstvenih izazova u dizajniranju web3, najbolje prakse i uvidi korisničkog istraživanja",
+ "nav-docs-design-label": "Osnove dizajniranja UX/UI",
+ "nav-docs-foundation-description": "Ključne osnove za razvoj na Ethereumu",
+ "nav-docs-overview-description": "Vaš dom za dokumente razvojnih programera",
+ "nav-docs-stack-description": "Naučite sve detalje Ethereum stacka",
+ "nav-eip-description": "Standardi koji određuju nove funkcije ili procese",
+ "nav-eip-label": "EIP-ovi - Prijedlozi za poboljšanje Ethereuma",
+ "nav-emerging-description": "Upoznajte druge novije slučajeve upotrebe za Ethereum",
+ "nav-emerging-label": "Primjeri korštenja u nastajanju",
+ "nav-enterprise-description": "Poslovne aplikacije za Ethereum",
+ "nav-ethereum-org-description": "Ovu web aplikaciju pokreće zajednica – pridružite nam se i doprinesite i vi",
+ "nav-ethereum-wallets-description": "Aplikacija za interakciju s vašim Ethereum računom",
+ "nav-events-description": "Decentralizacija i sloboda za učešće svima",
+ "nav-events-irl-description": "Svakog mjeseca odvijaju se lični i online vodeći događaji na Ethereumu",
+ "nav-events-label": "Zajednice i događaji",
+ "nav-events-online-description": "Stodine hiljada entuzijasta za Ethereum stvaraju ove online zajednice",
+ "nav-find-wallet-description": "Novčanici vam omogućavaju da koristite kriptovalute",
+ "nav-find-wallet-label": "Odaberite svoj novčanik",
+ "nav-gas-fees-description": "Kako se izračunavaju naknade za ETH transakcije",
+ "nav-get-eth-description": "Treba vam ether (ETH) za upotrebu Ethereum aplikacija",
+ "nav-get-started-description": "Vaši prvi koraci prilikom upotrebe Ethereuma",
+ "nav-governance-description": "Proces uključen u nadogradnju Ethereum protokola",
+ "nav-grants-description": "Prilagođena lista naše zajednice na projektima koji pružaju programe finansiranja",
+ "nav-guide-create-account-description": "Svako u bilo kojem trenutku može besplatno kreirati Ethereum račun uz aplikaciju novčanika",
+ "nav-guide-create-account-label": "Kako napraviti Ethereum račun",
+ "nav-guide-revoke-access-description": "Zaštitite se prilikom interakcije s pametnim ugovorima i aplikacijama u Ethereum ekosistemu",
+ "nav-guide-revoke-access-label": "Kako ponišitit pristup pametnom ugovoru",
+ "nav-guide-use-wallet-description": "Naučite kako da se rukovodite svim osnovnim funkcijama novčanika",
+ "nav-guide-use-wallet-label": "Kako koristiti novčanik",
+ "nav-guides-description": "Praktični detaljni vodiči da vam pomognu da započnete",
+ "nav-guides-label": "Vodiči za početak korištenja",
+ "nav-history-description": "Vremenska linija svih glavnih forkova i ažuriranja",
+ "nav-history-label": "Tehnička historija Ethereuma",
+ "nav-layer-2-description": "Jeftinije i brže transakcije za Ethereum",
+ "nav-learn-by-coding-description": "Alati koji vam pomažu da eksperimentirate s Ethereumom",
+ "nav-local-env-description": "Odaberite i postavite svoj Ethereum razvojni stog",
+ "nav-mainnet-description": "Poslovne aplikacije blok-lanca se mogu izgraditi na javnom Ethereum Mainnetu",
+ "nav-nft-description": "Način da se bilo šta jedinstveno prikaže kao imovina zasnovana na Etheriumu",
+ "nav-open-research-description": "Jedna od primarnih snaga Ethereuma je njegovna aktivna istraživačka zajednica",
+ "nav-open-research-label": "Otvori istraživanje",
+ "nav-overview-description": "Sve o edukaciji o Ethereumu",
+ "nav-participate-overview-description": "Pregled učešća",
"nav-primary": "Primarni",
- "nft-page": "Nezamenljivi tokeni (NFT)",
+ "nav-quizzes-description": "Otkrijte koliko dobro razumijete Ethereum i kriptovalute",
+ "nav-quizzes-label": "Testirajte svoje znanje",
+ "nav-refi-description": "Alternativna verzija ekonomskog sistema o regenerativnim principima",
+ "nav-research-description": "Procesi koji se koriste za poboljšanje Ethereuma",
+ "nav-research-label": "Istraživanje i razvoj",
+ "nav-roadmap-description": "Put ka skalabilnijem, sigurnijem i održivijem Ethereumu",
+ "nav-roadmap-future-description": "Učvršćivanje Ethereuma kao čvrste i decentralizirane mreže",
+ "nav-roadmap-future-label": "Osiguranje za budućnost",
+ "nav-roadmap-label": "Mapa puta",
+ "nav-roadmap-scaling-description": "Ažuriranje mreže ka dodatnom smanjenju troškova i brzine transakcije",
+ "nav-roadmap-security-description": "Osiguranje otpornosti Ethereuma od svih napada u budućnosti",
+ "nav-roadmap-security-label": "Poboljšana sigurnost",
+ "nav-roadmap-ux-description": "Korištenje Ethereuma treba biti pojednostavljeno",
+ "nav-run-a-node-description": "Postanite potpuno uspješni dok pomažete zaštititi mrežu",
+ "nav-security-description": "Naučite najbolje prakse prilikom korištenja kriptovalute",
+ "nav-smart-contracts-description": "Osnovni gradivni blokovi Ethereum ekosistema",
+ "nav-stablecoins-description": "Stabilne kritpovalute (stablecoins) su Ethereum tokeni koji trebaju ostati pri fiksnoj vrijednosti",
+ "nav-stake-description": "Zaradite nagrade dok osiguravate Ethereum",
+ "nav-stake-label": "Ulog",
+ "nav-staking-home-description": "Pregled različitih opcija stavljanja uloga",
+ "nav-staking-pool-description": "Stavite ulog i zaradite nagrade s bilo kojim iznosom ETH-a udruživanjem s drugima",
+ "nav-staking-pool-label": "Udruženo ulaganje",
+ "nav-staking-saas-label": "Stavljanje uloga uz servis",
+ "nav-staking-solo-label": "Samostalno ulaganje",
+ "nav-start-building-description": "Korisne informacije za novake",
+ "nav-translation-program-description": "Zajednički trud da se ethereum.org prevede na sve jezike",
+ "nav-tutorials-description": "Prilagođena lista tutorijala za zajednicu",
+ "nav-use-cases-description": "Otkrijte različite ideje upotrebe Ethereuma",
+ "nav-what-is-ether-description": "Valuta Ethereum aplikacija",
+ "nav-what-is-ethereum-description": "Saznajte zašto je Ethereum poseban",
+ "nav-what-is-web3-label": "Šta je Web3?",
+ "nav-what-is-web3-description": "Alternativa centraliziranim monopolima koji diktiraju pravila",
+ "nav-whitepaper-description": "Originalni dokument o Ethereumu koji je napisao Vitalik Buterin 2014. godine",
+ "nav-zkp-description": "Način dokazivanja valjanost tvrdnje bez otkrivanja same tvrdnje",
+ "nft-page": "NFT - Nezamenljivi tokeni",
"nfts": "NFT",
"no": "Ne",
"on-this-page": "Na ovoj stranici",
@@ -140,6 +239,7 @@
"page-developers-aria-label": "Sadržaj za programere",
"page-index-meta-title": "Početna",
"page-last-updated": "Stranica poslednji put ažurirana",
+ "participate-menu": "Meni učešća",
"pbs": "Razdvoj između predlagača i graditelja",
"pools": "Udruženo ulaganje",
"privacy-policy": "Pravila o privatnosti",
@@ -150,13 +250,11 @@
"refresh": "Molimo osvežite stranicu.",
"return-home": "vrati se na početnu stranicu",
"roadmap": "Plan razvoja Ethereum-a",
+ "research": "Istraživanje",
+ "research-menu": "Meni istraživanja",
"resources": "Pomoćna sredstva za prevođenje",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
"rollup-component-developer-docs": "Dokumenti za programere",
"rollup-component-technology-and-risk-summary": "Sažetak o tehnologiji i riziku",
- "scaling": "Scaling",
"saas": "Ulaganje kao servis",
"search": "Pretraži",
"search-ethereum-org": "Pretraži ethereum.org",
@@ -167,19 +265,13 @@
"single-slot-finality": "Single-slot zaključenje",
"statelessness": "Bezstanje",
"see-contributors": "Smotri saradnike",
- "set-up-local-env": "Set up local environment",
- "sharding": "Sharding",
"show-all": "Izloži sve",
"show-less": "Izloži manje",
"site-description": "Ethereum je globalna, decentralizovana platforma za novac i nove vrste aplikacija. Na Ethereum-u možete programirati kod koji kontroliše novac i graditi aplikacije dostupne bilo gdje u svijetu.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Skoči na glavni sadržaj",
- "smart-contracts": "Smart contracts",
- "stablecoins": "Stablecoins",
"stake-eth": "Uložite ETH",
"staking": "Ulaganje",
"start-here": "Počni ovdje",
- "style-guide": "Style guide",
"solo": "Samostalno ulaganje",
"terms-of-use": "Uslovi korištenja",
"translation-banner-body-new": "Ovu stranici je na engleskom jer je još nismo preveli. Pomozite nam da prevedemo ovaj sadržaj.",
@@ -191,17 +283,18 @@
"translation-banner-no-bugs-title": "Ovo nije greška!",
"translation-banner-no-bugs-content": "Ova stranica nije prevedena. Namjerno smo je ostavili na engleskom za sada.",
"translation-banner-no-bugs-dont-show-again": "Ne prikazuj ponovo",
+ "translation-program": "Program prevođenja",
"try-using-search": "Pokušajte koristiti funkciju pretrage da nađete to što vam treba",
"tutorials": "Praktični vodiči",
"up": "Gore",
+ "use": "Korištenje",
"use-ethereum": "Koristi Ethereum",
"use-ethereum-menu": "Koristi Ethereum sadržaj",
- "user-experience": "User experience",
+ "use-menu": "Meni korištenja",
"verkle-trees": "Verkle stabla",
"wallets": "Novčanici",
"we-couldnt-find-that-page": "Nismo našli tu stranicu",
"web3": "Šta je Web3?",
- "web3-title": "Web3",
"website-last-updated": "Posljednje ažuriranje stranice",
"what-is-ether": "Šta je ether (ETH)?",
"what-is-ethereum": "Šta je Ethereum?",
diff --git a/src/intl/bs/page-languages.json b/src/intl/bs/page-languages.json
new file mode 100644
index 00000000000..cc36a54c600
--- /dev/null
+++ b/src/intl/bs/page-languages.json
@@ -0,0 +1,8 @@
+{
+ "page-languages-filter-label": "Lista filtera",
+ "page-languages-filter-placeholder": "Upisati u filter",
+ "page-languages-browser-default": "Zadani preglednik",
+ "page-languages-translated": "prevedeno",
+ "page-languages-words": "riječi",
+ "page-languages-recruit-community": "Pomozite nam da prevedemo ethereum.org."
+}
diff --git a/src/intl/ca/common.json b/src/intl/ca/common.json
index 75496a9eeb8..80b095fd654 100644
--- a/src/intl/ca/common.json
+++ b/src/intl/ca/common.json
@@ -1,17 +1,30 @@
{
- "account-abstraction": "Abstracció del compte",
"about-ethereum-org": "Quant a ethereum.org",
"about-us": "Sobre nosaltres",
+ "adding-desci-projects": "Afegint Projectes Desci",
+ "adding-developer-tools": "Afegint Eines per a Desenvolupadors",
+ "adding-exchanges": "Afegint Cases de Canvi",
+ "adding-glossary-terms": "Afegint termes al glossari",
+ "adding-layer-2s": "Afegint Capa 2",
+ "adding-staking-products": "Afegint Productes d'Apilament",
+ "adding-wallets": "Afegint Carteres",
+ "account-abstraction": "Abstracció del compte",
+ "acknowledgements": "Agraïments",
"aria-toggle-search-button": "Mostrar el botó de cerca",
"aria-toggle-menu-button": "Mostrar el botó del menú",
"beacon-chain": "La Cadena de Balisa",
"bridges": "Ponts que interconnecten les Blockchains",
+ "bug-bounty": "Recompensa d'error",
+ "build": "Construïu",
+ "build-menu": "Menú de construcció",
"clear": "Netejar",
"close": "Tancar",
"community": "Comunitat",
"community-hub": "Centre comunitari",
"community-menu": "Menú Comunitat",
"contact": "Contacte",
+ "content-buckets": "Cubells de contingut",
+ "content-resources": "Recursos de contingut",
"content-standardization": "Estandardització de contingut",
"contributing": "Contribucions",
"contributors": "Col·laboradors",
@@ -20,14 +33,17 @@
"copied": "Copiat",
"copy": "Copiar",
"danksharding": "Danksharding",
- "dao-page": "Organitzacions autonomes decentralitzades (DAO)",
+ "dao-page": "DAO - Organitzacions autonomes decentralitzades",
"dark-mode": "Fosc",
"data-provided-by": "Font de la informació:",
- "decentralized-applications-dapps": "Aplicacions descentralitzades (dapps)",
+ "decentralized-applications-dapps": "Dapps - Aplicacions descentralitzades",
"decentralized-identity": "Identitat descentralitzada",
"decentralized-social-networks": "Xarxes socials descentralitzades",
- "decentralized-science": "Ciència descentralitzada (DeSci)",
- "defi-page": "Finança decentralitzada (FiDe)",
+ "decentralized-science": "DeSci - Ciència descentralitzada",
+ "description": "Descripció per a l'element de navegació",
+ "defi-page": "FiDe - Finança decentralitzada",
+ "design": "Disseny",
+ "design-principles": "Normes de disseny",
"devcon": "Devcon",
"developers": "Desenvolupadors",
"developers-home": "Pàgina d'inici per a desenvolupadors",
@@ -63,7 +79,7 @@
"ethereum-bug-bounty": "Veure el programa de recompenses per errors",
"consensus-when-shipping": "Quan es llençarà?",
"ethereum-upgrades": "Millores d'Ethereum",
- "ethereum-brand-assets": "Actius de la marca Ethereum",
+ "ethereum-brand-assets": "Actius de marca d'Ethereum",
"ethereum-online": "Comunitats en línia",
"ethereum-events": "Esdeveniments d'Ethereum",
"ethereum-foundation": "Fundació Ethereum",
@@ -75,7 +91,7 @@
"ethereum-protocol": "Protocol d'Ethereum",
"ethereum-security": "Seguretat i prevenció d'estafes a Ethereum",
"ethereum-support": "Assitència d'Ethereum",
- "ethereum-wallets": "Carteres Ethereum",
+ "ethereum-wallets": "Carteres d'Ethereum",
"ethereum-whitepaper": "Informe d'Ethereum",
"feedback-widget-prompt": "Heu trobat útil aquesta pàgina?",
"feedback-card-prompt-page": "Ha estat útil aquesta pàgina?",
@@ -86,7 +102,7 @@
"feedback-widget-thank-you-subtitle-ext": "Si necessiteu ajuda, podeu connectar-vos a la nostra comunitat en el nostre Discord.",
"feedback-widget-thank-you-timing": "2 - 3 minuts",
"feedback-widget-thank-you-cta": "Obrir l'enquesta breu",
- "find-wallet": "Trobar una cartera",
+ "find-wallet": "Trobeu una cartera",
"future-proofing": "Pensant en el futur",
"get-eth": "Aconseguiu ETH",
"get-involved": "Participeu",
@@ -94,11 +110,10 @@
"grants": "Subvencions",
"grant-programs": "Programes de subvencions per a l'ecosistema",
"guides": "Guies",
- "guides-hub": "Hub de les guies",
+ "guides-hub": "Guies pràctiques",
"history-of-ethereum": "Història d'Ethereum",
"home": "Inici",
"how-ethereum-works": "Com funciona Ethereum",
- "how-to-register-an-ethereum-account": "Com \"registrar\" un compte d'Ethereum",
"how-to-revoke-token-access": "Com revocar l'accés a contractes intel·ligents als vostres fons criptogràfics",
"how-to-swap-tokens": "Com intercanviar tokens",
"how-to-use-a-bridge": "Com pontar tokens a la Layer 2",
@@ -128,18 +143,119 @@
"loading-error-try-again-later": "No es poden carregar les dades. Torna-ho a provar més tard.",
"logo": "logotip",
"mainnet-ethereum": "Xarxa principal d'Ethereum",
+ "merge": "Fusionar",
"more": "Més",
- "nav-developers": "Desenvolupadors",
+ "nav-about-description": "Un projecte públic i de codi obert per a la comunitat Ethereum",
+ "nav-advanced-description": "Coneixeu els temes més complexos",
+ "nav-advanced-label": "Avançat",
+ "nav-basics-description": "Compreneu les bases de Ethereum",
+ "nav-basics-label": "Bàsics",
+ "nav-bridges-description": "Web3 ha evolucionat cap a un ecosistema de cadenes de blocs primàries L1 i solucions d'escalat L2",
+ "nav-builders-home-description": "Manual del desenvolupador per a Ethereum; de desenvolupadors, per a desenvolupadors",
+ "nav-builders-home-label": "Inici del constructor",
+ "nav-contribute-description": "Si voleu ajudar, això us guiarà",
+ "nav-contribute-label": "Col·laborar amb ethereum.org",
+ "nav-dao-description": "Comunitats de propietat dels membres sense autoritat centralitzada",
+ "nav-dapps-description": "Exploreu un ric ecosistema d'aplicacions usant Ethereum",
+ "nav-defi-description": "Una alternativa global i oberta al mercat financer tradicional",
+ "nav-desci-description": "Una alternativa global i oberta al sistema científic actual",
+ "nav-desoc-description": "Plataformes basades en cadenes de blocs per a la interacció social i la creació de contingut",
"nav-developers-docs": "Documents per a desenvolupadors",
+ "nav-developers": "Desenvolupadors",
+ "nav-did-description": "Emeteu i posseïu els vostres identificadors descentralitzats únics",
+ "nav-docs-description": "Documents per a ajudar-vos a entendre i construir amb Ethereum",
+ "nav-docs-design-description": "Descripció dels desafiaments de disseny, les millors pràctiques i els coneixements de recerca d'usuaris únics de web3",
+ "nav-docs-design-label": "Fonaments del disseny UX/UI",
+ "nav-docs-foundation-description": "Fonaments bàsics per a desenvolupar en Ethereum",
+ "nav-docs-foundation-label": "Temes bàsics",
+ "nav-docs-overview-description": "Lloc on trobareu la documentació de desenvolupadors",
+ "nav-docs-stack-description": "Compreneu tots els detalls de la pila Ethereum",
+ "nav-docs-stack-label": "Pila Ethereum",
+ "nav-eip-description": "Estàndards que especifiquen noves característiques o processos",
+ "nav-eip-label": "EIP - Propostes de millora d'Ethereum",
+ "nav-emerging-description": "Coneixeu altres casos d'ús més nous per a Ethereum",
+ "nav-enterprise-description": "Aplicacions empresarials per a Ethereum",
+ "nav-ethereum-org-description": "Aquest lloc web l'impulsa la comunitat, uniu-vos a nosaltres i contribuïu també",
+ "nav-ethereum-wallets-description": "Una aplicació per a interactuar amb el vostre compte de Ethereum",
+ "nav-events-description": "Descentralització i llibertat de participació per a tothom",
+ "nav-events-irl-description": "Cada mes hi ha grans esdeveniments Ethereum en persona i en línia",
+ "nav-events-label": "Comunitats i esdeveniments",
+ "nav-events-online-description": "Centenars de milers d'entusiastes de Ethereum organitzen aquestes comunitats en línia",
+ "nav-find-wallet-description": "Les carteres us permeten utilitzar criptomonedes",
+ "nav-find-wallet-label": "Trieu la vostra cartera",
+ "nav-gas-fees-description": "Com es calculen les taxes per transacció ETH?",
+ "nav-get-eth-description": "Necessiteu ether (ETH) per a usar aplicacions Ethereum",
+ "nav-get-started-description": "Primers passos per a usar Ethereum",
+ "nav-governance-description": "El procés d'actualització del protocol Ethereum",
+ "nav-governance-label": "Governança",
+ "nav-grants-description": "Una llista verificada per la nostra comunitat sobre projectes que ofereixen programes de finançament de subvencions",
+ "nav-guide-create-account-description": "Qualsevol pot crear un compte de Ethereum en qualsevol moment, de manera gratuïta amb una aplicació de cartera",
+ "nav-guide-revoke-access-description": "Mantingueu-vos segur quan interactueu amb contractes i aplicacions intel·ligents en l'ecosistema de Ethereum",
+ "nav-guide-revoke-access-label": "Com revocar l'accés al contracte intel·ligent",
+ "nav-guide-use-wallet-description": "Apreneu a utilitzar totes les funcions bàsiques d'una cartera",
+ "nav-guide-use-wallet-label": "Com utilitzar la cartera",
+ "nav-guides-description": "Guies pràctiques pas a pas per a ajudar-vos a començar",
+ "nav-guides-label": "Guies pràctiques",
+ "nav-history-description": "Una cronologia de totes les bifurcacions i actualitzacions principals",
+ "nav-history-label": "Història tècnica de Ethereum",
+ "nav-layer-2-description": "Transaccions més barates i ràpides per a Ethereum",
+ "nav-learn-by-coding-description": "Eines que us ajuden a experimentar amb Ethereum",
+ "nav-local-env-description": "Trieu i configureu la vostra pila de desenvolupament Ethereum",
+ "nav-mainnet-description": "Les aplicacions de cadena de blocs empresarials es poden construir en la xarxa Principal pública de Ethereum",
+ "nav-nft-description": "Una forma de representar quelcom únic com ara un actiu basat en Ethereum",
+ "nav-open-research-description": "Una de les principals fortaleses de Ethereum és la seva comunitat de recerca activa",
+ "nav-open-research-label": "Obrir recerca",
+ "nav-overview-description": "Tot Ethereum educació",
+ "nav-overview-label": "Resum",
+ "nav-participate-overview-description": "Informació general sobre com participar",
"nav-primary": "Primari",
- "nft-page": "Tokens no fungibles (NFT)",
+ "nav-private-description": "Recursos de desenvolupador per a empreses privades Ethereum",
+ "nav-quizzes-description": "Descobriu el bé que enteneu Ethereum i les criptomonedes",
+ "nav-quizzes-label": "Poseu a prova els vostres coneixements",
+ "nav-refi-description": "Un sistema econòmic alternatiu basat en principis regeneratius",
+ "nav-research-description": "Processos utilitzats per a millorar Ethereum",
+ "nav-research-label": "Recerca i desenvolupament",
+ "nav-roadmap-description": "El camí cap a una major escalabilitat, seguretat i sostenibilitat per a Ethereum",
+ "nav-roadmap-future-description": "Solidificació de Ethereum com una xarxa robusta i descentralitzada",
+ "nav-roadmap-future-label": "Pensant en el futur",
+ "nav-roadmap-label": "Full de ruta",
+ "nav-roadmap-scaling-description": "Actualitzacions de xarxa per a reduir encara més els costos de transacció i la velocitat",
+ "nav-roadmap-scaling-label": "Transaccions més barates",
+ "nav-roadmap-security-description": "Assegurar-se que Ethereum es manté resistent a tota mena d'atacs en el futur",
+ "nav-roadmap-security-label": "Seguretat millorada",
+ "nav-roadmap-ux-description": "L'ús de Ethereum ha de simplificar-se",
+ "nav-run-a-node-description": "Esdeveniu plenament sobirans mentre ajudeu a protegir la xarxa",
+ "nav-security-description": "Apreneu les millors pràctiques en usar criptomonedes",
+ "nav-smart-contracts-description": "Els pilars fonamentals de l'ecosistema Ethereum",
+ "nav-stablecoins-description": "Les monedes estables són tokens d'Ethereum dissenyades per mantenir un valor fix",
+ "nav-stake-description": "Guanyeu recompenses per fer Ethereum més segur",
+ "nav-stake-label": "Posar diners",
+ "nav-staking-home-description": "Una visió general de les diferents opcions d'apilament",
+ "nav-staking-home-label": "Inici de l'apilament",
+ "nav-staking-pool-description": "Poseu diners i guanyeu recompenses amb qualsevol quantitat d'ETH unint-vos amb altres usuaris",
+ "nav-staking-pool-label": "Apilament en grup",
+ "nav-staking-saas-label": "Apilament amb un servei",
+ "nav-staking-solo-label": "Apilament en solitari",
+ "nav-start-building-description": "Informació útil per als nouvinguts",
+ "nav-translation-program-description": "Un esforç de col·laboració per a traduir ethereum.org a tots els idiomes",
+ "nav-tutorials-description": "Llista verificada de tutorials de la comunitat",
+ "nav-use-cases-description": "Descobriu diferents idees per a l'ús de Ethereum",
+ "nav-what-is-ether-description": "La moneda de les aplicacions d'Ethereum",
+ "nav-what-is-ethereum-description": "Comprendre el que fa que Ethereum sigui especial",
+ "nav-what-is-web3-label": "Què és la Web3?",
+ "nav-what-is-web3-description": "Una alternativa als monopolis centralitzats que dicten les regles",
+ "nav-whitepaper-description": "L'informe tècnic original de Ethereum escrit per Vitalik Buterin en 2014",
+ "nav-zkp-description": "Una manera de provar la validesa d'una declaració sense revelar la pròpia declaració",
+ "nft-page": "NFT - Tokens no fungibles",
"nfts": "Els NFT",
"no": "No",
"on-this-page": "En aquesta pàgina",
"open-research": "Obrir recerca",
- "page-developers-aria-label": "Menú de Desenvolupadors",
+ "page-developers-aria-label": "Menú per a desenvolupadors",
"page-index-meta-title": "Inici",
"page-last-updated": "Última actualització de la pàgina",
+ "participate": "Participeu",
+ "participate-menu": "Menú de participació",
"pbs": "Separació proposant-constructor",
"pools": "Apilament en grup",
"privacy-policy": "Política de privadesa",
@@ -150,13 +266,15 @@
"refresh": "Actualitzeu la pàgina.",
"return-home": "Retorna a l’inici",
"roadmap": "Full de ruta d'Ethereum",
+ "research": "Recercra",
+ "research-menu": "Menú de recerca",
"resources": "Recursos de traducció",
- "regenerative-finance": "Finances regeneratives (ReFi)",
+ "regenerative-finance": "ReFi - Finances regeneratives",
"run-a-node": "Executeu un node",
"rollup-component-website": "Pàgina web",
"rollup-component-developer-docs": "Documents per a desenvolupadors",
"rollup-component-technology-and-risk-summary": "Resum de la tecnologia i el seu risc",
- "scaling": "Escalant",
+ "scaling": "Escalat",
"saas": "Servei d'apilament",
"search": "Cercar",
"search-ethereum-org": "Cerca a ethereum.org",
@@ -164,10 +282,11 @@
"search-box-blank-state-text": "Cerqueu en altres llocs!",
"search-eth-address": "Això sembla una adreça d’Ethereum. No proporcionem dades específiques a adreces. Proveu de cercar-ho en un explorador de blocs com",
"search-no-results": "No s'han trobat resultats per a la vostra cerca",
+ "security": "Seguretat",
"single-slot-finality": "Finalitat d'una sola ranura",
"statelessness": "Apatrídia",
"see-contributors": "Mostra col·laboradors",
- "set-up-local-env": "Configurar l'entorn local",
+ "set-up-local-env": "Configureu l'entorn local",
"sharding": "Fragmentació",
"show-all": "Mostrar-ho tot",
"show-less": "Mostra'n menys",
@@ -179,8 +298,8 @@
"stake-eth": "Aposteu ETH",
"staking": "Apilament",
"start-here": "Comença aquí",
- "style-guide": "Style guide",
"solo": "Apilament en solitari",
+ "support": "Suport",
"terms-of-use": "Condicions d'ús",
"translation-banner-body-new": "Esteu veient aquest pàgina en anglès perquè encara no l'hem traduïda. Ajudeu-nos a traduir aquest contingut.",
"translation-banner-body-update": "Hi ha una nova versió d'aquesta pàgina, però actualment només està en anglès. Ajudeu-nos a traduir l'última versió.",
@@ -191,11 +310,14 @@
"translation-banner-no-bugs-title": "No conté errors!",
"translation-banner-no-bugs-content": "Aquesta pàgina no està essent traduïda. De moment hem deixat aquesta pàgina intencionadament en anglès.",
"translation-banner-no-bugs-dont-show-again": "No ho mostris de nou",
+ "translation-program": "Programa de traducció",
"try-using-search": "Proveu d'utilitzar la lupa per trobar el que esteu buscant o",
"tutorials": "Tutorials",
"up": "Amunt",
+ "use": "Utilitzar",
"use-ethereum": "Utilitzar Ethereum",
"use-ethereum-menu": "Utilitzar menú d'Ethereum",
+ "use-menu": "Menú d'ús",
"user-experience": "Experiència d'usuari",
"verkle-trees": "Arbres de Verkle",
"wallets": "Carteres",
diff --git a/src/intl/ca/page-dapps.json b/src/intl/ca/page-dapps.json
index d8774453ef6..1582b439de1 100644
--- a/src/intl/ca/page-dapps.json
+++ b/src/intl/ca/page-dapps.json
@@ -81,7 +81,6 @@
"page-dapps-dapp-description-sablier": "Envieu diners en temps real.",
"page-dapps-dapp-description-superrare": "Compreu obres d'art digitals directament dels artistes o en mercats secundaris.",
"page-dapps-dapp-description-token-sets": "Estratègies d'inversió criptogràfiques que es reequilibren automàticament.",
- "page-dapps-dapp-description-tornado-cash": "Envieu transaccions anònimes dins d'Ethereum.",
"page-dapps-dapp-description-uniswap": "Intercanvieu tokens simplement o proporcioneu tokens per un percentatge de recompenses.",
"page-dapps-docklink-dapps": "Introducció a les dapps",
"page-dapps-docklink-smart-contracts": "Contractes intel·ligents",
@@ -191,7 +190,6 @@
"page-dapps-technology-description": "Aquestes són aplicacions centrades en eines de desenvolupament descentralitzat, la incorporació de sistemes criptoeconòmics a la tecnologia existent i la creació de mercats per al treball de desenvolupament de codi obert.",
"page-dapps-technology-title": "Tecnologia descentralitzada",
"page-dapps-token-sets-logo-alt": "Logotip de Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logotip de Tornado cash",
"page-dapps-uniswap-logo-alt": "Logotip d'Uniswapd",
"page-dapps-wallet-callout-button": "Trobeu una cartera",
"page-dapps-wallet-callout-description": "Les carteres també són dapps. Trobeu-ne una basada en les característiques que us convinguin.",
diff --git a/src/intl/ca/page-languages.json b/src/intl/ca/page-languages.json
index f93bfeb32d3..6d5db98b421 100644
--- a/src/intl/ca/page-languages.json
+++ b/src/intl/ca/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Voleu veure ethereum.org en un idioma diferent?",
"page-languages-want-more-link": "Programa de traducció",
"page-languages-want-more-paragraph": "Els traductors d'ethereum.org sempre tradueixen pàgines a tants idiomes com sigui possible. Per veure en què treballen ara mateix o per registrar-vos i unir-vos a ells, llegiu sobre el nostre",
- "page-languages-filter-placeholder": "Filtre",
+ "page-languages-filter-label": "Filtrar llista",
+ "page-languages-filter-placeholder": "Escriviu per a filtrar",
+ "page-languages-browser-default": "Navegador per defecte",
+ "page-languages-translated": "traduït",
+ "page-languages-words": "paraules",
+ "page-languages-recruit-community": "Ajudeu-nos a traduir ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Àrab",
"language-az": "Àzeri",
+ "langauge-be": "Bielorús",
"language-bg": "Búlgar",
"language-bn": "Bengalí",
+ "language-bs": "Bosnià",
"language-ca": "Català",
"language-cs": "Txec",
"language-da": "Danès",
@@ -27,9 +35,12 @@
"language-fi": "Finlandès",
"language-fr": "Francès",
"language-gl": "Gallec",
+ "language-gu": "Gujarati",
+ "language-he": "Hebreu",
"language-hi": "Hindi",
"language-hr": "Croata",
"language-hu": "Hongarès",
+ "language-hy-am": "Armeni",
"language-id": "Indonesi",
"language-ig": "Igbo",
"language-it": "Italià",
@@ -37,13 +48,16 @@
"language-ka": "Georgià",
"language-kk": "Kazakh",
"language-km": "Khmer",
+ "language-kn": "Kanarès",
"language-ko": "Coreà",
"language-lt": "Lituà",
"language-ml": "Malaiàlam",
"language-mr": "Maratí",
"language-ms": "Malai",
"language-nb": "Noruec",
+ "language-ne-np": "Nepalès",
"language-nl": "Holandès",
+ "language-pcm": "Pidgin nigerià",
"language-fil": "Filipí",
"language-pl": "Polonès",
"language-pt": "Portuguès",
@@ -55,9 +69,12 @@
"language-sl": "Eslovè",
"language-sr": "Serbi",
"language-sw": "Suahili",
+ "language-ta": "Tàmil",
"language-th": "Tailandès",
+ "language-tk": "Turcmeni",
"language-tr": "Turc",
"language-uk": "Ucrainès",
+ "language-ur": "Urdú",
"language-uz": "Uzbek",
"language-vi": "Vietnamita",
"language-zh": "Xinès simplificat",
diff --git a/src/intl/ca/page-stablecoins.json b/src/intl/ca/page-stablecoins.json
index c1f78282c1d..10f7fbe0488 100644
--- a/src/intl/ca/page-stablecoins.json
+++ b/src/intl/ca/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Font",
"page-stablecoins-bitcoin-pizza": "La pizza infame de Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "El 2010, algú va comprar 2 pizzes amb 10.000 bitcoins. En aquest moment, equivalien a uns 41 dòlars. En el mercat d'avui en dia, valen milions de dòlars. Hi ha diverses transaccions similars lamentables a la història d'Ethereum. Les monedes estables resolen aquest problema, així que podeu gaudir de la pizza i conservar els vostres ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Tauler de control & Educació",
"page-stablecoins-coin-price-change": "Canvi del preu de la moneda (últims 30 dies)",
"page-stablecoins-crypto-backed": "Recolzat per criptomoneda",
"page-stablecoins-crypto-backed-con-1": "Menys estable que les monedes estables recolzades per diner fiduciari.",
diff --git a/src/intl/cs/common.json b/src/intl/cs/common.json
index 05c7449a8d0..7f1b875b9d4 100644
--- a/src/intl/cs/common.json
+++ b/src/intl/cs/common.json
@@ -5,8 +5,6 @@
"adding-developer-tools": "Přidávání vývojářských nástrojů",
"adding-exchanges": "Přidávání směnáren",
"adding-glossary-terms": "Přidávání termínů do slovníku pojmů",
- "adding-layer-2s": "Adding Layer 2s",
- "adding-products": "Adding Products",
"adding-staking-products": "Přidávání produktů pro staking",
"adding-wallets": "Přidávání peněženek",
"account-abstraction": "Abstrakce účtu",
@@ -15,6 +13,9 @@
"aria-toggle-menu-button": "Zobrazit menu",
"beacon-chain": "Řetězová vazba",
"bridges": "Blockchainové mosty",
+ "bug-bounty": "Odměna za vyřešení chyby",
+ "build": "Vytváření",
+ "build-menu": "Nabídka Vytváření",
"clear": "Vymazat",
"close": "Zavřít",
"community": "Komunita",
@@ -31,14 +32,15 @@
"copied": "Zkopírováno",
"copy": "Kopírovat",
"danksharding": "Danksharding",
- "dao-page": "Decentralizované autonomní organizace (DAO)",
+ "dao-page": "DAO - Decentralizované autonomní organizace",
"dark-mode": "Tmavý",
"data-provided-by": "Zdroj dat:",
- "decentralized-applications-dapps": "Decentralizované aplikace (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentralizované aplikace",
"decentralized-identity": "Decentralizovaná identita",
"decentralized-social-networks": "Decentralizované sociální sítě",
"decentralized-science": "„Decentralizovaná věda“",
- "defi-page": "Decentralizované finance (DeFi)",
+ "description": "Popis položky navigace",
+ "defi-page": "DeFi - Decentralizované finance",
"design": "Design",
"design-principles": "Principy designu",
"devcon": "Devcon",
@@ -96,14 +98,14 @@
"feedback-card-prompt-tutorial": "Byl tento tutoriál užitečný?",
"feedback-widget-thank-you-title": "Děkujeme za Váš názor!",
"feedback-widget-thank-you-subtitle": "Tuto stránku můžete zlepšit zodpovězením několika otázek.",
- "feedback-widget-thank-you-subtitle-ext": "Pokud potřebuješ pomoct, můžeš se obrátit na komunitu na našem Discordu.",
+ "feedback-widget-thank-you-subtitle-ext": "Pokud potřebujete poradit, obraťte se na naší komunitu na našem Discordu.",
"feedback-widget-thank-you-timing": "2–3 minuty",
"feedback-widget-thank-you-cta": "Vyplnit krátkou anketu",
"find-wallet": "Najít peněženku",
"future-proofing": "Příprava na budoucnost",
"get-eth": "Získat ETH",
"get-involved": "Zapojit se",
- "get-started": "Začít",
+ "get-started": "Začínáme",
"grants": "Granty",
"grant-programs": "Grantové programy pro ekosystém",
"guides": "Příručky",
@@ -143,17 +145,120 @@
"mainnet-ethereum": "Mainnet Ethereum",
"merge": "Sloučení",
"more": "Více",
- "nav-developers": "Vývojáři",
+ "nav-about-description": "Veřejný opensourcový projekt pro komunitu Etherea",
+ "nav-advanced-description": "Seznamte se se složitějšími tématy",
+ "nav-advanced-label": "Další",
+ "nav-basics-description": "Pochopení základů Etherea",
+ "nav-basics-label": "Základy",
+ "nav-bridges-description": "Web3 se vyvinul v ekosystém primárních blockchainů L1 a řešení pro škálování L2",
+ "nav-builders-home-description": "Návod pro tvůrce na platformě Ethereum – od tvůrců, pro tvůrce",
+ "nav-builders-home-label": "Domovská stránka pro tvůrce",
+ "nav-contribute-description": "Pokud potřebujete pomoc, pomůže vám tento návod",
+ "nav-contribute-label": "Přispívání na ethereum.org",
+ "nav-dao-description": "Členské komunity bez centralizovaného vedení",
+ "nav-dapps-description": "Prozkoumejte bohatý ekosystém aplikací využívajících Ethereum",
+ "nav-defi-description": "Globální otevřená alternativa k tradičnímu finančnímu trhu",
+ "nav-desci-description": "Globální otevřená alternativa ke stávajícímu vědeckému systému",
+ "nav-desoc-description": "Platformy založené na blockchainu pro sociální interakci a tvorbu obsahu",
"nav-developers-docs": "Dokumentace pro vývojáře",
+ "nav-developers": "Vývojáři",
+ "nav-did-description": "Vydávání a vlastnictví jedinečných decentralizovaných identifikátorů",
+ "nav-docs-description": "Dokumenty, které vám pomohou porozumět Ethereu a vytvářet s ním",
+ "nav-docs-design-description": "Popis jedinečných výzev v oblasti designu webu3, osvědčených postupů a poznatků z výzkumu uživatelů",
+ "nav-docs-design-label": "Základy designu UX/UI",
+ "nav-docs-foundation-description": "Základy pro vývoj na platformě Ethereum",
+ "nav-docs-foundation-label": "Základní témata",
+ "nav-docs-overview-description": "Místo, kde najdete dokumenty pro vývojáře",
+ "nav-docs-stack-description": "Seznamte se se všemi podrobnostmi Ethereum zásobníku",
+ "nav-docs-stack-label": "Ethereum zásobník",
+ "nav-eip-description": "Normy, které specifikují nové funkce nebo postupy",
+ "nav-eip-label": "EIP - Návrhy na zlepšení platformy Ethereum",
+ "nav-emerging-description": "Seznamte se s dalšími novějšími případy použití Etherea",
+ "nav-emerging-label": "Rozvíjející se případy použití",
+ "nav-enterprise-description": "Obchodní aplikace pro Ethereum",
+ "nav-ethereum-org-description": "Tento web je spravován komunitou – přidejte se k nám a přispějte také.",
+ "nav-ethereum-wallets-description": "Aplikace pro interakci s vaším účtem Ethereum",
+ "nav-events-description": "Decentralizace a svoboda účasti pro každého",
+ "nav-events-irl-description": "Každý měsíc se konají významné prezenční i online události týkající se Etherea",
+ "nav-events-label": "Komunity a události",
+ "nav-events-online-description": "V těchto online komunitách se sdružují statisíce nadšenců do Etherea",
+ "nav-find-wallet-description": "Peněženky umožňují používat kryptoměny",
+ "nav-find-wallet-label": "Zvolte peněženku",
+ "nav-gas-fees-description": "Jak jsou počítány transakční poplatky ETH",
+ "nav-gas-fees-label": "Palivové poplatky",
+ "nav-get-eth-description": "K používání aplikací pro Ethereum potřebujete ether (ETH)",
+ "nav-get-started-description": "Vaše první kroky k používání Etherea",
+ "nav-governance-description": "Proces upgradu protokolu Ethereum",
+ "nav-governance-label": "Řízení",
+ "nav-grants-description": "Seznam projektů vybraných naší komunitou, které poskytují grantové programy",
+ "nav-guide-create-account-description": "Účet Ethereum si může kdykoli zdarma vytvořit kdokoli pomocí aplikace peněženky",
+ "nav-guide-create-account-label": "Jak si vytvořit Ethereum účet",
+ "nav-guide-revoke-access-description": "Chraňte se při interakci s chytrými kontrakty a aplikacemi v ekosystému Ethereum",
+ "nav-guide-revoke-access-label": "Jak odvolat přístup k chytrým kontraktům",
+ "nav-guide-use-wallet-description": "Naučte se ovládat všechny základní funkce peněženky",
+ "nav-guide-use-wallet-label": "Jak používat peněženku",
+ "nav-guides-description": "Praktické podrobné návody které vám pomohou začít",
+ "nav-guides-label": "Návody",
+ "nav-history-description": "Časová osa všech hlavních forků a aktualizací",
+ "nav-history-label": "Technická historie Etherea",
+ "nav-layer-2-description": "Levnější a rychlejší transakce s Ethereem",
+ "nav-learn-by-coding-description": "Nástroje, které vám pomohou experimentovat s Ethereem",
+ "nav-local-env-description": "Výběr a nastavení sady nástrojů pro vývoj s Ethereem",
+ "nav-mainnet-description": "Podnikové blockchainové aplikace lze vytvářet na veřejné hlavní síti Etherea",
+ "nav-nft-description": "Způsob, jak reprezentovat cokoliv unikátního jako majetek založený na Ethereu",
+ "nav-open-research-description": "Jednou z hlavních předností Etherea je jeho aktivní výzkumná komunita",
+ "nav-open-research-label": "Otevřený průzkum",
+ "nav-overview-description": "Materiály o všem, co se týká Etherea",
+ "nav-overview-label": "Přehled",
+ "nav-participate-overview-description": "Přehled o tom, jak se zapojit",
"nav-primary": "Hlavní",
- "nft-page": "Nezaměnitelné tokeny (NFT)",
+ "nav-quizzes-description": "Zjistěte, jak dobře rozumíte Ethereu a kryptoměnám",
+ "nav-quizzes-label": "Otestujte své znalosti",
+ "nav-refi-description": "Alternativní ekonomický systém postavený na regenerativních principech",
+ "nav-research-description": "Procesy používané k vylepšování Etherea",
+ "nav-research-label": "Výzkum a vývoj",
+ "nav-roadmap-description": "Cesta Etherea k větší škálovatelnosti, bezpečnosti a udržitelnosti",
+ "nav-roadmap-future-description": "Ustálení Etherea jako robustní a decentralizované sítě",
+ "nav-roadmap-future-label": "Příprava na budoucnost",
+ "nav-roadmap-label": "Plán postupu",
+ "nav-roadmap-scaling-description": "Aktualizace sítě ve snaze o další snížení transakčních nákladů a zvýšení rychlosti",
+ "nav-roadmap-security-description": "Zajištění odolnosti Etherea vůči všem druhům útoků i do budoucna",
+ "nav-roadmap-security-label": "Vylepšené zabezpečení",
+ "nav-roadmap-ux-description": "Používání Etherea je třeba zjednodušit",
+ "nav-run-a-node-description": "Získejte nezávislost a zároveň pomáhejte zabezpečit síť",
+ "nav-security-description": "Naučte se osvědčené postupy při používání kryptoměn",
+ "nav-smart-contracts-description": "Základní stavební kameny ekosystému Ethereum",
+ "nav-stablecoins-description": "Stablecoiny jsou tokeny Etherea navržené tak, aby si zachovaly pevnou hodnotu",
+ "nav-stake-description": "Dostávejte odměny za zajištění Etherea",
+ "nav-stake-label": "Podíl",
+ "nav-staking-home-description": "Přehled různých možností uzamčení",
+ "nav-staking-home-label": "Domov stakingu",
+ "nav-staking-pool-description": "Spojte síly s ostatními, vkládejte libovolné částky ETH a dostávejte odměny",
+ "nav-staking-pool-label": "Sdružené uzamčení",
+ "nav-staking-saas-description": "Operátoři uzlů třetích stran zajišťují provoz vašeho klienta validátoru",
+ "nav-staking-saas-label": "Uzamčení pomocí služby",
+ "nav-staking-solo-description": "Spusťte domácí hardware a osobně přidejte k zabezpečení a decentralizaci sítě Ethereum",
+ "nav-staking-solo-label": "Samostatné uzamčení",
+ "nav-start-building-description": "Užitečné informace pro nováčky",
+ "nav-translation-program-description": "Společné úsilí o překlad ethereum.org do všech jazyků",
+ "nav-tutorials-description": "Seznam vybraných komunitních výukových programů",
+ "nav-use-cases-description": "Objevte různé nápady na využití Etherea",
+ "nav-what-is-ether-description": "Měna aplikací Ethereum",
+ "nav-what-is-ethereum-description": "Zjistěte, čím je Ethereum výjimečné",
+ "nav-what-is-web3-label": "Co je Web3?",
+ "nav-what-is-web3-description": "Alternativa k centralizovaným monopolům diktujícím pravidla",
+ "nav-whitepaper-description": "Původní bílá kniha Etherea vypracovaná Vitalikem Buterinem v roce 2014",
+ "nav-zkp-description": "Způsob, jak dokázat platnost tvrzení, aniž by bylo nutné odhalit samotné tvrzení",
+ "nft-page": "NFT - Nezaměnitelné tokeny",
"nfts": "NFT",
"no": "Ne",
"on-this-page": "Na této stránce",
"open-research": "Otevřený průzkum",
- "page-developers-aria-label": "Menu vývojáře",
+ "page-developers-aria-label": "Nabídka pro vývojáře",
"page-index-meta-title": "Domů",
"page-last-updated": "Stránka naposledy aktualizována",
+ "participate": "Jak se zapojit",
+ "participate-menu": "Nabídka Zapojte se",
"pbs": "Oddělení navrhovatelů od sestavovatelů",
"pools": "Sdružené uzamčení",
"privacy-policy": "Zásady ochrany osobních údajů",
@@ -164,8 +269,10 @@
"refresh": "Prosím obnovte stránku.",
"return-home": "zpět na hlavní stránku",
"roadmap": "Plán Etherea",
+ "research": "Výzkum",
+ "research-menu": "Nabídka Výzkum",
"resources": "Zdroje překladu",
- "regenerative-finance": "Regenerativní finance (ReFi)",
+ "regenerative-finance": "ReFi - Regenerativní finance",
"run-a-node": "Spustit uzel",
"rollup-component-website": "Web",
"rollup-component-developer-docs": "Dokumentace pro vývojáře",
@@ -187,14 +294,12 @@
"show-all": "Zobrazit vše",
"show-less": "Zobrazit méně",
"site-description": "Ethereum je celosvětová, decentralizovaná platforma pro peníze a nové druhy aplikací. Na platformě Ethereum můžeš napsat kód pro správu peněz a vytvářet aplikace přístupné odkudkoli na světě.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Přeskočit na hlavní obsah",
"smart-contracts": "Chytré kontrakty",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Stabilní kryptoměny (stablecoins)",
"stake-eth": "Stakujte ETH",
"staking": "Stakování",
"start-here": "Začněte zde",
- "style-guide": "Style guide",
"solo": "Samostatné uzamčení",
"support": "Podpora",
"terms-of-use": "Podmínky použití",
@@ -211,11 +316,13 @@
"try-using-search": "Zkuste použít vyhledávání k nalezení toho, co hledáte, nebo",
"tutorials": "Návody",
"up": "Nahoru",
+ "use": "Používání",
"use-ethereum": "Používání platformy Ethereum",
"use-ethereum-menu": "Požít Ethereum menu",
+ "use-menu": "Nabídka Používání",
"user-experience": "Uživatelská zkušenost",
"verkle-trees": "Verkle stromy",
- "wallets": "Peněženky",
+ "wallets": "Kryptoměnové peněženky",
"we-couldnt-find-that-page": "Požadovanou stránku se nám nepodařilo najít",
"web3": "Co je Web3?",
"web3-title": "Web3",
diff --git a/src/intl/cs/page-dapps.json b/src/intl/cs/page-dapps.json
index 64e09d85478..d11664a5478 100644
--- a/src/intl/cs/page-dapps.json
+++ b/src/intl/cs/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Přenos peněz v reálném čase.",
"page-dapps-dapp-description-superrare": "Kupujte digitální umělecká díla přímo od umělců nebo na sekundárních trzích.",
"page-dapps-dapp-description-token-sets": "Investiční strategie do kryptoměn, které se automaticky vyvažují.",
- "page-dapps-dapp-description-tornado-cash": "Posílejte anonymní transakce na Ethereu.",
"page-dapps-dapp-description-uniswap": "Tokeny můžete jednoduše vyměnit, nebo je poskytnout jako odměnu v %.",
"page-dapps-dapp-description-dexguru": "Tradingový terminál DeFi bez supervize třetí strany",
"page-dapps-dapp-description-synthetix": "Synthetix je protokol pro vydávání syntetických aktiv a obchodování s nimi",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Jedná se o aplikace, které se zaměřují na decentralizaci vývojářských nástrojů, začlenění kryptoměnových systémů do existující technologie a vytváření tržišť pro vývoj open-source aplikace.",
"page-dapps-technology-title": "Decentralizovaná technologie",
"page-dapps-token-sets-logo-alt": "Logo Token sets",
- "page-dapps-tornado-cash-logo-alt": "Logo Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo Uniswap",
"page-dapps-wallet-callout-button": "Najít peněženku",
"page-dapps-wallet-callout-description": "Peněženky jsou vlastně decentralizované aplikace. Podle funkcí si vyberte tu, která vám bude nejvíce vyhovovat.",
diff --git a/src/intl/cs/page-languages.json b/src/intl/cs/page-languages.json
index 9773f6caeb4..009f68a35e8 100644
--- a/src/intl/cs/page-languages.json
+++ b/src/intl/cs/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Chcete prohlížet ethereum.org v jiném jazyce?",
"page-languages-want-more-link": "Překladatelský program",
"page-languages-want-more-paragraph": "Překladatelé ethereum.org vždy překládají stránky do co největšího počtu jazyků. Chcete-li zjistit, na čem právě pracují, nebo se přihlásit, abyste se k nim připojili, přečtěte si o našem",
- "page-languages-filter-placeholder": "Filtrovat",
+ "page-languages-filter-label": "Filtrovat seznam",
+ "page-languages-filter-placeholder": "Zadejte text k filtrování",
+ "page-languages-browser-default": "Výchozí nastavení prohlížeče",
+ "page-languages-translated": "přeloženo",
+ "page-languages-words": "slova",
+ "page-languages-recruit-community": "Pomozte nám překládat ethereum.org.",
+ "langauge-am": "Amharština",
"language-ar": "Arabština",
"language-az": "Ázerbájdžánština",
+ "langauge-be": "Běloruština",
"language-bg": "Bulharština",
"language-bn": "Bengálština",
+ "language-bs": "Bosenština",
"language-ca": "Katalánština",
"language-cs": "Čeština",
"language-da": "Dánština",
@@ -32,6 +40,7 @@
"language-hi": "Hindština",
"language-hr": "Chorvatština",
"language-hu": "Maďarština",
+ "language-hy-am": "Arménština",
"language-id": "Indonéština",
"language-ig": "Igboština",
"language-it": "Italština",
@@ -39,12 +48,14 @@
"language-ka": "Gruzínština",
"language-kk": "Kazaština",
"language-km": "Khmérština",
+ "language-kn": "Kannadština",
"language-ko": "Korejština",
"language-lt": "Litevština",
"language-ml": "Malajálamština",
"language-mr": "Maráthština",
"language-ms": "Malajština",
"language-nb": "Norština",
+ "language-ne-np": "Nepálština",
"language-nl": "Holandština",
"language-pcm": "Nigerijský Pidžin",
"language-fil": "Filipínština",
@@ -58,8 +69,9 @@
"language-sl": "Slovinština",
"language-sr": "Srbština",
"language-sw": "Svahilština",
- "language-th": "Thajština",
"language-ta": "Tamilština",
+ "language-th": "Thajština",
+ "language-tk": "Turkmenština",
"language-tr": "Turečtina",
"language-uk": "Ukrajinština",
"language-ur": "Urdština",
diff --git a/src/intl/cs/page-stablecoins.json b/src/intl/cs/page-stablecoins.json
index ac43cfc82fe..22956f72619 100644
--- a/src/intl/cs/page-stablecoins.json
+++ b/src/intl/cs/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Zdroj",
"page-stablecoins-bitcoin-pizza": "Nechvalně proslulá pizza za Bitcoiny",
"page-stablecoins-bitcoin-pizza-body": "V roce 2010 někdo koupil dvě pizzy za 10 000 bitcoinů. Ty v té době měly cenu kolem 41 dolarů. Dnes to představuje miliony dolarů. V historii platformy Ethereum je mnoho podobných politováníhodných transakcí. Stabilní kryptoměny tento problém řeší, takže si můžete vychutnat pizzu a přitom držet ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Řídicí panel a vzdělání",
"page-stablecoins-coin-price-change": "Změna ceny (posledních 30 dnů)",
"page-stablecoins-crypto-backed": "Zajištěné kryptoměnou",
"page-stablecoins-crypto-backed-con-1": "Méně stabilní než stablecoiny kryté papírovými penězi.",
diff --git a/src/intl/da/common.json b/src/intl/da/common.json
index 0c571dbde49..f416ffa7fde 100644
--- a/src/intl/da/common.json
+++ b/src/intl/da/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Konto-abstraktion",
"about-ethereum-org": "Om ethereum.org",
"about-us": "Om os",
+ "adding-desci-projects": "Tilføjelse af Desci-projekter",
+ "adding-developer-tools": "Tilføjelse af udviklerværktøjer",
+ "adding-exchanges": "Tilføjelse af handler",
+ "adding-glossary-terms": "Tilføjelse af termer ftil glossar",
+ "adding-staking-products": "Tilføjelse af indsatsprodukter",
+ "adding-wallets": "Tilføjelse af punge",
+ "account-abstraction": "Konto-abstraktion",
+ "acknowledgements": "Anerkendelser",
"aria-toggle-search-button": "Skift søgeknap",
"aria-toggle-menu-button": "Tænd/sluk menuknappen",
"beacon-chain": "Beacon Chain",
"bridges": "Blockchain-broer",
+ "bug-bounty": "Fejldusør",
+ "build": "Build",
+ "build-menu": "Build-menu",
"clear": "Ryd",
"close": "Luk",
"community": "Fællesskab",
"community-hub": "Fællesskabs-hub",
"community-menu": "Fællesskabs-menu",
"contact": "Kontakt",
+ "content-buckets": "Indholdsmapper",
+ "content-resources": "Indholdsressourcer",
"content-standardization": "Standardisering af indhold",
"contributing": "Bidrager",
"contributors": "Bidragere",
@@ -20,14 +32,17 @@
"copied": "Kopieret",
"copy": "Kopiér",
"danksharding": "Danksharding",
- "dao-page": "Decentraliserede autonome organisationer (DAO'er)",
+ "dao-page": "DAO'er - Decentraliserede autonome organisationer",
"dark-mode": "Mørk",
"data-provided-by": "Datakilde:",
- "decentralized-applications-dapps": "Decentraliserede applikationer (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentraliserede applikationer",
"decentralized-identity": "Decentraliseret identitet",
"decentralized-social-networks": "Decentraliserede sociale netværk",
- "decentralized-science": "Decentraliseret videnskab (DeSci)",
- "defi-page": "Decentraliserede finanser (DeFi)",
+ "decentralized-science": "DeSci - Decentraliseret videnskab",
+ "description": "Beskrivelse f. nav-punkt",
+ "defi-page": "DeFi - Decentraliserede finanser",
+ "design": "Design",
+ "design-principles": "Designprincipper",
"devcon": "Devcon",
"developers": "Udviklere",
"developers-home": "Udviklerens startside",
@@ -51,7 +66,7 @@
"documentation": "Dokumentation",
"down": "Ned",
"ecosystem": "Økosystem",
- "edit-page": "Redigér side",
+ "edit-page": "Rediger side",
"ef-blog": "Ethereum Foundation Blog",
"eips": "Forslag til forbedring af Ethereum",
"energy-consumption": "Ethereums energiforbrug",
@@ -59,7 +74,6 @@
"enterprise-menu": "Virksomhedsmenu",
"esp": "Supportprogram for økosystem",
"eth-current-price": "Aktuel ETH-pris (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Ethereum-fejlbelønningsprogram",
"consensus-when-shipping": "Hvornår sendes det?",
"ethereum-upgrades": "Ethereum-opgraderinger",
@@ -75,7 +89,7 @@
"ethereum-protocol": "Ethereum-protokol",
"ethereum-security": "Ethereums sikkerhed og forebyggelse af svindel",
"ethereum-support": "Ethereum Support",
- "ethereum-wallets": "Ethereum-tegnebog",
+ "ethereum-wallets": "Ethereum-tegnebøger",
"ethereum-whitepaper": "Ethereum-hvidbog",
"feedback-widget-prompt": "Er denne side nyttig?",
"feedback-card-prompt-page": "Var denne side nyttig?",
@@ -83,7 +97,7 @@
"feedback-card-prompt-tutorial": "Var denne vejledning nyttig?",
"feedback-widget-thank-you-title": "Tak for din feedback!",
"feedback-widget-thank-you-subtitle": "Gør denne side endnu bedre ved at besvare et par spørgsmål.",
- "feedback-widget-thank-you-subtitle-ext": "Hvis du har brug for hjælp, kan du spørge fællesskabet på vores Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Har du brug for hjælp, kan du spørge fællesskabet på vores Discord.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Åbn kort undersøgelse",
"find-wallet": "Find tegnebog",
@@ -94,11 +108,10 @@
"grants": "Tilskud",
"grant-programs": "Økosystem-tilskudsprogrammer",
"guides": "Guider",
- "guides-hub": "Guidehub",
+ "guides-hub": "Sådan gør du-guider",
"history-of-ethereum": "Ethereums historik",
"home": "Startside",
"how-ethereum-works": "Sådan fungerer Ethereum",
- "how-to-register-an-ethereum-account": "Sådan \"registreres\" en Ethereum konto",
"how-to-revoke-token-access": "Sådan tilbagekalder man smart kontrakt-adgang til sine krypto midler",
"how-to-swap-tokens": "Sådan byttes tokens",
"how-to-use-a-bridge": "Sådan forbindes tokens til lag 2",
@@ -128,11 +141,106 @@
"loading-error-try-again-later": "Kan ikke indlæse data. Prøv igen senere.",
"logo": "logo",
"mainnet-ethereum": "Hovednetværk Ethereum",
+ "merge": "Flet",
"more": "Mere",
- "nav-developers": "Udviklere",
+ "nav-about-description": "Et offentligt, open source-projekt for Ethereum-fællesskabet",
+ "nav-advanced-description": "Lær de mere komplekse emner",
+ "nav-advanced-label": "Avanceret",
+ "nav-basics-description": "Forstå det grundlæggende i Ethereum",
+ "nav-basics-label": "Det grundlæggende",
+ "nav-bridges-description": "Web3 har udviklet sig til et økosystem af primære L1-blockchains og L2-skaleringsløsninger",
+ "nav-builders-home-description": "En byggehåndbog til Ethereum - af byggere, for byggere",
+ "nav-builders-home-label": "Byggerens hjem",
+ "nav-contribute-description": "Har du brug for hjælp, vil denne vejlede dig",
+ "nav-contribute-label": "Bidrag til ethereum.org",
+ "nav-dao-description": "Medlemsejede fællesskaber uden centraliseret myndighed",
+ "nav-dapps-description": "Udforsk et rigt økosystem af apps, der bruge Ethereum",
+ "nav-defi-description": "Et globalt, åbent alternativ til et traditionelt finansmarked",
+ "nav-desci-description": "Et globalt, åbent alternativ til det nuværende videnskabelige system",
+ "nav-desoc-description": "Blockchainbaserede platforme til social interaktion og indholdsskabelse",
"nav-developers-docs": "Udviklerdokumenter",
+ "nav-developers": "Udviklere",
+ "nav-did-description": "Udgiv og ej dine unikke decntraliserede identifikatorer",
+ "nav-docs-description": "Doks, der hjælper dig med at forstå og bygge med Ethereum",
+ "nav-docs-design-description": "Beskrivelse af unikke web3-designudfordringer, bedste praksis og brugerforskningsindsigt",
+ "nav-docs-design-label": "Grundlæggende UX-/UI-design",
+ "nav-docs-foundation-description": "Det helt grundlæggende for udvikling på Ethereum",
+ "nav-docs-overview-description": "Dit hjem for udvikler-doks",
+ "nav-docs-stack-description": "Forstå alle detaljerne i Ethereum stack",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Standarder, der specificerer nye funktioner eller processer",
+ "nav-eip-label": "EIP'er - Forslag til Ethereums forbedring",
+ "nav-emerging-description": "Lær andre nyere brugseksempler for Ethereum",
+ "nav-enterprise-description": "Forretningsapplikationer til Ethereum",
+ "nav-ethereum-org-description": "Denne hjemmeside er fællesskabsdrevet - slut dig til os, og bidrag",
+ "nav-ethereum-wallets-description": "En app til at interagere med din Ethereum-konto",
+ "nav-events-description": "Decentralisering og frihed for alle til at deltage",
+ "nav-events-irl-description": "Der er store Ethereum-begivenheder hver måned - fysiske og online",
+ "nav-events-label": "Fællesskaber og begivenheder",
+ "nav-events-online-description": "Hundredtusindvis af Ethereum-entusiaster bidrager i disse online-fællesskaber",
+ "nav-find-wallet-description": "Med punge kan du bruge krypto",
+ "nav-find-wallet-label": "Vælg din tegnebog",
+ "nav-gas-fees-description": "Sådan beregnes ETH-transaktionsgebyrer",
+ "nav-get-eth-description": "Det kræver ether (ETH) for at bruge Ethereum-applikationer",
+ "nav-get-started-description": "Dine første trin mod brug af Ethereum",
+ "nav-governance-description": "Processen krævet for at opgradere Ethereum-protokollen",
+ "nav-governance-label": "Forvaltning",
+ "nav-grants-description": "En organiseret liste fra vores fællesskab over projekter, der er med i tilskudsfinansieringsordninger",
+ "nav-guide-create-account-description": "Alle kan når som helst og gratis oprette en Ethereum-konto med en tegnebogsapp",
+ "nav-guide-revoke-access-description": "Forbliv sikker, når du interagerer med smarte kontrakter og applikationer i Ethereum-økosystemet",
+ "nav-guide-revoke-access-label": "Sådan tilbagekaldes adgang til smart kontrakt",
+ "nav-guide-use-wallet-description": "Lær, hvordan du kører alle grundlæggende funktioner i en tegnebog",
+ "nav-guide-use-wallet-label": "Sådan bruges en tegnebog",
+ "nav-guides-description": "Praktiske trin for trin-guider, der hjælper dig i gang",
+ "nav-guides-label": "Sådan gør du-guider",
+ "nav-history-description": "En tidslinje over alle de store forgreninger og opdateringer",
+ "nav-history-label": "Ethereums tekniske historik",
+ "nav-layer-2-description": "Billigere og hurtigere transaktioner for Ethereum",
+ "nav-learn-by-coding-description": "Værktøjer, der hjælper dig med at eksperimentere med Ethereum",
+ "nav-local-env-description": "Vælg og opsæt din Ethereum-udviklingsstak",
+ "nav-mainnet-description": "Virksomheders blockchain-applikationer kan bygges på det offentlige Ethereum Mainnet",
+ "nav-nft-description": "En måde at repræsentere noget unikt på som et Ethereum-baseret aktiv",
+ "nav-open-research-description": "En af de primære styrker ved Ethereum er dets aktive forskerfællesskab",
+ "nav-open-research-label": "Åbn søgning",
+ "nav-overview-description": "Alt om Ethereum-uddannelse",
+ "nav-participate-overview-description": "Oversigt over hvordan man deltager",
"nav-primary": "Primær",
- "nft-page": "Ikke-ombyttelige tokens (NFT'er)",
+ "nav-quizzes-description": "Find ud af, hvor godt du forstår Ethereum og kryptovalutaer",
+ "nav-quizzes-label": "Test din viden",
+ "nav-refi-description": "Et alternativt økonomisk system bygger på regenerative principper",
+ "nav-research-description": "Processer, der bruges til forbedring af Ethereum",
+ "nav-research-label": "Forskning og udvikling",
+ "nav-roadmap-description": "Vejen til mere skalerbarhed, sikkerhed og bæredygtighed for Ethereum",
+ "nav-roadmap-future-description": "Befæstelse af Ethereum som et robust og decentraliseret netværk",
+ "nav-roadmap-future-label": "Fremtidssikring",
+ "nav-roadmap-label": "Roadmap",
+ "nav-roadmap-scaling-description": "Netværksopdateringer for yderligere reduktion af transaktionsomkostninger og for hastighed",
+ "nav-roadmap-security-description": "Sikring af, at Ethereum forbliver modstandsdygtig over for alle slags angreb i fremtiden",
+ "nav-roadmap-security-label": "Forbedret sikkerhed",
+ "nav-roadmap-ux-description": "Brugen af Ethereum skal forenkles",
+ "nav-run-a-node-description": "Bliv fuldstændig suveræn, mens du hjælper med at sikre netværket",
+ "nav-security-description": "Lær bedste praksis til at bruge kryptovaluta",
+ "nav-smart-contracts-description": "De grundlæggende byggesten i Ethereum-økosystemet",
+ "nav-stablecoins-description": "Stablecoins er Ethereum-tokens beregnet til at holde en fast værdi",
+ "nav-stake-description": "Optjen bonusser for at sikre Ethereum",
+ "nav-stake-label": "Indsats",
+ "nav-staking-home-description": "Oversigt over forskellige muligheder for at satse",
+ "nav-staking-home-label": "Staking hjem",
+ "nav-staking-pool-description": "Sats, og optjen bonusser med et hvilket som helst beløb u ETH ved at gå sammen med andre",
+ "nav-staking-pool-label": "Samlet staking",
+ "nav-staking-saas-label": "Sats med en service",
+ "nav-staking-solo-label": "Solo-staking",
+ "nav-start-building-description": "Nyttig information for nytilkomne",
+ "nav-translation-program-description": "Et samarbejde om at oversætte ethereum.org til alle sprog",
+ "nav-tutorials-description": "Organiseret liste over fællesskabsvejledning",
+ "nav-use-cases-description": "Se forskellige ideer til brug af Ethereum",
+ "nav-what-is-ether-description": "Valutaen i Ethereum-apps",
+ "nav-what-is-ethereum-description": "Forstå, hvad der gør Ethereum til noget særligt",
+ "nav-what-is-web3-label": "Hvad er Web3?",
+ "nav-what-is-web3-description": "Et alternativ til centraliserede monopoler, der bestemmer reglerne",
+ "nav-whitepaper-description": "Den oprindelige Ethereum-hvidbog skrevet af Vitalik Buterin i 2014",
+ "nav-zkp-description": "En måde at bevise gyldigheden af et udsagn uden at afsløre selve udsagnet",
+ "nft-page": "NFT'er - Ikke-ombyttelige tokens",
"nfts": "NFT'er",
"no": "Nej",
"on-this-page": "På denne side",
@@ -140,6 +248,7 @@
"page-developers-aria-label": "Udviklermenu",
"page-index-meta-title": "Startside",
"page-last-updated": "Side senest opdateret",
+ "participate-menu": "Menu for deltagelse",
"pbs": "Separation af proposer-builder",
"pools": "Samlet staking",
"privacy-policy": "Databeskyttelse",
@@ -150,9 +259,11 @@
"refresh": "Genindlæs venligst siden.",
"return-home": "retur til startside",
"roadmap": "Ethereum køreplan",
+ "research": "Forskning",
+ "research-menu": "Menu for forskning",
"resources": "Oversættelsesressourcer",
- "regenerative-finance": "Regenerativ finansiering (ReFi)",
- "run-a-node": "Kør en node",
+ "regenerative-finance": "ReFi - Regenerativ finansiering",
+ "run-a-node": "Kør en indholdselement",
"rollup-component-website": "Websted",
"rollup-component-developer-docs": "Udviklerdokumenter",
"rollup-component-technology-and-risk-summary": "Teknologi- og risikoopsummering",
@@ -164,6 +275,7 @@
"search-box-blank-state-text": "Søg alt det du vil!",
"search-eth-address": "Dette ligner en Ethereum-adresse. Vi leverer ikke data specifikt til adresser. Prøv at søge efter det på en block-stifinder som",
"search-no-results": "Ingen resultater af din søgning",
+ "security": "Sikkerhed",
"single-slot-finality": "Enkeltpladsfinalitet",
"statelessness": "Tilstandsløshed",
"see-contributors": "Se bidragydere",
@@ -172,15 +284,14 @@
"show-all": "Vis alle",
"show-less": "Vis mindre",
"site-description": "Ethereum er en global, decentraliseret platform for penge og nye former for applikationer. På Ethereum kan du skrive kode, der styrer penge, og bygge applikationer tilgængelige overalt i verden.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Spring til hovedindholdet",
- "smart-contracts": "Smart kontrakter",
+ "smart-contracts": "Intelligente kontrakter",
"stablecoins": "Stablecoins",
"stake-eth": "Stake ETH",
"staking": "Indskyder",
"start-here": "Start her",
- "style-guide": "Style guide",
"solo": "Solo-staking",
+ "support": "Support",
"terms-of-use": "Brugsvilkår",
"translation-banner-body-new": "Du ser denne side på engelsk, fordi vi ikke har oversat den endnu. Hjælp os med at oversætte dette indhold.",
"translation-banner-body-update": "Der er en ny version af siden, men den er kun på engelsk lige nu. Hjælp os med at oversætte den nyeste version.",
@@ -191,17 +302,18 @@
"translation-banner-no-bugs-title": "Ingen fejl her!",
"translation-banner-no-bugs-content": "Denne side oversættes ikke. Siden er bevidst bibeholdt på engelsk for nu.",
"translation-banner-no-bugs-dont-show-again": "Vis ikke igen",
+ "translation-program": "Oversættelsesprogram",
"try-using-search": "Prøv at bruge søgning for at finde det, du leder efter",
"tutorials": "Vejledninger",
"up": "Op",
+ "use": "Brug",
"use-ethereum": "Brug Ethereum",
"use-ethereum-menu": "Brug Ethereum-menu",
- "user-experience": "User experience",
+ "use-menu": "Brugsmenu",
"verkle-trees": "Verkle-træer",
"wallets": "Tegnebøger",
"we-couldnt-find-that-page": "Vi kunne ikke finde den side",
"web3": "Hvad er Web3?",
- "web3-title": "Web3",
"website-last-updated": "Websted senest opdateret",
"what-is-ether": "Hvad er ether (ETH)?",
"what-is-ethereum": "Hvad er Ethereum?",
diff --git a/src/intl/da/page-languages.json b/src/intl/da/page-languages.json
index 154d014566a..5a047ba5c32 100644
--- a/src/intl/da/page-languages.json
+++ b/src/intl/da/page-languages.json
@@ -1,8 +1,29 @@
{
+ "page-languages-h1": "Sprog Understøttelse",
+ "page-languages-interested": "Er du interesseret i at bidrage?",
+ "page-languages-learn-more": "Lær mere om vores Oversættelse Program",
+ "page-languages-meta-desc": "Ressourcer til alle understøttede sprog på ethereum.org og måder at blive involveret som oversætter.",
+ "page-languages-meta-title": "ethereum.org Sprog Oversættelser",
+ "page-languages-p1": "Ethereum er et globalt projekt, og det er afgørende, at ethereum.org er tilgængeligt for alle, uanset deres nationalitet eller sprog. Vores fællesskab har arbejdet hårdt på at gøre dette syn til virkelighed.",
+ "page-languages-translations-available": "ethereum.org er tilgængelig på de følgende sprog",
+ "page-languages-resources-paragraph": "Ud over at oversætte ethereum.org indhold, vedligeholder vi også en",
+ "page-languages-resources-link": "kurateret liste over Ethereum ressourcer på mange sprog",
+ "page-languages-want-more-header": "Vil du se ethereum.org på et andet sprog?",
+ "page-languages-want-more-link": "Oversættelsesprogram",
+ "page-languages-want-more-paragraph": "ethereum.org oversættere oversætter altid sider på så mange sprog som muligt. For at se, hvad de arbejder på lige nu, eller for at tilmelde sig for at deltage dem, læs om vores",
+ "page-languages-filter-label": "Filtrér liste",
+ "page-languages-filter-placeholder": "Skriv for at filtrere",
+ "page-languages-browser-default": "Browser-standard",
+ "page-languages-translated": "oversat",
+ "page-languages-words": "ord",
+ "page-languages-recruit-community": "Hjælp os med at oversætte ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Arabisk",
"language-az": "Aserbajdsjansk",
+ "langauge-be": "Belarusian",
"language-bg": "Bulgarsk",
"language-bn": "Bengalsk",
+ "language-bs": "Bosnian",
"language-ca": "Catalansk",
"language-cs": "Tjekkisk",
"language-da": "Dansk",
@@ -14,21 +35,30 @@
"language-fi": "Finsk",
"language-fr": "Fransk",
"language-gl": "Galicisk",
+ "language-gu": "Gujarati",
+ "language-he": "Hebrew",
"language-hi": "Hindi",
"language-hr": "Kroatisk",
"language-hu": "Ungarsk",
+ "language-hy-am": "Armenian",
"language-id": "Indonesisk",
"language-ig": "Igbo",
"language-it": "Italiensk",
"language-ja": "Japansk",
"language-ka": "Georgisk",
+ "language-kk": "Kazakh",
+ "language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Koreansk",
"language-lt": "Litauisk",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malaysisk",
"language-nb": "Norsk",
+ "language-ne-np": "Nepali",
"language-nl": "Hollandsk",
+ "language-pcm": "Nigeriansk Pidgin",
+ "language-fil": "Filipino",
"language-pl": "Polsk",
"language-pt": "Portugisisk",
"language-pt-br": "Portugisisk (Brasilien)",
@@ -39,9 +69,13 @@
"language-sl": "Slovenensk",
"language-sr": "Serbisk",
"language-sw": "Swahili",
+ "language-ta": "Tamil",
"language-th": "Thailandsk",
+ "language-tk": "Turkmen",
"language-tr": "Tyrkisk",
"language-uk": "Ukrainsk",
+ "language-ur": "Urdu",
+ "language-uz": "Usbekisk",
"language-vi": "Vietnamesisk",
"language-zh": "Kinesisk, forenklet",
"language-zh-tw": "Kinesisk, traditionelt"
diff --git a/src/intl/da/page-stablecoins.json b/src/intl/da/page-stablecoins.json
index 4b91f1e23d4..62408dfb92d 100644
--- a/src/intl/da/page-stablecoins.json
+++ b/src/intl/da/page-stablecoins.json
@@ -15,5 +15,5 @@
"makerdao-logo": "MakerDao-logo",
"matcha-logo": "Matcha-logo",
"oasis-logo": "Oasis-logo",
- "uniswap-logo": "Uniswap logo"
-}
+ "uniswap-logo": "Uniswap logo",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Uddannelse"}
diff --git a/src/intl/de/common.json b/src/intl/de/common.json
index 6ae90fe50a2..fabfacf8351 100644
--- a/src/intl/de/common.json
+++ b/src/intl/de/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "Kontoabstraktion",
"about-ethereum-org": "Über ethereum.org",
"about-us": "Über uns",
+ "adding-desci-projects": "Desci-Projekte hinzufügen",
+ "adding-developer-tools": "Entwicklertools werden hinzugefügt",
+ "adding-exchanges": "Börsen werden hinzugefügt",
+ "adding-glossary-terms": "Glossarbegriffe werden hinzugefügt",
+ "adding-layer-2s": "Layer 2s hinzufügen",
+ "adding-products": "Produkte hinzufügen",
+ "adding-staking-products": "Staking-Produkte werden hinzugefügt",
+ "adding-wallets": "Wallets werden hinzugefügt",
+ "account-abstraction": "Kontoabstraktion",
+ "acknowledgements": "Danksagungen",
"aria-toggle-search-button": "Suchbutton umschalten",
"aria-toggle-menu-button": "Menübutton umschalten",
"beacon-chain": "Beacon Chain",
"bridges": "Blockchain-Brücken",
+ "bug-bounty": "Fehler-Kopfgeld (Bug-Bounty)",
+ "build": "Bauen",
+ "build-menu": "Build-Menü",
"clear": "Löschen",
"close": "Schließen",
"community": "Community",
"community-hub": "Community-Hub",
"community-menu": "Community-Menü",
"contact": "Kontakt",
+ "content-buckets": "Inhaltsbehälter",
+ "content-resources": "Inhaltsressourcen",
"content-standardization": "Standardisierung der Inhalte",
"contributing": "Mitwirken",
"contributors": "Mitwirkende",
@@ -20,14 +34,17 @@
"copied": "Kopiert",
"copy": "Kopieren",
"danksharding": "Danksharding",
- "dao-page": "Dezentrale autonome Organisationen (DAOs)",
+ "dao-page": "DAOs - Dezentrale autonome Organisationen",
"dark-mode": "Dunkel",
"data-provided-by": "Datenquelle:",
- "decentralized-applications-dapps": "Dezentralisierte Anwendungen (dApps)",
+ "decentralized-applications-dapps": "DApps - Dezentralisierte Anwendungen",
"decentralized-identity": "Dezentralisierte Identität",
"decentralized-social-networks": "Dezentrale soziale Netzwerke",
- "decentralized-science": "Dezentrale Wissenschaft (DeSci)",
- "defi-page": "Dezentrales Finanzwesen (DeFi)",
+ "decentralized-science": "DeSci - Dezentrale Wissenschaft",
+ "description": "Beschreibung für das Navigationselement",
+ "defi-page": "DeFi - Dezentrales Finanzwesen",
+ "design": "Design",
+ "design-principles": "Designprinzipien",
"devcon": "Devcon",
"developers": "Entwickler",
"developers-home": "Entwicklerbasis",
@@ -63,7 +80,7 @@
"ethereum-bug-bounty": "Ethereum Bug-Bounty-Programm",
"consensus-when-shipping": "Wann wird es veröffentlicht?",
"ethereum-upgrades": "Ethereum-Upgrades",
- "ethereum-brand-assets": "Ethereum – Marken-Assets",
+ "ethereum-brand-assets": "Ethereum Marken-Assets",
"ethereum-online": "Online-Communitys",
"ethereum-events": "Ethereum-Events",
"ethereum-foundation": "Ethereum Foundation",
@@ -71,11 +88,11 @@
"ethereum-glossary": "Ethereum-Glossar",
"ethereum-governance": "Ethereum – Steuerung",
"ethereum-logo": "Ethereum-Logo",
- "ethereum-roadmap": "Ethereum Roadmap",
+ "ethereum-roadmap": "Ethereum-Roadmap",
"ethereum-protocol": "Ethereum-Protokoll",
"ethereum-security": "Ethereum – Sicherheits- und Betrugsvorbeugung",
"ethereum-support": "Ethereum-Support",
- "ethereum-wallets": "Ethereum Wallets",
+ "ethereum-wallets": "Ethereum-Wallets",
"ethereum-whitepaper": "Ethereum-Whitepaper",
"feedback-widget-prompt": "Ist diese Seite hilfreich?",
"feedback-card-prompt-page": "War diese Seite hilfreich?",
@@ -83,10 +100,10 @@
"feedback-card-prompt-tutorial": "War dieses Tutorial hilfreich?",
"feedback-widget-thank-you-title": "Danke für das Feedback!",
"feedback-widget-thank-you-subtitle": "Helfen Sie uns, diese Seite noch interessanter zu gestalten, indem Sie ein paar Fragen beantworten.",
- "feedback-widget-thank-you-subtitle-ext": "Wenn Sie Hilfe brauchen, können Sie sich auf unserem Discord-Kanal an die Community wenden.",
+ "feedback-widget-thank-you-subtitle-ext": "Wenn Sie Hilfe benötigen, können Sie sich auf unserem Discord an die Community wenden.",
"feedback-widget-thank-you-timing": "2 bis 3 Minuten",
"feedback-widget-thank-you-cta": "Kurze Umfrage öffnen",
- "find-wallet": "Wallet finden",
+ "find-wallet": "Finden Sie eine Wallet",
"future-proofing": "Zukunftssicherung",
"get-eth": "ETH erwerben",
"get-involved": "Mitmachen",
@@ -94,11 +111,11 @@
"grants": "Zuschüsse",
"grant-programs": "Ökosystem-Förderprogramme",
"guides": "Leitfäden",
- "guides-hub": "Leitfäden-Sammlung",
+ "guides-hub": "Anleitungen",
"history-of-ethereum": "Die Geschichte von Ethereum",
"home": "Startseite",
"how-ethereum-works": "Wie Ethereum funktioniert",
- "how-to-register-an-ethereum-account": "So \"registrieren\" Sie ein Ethereum-Konto",
+ "how-to-create-an-ethereum-account": "Wie man ein Ethereum-Konto „anlegt\"",
"how-to-revoke-token-access": "So widerrufen Sie den Smart-Contract-Zugriff auf Ihre Krypto-Gelder",
"how-to-swap-tokens": "So tauschen Sie Token",
"how-to-use-a-bridge": "So übertragen Sie Token mit der Layer 2",
@@ -128,11 +145,117 @@
"loading-error-try-again-later": "Laden von Daten nicht möglich. Bitte versuchen Sie es später erneut.",
"logo": "Logo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Zusammenführen",
"more": "Mehr",
- "nav-developers": "Entwickler:innen",
+ "nav-about-description": "Ein öffentliches Open-Source-Projekt für die Ethereum-Community",
+ "nav-advanced-description": "Weitere Informationen zu komplexeren Themen",
+ "nav-advanced-label": "Fortgeschritten",
+ "nav-basics-description": "Die Grundlagen von Ethereum verstehen",
+ "nav-basics-label": "Grundlagen",
+ "nav-bridges-description": "Web3 hat sich zu einem Ökosystem aus primären L1-Blockchains und L2-Skalierungslösungen entwickelt",
+ "nav-builders-home-description": "Ein Builder-Handbuch für Ethereum. Von Buildern, für Builder",
+ "nav-builders-home-label": "Startseite für Builder",
+ "nav-contribute-description": "Wenn Sie Hilfe benötigen, erhalten Sie sie hier",
+ "nav-contribute-label": "Mitwirken bei ethereum.org",
+ "nav-dao-description": "Communitys im Besitz ihrer Mitglieder ohne zentrale Führung",
+ "nav-dapps-description": "Entdecken Sie ein umfassendes Ökosystem von Apps mit Ethereum",
+ "nav-defi-description": "Eine globale, offene Alternative zum traditionellen Finanzmarkt",
+ "nav-desci-description": "Eine globale, offene Alternative zum derzeitigen wissenschaftlichen System",
+ "nav-desoc-description": "Blockchain-basierte Plattformen für soziale Interaktionen und Content-Erstellung",
"nav-developers-docs": "Entwicklerdokumentation",
+ "nav-developers": "Entwickler",
+ "nav-did-description": "Erstellen Sie Ihre eigenen einzigartigen dezentralisierten Identifikatoren",
+ "nav-docs-description": "Dokumente helfen Ihnen, Ethereum zu verstehen und Builder zu werden",
+ "nav-docs-design-description": "Beschreibung der einzigartigen Web3-Designherausforderungen, Best Practices und Forschungseinblicke von Benutzern",
+ "nav-docs-design-label": "UX/UI-Designgrundlagen",
+ "nav-docs-foundation-description": "Wichtige Grundlagen für die Entwicklung mit Ethereum",
+ "nav-docs-foundation-label": "Grundsätzliche Themen",
+ "nav-docs-overview-description": "Ihre Startseite für Entwicklerdokumente",
+ "nav-docs-stack-description": "Verstehen Sie den Ethereum-Stack in allen Einzelheiten",
+ "nav-docs-stack-label": "Ethereum-Stack",
+ "nav-eip-description": "Standards, die neue Funktionen oder Prozesse bezeichnen",
+ "nav-eip-label": "EIPs - Ethereum Verbesserungsvorschläge",
+ "nav-emerging-description": "Lernen Sie mehr aktuelle Anwendungsfälle für Ethereum kennen",
+ "nav-emerging-label": "Neue Anwendungsfälle",
+ "nav-enterprise-description": "Geschäftliche Anwendungen für Ethereum",
+ "nav-ethereum-org-description": "Diese Website ist Community-basiert – werden Sie Mitglied und leisten Sie einen Beitrag",
+ "nav-ethereum-wallets-description": "Eine App zur Interaktion mit Ihrem Ethereum-Konto",
+ "nav-events-description": "Dezentralisierung und Teilnahmeoptionen für alle",
+ "nav-events-irl-description": "Jeden Monat gibt es große persönliche und Online-Events von Ethereum",
+ "nav-events-label": "Communitys und Events",
+ "nav-events-online-description": "Hunderttausende von Ethereum-Fans sind in diesen Online-Communitys aktiv",
+ "nav-find-wallet-description": "Wallets ermöglichen die Nutzung von Kryptowährungen",
+ "nav-find-wallet-label": "Wählen Sie Ihr Wallet",
+ "nav-gas-fees-description": "Wie werden ETH-Transaktionsgebühren berechnet?",
+ "nav-gas-fees-label": "Spritgebühren",
+ "nav-get-eth-description": "Sie benötigen Ethers (ETH), um Ethereum-Anwendungen zu nutzen",
+ "nav-get-started-description": "Ihre ersten Schritte zur Verwendung von Ethereum",
+ "nav-governance-description": "Der Prozess zum Upgrade des Ethereum-Protokolls",
+ "nav-governance-label": "Verwaltung",
+ "nav-grants-description": "Eine von unserer Community verwaltete Liste mit Projekten, die Zuschussprograme bieten",
+ "nav-guide-create-account-description": "Jeder kann zu jeder Zeit ein kostenloses Ethereum-Konto mit Wallet-App einrichten",
+ "nav-guide-create-account-label": "So erstellen Sie ein Ethereum-Konto",
+ "nav-guide-revoke-access-description": "Durch die Interaktion mit Smart-Verträgen und -Anwendungen im Ethereum-Ökosystem sind Sie stets sicher",
+ "nav-guide-revoke-access-label": "So widerrufen Sie den Zugriff auf Smart-Verträge",
+ "nav-guide-use-wallet-description": "Lernen Sie die grundlegenden Funktionen einer Krypto-Wallet kennen",
+ "nav-guide-use-wallet-label": "So verwenden Sie eine Wallet",
+ "nav-guides-description": "Praktische schrittweise Anleitungen zu den ersten Schritten",
+ "nav-guides-label": "Anleitungen",
+ "nav-history-description": "Eine Zeitleiste mit allen wichtigen Abspaltungen und Aktualisierungen",
+ "nav-history-label": "Die technische Geschichte von Ethereum",
+ "nav-layer-2-description": "Günstigere und schnellere Transaktionen für Ethereum",
+ "nav-learn-by-coding-description": "Tools, die Ihnen dabei helfen, mit Ethereum zu experimentieren",
+ "nav-local-env-description": "Wählen Sie Ihren Ethereum-Entwichlungsstack und richten Sie ihn ein",
+ "nav-mainnet-description": "Enterprise-Blockchain-Anwendungen können im öffentlichen Ethereum Mainnet erstellt werden",
+ "nav-nft-description": "Ein Weg, alles Einzigartige als eine Ethereum-basierte Anlage darzustellen",
+ "nav-open-research-description": "Eine der Hauptstärken von Ethereum ist seine aktive Forschungs-Community",
+ "nav-open-research-label": "Offene Forschung",
+ "nav-overview-description": "Alles über die Bildung mit Ethereum",
+ "nav-overview-label": "Übersicht",
+ "nav-participate-overview-description": "Überblick über die Teilnahme",
"nav-primary": "Primäre",
- "nft-page": "Non-Fungible Token (NFTs)",
+ "nav-private-description": "Entwicklerressourcen für das private Ethereum für Unternehmen",
+ "nav-quizzes-description": "Finden Sie heraus, wie gut Sie Ethereum und Kryptowährungen verstehen",
+ "nav-quizzes-label": "Teste dein Wissen",
+ "nav-refi-description": "Ein alternatives, auf regenerativen Prinzipien beruhendes Wirtschaftssystem",
+ "nav-research-description": "Prozesse zur Verbesserung von Ethereum",
+ "nav-research-label": "Forschung und Entwicklung",
+ "nav-roadmap-description": "Der Weg zu mehr Skalierbarkeit, Sicherheit und Nachhaltigkeit für Ethereum",
+ "nav-roadmap-future-description": "Festigung von Ethereum als robustes und dezentralisiertes Netzwerk",
+ "nav-roadmap-future-label": "Zukunftssicherung",
+ "nav-roadmap-label": "Fahrplan",
+ "nav-roadmap-scaling-description": "Netzwerkaktualisierungen zur weiteren Reduktion von Transaktionskosten und Geschwindigkeit",
+ "nav-roadmap-scaling-label": "Günstigere Transaktionen",
+ "nav-roadmap-security-description": "Gewährleistung, dass Ethereum vor allen zukünftigen Angriffen geschützt ist",
+ "nav-roadmap-security-label": "Verbesserte Sicherheit",
+ "nav-roadmap-ux-description": "Die Nutzung von Ethereum muss vereinfacht werden",
+ "nav-roadmap-ux-label": "Bessere Nutzererfahrung",
+ "nav-run-a-node-description": "Werden Sie unabhängig und helfen Sie mit, das Netzwerk zu sichern",
+ "nav-security-description": "Lernen Sie Best Practices zur Verwendung von Kryptowährungen kennen",
+ "nav-smart-contracts-description": "Die grundlegenden Bausteine des Ethereum-Ökosystems",
+ "nav-stablecoins-description": "Stablecoins sind Ethereum-Tokens mit einem festen Wert",
+ "nav-stake-description": "Erhalten Sie Belohnungen, wenn Sie Ethereum sichern",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "Eine Übersicht über die verschiedenen Staking-Optionen",
+ "nav-staking-home-label": "Staking-Home",
+ "nav-staking-pool-description": "Staken Sie und verdienen Sie Belohnungen mit jedem beliebigen ETH-Betrag, indem Sie Ihre Kräfte mit anderen bündeln",
+ "nav-staking-pool-label": "Gepooltes Staking",
+ "nav-staking-saas-description": "Drittanbieter als Node-Betreiber kümmern sich um den Betrieb Ihres Validator-Client",
+ "nav-staking-saas-label": "Staking mit einer Dienstleistung",
+ "nav-staking-solo-description": "Benutzen Sie Hardware zu Hause und tragen Sie persönlich zur Sicherheit und Dezentralisierung des Ethereum-Netzwerks bei",
+ "nav-staking-solo-label": "Solo-Staking",
+ "nav-start-building-description": "Hilfreiche Informationen für neue Mitglieder",
+ "nav-translation-program-description": "Eine gemeinsame Bemühung, ethereum.org in alle Sprachen zu übersetzen",
+ "nav-tutorials-description": "Verwaltete Liste mit Community-Tutorials",
+ "nav-use-cases-description": "Entdecken Sie verschiedene Ideen zur Nutzung von Ethereum",
+ "nav-use-cases-label": "Anwendungsfälle",
+ "nav-what-is-ether-description": "Die Währung der Ethereum-Apps",
+ "nav-what-is-ethereum-description": "Verstehen, was Ethereum so besonders macht",
+ "nav-what-is-web3-label": "Was ist Web3?",
+ "nav-what-is-web3-description": "Eine Alternative zu zentralisierten Monopolen, die die Regeln vorgeben",
+ "nav-whitepaper-description": "Das Original-Ethereum-Whitepaper, geschrieben von Vitalik Buterin im Jahr 2014",
+ "nav-zkp-description": "Eine Möglichkeit, die Gültigkeit einer Aussage zu beweisen, ohne die Aussage selbst offenzulegen",
+ "nft-page": "NFTs - Non-Fungible Token",
"nfts": "NFTs",
"no": "Nein",
"on-this-page": "Auf dieser Seite",
@@ -140,6 +263,8 @@
"page-developers-aria-label": "Entwicklermenü",
"page-index-meta-title": "Startseite",
"page-last-updated": "Seite zuletzt aktualisiert",
+ "participate": "Mitmachen",
+ "participate-menu": "Teilnahmemenü",
"pbs": "Proposer-Builder-Trennung",
"pools": "Gepooltes Staking",
"privacy-policy": "Datenschutzrichtlinien",
@@ -150,9 +275,11 @@
"refresh": "Bitte aktualisieren Sie die Seite.",
"return-home": "Zurück zur Startseite",
"roadmap": "Ethereum-Roadmap",
+ "research": "Forschung",
+ "research-menu": "Forschungsmenü",
"resources": "Übersetzungsressourcen",
- "regenerative-finance": "Regenerative Finanzen (ReFi)",
- "run-a-node": "Einen Knoten betreiben",
+ "regenerative-finance": "ReFi - Regenerative Finanzen",
+ "run-a-node": "Einen Node ausführen",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Entwicklerdokumentation",
"rollup-component-technology-and-risk-summary": "Technologie- und Risikozusammenfassung",
@@ -164,6 +291,7 @@
"search-box-blank-state-text": "Suche!",
"search-eth-address": "Sieht aus wie eine Ethereum-Adresse. Wir liefern keine Daten zu Adressen. Versuchen Sie es auf einem Block-Explorer wie",
"search-no-results": "Keine Ergebnisse zu Ihrer Suche",
+ "security": "Sicherheit",
"single-slot-finality": "Einzelplatzfinalität",
"statelessness": "Zustandslosigkeit",
"see-contributors": "Siehe Mitwirkende",
@@ -181,6 +309,7 @@
"start-here": "Hier starten",
"style-guide": "Styleguide",
"solo": "Solo-Staking",
+ "support": "Support",
"terms-of-use": "Nutzungsbedingungen",
"translation-banner-body-new": "Sie sehen diese Seite auf Englisch, weil wir sie noch nicht übersetzt haben. Helfen Sie mit, die Inhalte zu übersetzen.",
"translation-banner-body-update": "Es gibt eine neue Version dieser Seite, aber im Moment ist sie nur auf Englisch verfügbar. Helfen Sie mit, die neueste Version zu übersetzen.",
@@ -191,11 +320,14 @@
"translation-banner-no-bugs-title": "Hier sind keine Fehler!",
"translation-banner-no-bugs-content": "Diese Seite wird nicht übersetzt. Wir haben diese Seite bewusst vorerst auf Englisch belassen.",
"translation-banner-no-bugs-dont-show-again": "Nicht erneut anzeigen",
+ "translation-program": "Übersetzungsprogramm",
"try-using-search": "Benutzen Sie die Suchfunktion, um zu finden, wonach Sie suchen",
"tutorials": "Tutorials",
"up": "Nach oben",
+ "use": "Anwenden",
"use-ethereum": "Ethereum verwenden",
"use-ethereum-menu": "Ethereum-Menü verwenden",
+ "use-menu": "Benutzermenü",
"user-experience": "Benutzererfahrung",
"verkle-trees": "Verkle Trees",
"wallets": "Wallets",
diff --git a/src/intl/de/learn-quizzes.json b/src/intl/de/learn-quizzes.json
index d664712ff2d..46d7324fb5a 100644
--- a/src/intl/de/learn-quizzes.json
+++ b/src/intl/de/learn-quizzes.json
@@ -1,14 +1,33 @@
{
+ "add-quiz": "Frage/Quiz hinzufügen",
+ "average-score": "Durchschnittliche Punktzahl:",
+ "basics": "Ethereum-Grundlagen",
+ "basics-description": "In diesem Abschnitt werden die grundlegenden Konzepte von Ethereum behandelt. So können Sie sich ein solides Basiswissen aneignen.",
+ "completed": "Abgeschlossen:",
+ "community-stats": "Community-Statistiken",
+ "contribute": "Tragen Sie zu unserer Bibliothek bei.",
"correct": "Richtig",
"explanation": "Erläuterung",
"next-question": "Nächste Frage",
+ "next-quiz": "Nächstes Quiz",
+ "page-assets-merge": "Die Zusammenführung",
+ "passed": "Sie haben das Quiz bestanden.",
+ "questions": "Fragen",
+ "questions-answered": "Beantwortete Fragen:",
+ "quizzes-subtitle": "Finden Sie heraus, wie gut Ihr Wissen über Ethereum und Kryptowährungen ist. Sind Sie bereit, ein Experte zu werden?",
+ "retry": "Wiederholte Versuche:",
"score": "Punktzahl",
"see-results": "Ergebnisse anzeigen",
"share-results": "Ergebnisse teilen",
- "submit-answer": "Antwort senden",
- "test-your-knowledge": "Teste dein Wissen",
- "total": "Total",
+ "start": "Start",
+ "submit-answer": "Antwort überprüfen",
+ "test-your-knowledge": "Testen Sie Ihr Ethereum-Wissen",
"try-again": "Versuche es erneut",
+ "using-ethereum": "Ethereum verwenden",
+ "using-ethereum-description": "Tauchen Sie ein in die realen Anwendungen von Ethereum und entdecken Sie, wie diese revolutionäre Blockchain-Plattform Branchen umgestaltet. Das ist eine gute Möglichkeit, um sicherzustellen, dass Sie die Thematik gut genug verstehen, bevor Sie anfangen, Kryptowährungen aktiv zu nutzen.",
+ "want-more-quizzes": "Möchten Sie hier mehr Quiz sehen?",
+ "your-results": "Ihre Ergebnisse",
+ "your-total": "Ihre Gesamtpunktzahl",
"a001-prompt": "Der größte Unterschied zwischen Ethereum und Bitcoin ist:",
"a001-a-label": "Auf Ethereum kannst du keine Zahlungen an andere Personen schicken",
"a001-a-explanation": "Sowohl mit Bitcoin als auch mit Ethereum kannst du Zahlungen an andere Personen schicken.",
@@ -36,21 +55,21 @@
"a003-c-explanation": "Die Ethereum-Stiftung hat keine nennenswerte Rolle im Betrieb der Ethereum-Nodes.",
"a003-d-label": "Jeder, der eine Node betreibt",
"a003-d-explanation": "Wer eine Node betreibt, ist ein entscheidender Teil von Ethereums Infrastruktur. Überlege dir den Betrieb einer Ethereum-Node, wenn du hier noch nicht aktiv bist.",
- "a004-prompt": "Wie oft ist das Netzwerk seit dem Start von Ethereum offline gegangen?",
+ "a004-prompt": "Wie oft war das Netzwerk seit dem Start von Ethereum offline?",
"a004-a-label": "Nie",
"a004-b-label": "Einmal",
"a004-c-label": "Vier Mal",
"a004-d-label": "Mehr als zehn Mal",
- "a004-explanation": "Ethereum ist seit dem Start noch nie ganz offline gegangen.",
+ "a004-explanation": "Ethereum ist seit seiner Einführung noch nie vollständig offline gegangen (hat also nie aufgehört, Blöcke zu produzieren).",
"a005-prompt": "Ethereum verbraucht mehr Strom als:",
- "a005-a-label": "YouTube",
- "a005-a-explanation": "YouTube verbraucht ca. 244 Terawatt pro Jahr. Ethereum verbraucht 0,01 Terawatt pro Jahr.",
+ "a005-a-label": "Goldabbau",
+ "a005-a-explanation": "Der Goldbergbau verbraucht ca. 131 Terawatt pro Jahr. Ethereum verbraucht etwa 0,0026 Terawattt pro Jahr.",
"a005-b-label": "Netflix",
- "a005-b-explanation": "Netflix verbraucht ca. 94 Terawatt pro Jahr. Ethereum verbraucht 0,01 Terawatt pro Jahr.",
+ "a005-b-explanation": "Netflix verbraucht ca. 0,451 Terawatt pro Jahr. Ethereum verbraucht 0,0026 Terawatt pro Jahr.",
"a005-c-label": "PayPal",
- "a005-c-explanation": "PayPal verbraucht ca. 0.26 Terawatt pro Jahr. Ethereum verbraucht 0,01 Terawatt pro Jahr.",
+ "a005-c-explanation": "PayPal verbraucht ca. 0,26 Terawatt pro Jahr. Ethereum verbraucht 0,0026 Terawatt pro Jahr.",
"a005-d-label": "Keines der genannten",
- "a005-d-explanation": "Ethereum verwendet 0,01 Terawatt pro Jahr. Weniger als YouTube (~244 TW), Netflix (~94 TW) und Paypal (~0,26 TW).",
+ "a005-d-explanation": "Ethereum verbraucht etwa 0,0026 Terawatt pro Jahr. Das ist weniger als Goldbergbau (~131 TWh/Jahr), Netflix (~0,451 TWh/Jahr) und Paypal (~0,26 TWh/Jahr).",
"b001-prompt": "Ether ist auch bekannt als:",
"b001-a-label": "ETC",
"b001-a-explanation": "ETC ist das Kürzel für Ethereum Classic.",
@@ -305,8 +324,5 @@
"h005-c-label": "Eth1",
"h005-c-explanation": "Eth1 war der ursprüngliche Name für die Ausführungsebene, nicht die Konsensschicht.",
"h005-d-label": "Staking",
- "h005-d-explanation": "Staking bedeutet, dass ETH in einen intelligenten Vertrag eingezahlt wird, um die Sicherheit der Chain zu unterstützen.",
- "page-assets-merge": "Die Zusammenführung",
- "security": "Sicherheit",
- "page-what-is-ethereum-what-is-ether": "Was ist Ether?"
+ "h005-d-explanation": "Staking bedeutet, dass ETH in einen intelligenten Vertrag eingezahlt wird, um die Sicherheit der Chain zu unterstützen."
}
diff --git a/src/intl/de/page-dapps.json b/src/intl/de/page-dapps.json
index f1bf1239cbd..67fc4e50aaa 100644
--- a/src/intl/de/page-dapps.json
+++ b/src/intl/de/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Übertragen Sie Geld in Echtzeit.",
"page-dapps-dapp-description-superrare": "Kaufen Sie digitale Kunst direkt vom Künstler oder auf dem Zweitmarkt.",
"page-dapps-dapp-description-token-sets": "Strategien für Krypto-Investitionen, die sich automatisch ausgleichen.",
- "page-dapps-dapp-description-tornado-cash": "Versenden Sie anonyme Transaktionen auf Ethereum.",
"page-dapps-dapp-description-uniswap": "Tauschen Sie Token einfach oder stellen Sie Token für prozentuale Vergütung zur Verfügung.",
"page-dapps-dapp-description-dexguru": "Nicht-verwahrendes Handelsterminal für DeFi-Trader",
"page-dapps-dapp-description-synthetix": "Synthetix ist ein Protokoll für die Emission und den Handel mit synthetischen Vermögenswerten",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Diese Anwendungen konzentrieren sich auf die Dezentralisierung von Entwicklerwerkzeugen, die Einbindung kryptoökonomischer Systeme in bestehende Technologien und die Schaffung von Marktplätzen für Open-Source-Entwicklungsarbeit.",
"page-dapps-technology-title": "Dezentralisierte Technologie",
"page-dapps-token-sets-logo-alt": "Token-Sets-Logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado-Cash-Logo",
"page-dapps-uniswap-logo-alt": "Uniswap-Logo",
"page-dapps-wallet-callout-button": "Finde eine Wallet",
"page-dapps-wallet-callout-description": "Wallets sind auch dapps. Finde eine basierend auf den Merkmalen, die Ihnen passen.",
diff --git a/src/intl/de/page-get-eth.json b/src/intl/de/page-get-eth.json
index 864c18b4714..38923b2c954 100644
--- a/src/intl/de/page-get-eth.json
+++ b/src/intl/de/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Börsen sind Unternehmen, mit denen Sie Krypto mit traditionellen Währungen kaufen können. Sie verwahren das ETH, das Sie kaufen, bis Sie es zu einer Wallet senden, die Sie verwalten.",
"page-get-eth-checkout-dapps-btn": "Schauen Sie sich dApps an",
"page-get-eth-community-safety": "Community-Beiträge zur Sicherheit",
- "page-get-eth-description": "Ethereum und ETH werden nicht von einer Regierung oder einem Unternehmen kontrolliert – sie sind dezentralisiert. Das heißt, dass ETH für jeden frei zugänglich ist.",
+ "page-get-eth-description": "Ethereum wird nicht von einer einzelnen Organisation kontrolliert – es ist dezentralisiert.",
"page-get-eth-dex": "Dezentralisierte Börsen (DEX)",
- "page-get-eth-dex-desc": "Wenn Sie mehr Kontrolle haben möchten, dann kaufen Sie ETH peer-to-peer. Mit einem DEX können Sie handeln, ohne die Kontrolle über Ihre Gelder an ein zentralisiertes Unternehmen abzugeben.",
+ "page-get-eth-dex-desc": "Für mehr Kontrolle können Sie ETH mithilfe von Smart Contracts erwerben. Auf einer dezentralisierten Börse (DEX) können Sie digitale Assets handeln, ohne jemals die Kontrolle über Ihre Mittel an ein zentralisiertes Unternehmen abzutreten.",
+ "page-get-eth-peers": "Erhalten Sie ETH von Ihrem Bekanntenkreis (Peer-to-peer)",
+ "page-get-eth-peers-desc": "Sobald Sie ein Ethereum-Konto haben, müssen Sie lediglich Ihre Adresse teilen, um das Senden und Empfangen von ETH (und anderen Tokens) mittels Peer-to-Peer-Transfer zu starten.",
+ "page-get-eth-staking": "Staking-Belohnungen",
+ "page-get-eth-staking-desc": "Wenn Sie bereits einige ETH besitzen, können Sie mehr verdienen, indem Sie einen Validator-Node betreiben. Für diese Verifizierungsarbeit werden Sie in ETH entlohnt.",
+ "page-get-eth-earn": "ETH verdienen",
+ "page-get-eth-earn-desc": "Sie können ETH verdienen, indem Sie für DAOs (Dezentralisierte Autonome Organisationen) oder Unternehmen arbeiten, die in Krypto bezahlen, Bountys gewinnen, Softwarefehler finden und mehr.",
+ "page-get-eth-daos-link-desc": "Mehr über DAOs",
+ "page-get-eth-cex-link-desc": "Hier eine Liste von Börsen",
+ "page-get-eth-staking-link-desc": "Mehr über Staking erfahren",
"page-get-eth-dexs": "Dezentralisierte Börsen (DEX)",
"page-get-eth-dexs-desc": "Dezentralisierte Börsen sind offene Marktplätze für ETH und andere Token. Sie verbinden Käufer und Verkäufer direkt.",
"page-get-eth-dexs-desc-2": "Anstatt einen vertrauenswürdigen Dritten zu verwenden, um Geld bei der Transaktion zu schützen, verwenden sie Code. Das ETH des Verkäufers wird erst überwiesen, wenn die Zahlung garantiert ist. Diese Art von Code wird als Smart Contract bezeichnet.",
- "page-get-eth-dexs-desc-3": "Das bedeutet, dass es weniger geografische Beschränkungen gibt als bei zentralisierten Alternativen. Wenn jemand verkauft, was Sie wollen, und eine Zahlungsmethode akzeptiert, die Sie liefern können, sind Sie startklar. DEXs ermöglichen es Ihnen, ETH mit anderen Token, PayPal oder sogar persönlichen Geldlieferungen zu kaufen.",
+ "page-get-eth-dexs-desc-3": "Das heißt, es gibt weniger geographische Einschränkungen als bei zentralisierten Alternativen. Wenn jemand das anbietet, was Sie suchen, und eine Zahlungsmethode akzeptiert, die Sie nutzen können, steht Ihrem Kauf nichts im Wege.",
"page-get-eth-do-not-copy": "Beispiel: Nicht kopieren",
"page-get-eth-exchanges-disclaimer": "Wir haben diese Informationen manuell zusammengestellt. Wenn Ihnen Fehler auffallen, teilen Sie es uns über folgende E-Mail-Adresse mit: ",
- "page-get-eth-exchanges-empty-state-text": "Geben Sie Ihr Wohnsitzland an, um eine Liste von Wallets und Börsen zu sehen, die Sie zum Kauf von ETH benutzen können",
+ "page-get-eth-exchanges-empty-state-text": "Geben Sie Ihr Wohnland ein, um eine Liste von Börsen zu sehen, die Sie möglicherweise nutzen können",
"page-get-eth-exchanges-except": "Außer",
"page-get-eth-exchanges-header": "In welchem Land leben Sie?",
"page-get-eth-exchanges-header-exchanges": "Börsen",
"page-get-eth-exchanges-header-wallets": "Wallets",
- "page-get-eth-exchanges-intro": "Börsen und Wallets haben Beschränkungen dafür, wo sie Krypto verkaufen können.",
+ "page-get-eth-exchanges-intro": "Börsen unterliegen Einschränkungen, wo sie Krypto verkaufen können. Dies ist eine indikative Liste von Diensten, von denen angenommen wird, dass sie in jedem Land tätig sind. Die Aufnahme hier stellt keine Empfehlung dar – Sie sollten Ihre eigenen Recherchen durchführen!",
"page-get-eth-exchanges-no-exchanges": "Leider kennen wir keine Börsen, bei denen Sie ETH in diesem Land kaufen können. Wenn Sie eine kennen, schreiben Sie uns eine E-Mail an ",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Leider kennen wir keine Börsen oder Wallets, bei denen Sie ETH in diesem Land kaufen können. Wenn Sie eine kennen, schreiben Sie uns eine E-Mail an ",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Leider kennen wir keine Börsen, bei denen Sie ETH in diesem Land kaufen können. Wenn Sie eine kennen, schreiben Sie uns eine E-Mail an ",
"page-get-eth-exchanges-no-wallets": "Leider kennen wir keine Wallets, mit denen Sie ETH in diesem Land kaufen können. Wenn Sie eine kennen, schreiben Sie uns eine E-Mail an ",
"page-get-eth-exchanges-search": "Schreiben Sie, wo Sie leben...",
"page-get-eth-exchanges-success-exchange": "Aufgrund ihrer rechtlichen Kontrollen kann es einige Tage dauern, um sich bei einer Börse zu registrieren.",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Erhalten Sie ETH Hero Image",
"page-get-eth-keep-it-safe": "Schützen Sie Ihr ETH",
"page-get-eth-meta-description": "Wie Sie ETH basierend auf Ihrem Wohnort kaufen können und Empfehlungen, wie Sie sich darum kümmern.",
- "page-get-eth-meta-title": "So kauft man ETH",
+ "page-get-eth-meta-title": "Wie Sie ETH bekommen",
"page-get-eth-need-wallet": "Sie brauchen eine Wallet, um eine DEX verwenden zu können.",
"page-get-eth-new-to-eth": "Neu bei ETH? Hier ist eine Übersicht, um loszulegen.",
"page-get-eth-other-cryptos": "Kaufen Sie mit anderen Kryptowährungen",
- "page-get-eth-protect-eth-desc": "Wenn Sie sehr viel ETH kaufen wollen, möchten Sie sie vielleicht in einer Wallet, die Sie kontrollieren, aufbewahren, nicht an einer Börse. Das liegt daran, dass Börsen ein wahrscheinliches Ziel für Hacker sind. Wenn ein Hacker Zugang erhält, könnten Sie Ihr Guthaben verlieren. Alternativ haben nur Sie die Kontrolle über Ihre Wallet.",
- "page-get-eth-protect-eth-in-wallet": "Schützen Sie Ihr ETH in einer Wallet",
+ "page-get-eth-protect-eth-desc": "Eine der Hauptfunktionen von Ethereum ist, dass Sie durch die Verwaltung Ihres eigenen Kontos die Kontrolle über Ihre eigenen Vermögenswerte behalten. Das bedeutet, dass Sie keiner Drittpartei vertrauen müssen, und Sie sind geschützt vor einem Verwahrer, der unehrlich handelt, Insolvenz anmeldet oder gehackt wird. Allerdings bedeutet das auch, dass Sie die Verantwortung für Ihre eigene Sicherheit übernehmen.",
+ "page-get-eth-protect-eth-in-wallet": "Bewahren Sie Ihre ETH in Ihrer eigenen Wallet auf",
"page-get-eth-search-by-country": "Nach Land suchen",
- "page-get-eth-security": "Aber das bedeutet auch, dass Sie die Sicherheit Ihres Guthabens ernst nehmen müssen. Mit ETH vertrauen Sie nicht einer Bank, dass sie auf Ihr Geld aufpasst, sondern Sie vertrauen sich selbst.",
+ "page-get-eth-security": "Das bedeutet, dass Sie die Sicherheit Ihrer Geldmittel ernst nehmen müssen. Bei ETH verlassen Sie sich nicht auf eine Bank oder ein Unternehmen zur Aufbewahrung Ihrer Vermögenswerte, sondern übernehmen diese Verantwortung selbst.",
"page-get-eth-smart-contract-link": "Mehr zu Smart Contracts",
"page-get-eth-swapping": "Tauschen Sie Ihre Token gegen ETH anderer Leute und umgekehrt.",
"page-get-eth-try-dex": "Testen Sie eine DEX",
"page-get-eth-use-your-eth": "Nutzen Sie Ihr ETH",
"page-get-eth-use-your-eth-dapps": "Jetzt, da Sie eine Wallet haben, schauen Sie sich doch ein paar Ethereum-Anwendungen (dApps) an. Es gibt dApps für Finanzen, soziale Medien, Gaming und viele andere Kategorien.",
"page-get-eth-wallet-instructions": "Folgen Sie der Wallet-Anleitung",
- "page-get-eth-wallet-instructions-lost": "Wenn Sie den Zugriff auf Ihre Wallet verlieren, verlieren Sie den Zugriff zu Ihrem Guthaben. Ihre Wallet sollte Ihnen Anweisungen geben, wie Sie sich davor schützen können. Beachten Sie diese sorgfältig – in den meisten Fällen kann Ihnen niemand helfen, wenn Sie den Zugriff zu Ihrer Wallet verlieren.",
+ "page-get-eth-wallet-instructions-lost": "Wenn Sie den Zugang zu Ihrem Konto verlieren, verlieren Sie auch den Zugang zu Ihren Geldmitteln. Ihre Wallet sollte Ihnen Anweisungen zum Schutz vor einem solchen Fall geben. Befolgen Sie diese sorgfältig – in den meisten Fällen kann Ihnen niemand helfen, wenn Sie den Zugang zu Ihrem Konto verlieren.",
"page-get-eth-wallets": "Wallets",
"page-get-eth-wallets-link": "Mehr zu Wallets",
"page-get-eth-wallets-purchasing": "Einige Wallets ermöglichen Ihnen den Kauf von Krypto mit einer Debit-/Kreditkarte, Banküberweisung oder sogar Apple Pay. Es gelten geografische Einschränkungen.",
- "page-get-eth-warning": "Diese DEXs sind nicht für Anfänger gedacht, da Sie etwas ETH benötigen, um sie zu nutzen.",
+ "page-get-eth-warning": "Diese DEXs sind nichts für Anfänger, da Sie einige ETH benötigen, um sie zu nutzen. Dies sind nur Beispiele, keine empfohlenen Produkte. Führen Sie Ihre eigenen Recherchen durch!",
"page-get-eth-what-are-DEX's": "Was sind DEX?",
"page-get-eth-whats-eth-link": "Was ist ETH?",
- "page-get-eth-where-to-buy-desc": "Sie können ETH von Börsen oder Wallets direkt kaufen.",
+ "page-get-eth-where-to-buy-desc": "Sie können ETH entweder durch Arbeit verdienen, von Freunden erhalten oder auf Börsen und in Apps kaufen.",
"page-get-eth-where-to-buy-desc-2": "Überprüfen Sie, welche Dienste Sie nutzen können, je nachdem, wo Sie wohnen.",
- "page-get-eth-where-to-buy-title": "Wo man ETH kaufen kann",
+ "page-get-eth-where-to-buy-title": "Wo man ETH bekommt",
"page-get-eth-your-address": "Ihre ETH-Adresse",
"page-get-eth-your-address-desc": "Wenn Sie eine Wallet herunterladen, wird sie eine öffentliche ETH-Adresse für Sie erstellen. So sieht sie aus:",
"page-get-eth-your-address-desc-3": "Stellen Sie es sich wie Ihre E-Mail-Adresse vor, aber anstatt E-Mails kann man ETH empfangen. Wenn Sie ETH von einer Börse zu Ihrer Wallet überweisen wollen, benutzen Sie Ihre Adresse als Ziel. Überprüfen Sie Ihre Angaben vor dem Abschicken immer zweimal!",
diff --git a/src/intl/de/page-languages.json b/src/intl/de/page-languages.json
index c9d016f1444..0e187b33a45 100644
--- a/src/intl/de/page-languages.json
+++ b/src/intl/de/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Sie möchten ethereum.org in einer anderen Sprache sehen?",
"page-languages-want-more-link": "Übersetzungsprogramm",
"page-languages-want-more-paragraph": "Übersetzer von ethereum.org sind immer dabei, Seiten in so viele Sprachen wie möglich zu übersetzen. Um zu sehen, woran sie gerade arbeiten oder um Sie anzumelden, um mitzumachen, informieren Sie sich über unser",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Filterliste",
+ "page-languages-filter-placeholder": "Schreiben, um zu filtern",
+ "page-languages-browser-default": "Browserstandard",
+ "page-languages-translated": "übersetzt",
+ "page-languages-words": "Wörter",
+ "page-languages-recruit-community": "Hilf uns bei der Übersetzung von ethereum.org.",
+ "langauge-am": "Amharisch",
"language-ar": "Arabisch",
"language-az": "Aserbaidschanisch",
+ "langauge-be": "Belarussisch",
"language-bg": "Bulgarisch",
"language-bn": "Bengalisch",
+ "language-bs": "Bosnisch",
"language-ca": "Katalanisch",
"language-cs": "Tschechisch",
"language-da": "Dänisch",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Kroatisch",
"language-hu": "Ungarisch",
+ "language-hy-am": "Armenisch",
"language-id": "Indonesisch",
"language-ig": "Igbo",
"language-it": "Italienisch",
@@ -39,12 +48,14 @@
"language-ka": "Georgisch",
"language-kk": "Kasachisch",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Koreanisch",
"language-lt": "Litauisch",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malaiisch",
"language-nb": "Norwegisch",
+ "language-ne-np": "Nepalesisch",
"language-nl": "Niederländisch",
"language-pcm": "Nigerianisches Pidgin",
"language-fil": "Filipino",
@@ -58,8 +69,9 @@
"language-sl": "Slowenisch",
"language-sr": "Serbisch",
"language-sw": "Suaheli",
- "language-th": "Thai",
"language-ta": "Tamil",
+ "language-th": "Thai",
+ "language-tk": "Turkmenisch",
"language-tr": "Türkisch",
"language-uk": "Ukrainisch",
"language-ur": "Urdu",
diff --git a/src/intl/de/page-layer-2.json b/src/intl/de/page-layer-2.json
index d7b5fc3b8de..7f607733604 100644
--- a/src/intl/de/page-layer-2.json
+++ b/src/intl/de/page-layer-2.json
@@ -123,6 +123,7 @@
"zksync-description": "zkSync ist eine nutzerzentrierte ZK-Rollup-Plattform von Matter Labs. Diese Skalierungslösung für Ethereum ist im Mainnet von Ethereum bereits freigeschaltet. Sie unterstützt Zahlungen, den Tausch von Token und das Prägen von NFTs.",
"zkspace-description": "Die ZKSpace Plattform besteht aus drei Hauptkomponenten: einem Ebene 2 AMM DEX mit ZK-Rollup-Technologie namens ZKSwap, einem Zahlungsservice namens ZKSquare und einem NFT-Marktplatz namens ZKSea.",
"aztec-description": "Das Aztec-Netzwerk ist das erste private ZK-Rollup auf Ethereum, das dezentralen Anwendungen Zugang zur Privatsphäre und Skalierung ermöglicht.",
+ "starknet-description": "Starknet ist ein Validity Rollup Layer 2. Es bietet eine hohe Durchsatzrate, niedrige Gasgebühren und behält das Sicherheitsniveau von Ethereum Layer 1 bei.",
"layer-2-note": "Hinweis:",
"layer-2-ecosystem-portal": "Portal für das Ökosystem",
"layer-2-token-lists": "Token-Listen",
diff --git a/src/intl/de/page-learn.json b/src/intl/de/page-learn.json
index aad46654187..b6bca459b9b 100644
--- a/src/intl/de/page-learn.json
+++ b/src/intl/de/page-learn.json
@@ -1,37 +1,37 @@
{
"toc-learn-hub": "Lernhub",
- "toc-what-is-crypto-ethereum": "Was ist Krypto und Ethereum?",
- "toc-how-do-i-use-ethereum": "Wie verwende ich Ethereum?",
+ "toc-what-is-crypto-ethereum": "Was ist Ethereum?",
+ "toc-how-do-i-use-ethereum": "Wie nutze ich Ethereum?",
"toc-what-is-ethereum-used-for": "Wofür wird Ethereum verwendet?",
"toc-strengthen-the-ethereum-network": "Stärkung des Ethereum-Netzwerks",
- "toc-learn-about-the-ethereum-protocol": "Erfahren Sie mehr über das Ethereum-Protokoll",
- "toc-learn-about-the-ethereum-community": "Erfahren Sie mehr über die Ethereum-Community",
+ "toc-learn-about-the-ethereum-protocol": "Mehr über das Ethereum-Protokoll erfahren",
+ "toc-learn-about-the-ethereum-community": "Mehr über die Ethereum-Community erfahren",
"toc-books-and-podcasts": "Bücher und Podcasts",
- "hero-header": "Lerne mehr über Ethereum",
+ "hero-header": "Mehr über Ethereum erfahren",
"hero-subtitle": "Ihr Bildungshandbuch zur Welt von Ethereum. Hier können Sie erfahren, wie Ethereum funktioniert und wie Sie eine Verbindung dazu herstellen. Auf dieser Seite finden Sie sowohl technische als auch nicht-technische Artikel, Anleitungen und Ressourcen.",
"hero-button-lets-get-started": "Los geht's",
- "what-is-crypto-1": "Sie haben vielleicht bereits von Kryptowährungen, Bitcoin und Blockchain gehört. Diese Seite wird Ihnen helfen zu verstehen, um was es sich dabei handelt und wie Ethereum damit zusammenhängt.",
- "what-is-crypto-link-1": "Und was ist Ethereum überhaupt?",
- "what-is-crypto-2": "Bitcoin ermöglicht jedem Geld weltweit zu überweisen. Ethereum ermöglicht und ebenfalls jedem, jede vorstellbare Art von Vertrag zu erstellen und zu vereinbaren. Es ist widerstandsfähig und flexibel: Jedes Computerprogramm kann auf Ethereum laufen.",
+ "what-is-crypto-1": "Sie haben vielleicht bereits von Kryptowährungen, Bitcoin und Blockchain gehört. Über die Links unten gelangen Sie zu Informationen, um mehr darüber zu erfahren, worum es sich konkret handelt und wie Ethereum damit zusammenhängt.",
+ "what-is-crypto-2": "Kryptowährungen wie Bitcoin ermöglichen es jeder Person, weltweit Geld zu überweisen. Ethereum kann das auch, aber es kann auch einen Code ausführen, mithilfe dessen sich Apps und Organisationen kreieren lassen. Es ist sowohl widerstandsfähig als auch flexibel: Jedes Computerprogramm kann auf Ethereum laufen. Erfahren Sie mehr und finden Sie heraus, wie Sie anfangen können:",
"what-is-ethereum-card-title": "Was ist Ethereum?",
"what-is-ethereum-card-description": "Wenn Sie neu sind, starten Sie hier um zu lernen, weshalb Ethereum eine wichtige Rolle spielt.",
"what-is-ethereum-card-image-alt": "Abbildung einer Person, die in einen Basar hineinblickt, der Ethereum repräsentiert.",
"what-is-eth-card-title": "Was ist ETH?",
"what-is-eth-description": "Ether (ETH) ist die Währung, die das Netzwerk und die Apps von Ethereum antreibt.",
- "where-can-i-get-eth-card-title": "Wo bekomme ich ETH?",
- "where-can-i-get-eth-card-description": "Je nach Standort gibt es viele Möglichkeiten, ETH zu bekommen.",
+ "what-is-web3-card-title": "Was ist Web3?",
+ "what-is-web3-card-description": "Web3 ist ein Modell für das Internet, das das Eigentum an Ihrem Vermögen und Ihrer Identität sicherstellt.",
"additional-reading-more-on-ethereum-basics": "Mehr zu den Grundlagen von Ethereum",
+ "guides-hub-desc": "Leitfäden: Schritt-für-Schritt-Anleitungen zur Nutzung von Ethereum",
+ "quiz-hub-desc": "Quiz-Hub: Testen Sie Ihr Wissen",
"additional-reading-what-are-smart-contracts": "Was sind Smart Contracts?",
- "additional-reading-a-developers-intro": "Eine Einführung in Ethereum für Entwickler",
"additional-reading-what-is-web3": "Was ist web3?",
- "additional-reading-value": "Was ist Wert?",
- "additional-reading-decentralize-everything": "Alles dezentralisieren",
- "how-do-i-use-ethereum-1": "Die Nutzung von Ethereum ist wie ein Umzug an einen neuen Ort. Anfangs wird alles ungewohnt erscheinen, und jeder zieht aus seinen eigenen Gründen um. Trotzdem benötigen Sie zuerst neue Schlüssel. Die Software, die die Schlüssel für Ihr neues Zuhause erstellt und verwahrt, wird „Wallet\" genannt.",
+ "additional-reading-ethereum-in-thirty-minutes": "Ethereum in 30 Minuten von Vitalik Buterin",
+ "additional-reading-get-eth": "Erfahren Sie, wie Sie ETH bekommen können",
+ "how-do-i-use-ethereum-1": "Ethereum kann ganz nach den eigenen Zielen und Vorstellungen für vieles genutzt werden. Vielleicht möchten Sie sich bei einer App anmelden, Ihre Online-Identität nachweisen oder etwas ETH überweisen. Als Erstes benötigen Sie ein Konto. Der einfachste Weg, ein Konto zu erstellen und darauf zuzugreifen, geht über eine Software, die Wallet genannt wird.",
"what-is-a-wallet-card-title": "Was ist eine Wallet?",
- "what-is-a-wallet-card-description": "Wallets sind wie Schlüsselbunde: Sie speichern, was Sie benötigen, um Zugang zu den Orten zu erhalten, die Sie schätzen.",
+ "what-is-a-wallet-card-description": "Digitale Geldbörsen sind wie echte Geldbörsen: Sie speichern, was Sie brauchen, um Ihre Identität nachzuweisen und Zugang zu den Orten zu erhalten, die Ihnen wichting sind.",
"what-is-a-wallet-card-alt": "Illustration eines Roboters.",
"find-a-wallet-card-title": "Finden Sie eine Wallet",
- "find-a-wallet-card-description": "Wir werden Ihnen helfen, die beste Wallet basierend auf den Funktionen zu finden, die für Sie wichtig sind.",
+ "find-a-wallet-card-description": "Durchsuchen Sie die Geldbörsen nach den für Sie wichtigen Funktionen.",
"find-a-wallet-button": "Liste der Wallets",
"crypto-security-basics-card-title": "Grundlagen zur Sicherheit",
"crypto-security-basics-card-description": "Lernen Sie, wie Sie Betrugsversuche erkennen und die häufigsten Tricks vermeiden können.",
@@ -41,9 +41,8 @@
"things-to-consider-banner-2": "Gebühren können hoch sein, abhängig von der Anzahl der Personen, die Ethereum nutzen möchten, daher empfehlen wir die Verwendung von",
"things-to-consider-banner-layer-2": "Layer 2",
"additional-reading-more-on-using-ethereum": "Mehr zur Verwendung von Ethereum",
- "additional-reading-how-to-create-an-ethereum-account": "So \"registrieren\" Sie ein Ethereum-Konto",
+ "additional-reading-how-to-create-an-ethereum-account": "So erstellen Sie ein Ethereum-Konto",
"additional-reading-how-to-use-a-wallet": "So verwenden Sie eine Wallet",
- "additional-reading-support-for-ethereum-and-wallets": "Unterstützung für Ethereum und Wallets",
"additional-reading-layer-2": "Layer 2: Senkung der Transaktionsgebühren",
"what-is-ethereum-used-for-1": "Durch Ethereum wurden neue Produkte und Dienstleistungen geschaffen, die verschiedene Bereiche unseres Lebens verbessern können. Wir befinden uns noch in den frühen Phasen, aber es gibt viele spannende Entwicklungen, auf die man sich freuen kann.",
"defi-card-title": "Dezentrale Finanzen (DeFi)",
@@ -86,13 +85,10 @@
"ethereum-whitepaper-card-button": "Lesen Sie das Whitepaper",
"more-on-ethereum-protocol-title": "Mehr zum Ethereum-Protokoll",
"more-on-ethereum-protocol-ethereum-for-developers": "Ethereum für Entwickler",
- "more-on-ethereum-protocol-eips": "Ethereum Verbesserungsvorschläge (EIP)",
- "more-on-ethereum-protocol-history": "Geschichte von Ethereum",
- "more-on-ethereum-protocol-governance": "Steuerung",
- "more-on-ethereum-protocol-bridges": "Brücken",
- "more-on-ethereum-protocol-kernel": "Kernel",
- "more-on-ethereum-protocol-week-in-ethereum": "Wöchentliche News-Protokolle in Ethereum ",
- "ethereum-community-description": "Der Erfolg von Ethereum ist auf seine unglaublich engagierte Gemeinschaft zurückzuführen. Tausende inspirierende und zielstrebige Menschen helfen dabei, die Vision von Ethereum voranzutreiben. Kommen Sie und schließen Sie sich uns an!",
+ "more-on-ethereum-protocol-consensus": "Ethereums Proof-of-Stake-basierter Konsensmechanismus.",
+ "more-on-ethereum-protocol-evm": "Ethereums integrierter Computer (Die EVM)",
+ "more-on-ethereum-protocol-nodes-and-clients": "Ethereums Knoten und Clients",
+ "ethereum-community-description": "Der Erfolg von Ethereum ist der unglaublich engagierten Community zu verdanken. Tausende von inspirierenden und engagierten Menschen tragen dazu bei, die Vision von Ethereum voranzutreiben, und sorgen gleichzeitig für die Sicherheit des Netzwerks durch Staking und Governance. Schließen Sie sich uns an und seien Sie dabei.",
"community-hub-card-title": "Community Hub",
"community-hub-card-description": "Unsere Gemeinschaft umfasst Menschen mit unterschiedlichem Hintergrund.",
"community-hub-card-alt": "Illustration einer Gruppe zusammenarbeitender Konstrukteure.",
@@ -102,7 +98,7 @@
"online-communities-card-title": "Online-Gemeinschaften",
"online-communities-card-description": "Online-Gemeinschaften bieten eine großartige Gelegenheit, um spezifische Fragen zu stellen oder sich zu beteiligen.",
"online-communities-card-button": "Erkunden Sie die Gemeinschaften",
- "books-about-ethereum": "Bücher über Ethereum und Kryptowährungen",
+ "books-about-ethereum": "Bücher über Ethereum",
"proof-of-stake-title": "Proof of Stake",
"proof-of-stake-description": "13. September 2022 - Vitalik Buterin, Nathan Schneider",
"cryptopians-title": "Die Kryptopianer",
@@ -111,29 +107,17 @@
"out-of-the-ether-description": "29. September 2020 - Matthew Leising",
"the-infinite-machine-title": "Die unendliche Maschine",
"the-infinite-machine-description": "14. Juli 2020 - Camila Russo",
- "the-age-of-cryptocurrency-title": "Das Zeitalter der Kryptowährung",
- "the-age-of-cryptocurrency-description": "12. Januar 2016 - Paul Vigna, Michael J. Casey",
- "the-truth-machine-title": "Die Wahrheitsmaschine",
- "the-truth-machine-description": "27. Februar 2018 - Paul Vigna, Michael J. Casey",
- "digital-gold-title": "Digitales Gold",
- "digital-gold-description": "24. Mai 2021 - Nathaniel Popper",
- "kings-of-crypto-title": "Könige von Krypto",
- "kings-of-crypto-description": "15. Dezember 2020 - Jeff John Roberts",
"mastering-ethereum-title": "Ethereum meistern",
"mastering-ethereum-description": "23. Dezember 2018 – Andreas M. Antonopoulos, Gavin Wood Ph.D.",
- "podcasts-about-ethereum": "Podcasts über Ethereum und Kryptowährungen",
+ "podcasts-about-ethereum": "Podcasts über Ethereum",
"bankless-title": "Banklos",
"bankless-description": "Ein Leitfaden für Krypto-Finanzen",
- "uncommon-core-title": "Ungewöhnlicher Kern",
- "uncommon-core-description": "Dieser Inhalt erkundet die transformative Natur von vertrauensminimierten Währungen und Finanzdienstleistungen",
"zeroknowledge-title": "Keinerlei Einsicht",
"zeroknowledge-description": "Taucht tief ein in die Technologie, die das entstehende dezentrale Web antreiben wird, und die Gemeinschaft, die daran arbeitet",
- "epicenter-title": "Epizentrum",
- "epicenter-description": "Dieses Thema erforscht die technischen, wirtschaftlichen und sozialen Auswirkungen der Kryptowährungsbranche",
+ "green-pill-title": "Green Pill",
+ "green-pill-description": "Erläutert die kryptoökonomischen Systeme, die positive externe Effekte für die Welt schaffen",
"unchained-title": "Entkoppelt",
"unchained-description": "Taucht tief ein in die Menschen, die das dezentralisierte Internet aufbauen, die Details dieser Technologie, die unsere Zukunft unterstützen könnte, und einige der kniffligsten Themen in der Kryptowelt wie Regulierung, Sicherheit und Privatsphäre",
- "into-the-bytecode-title": "Im Bytecode",
- "into-the-bytecode-description": "Ein Podcast über die Ideen, die Krypto prägen",
"the-daily-gwei-title": "Der tägliche Gwei",
"the-daily-gwei-description": "Zusammenfassungen, Updates und Analysen zu Ethereum-Nachrichten"
}
diff --git a/src/intl/de/page-stablecoins.json b/src/intl/de/page-stablecoins.json
index f70eee88d8d..da74f5156d2 100644
--- a/src/intl/de/page-stablecoins.json
+++ b/src/intl/de/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Quelle",
"page-stablecoins-bitcoin-pizza": "Die berüchtigte Bitcoin-Pizza",
"page-stablecoins-bitcoin-pizza-body": "Im Jahr 2010 kaufte jemand 2 Pizzen für 10.000 Bitcoins. Zu der Zeit waren diese ~ 41 USD wert. Auf dem heutigen Markt sind das Millionen von Dollar. Es gibt viele ähnliche bedauerliche Transaktionen in der Geschichte von Ethereum. Stablecoins lösen dieses Problem, sodass Sie Ihre Pizza genießen und an Ihren ETH festhalten können.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Onderwijs",
"page-stablecoins-coin-price-change": "Coin-Preisänderung (letzte 30 Tage)",
"page-stablecoins-crypto-backed": "Krypto-unterstützt",
"page-stablecoins-crypto-backed-con-1": "Weniger stabil als von Papiergeld unterstützte Stablecoins.",
diff --git a/src/intl/de/page-upgrades-index.json b/src/intl/de/page-upgrades-index.json
index f50da0de1ca..46a2eb897f9 100644
--- a/src/intl/de/page-upgrades-index.json
+++ b/src/intl/de/page-upgrades-index.json
@@ -8,9 +8,9 @@
"consensus-client-nimbus-logo-alt": "Nimbus-Logo",
"consensus-client-prysm-logo-alt": "Prysm-Logo",
"consensus-client-teku-logo-alt": "Teku-Logo",
- "page-upgrades-answer-1": "Die Beacon Chain wurde als Werkzeug bei der Zusammenführung des Ethereum Hauptnetzes verwendet.",
- "page-upgrades-answer-2": "Mit der Zusammenführung hatte Ethereum sein umfangreichstes Upgrade, das je den Proof-of-Work-Prozess gegen eine neue Proof-of-Stake basierte Konsensschicht austauschte.",
- "page-upgrades-answer-4": "Die Beacon Chain wurde verwendet, um den auf dem Spiel beruhenden Konsens zu entwickeln, den Ethereum heute verwendet. Es wurde separat an Ethereum Mainnet ausgeführt, so dass Entwickler den Konsensmechanismus isoliert beobachten konnten, bevor sie es zur Koordinierung realer Aktivitäten verwenden.",
+ "page-upgrades-answer-1": "Die Beacon Chain wurde als Werkzeug für das Ethereum Mainnet-Upgrade bei der Zusammenführung verwendet.",
+ "page-upgrades-answer-2": "Durch die Zusammenführung hat Ethereum sein bisher umfangreichstes Upgrade erhalten – dabei wurde die Proof-of-Work-basierte Konsensebene gegen eine neue Proof-of-Stake-basierte Ebene ausgetauscht.",
+ "page-upgrades-answer-4": "Die Beacon Chain wurde verwendet, um den Proof-of-Stake-Konsens zu entwickeln, den Ethereum heute nutzt. Die Ausführung durchlief separat das Ethereum Mainnet, so dass Entwickler den Konsensmechanismus isoliert beobachten konnten, bevor er zur Koordinierung realer Aktivitäten verwendet wurde.",
"page-upgrade-article-author-status": "Status",
"page-upgrade-article-author-ethmerge": "Ethmerge",
"page-upgrade-article-author-alchemy": "Alchemy",
@@ -21,83 +21,83 @@
"page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin",
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
"page-upgrade-article-title-two-point-oh": "2.0: Die Beacon Chain",
- "page-upgrade-article-title-beacon-chain-explainer": "Die Beacon Chain – Ethereum 2.0-Erklärung, die Sie zu Beginn lesen sollten",
+ "page-upgrade-article-title-beacon-chain-explainer": "Die Erläuterung zu Beacon Chain Ethereum 2.0, die Sie zu Beginn lesen sollten",
"page-upgrade-article-title-sharding-consensus": "Sharding-Konsens",
"page-upgrade-article-title-sharding-is-great": "Warum Sharding großartig ist: Entmystifizierung der technischen Eigenschaften",
"page-upgrade-article-title-rollup-roadmap": "Eine Rollup-zentrierte Roadmap",
"page-upgrade-article-title-hitchhikers-guide-to-ethereum": "The Hitchhikers Guide To Ethereum",
"page-upgrade-article-title-eip-4844": "EIP-4844: Shard Blob-Transaktionen (Proto-Danksharding)",
- "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding FAQ",
- "page-upgrade-article-title-sharding-das": "Eine Erklärung zur Freigabe und Datenverfügbarkeitsprobenahme (DAS)",
+ "page-upgrade-article-title-proto-danksharding-faq": "Häufige Fragen zu Proto-Danksharding",
+ "page-upgrade-article-title-sharding-das": "Eine Erläuterung zu Sharding und Datenverfügbarkeitsprobenahmen (DAS)",
"page-upgrade-article-title-ethmerge": "Ethmerge",
- "page-upgrade-article-title-merge-is-coming": "Die Zusammenführung kommt",
- "page-upgrade-article-title-state-of-the-merge": "Zustand der Zusammenführung: Ein Update über Ethereums Zusammenführung zum Proof-of-Stake 2022",
+ "page-upgrade-article-title-merge-is-coming": "Die Zusammenführung steht bevor",
+ "page-upgrade-article-title-state-of-the-merge": "Status der Zusammenführung: Ein Update zu Ethereums Zusammenführung zum Proof-of-Stake 2022",
"page-upgrade-article-title-ropsten-merge-testnet": "Ankündigung des Ropsten Merge-Testnetzes",
"page-upgrade-article-title-execution-layer-specs": "Spezifikationen der Ausführungsebene",
- "page-upgrade-article-title-consensus-layer-specs": "Daten aus der Konsensebene",
- "page-upgrade-article-title-engine-api-specs": "Engine API Spezifikationen",
- "page-upgrades-beacon-chain-date": "Die Beacon Chain wurde am 1. Dezember 2020 in Betrieb genommen",
- "page-upgrades-beacon-chain-desc": "Die Beacon Chain brachte die grundlegende Idee zu Ethereum und legte den Grundstein für zukünftige Neuerungen. Es wird zudem das neue Proof-of-Stake Ethereum-System koordinieren.",
+ "page-upgrade-article-title-consensus-layer-specs": "Spezifikationen der Konsensebene",
+ "page-upgrade-article-title-engine-api-specs": "Spezifikationen der Engine API",
+ "page-upgrades-beacon-chain-date": "Die Beacon Chain ging am 1. Dezember 2020 live",
+ "page-upgrades-beacon-chain-desc": "Durch die Beacon Chain wurde Staking bei Ethereum eingeführt und der Grundstein für zukünftige Upgrades gelegt. Dadurch wird das neue Proof-of-Stake-Ethereum koordiniert.",
"page-upgrades-beacon-chain-estimate": "Die Beacon Chain ist live",
"page-upgrades-beacon-chain-title": "Die Beacon Chain",
"page-upgrades-bug-bounty": "Bug-Bounty-Programm anzeigen",
- "page-upgrades-clients": "Mehr erfahren über die Konsens-Clients (früher bekannt als „Eth2“-Clients)",
+ "page-upgrades-clients": "Erfahren Sie mehr über die Konsens-Clients (früher bekannt als „Eth2“-Clients)",
"page-staking-deposit-contract-title": "Mehr erfahren über die Adresse des Einzahlungsvertrags",
- "page-upgrades-dive": "Mehr erfahren über die Vision",
- "page-upgrades-dive-desc": "Wie werden wir Ethereum skalierbarer, sicherer und nachhaltiger machen? Und das alles unter Beibehaltung des wesentlichen Merkmals Ethereums: Die Dezentralisierung.",
+ "page-upgrades-dive": "Lernen Sie die Vision kennen",
+ "page-upgrades-dive-desc": "Wie gestalten wir Ethereum skalierbarer, sicherer und nachhaltiger? Unter Beibehaltung der Kernphilosophie von Ethereum: der Dezentralisierung.",
"page-upgrades-docking": "Die Zusammenführung",
- "page-upgrades-merge-answer-1": "Die Fusion fand statt, als Ethereum am 15. September 2022 zu Proof-of-Stake überging. Die Beacon Chain fusionierte mit Mainnet, was den Proof-of-Work-Ansatz offiziell ablöste und den Energieverbrauch von Ethereum um ca. 99,95 % gesenkt hat.",
- "page-upgrades-merge-btn": "Mehr zur Zusammenführung",
- "page-upgrades-merge-desc": "Mainnet Ethereum wird bald mit der Proof-of-Stake Beacon Chain „verschmelzen“ und damit das Ende des energieintensiven Mining markieren.",
- "page-upgrades-merge-estimate": "Die Zusammenführung kommt",
+ "page-upgrades-merge-answer-1": "Die Zusammenführung fand statt, als Ethereum am 15. September 2022 zum Proof-of-Stake-Konsens überging. Die Beacon Chain wurde mit dem Mainnet zusammengeführt, was den Proof-of-Work-Ansatz offiziell ablöste und den Energieverbrauch von Ethereum um ca. 99,95 % senkte.",
+ "page-upgrades-merge-btn": "Mehr zum Zusammenschluss",
+ "page-upgrades-merge-desc": "Mainnet-Ethereum wurde mit der Proof-of-Stake-Beacon Chain zusammengeführt, wodurch dem energieintensiven Mining ein Ende bereitet wurde.",
+ "page-upgrades-merge-estimate": "Die Zusammenführung ist live",
"page-upgrades-merge-mainnet": "Was ist das Mainnet?",
"page-upgrades-eth-blog": "ethereum.org-Blog",
- "page-upgrades-explore-btn": "Mehr erfahren über die Upgrades",
+ "page-upgrades-explore-btn": "Upgrades erkunden",
"page-upgrades-get-involved": "Werden Sie Teil des Ethereum-Upgrades",
"page-upgrades-get-involved-2": "Mitmachen",
- "page-upgrades-head-to-ethresearch": "Gehen Sie zu ethresear.ch",
- "page-upgrades-help": "Möchten Sie sich an den Ethereum-Upgrades beteiligen?",
- "page-upgrades-help-desc": "Es gibt viele Möglichkeiten, an den Ethereum-Upgrades mitzuwirken und beim Testen zu helfen und sogar Prämien zu verdienen.",
- "page-upgrades-index-staking": "Staking ist hier",
- "page-upgrades-index-staking-desc": "Der Schlüssel zu den Ethereum-Upgrades ist die Einführung von Staking. Wenn Sie Ihre ETH nutzen möchten, um dabei zu unterstützen, das Ethereum-Netzwerk zu sichern, dann befolgen Sie die aufgeführten Schritte.",
- "page-upgrades-index-staking-learn": "Mehr erfahren über Staking",
- "page-upgrades-index-staking-learn-desc": "Mit der Beacon Chain kommt das Staking auf Ethereum. Das bedeutet, wenn Sie ETH haben, können Sie etwas Gutes tun, indem Sie das Netzwerk sichern und dabei ETH verdienen.",
- "page-upgrades-index-staking-step-1": "1. Einrichten mit dem Launchpad",
+ "page-upgrades-head-to-ethresearch": "Wechseln Sie zu ethresear.ch",
+ "page-upgrades-help": "Möchten Sie bei den Ethereum-Upgrades behilflich sein?",
+ "page-upgrades-help-desc": "Es gibt viele Möglichkeiten, an den Ethereum-Upgrades mitzuwirken, beim Testen zu helfen und sogar Belohnungen zu erhalten.",
+ "page-upgrades-index-staking": "Staking ist da",
+ "page-upgrades-index-staking-desc": "Der Schlüssel zu den Ethereum-Upgrades ist die Einführung von Staking. Wenn Sie Ihre ETH nutzen möchten, um an der Sicherung des Ethereum-Netzwerks beteiligt zu sein, befolgen Sie die aufgeführten Schritte.",
+ "page-upgrades-index-staking-learn": "Mehr über Staking erfahren",
+ "page-upgrades-index-staking-learn-desc": "Die Beacon Chain brachte das Staking zu Ethereum. Mit ETH können Sie etwas Gutes für die Allgemeinheit tun, indem Sie das Netzwerk sichern, und dabei mehr ETH verdienen.",
+ "page-upgrades-index-staking-step-1": "1. Einrichtung mit dem Launchpad",
"page-upgrades-index-staking-step-1-btn": "Staking-Launchpad ansehen",
- "page-upgrades-index-staking-step-1-desc": "Für das Staken auf Ethereum ist das Launchpad erforderlich – es führt Sie durch den Prozess.",
+ "page-upgrades-index-staking-step-1-desc": "Für das Staking bei Ethereum ist das Launchpad erforderlich – es führt Sie durch den Prozess.",
"page-upgrades-index-staking-step-2": "2. Staking-Adresse bestätigen",
"page-upgrades-index-staking-step-2-btn": "Adresse des Einzahlungsvertrags bestätigen",
- "page-upgrades-index-staking-step-2-desc": "Bevor Sie Ihre ETH staken, sollten Sie sichergehen, dass Sie die richtige Adresse und das Launchpad durchlaufen haben.",
+ "page-upgrades-index-staking-step-2-desc": "Bevor Sie Ihre ETH staken, sollten Sie die Richtigkeit der Adresse sicherstellen und das Launchpad durchlaufen haben.",
"page-upgrades-index-staking-sustainability": "Nachhaltiger",
"page-upgrades-meta-desc": "Eine Übersicht über die die Ethereum-Upgrades und die Vision, die damit realisiert werden soll.",
"page-upgrades-meta-title": "Ethereum-Upgrades (ehemals „Eth2“)",
- "page-upgrades-proof-stake-link": "Mehr zum Proof-of-Stake",
+ "page-upgrades-proof-stake-link": "Mehr zu Proof-of-Stake",
"page-upgrades-question-1-title": "Wann werden die Upgrades veröffentlicht?",
- "page-upgrades-question-1-desc": "Die Upgrades für Ethereum erfolgen fortlaufend, sie unterscheiden sich durch ihre Veröffentlichungsdaten.",
+ "page-upgrades-question-1-desc": "Die Upgrades für Ethereum erfolgen fortlaufend. Sie haben jeweils eigene Veröffentlichungsdaten.",
"page-upgrades-question-2-title": "Ist die Beacon Chain eine separate Blockchain?",
- "page-upgrades-question-2-desc": "Ja. Die Beacon Chain ist der Name einer parallelen Proof-of-Stake-Blockchain zur Aktualisierung von Ethereums Mainnet. Es gibt jetzt nur noch eine Blockchain, die durch die Zusammenführung der ursprünglichen Ethereum-Blockchain und der Beacon Chain gebildet wird.",
- "page-upgrades-question-3-answer-2a": "Die Zusammenführung hatte minimale Auswirkungen auf dApp-Entwickler – sie interagieren weiterhin mit Ethereum auf die gleiche Weise.",
+ "page-upgrades-question-2-desc": "Ja. Beacon Chain wurde als Bezeichnung einer parallelen Proof-of-Stake-Blockchain für das Upgrade des Ethereum-Mainnets vergeben. Es gibt jetzt nur noch eine Blockchain, die durch die Zusammenführung der ursprünglichen Ethereum-Blockchain und der Beacon Chain gebildet wurde.",
+ "page-upgrades-question-3-answer-2a": "Die Zusammenführung hatte minimale Auswirkungen auf dApp-Entwickler – sie interagieren mit Ethereum weiterhin auf die gleiche Weise.",
"page-upgrades-question-3-answer-2a-link": "Die Zusammenführung und dApp-Entwickler",
- "page-upgrades-question-3-answer-2b": "Sharding-Pläne werden noch entwickelt, jedoch mit dem Ziel von Layer-2-Rollups.",
+ "page-upgrades-question-3-answer-2b": "Sharding-Pläne werden noch entwickelt, Layer-2-Rollups sollen dabei jedoch berücksichtigt werden.",
"page-upgrades-layer-2-rollups": "Mehr über Layer-2-Rollups",
"page-upgrades-question-3-answer-3-link": "ehtresear.ch besuchen",
"page-upgrades-question-3-desc": "Im Augenblick müssen Sie nichts tun, um sich auf die Upgrades vorzubereiten.",
"page-upgrades-question-3-title": "Wie bereite ich mich auf die Upgrades vor?",
- "page-upgrades-question-4-answer-1": "Wenn Sie heute eine Transaktion durchführen oder eine dApp benutzen, verwenden Sie die Ausführungsebene bekannt als Mainnet.",
- "page-upgrades-question-4-answer-3": "Nach der Zusammenführung werden Validatoren das gesamte Netzwerk mittels Proof-of-Stake sichern.",
- "page-upgrades-question-4-answer-6": "Jeder kann ein Validator werden, indem er sein ETH staket.",
+ "page-upgrades-question-4-answer-1": "Wenn Sie heute eine Transaktion durchführen oder eine dApp benutzen, verwenden Sie die Ausführungsebene – auch bekannt als Mainnet.",
+ "page-upgrades-question-4-answer-3": "Seit der Zusammenführung sichern Validatoren das gesamte Netzwerk mittels Proof-of-Stake.",
+ "page-upgrades-question-4-answer-6": "Jeder kann ein Validator werden, indem er sein ETH stakt.",
"page-upgrades-question-4-answer-7": "Mehr zum Staking",
"page-upgrades-question-4-title": "Was ist die Ausführungsebene?",
- "page-upgrades-question-4-desc": "Vor der Zusammenführung wurde die Ethereum-Blockchain manchmal als „Eth1.“ bezeichnet. Dieser Begriff wurde zugunsten der „Ausführungsebene“ abgeschafft.",
- "page-upgrades-question-5-answer-1": "Um ein Validator im Netzwerk zu werden, müssen Sie 32 ETH staken. Wenn Sie nicht so viel haben oder nicht so viel einsetzen möchten, können Sie sich an Staking-Pools beteiligen. Mit diesen Pools können Sie weniger einsetzen und Bruchteile der Gesamtprämien sammeln.",
+ "page-upgrades-question-4-desc": "Vor der Zusammenführung wurde die Ethereum-Blockchain manchmal als „Eth1“ bezeichnet. Dieser Begriff wurde von „Ausführungsebene“ abgelöst.",
+ "page-upgrades-question-5-answer-1": "Um ein Validator im Netzwerk zu werden, müssen Sie 32 ETH staken. Wenn Sie nicht so viel haben oder nicht so viel einsetzen möchten, können Sie Staking-Pools beitreten. Mit diesen Pools können Sie weniger einsetzen und Aneile der Gesamtbelohnungen sammeln.",
"page-upgrades-question-5-desc": "Sie müssen das Staking-Launchpad nutzen oder einem Staking-Pool beitreten.",
"page-upgrades-question-5-title": "Wie stake ich?",
"page-upgrades-question-6-answer-3": "Danny Ryan von der Ethereum Foundation bringt die Community regelmäßig auf den neusten Stand:",
"page-upgrades-question-6-answer-4": "Ben Edgington von ConsenSys bietet einen wöchentlichen Newsletter über die Ethereum-Upgrades:",
- "page-upgrades-question-6-answer-5": "Sie können sich auch der Diskussion über die Forschung und Entwicklung von Ethereum auf ethresear.ch anschließen.",
+ "page-upgrades-question-6-answer-5": "Sie können sich auch der Diskussion über die Ethereum-Forschung und -Entwicklung auf ethresear.ch anschließen.",
"page-upgrades-question-6-title": "Was muss ich mit meiner dApp tun?",
- "page-upgrades-question-6-desc": "Die Zusammenführung wurde so konzipiert, dass sie nur minimale Auswirkungen auf die Entwickler hat, obwohl es ein paar kleine Änderungen gab, die man beachten sollte.",
- "page-upgrades-question-6-answer-1": "Dapp-Entwickler, die mit Ethereum vor und nach der Zusammenführung vertraut waren, sollten einige Änderungen kennen. Diese Änderungen umfassen Blockstruktur und Timing, einige Opcode-Änderungen, Quellen von On-Chain-Zufälligkeit und das Konzept der Epochenfinalisierung.",
+ "page-upgrades-question-6-desc": "Die Zusammenführung wurde so konzipiert, dass sie nur minimale Auswirkungen auf die Entwickler hat – wobei es einige kleine Änderungen gab, die beachtet werden sollten.",
+ "page-upgrades-question-6-answer-1": "dApp-Entwickler, die mit Ethereum vor der Zusammenführung vertraut waren, sollten einige Änderungen kennen. Diese Änderungen umfassen Blockstruktur und Timing, einige Opcode-Änderungen, Quellen von On-Chain-Zufälligkeit und das Konzept der Epochenfinalisierung.",
"page-upgrades-question-6-answer-1-link": "Wie die Zusammenführung die Anwendungsebene von Ethereum beeinflusste",
"page-upgrades-question-6-answer-2": "Anwendungen waren nahezu nicht betroffen.",
"page-upgrades-question-7-desc": "Viele verschiedene Teams aus der ganzen Community arbeiten an den verschiedenen Ethereum-Upgrades.",
@@ -109,61 +109,61 @@
"page-upgrades-question-7-nimbus-lang": "(Nim-Implementierung)",
"page-upgrades-question-7-prysm": "Prysm",
"page-upgrades-question-7-prysm-lang": "(Go-Implementierung)",
- "page-upgrades-question-7-teams": "Die Konsens-Client-Teams:",
+ "page-upgrades-question-7-teams": "Die Ethereum-Konsens-Client-Teams:",
"page-upgrades-question-7-teku": "Teku",
"page-upgrades-question-7-teku-lang": "(Java-Implementierung)",
"page-upgrades-question-7-title": "Wer erstellt die Ethereum-Upgrades?",
- "page-upgrades-question-7-clients": "Mehr erfahren über die Ethereum-Clients",
+ "page-upgrades-question-7-clients": "Mehr über Ethereum-Clients erfahren",
"page-upgrades-question-8-answer-1": "Mit den Ethereum-Upgrades wird es möglich, Ethereum dezentral zu skalieren und gleichzeitig die Sicherheit zu erhalten und die Nachhaltigkeit zu steigern.",
- "page-upgrades-question-8-answer-2": "Das wesentlichste Problem ist, dass Ethereum in der Lage sein muss, mehr als 15-45 Transaktionen pro Sekunde verarbeiten zu können. Doch die Upgrades zielen auf weitere Probleme ab, die mit Ethereum heute bestehen.",
- "page-upgrades-question-8-answer-3": "Das Netzwerk erfährt eine so hohe Nachfrage, dass die Nutzung von Ethereum teuer ist. Knoten im Netzwerk haben mit der Größe von Ethereum und der Datenmenge, die ihre Computer verarbeiten müssen, stark zu kämpfen. Zudem ist der zugrunde liegende Algorithmus, der Ethereum sicher und dezentral hält, energieintensiv und muss umweltfreundlicher werden.",
- "page-upgrades-question-8-answer-4": "Vieles von dem, was sich ändert, steht schon seit 2015 auf der Roadmap von Ethereum. Aber die gegenwärtigen Bedingungen machen die Notwendigkeit der Upgrades noch größer.",
- "page-upgrades-question-8-answer-6": "Mehr zur Vision von Ethereum",
- "page-upgrades-question-8-desc": "Das Ethereum, das wir heute verwenden, muss Endnutzern und Netzwerkteilnehmern eine bessere Erfahrung bieten.",
- "page-upgrades-question-8-title": "Warum sind die Upgrades erforderlich?",
- "page-upgrades-question-9-answer-1": "Die aktivste Rolle, die Sie spielen können, ist, Ihre ETH einzusetzen.",
- "page-upgrades-question-9-answer-2": "Vielleicht möchten Sie auch einen zweiten Client verwenden, um die Client-Diversität zu verbessern.",
+ "page-upgrades-question-8-answer-2": "Die wohl offensichtlichste Hürde ist, dass Ethereum in der Lage sein muss, mehr als 15–45 Transaktionen pro Sekunde verarbeiten zu können. Die Upgrades zielen jedoch auch auf weitere Probleme ab, die es heute bei Ethereum zu bewältigen gilt.",
+ "page-upgrades-question-8-answer-3": "Die Nutzung von Enthereum ist in Zeiten hoher Nachfrage im Netzwerk teuer. Nodes im Netzwerk haben mit der Größe von Ethereum und der Datenmenge, die die Computer verarbeiten müssen, stark zu kämpfen. Zudem war der ursprüngliche Algorithmus für Ethereums Sicherheit und Dezentralisierung energieintensiv und musste umweltfreundlicher werden.",
+ "page-upgrades-question-8-answer-4": "Vieles von dem, was sich ändert, steht schon seit 2015 im Ethereum-Fahrplan. Die gegenwärtigen Bedingungen machen die Notwendigkeit der Upgrades jedoch noch größer.",
+ "page-upgrades-question-8-answer-6": "Ethereums Vision erkunden",
+ "page-upgrades-question-8-desc": "Das Ethereum von heute muss Endnutzern und Teilnehmern im Netzwerk eine bessere Erfahrung bieten.",
+ "page-upgrades-question-8-title": "Warum sind Upgrades erforderlich?",
+ "page-upgrades-question-9-answer-1": "Die aktivste Rolle, die Sie spielen können, besteht darin, Ihre ETH zu staken.",
+ "page-upgrades-question-9-answer-2": "Vielleicht möchten Sie auch einen zweiten Client ausführen, um die Client-Diversität zu verbessern.",
"page-upgrades-question-9-answer-3": "Wenn Sie technisch versiert sind, können Sie dabei helfen, Fehler in den neuen Clients zu finden.",
- "page-upgrades-question-9-answer-4": "Sie können auch bei den technischen Diskussionen mit Ethereum-Forschern mitreden, und zwar auf ethresear.ch.",
- "page-upgrades-question-9-desc": "Sie müssen kein Techniker sein, um etwas beizutragen. Die Community sucht nach Beteiligungen aus allen möglichen Bereichen.",
- "page-upgrades-question-9-stake-eth": "ETH staken",
+ "page-upgrades-question-9-answer-4": "Ebenso können Sie sich auf ethresear.ch an technischen Diskussionen mit Ethereum-Forschern beteiligen.",
+ "page-upgrades-question-9-desc": "Sie müssen kein Techniker sein, um etwas beizutragen. Die Community sucht nach Beiträgen aus allen möglichen Bereichen.",
+ "page-upgrades-question-9-stake-eth": "Stake ETH",
"page-upgrades-question-9-title": "Wie kann ich zu den Ethereum-Upgrades beitragen?",
"page-upgrades-question-9-more": "Allgemeinere Möglichkeiten finden, um sich an Ethereum zu beteiligen",
- "page-upgrades-question-10-title": "Was sind die „Eth2“-Phasen?",
- "page-upgrades-question-10-desc": "Manche Dinge haben sich hier geändert.",
- "page-upgrades-question-10-answer-0": "Der Begriff „Eth2“ selbst wird nicht mehr verwendet, da es sich nicht um ein einzelnes Upgrade oder ein neues Netzwerk handelt. Es handelt sich vielmehr um eine Reihe von Upgrades, die alle dazu beitragen, Ethereum skalierbarer, sicherer und nachhaltiger zu machen. Das Netzwerk, das Sie kennen und lieben, wird einfach als Ethereum bezeichnet.",
- "page-upgrades-question-10-answer-1": "Wir halten uns zurück mit dem, was wir über eine technische Roadmap sagen, denn das ist Software: Die Dinge können sich ändern. Wir denken, es ist einfacher zu verstehen, was passiert, wenn man über die Resultate liest.",
+ "page-upgrades-question-10-title": "Was sind die „Eth2-Phasen“?",
+ "page-upgrades-question-10-desc": "Manches hier hat sich verändert.",
+ "page-upgrades-question-10-answer-0": "Der Begriff „Eth2“ selbst wird künftig nicht mehr verwendet, da es sich nicht um ein einzelnes Upgrade oder ein neues Netzwerk handelt. Es handelt sich vielmehr um eine Reihe von Upgrades, die alle dazu beitragen, Ethereum skalierbarer, sicherer und nachhaltiger zu machen. Das Netzwerk, das Sie kennen und lieben, wird einfach als Ethereum bezeichnet.",
+ "page-upgrades-question-10-answer-1": "Wir halten uns mit Aussagen über einen technischen Fahrplan zurück, denn es geht um Software: Sie kann sich ändern. Wir denken, es ist einfacher, zu verstehen, was passiert, wenn man sich über die Ergebnisse informiert.",
"page-upgrades-question-10-answer-1-link": "Upgrades ansehen",
- "page-upgrades-question-10-answer-2": "Doch wenn Sie die Diskussion verfolgt haben, erfahren Sie hier, wie die Upgrades in die technischen Roadmaps passen und ein wenig darüber, wie sie sich ändern.",
- "page-upgrades-question-10-answer-3": "Phase 0 beschreibt die Arbeit rund um die Einführung der Beacon Chain.",
- "page-upgrades-question-10-answer-5": "Ursprünglich konzentrierte sich Phase 1 auf die Implementierung der Shard Chains, aber die Priorisierung hat sich auf die Zusammenführung verlagert, die am 15. September 2022 ausgeliefert wurde.",
- "page-upgrades-question-10-answer-6": "La phase 1.5 était initialement prévue pour suivre les implémentations des chaînes de fragments au moment où le réseau principal aurait été ajouté en tant que dernier fragment à la chaîne phare. Cependant, à mesure que la technologie de rollup progressait, la communauté Ethereum a accéléré la transition en s'écartant plutôt de la preuve de travail.",
- "page-upgrades-question-10-answer-7": "Die Pläne rund um Phase 2 waren ein Punkt intensiver Forschung und Diskussion. Mit dem Abschluss der Zusammenführung und dem Fortschritt bei Layer-2-Lösungen haben sich die Ziele zu einer eher vereinfachten Form des Daten-Shardings zugunsten der Maximierung der Rollup-Effizienz verlagert. Aktuelle Layer-2-Projekte erlauben die Skalierung der Transaktionsausführung, und Sharding wird die Speicherung von Beweisen für diese Daten auf Layer 1 auf eine günstige und skalierbare Weise ermöglichen.",
- "page-upgrades-question-10-answer-8": "Mehr zur Rollup-zentrierten Roadmap",
+ "page-upgrades-question-10-answer-2": "Wenn Sie die Diskussionen jedoch verfolgt haben, erfahren Sie hier, wie die Upgrades in die technischen Fahrpläne passen, und ein wenig darüber, wie sie sich ändern.",
+ "page-upgrades-question-10-answer-3": "Phase 0 beschrieb die Arbeit rund um die Einführung der Beacon Chain.",
+ "page-upgrades-question-10-answer-5": "Ursprünglich konzentrierte sich Phase 1 auf die Implementierung der Fragmentierungen, aber die Priorisierung hat sich auf die Zusammenführung verlagert, die am 15. September 2022 eingeführt wurde.",
+ "page-upgrades-question-10-answer-6": "Phase 1.5 wurde ursprünglich so konzipiert, dass es Shard-Implementierungen folgte, wenn das Mainnet als letzter Shard zur Beacon Chain hinzugefügt wurde. Mit Fortschritten in der Rollup-Technologie beschleunigte die Ethereum-Community jedoch stattdessen die Abkehr vom Proof-of-Work-Ansatz.",
+ "page-upgrades-question-10-answer-7": "Die Pläne rund um Phase 2 waren der Mittelpunkt intensiver Forschung und Diskussion. Mit dem Abschluss der Zusammenführung und dem Fortschritt bei Layer-2-Lösungen haben sich die Ziele zu einer eher vereinfachten Form des Daten-Shardings zugunsten der Maximierung der Rollup-Effizienz verlagert. Aktuelle Layer-2-Lösungen erlauben die Skalierung der Transaktionsausführung, und Sharding wird die Speicherung von Beweisen für diese Daten auf Layer 1 auf eine günstige und skalierbare Weise ermöglichen.",
+ "page-upgrades-question-10-answer-8": "Mehr zum Rollup-zentrierten Fahrplan",
"page-upgrades-question-11-title": "Kann ich Eth2 kaufen?",
- "page-upgrades-question-11-desc": "Nein. Es gibt kein Eth2-Token und Ihre ETH werden sich nach der Zusammenführung nicht ändern.",
- "page-upgrades-question-11-answer-1": "Eine der treibenden Kräfte hinter dem Rebranding von Eth2 war der weit verbreitete Irrglaube, dass ETH-Inhaber ihre ETH nach „Ethereum 2.0“ migrieren müssten. Dies war aber nie der Fall.",
+ "page-upgrades-question-11-desc": "Nein. Ein Eth2-Token existiert nicht und Ihre ETH haben sich durch die Zusammenführung nicht geändert.",
+ "page-upgrades-question-11-answer-1": "Eine der treibenden Kräfte hinter dem Rebranding von Eth2 war der weit verbreitete Irrglaube, dass ETH-Inhaber nach der Zusammenführung oder einem anderen Upgrade ihre ETH zu „ETH 2.0“ migrieren müssten. Das ist nicht wahr und war nie der Fall.",
"page-upgrades-question-11-answer-2": " Diese Verwirrung wird häufig von Betrügern ausgenutzt.",
"page-upgrades-question-title": "Häufig gestellte Fragen",
- "page-upgrades-question3-answer-1": "ETH-Besitzer müssen gar nichts tun. Ihre ETH müssen weder geändert werden, noch muss ein Upgrade durchgeführt werden. Sicherlich wird es Betrüger geben, die Sie vom Gegenteil überzeugen möchten. Seien Sie also vorsichtig.",
+ "page-upgrades-question3-answer-1": "ETH-Inhaber müssen nichts tun. Ihre ETH müssen weder geändert werden, noch muss ein Upgrade durchgeführt werden. Mit ziemlicher Sicherheit wird es Betrüger geben, die Sie vom Gegenteil überzeugen möchten – seien Sie also vorsichtig.",
"page-upgrades-scalable": "Skalierbarer",
"page-upgrades-scalable-desc": "Ethereum muss tausende Transaktionen pro Sekunde unterstützen, um Anwendungen schneller und günstiger nutzen zu können.",
"page-upgrades-secure": "Sicherer",
- "page-upgrades-secure-desc": "Ethereum muss sicherer werden. Mit zunehmender Nutzung von Ethereum muss das Protokoll besser gegen alle Formen des Angriffs geschützt werden.",
- "page-upgrades-shard-date": "Sharding wird der Zusammenführung in mehreren Phasen folgen, irgendwann im Zeitraum 2023-2024.",
- "page-upgrades-shard-desc": "Danksharing erweitert die Speicherkapazität von Ethereum und arbeitet harmonisch mit L2s zusammen, um den Durchsatz zu skalieren und die Netzwerkgebühren zu senken. Danksharing wird in mehreren Phasen ausgerollt, beginnend mit ProtoDanksharding.",
- "page-upgrades-shard-estimate": "Geschätzt: 2023-2024",
+ "page-upgrades-secure-desc": "Ethereum muss sicherer werden. Mit zunehmender Nutzung von Ethereum muss das Protokoll besser gegen alle Arten von Angriffen geschützt werden.",
+ "page-upgrades-shard-date": "Sharding wird der Zusammenführung in mehreren Phasen folgen, im Zeitraum 2023–2024.",
+ "page-upgrades-shard-desc": "Danksharing erweitert die Datenspeicherkapazität von Ethereum und arbeitet harmonisch mit L2s zusammen, um den Durchsatz zu skalieren und Netzwerkgebühren zu senken. Danksharing wird in mehreren Phasen eingeführt, beginnend mit ProtoDanksharding.",
+ "page-upgrades-shard-estimate": "Geschätzt: 2023–2024",
"page-upgrades-shard-lower": "Mehr zu Sharding",
"page-upgrades-shard-title": "Sharding",
"page-upgrades-stay-up-to-date": "Auf dem Laufenden bleiben",
- "page-upgrades-stay-up-to-date-desc": "Erfahren Sie von Forschern und Entwicklern, die an den Ethereum-Upgrades arbeiten, was es Neues gibt.",
- "page-upgrades-sustainable-desc": "O consumo de energia do Ethereum era intenso até recentemente. A transição para a prova de participação trouxe uma redução de energia para a rede de mais de 99,9%.",
+ "page-upgrades-stay-up-to-date-desc": "Erfahren Sie Neuigkeiten von Forschern und Entwicklern, die an den Ethereum-Upgrades arbeiten.",
+ "page-upgrades-sustainable-desc": "Ethereum war noch bis vor Kurzem energieintensiv. Der Übergang zu Proof-of-Stake führte zu einer Energieersparnis im Netzwerk von über 99,9 %.",
"page-upgrades-take-part": "An der Forschung teilnehmen",
- "page-upgrades-take-part-desc": "Ethereum-Forscher und -Enthusiasten treffen sich hier, um über die Forschungsbemühungen zu diskutieren, einschließlich allen Aspekten, die mit den Ethereum-Upgrades zu tun haben.",
+ "page-upgrades-take-part-desc": "Ethereum-Forscher und -Enthusiasten kommen hier zusammen, um über die Forschungsbemühungen zu diskutieren – auch über alles rund um die Ethereum-Upgrades.",
"page-upgrades-the-upgrades": "Die Ethereum-Upgrades",
- "page-upgrades-the-upgrades-desc": "Modernizările Ethereum au ca scop îmbunătățirea scalabilității, securității și durabilității rețelei. Ethereum a trecut recent prin modernizări majore de securitate și durabilitate și urmează și altele în viitor, în special legate de scalabilitate.",
- "page-upgrades-unofficial-roadmap": "Das ist nicht der offizielle Fahrplan. Das ist unsere Sicht der Dinge, basierend auf den Informationen, die es gibt. Doch da wir über Technologie sprechen, können sich Pläne im Handumdrehen ändern. Verstehen Sie die Aussagen also bitte nicht als Verpflichtung.",
- "page-upgrades-upgrade-desc": "Das Ethereum, das wir kennen und lieben, nur skalierbarer, sicherer und nachhaltiger...",
+ "page-upgrades-the-upgrades-desc": "Ethereum-Upgrades zielen darauf ab, die Skalierbarkeit, Sicherheit und Nachhaltigkeit des Netzwerks zu verbessern. Ethereum hat kürzlich einige umfassende Upgrades in Bezug auf Sicherheit und Nachhaltigkeit durchlaufen – und in Zukunft stehen weitere Upgrades an, insbesondere bei der Skalierbarkeit.",
+ "page-upgrades-unofficial-roadmap": "Das ist nicht der offizielle Fahrplan. Das ist unsere Sicht der Dinge, basierend auf den verfügbaren Informationen. Wir sprechen jedoch über Technologie, und diese kann sich im Handumdrehen ändern. Betrachten Sie das also bitte nicht als Verpflichtung.",
+ "page-upgrades-upgrade-desc": "Das Ethereum, das wir kennen und lieben – nur skalierbarer, sicherer und nachhaltiger ...",
"page-upgrades-upgrades": "Die Ethereum-Upgrades",
"page-upgrades-upgrades-aria-label": "Das Ethereum-Upgrades-Menü",
"page-upgrades-upgrades-beacon-chain": "Die Beacon Chain",
@@ -173,32 +173,32 @@
"page-upgrades-upgrading": "Komplett neue Möglichkeiten für Ethereum schaffen",
"page-roadmap-vision": "Die Vision",
"page-roadmap-vision-btn": "Mehr zur Vision von Ethereum",
- "page-roadmap-vision-desc": "Um eine großflächige Akzeptanz von Ethereum und Vorteile für alle Menschen weltweit zu erreichen, muss Ethereum skalierbarer, sicherer und nachhaltiger werden.",
+ "page-roadmap-vision-desc": "Um Ethereum der breiten Masse näherzubringen und allen Menschen einen Mehrwert zu bieten, muss Ethereum skalierbarer, sicherer und nachhaltiger werden.",
"page-upgrades-what-happened-to-eth2-title": "Was ist mit „Eth2“ passiert?",
- "page-upgrades-what-happened-to-eth2-1": "Der Begriff „Eth2“ wurde häufig verwendet, um die Zukunft von Ethereum vor der Umstellung zu beschreiben, er wird jedoch derzeit zu Gunsten einer präziseren Terminologie abgeschafft.",
+ "page-upgrades-what-happened-to-eth2-1": "Der Begriff „Eth2“ wurde vor der Zusammenführung häufig verwendet, er wird jedoch von präziserer Terminologie abgelöst.",
"page-upgrades-what-happened-to-eth2-1-more": "Mehr über die Zusammenführung.",
"page-upgrades-what-happened-to-eth2-2": "Seit der Zusammenführung von „Eth1“ und „Eth2“ gibt es nicht mehr zwei verschiedene Ethereum-Blockchains, sondern nur noch Ethereum.",
"page-upgrades-what-happened-to-eth2-3": "Um Unklarheiten zu minimieren, hat die Community diese Begriffe aktualisiert:",
- "page-upgrades-what-happened-to-eth2-3-1": "„Eth1“ ist nun der „Ausführungslayer“, der Transaktionen verarbeitet und ausführt.",
- "page-upgrades-what-happened-to-eth2-3-2": "„Eth2“ ist nun der „Konsenslayer“, der den Proof-of-Stake-Konsens regelt.",
- "page-upgrades-what-happened-to-eth2-4": "Diese aktualisierte Terminologie ändert lediglich die Benennungskonventionen. Die Ziele von Ethereum oder die Roadmap ändern sich dadurch nicht.",
- "page-upgrades-what-happened-to-eth2-5": "Mehr erfahren über die „Eth2“-Umbenennung",
+ "page-upgrades-what-happened-to-eth2-3-1": "„Eth1“ ist nun die „Ausführungsebene“, die Transaktionen und Ausführungen verarbeitet.",
+ "page-upgrades-what-happened-to-eth2-3-2": "„Eth2“ ist nun die „Konsensebene“, die den Proof-of-Stake-Konsens regelt.",
+ "page-upgrades-what-happened-to-eth2-4": "Diese aktualisierte Terminologie ändert lediglich die Benennungskonventionen. Die Ziele und der Fahrplan von Ethereum ändern sich dadurch nicht.",
+ "page-upgrades-what-happened-to-eth2-5": "Mehr über die „Eth2“-Umbenennung erfahren",
"page-upgrades-why-cant-we-just-use-eth2-title": "Warum können wir nicht einfach Eth2 verwenden?",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "Gedankliche Modelle",
- "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Ein großes Problem mit der Eth2-Benennung besteht darin, dass neue Benutzer von Ethereum sich ein falsches Bild machen. Sie denken intuitiv, dass Eth1 vor Eth2 kommt. Oder dass Eth1 von Eth2 abgelöst wird. Weder das eine noch das andere ist wahr. Wenn wir den Begriff Eth2 nicht mehr verwenden, machen sich die zukünftigen Benutzer kein falsches Bild von dem Modell.",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Ein großes Problem mit der Eth2-Benennung besteht darin, dass neue Benutzer von Ethereum sich ein falsches Bild machen. Sie denken intuitiv, dass Eth1 vor Eth2 kommt oder dass Eth1 von Eth2 abgelöst wird. Weder das eine noch das andere ist wahr. Wenn wir den Begriff Eth2 nicht mehr verwenden, wecken wir in zukünftigen Benutzern keine falschen Vorstellungen.",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "Inklusivität",
- "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "Im Zuge der Weiterentwicklung der Ethereum-Roadmap ist Ethereum 2.0 nicht mehr wirklich geeignet, um die Roadmap von Ethereum darzustellen. Durch sorgfältige und genaue Wortwahl können Inhalte auf Ethereum von einem möglichst breiten Publikum verstanden werden.",
+ "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "Im Zuge der Weiterentwicklung des Ethereum-Fahrplans hat sich Ethereum 2.0 als nicht mehr geeignet erwiesen, Ethereums Fahrplan zu repräsentieren. Durch eine sorgfältige und genaue Wortwahl können wir Ethereum-Inhalte einem möglichst breiten Publikum verständlich machen.",
"page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Betrugsprävention",
- "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Leider haben böswillige Akteure versucht, die ungenaue Bezeichnung Eth2 zu nutzen, um Benutzer zu betrügen. Sie haben sie aufgefordert, ihre ETH gegen „ETH2“-Token zu tauschen, oder behauptet, dass sie ihre ETH vor dem Eth2-Upgrade irgendwie migrieren müssen. Wir hoffen, dass diese aktualisierte Terminologie Klarheit bringt, um diese Nische für Betrug zu schließen und dazu beizutragen, das Ökosystem sicherer zu machen.",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Leider haben böswillige Akteure versucht, die ungenaue Bezeichnung Eth2 zu nutzen, um Benutzer zu betrügen. Sie forderten sie dabei auf, ihre ETH gegen „ETH2“-Token zu tauschen, oder behaupteten, dass sie ihre ETH vor dem Eth2-Upgrade irgendwie migrieren müssten. Wir hoffen, dass diese aktualisierte Terminologie Klarheit schafft, um diese Nische für Betrug zu schließen, und dazu beiträgt, das Ökosystem sicherer zu machen.",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Klares Staking",
- "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Manche Staking-Betreiber haben auch die auf der Beacon Chain gestaketen ETH mit dem Ticker „ETH2“ vorgestellt. Das führte zu Verwirrung, da die Benutzer dieser Dienste nicht wirklich einen „ETH2“-Token erhalten. Es existiert kein „ETH2“-Token, vielmehr bezeichnet der Begriff einfach den Anteil am Stake dieses bestimmten Anbieters.",
+ "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Manche Staking-Betreiber haben auch die auf der Beacon Chain gestakten ETH mit dem Ticker „ETH2“ vorgestellt. Das führt möglicherweise zu Verwirrung, da die Benutzer dieser Dienste nicht wirklich einen „ETH2“-Token erhalten. Es existiert kein „ETH2“-Token – vielmehr bezeichnet der Begriff einfach den Anteil am Stake dieses bestimmten Anbieters.",
"page-upgrades-what-to-do": "Was müssen Sie tun?",
- "page-upgrades-what-to-do-desc": "Wenn Sie ein dApp-Nutzer oder ETH-Inhaber sind, müssen Sie gar nichts tun. Sind Sie Entwickler oder möchten damit anfangen, ETH einzusetzen, dann gibt es Möglichkeiten, wie Sie sich heute einbringen können.",
+ "page-upgrades-what-to-do-desc": "Wenn Sie ein dApp-Benutzer oder ETH-Inhaber sind, müssen Sie gar nichts tun. Sind Sie Entwickler oder möchten Sie mit dem Staking anfangen, dann gibt es Möglichkeiten, wie Sie sich heute einbringen können.",
"page-upgrades-whats-next": "Was sind Ethereum-Upgrades?",
- "page-upgrades-whats-next-desc": "Die Ethereum-Roadmap umfasst zusammenhängende Protokoll-Upgrades, die das Netzwerk skalierbarer, sicherer und nachhaltiger machen. Diese Upgrades werden von mehreren Teams aus dem gesamten Ethereum-Ökosystem entwickelt.",
- "page-upgrades-whats-next-history": "Mehr erfahren über vorherige Ethereum-Upgrades",
- "page-upgrades-whats-ethereum": "Moment, was ist Ethereum?",
- "page-upgrades-whats-new": "Was kommt als Nächstes für Ethereum?",
+ "page-upgrades-whats-next-desc": "Der Ethereum-Fahrplan umfasst zusammenhängende Protokoll-Upgrades, die das Netzwerk skalierbarer, sicherer und nachhaltiger machen. Diese Upgrades werden von mehreren Teams aus dem gesamten Ethereum-Ökosystem entwickelt.",
+ "page-upgrades-whats-next-history": "Mehr über vorherige Ethereum-Upgrades erfahren",
+ "page-upgrades-whats-ethereum": "Moment – was ist Ethereum?",
+ "page-upgrades-whats-new": "Was steht als Nächstes bei Ethereum an?",
"page-upgrades-security-link": "Mehr zu Sicherheit und Betrugsprävention",
"page-staking-deposit-contract-staking-more-link": "Mehr zum Staking",
"docs-nav-proof-of-stake": "Proof-of-Stake",
diff --git a/src/intl/de/page-wallets-find-wallet.json b/src/intl/de/page-wallets-find-wallet.json
index 0bf8f3a3838..fabd715cfe2 100644
--- a/src/intl/de/page-wallets-find-wallet.json
+++ b/src/intl/de/page-wallets-find-wallet.json
@@ -81,7 +81,7 @@
"page-find-wallet-feature-filters": "Funktionsfilter",
"page-find-wallet-footnote-1": "Die auf dieser Seite aufgeführten Wallets sind keine offiziellen Empfehlungen und dienen ausschließlich zu Informationszwecken.",
"page-find-wallet-footnote-2": "Die Beschreibungen wurden von den Wallet-Projekten selbst bereitgestellt.",
- "page-find-wallet-footnote-3": "Wir fügen dieser Seite Produkte basierend auf den Kriterien unserer Auflistungsrichtlinie hinzu. Wenn Sie möchten, dass wir eine Wallet hinzufügen, melden Sie ein Problem in GitHub.",
+ "page-find-wallet-footnote-3": "Wir fügen dieser Seite Produkte basierend auf den Kriterien unserer Auflistungsrichtlinie hinzu. Wenn Sie möchten, dass wir eine Wallet hinzufügen, erstellen Sie ein Ticket auf GitHub.",
"page-find-wallet-mobile": "Mobil",
"page-find-wallet-mobile-desc": "Wallets mit mobilen Apps",
"page-find-wallet-desktop": "Desktop",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Wallets mit Browser-Erweiterungen",
"page-find-wallet-device": "Gerät",
"page-find-choose-to-compare": "Zum Vergleich auswählen",
- "page-find-wallet-choose-features": "Funktionen auswählen"
+ "page-find-wallet-choose-features": "Funktionen auswählen",
+ "page-find-wallet-reset-filters": "Filter zurücksetzen"
}
diff --git a/src/intl/el/common.json b/src/intl/el/common.json
index a4dbd5a9583..6db31724217 100644
--- a/src/intl/el/common.json
+++ b/src/intl/el/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "Αφαιρετικότητα λογαριασμού",
"about-ethereum-org": "Σχετικά με το ethereum.org",
"about-us": "Σχετικά με εμάς",
+ "adding-desci-projects": "Προσθήκη έργων Desci",
+ "adding-developer-tools": "Προσθήκη εργαλείων προγραμματισμού",
+ "adding-exchanges": "Προσθήκη ανταλλακτηρίων",
+ "adding-glossary-terms": "Προσθήκη όρων στο γλωσσάρι",
+ "adding-layer-2s": "Προσθήκη επιπέδου 2s",
+ "adding-products": "Προσθήκη Προϊόντων",
+ "adding-staking-products": "Προσθήκη προϊόντων αποθήκευσης κεφαλαίου",
+ "adding-wallets": "Προσθήκη πορτοφολιών",
+ "account-abstraction": "Αφαιρετικότητα λογαριασμού",
+ "acknowledgements": "Αναγνώριση",
"aria-toggle-search-button": "Εναλλαγή κουμπιού αναζήτησης",
"aria-toggle-menu-button": "Εναλλαγή κουμπιού μενού",
"beacon-chain": "Κύρια αλυσίδα",
- "bridges": "Γέφυρες blockchain",
+ "bridges": "Γέφυρες κρυπτοαλυσίδας",
+ "bug-bounty": "Εύρεση σφάλματος",
+ "build": "Προγραμματισμός",
+ "build-menu": "Μενού προγραμματισμού",
"clear": "Εκκαθάριση",
"close": "Κλείσιμο",
"community": "Κοινότητα",
"community-hub": "Κέντρο κοινότητας",
"community-menu": "Μενού κοινότητας",
"contact": "Επικοινωνία",
+ "content-buckets": "Κατηγορίες περιεχομένου",
+ "content-resources": "Πηγές περιεχομένου",
"content-standardization": "Τυποποίηση περιεχομένου",
"contributing": "Συνεισφορές",
"contributors": "Συνεισφέροντες",
@@ -20,14 +34,17 @@
"copied": "Αντιγράφηκε",
"copy": "Αντιγραφή",
"danksharding": "Danksharding",
- "dao-page": "Αποκεντρωμένοι αυτόνομοι οργανισμοί (DAO)",
+ "dao-page": "DAO - Αποκεντρωμένοι αυτόνομοι οργανισμοί",
"dark-mode": "Σκούρο",
"data-provided-by": "Προέλευση δεδομένων:",
- "decentralized-applications-dapps": "Αποκεντρωμένες εφαρμογές (dapps)",
+ "decentralized-applications-dapps": "Dapps - Αποκεντρωμένες εφαρμογές",
"decentralized-identity": "Αποκεντρωμένη ταυτότητα",
"decentralized-social-networks": "Αποκεντρωμένα κοινωνικά δίκτυα",
- "decentralized-science": "Αποκεντρωμένη επιστήμη (DeSci)",
- "defi-page": "Αποκεντρωμένη τραπεζική (DeFi)",
+ "decentralized-science": "DeSci - Αποκεντρωμένη επιστήμη",
+ "description": "Περιγραφή στοιχείου πλοήγησης",
+ "defi-page": "DeFi - Αποκεντρωμένη τραπεζική",
+ "design": "Σχεδιασμός",
+ "design-principles": "Αρχές σχεδιασμού",
"devcon": "Devcon",
"developers": "Προγραμματιστές",
"developers-home": "Αρχική προγραμματιστών",
@@ -53,8 +70,8 @@
"ecosystem": "Οικοσύστημα",
"edit-page": "Επεξεργασία σελίδας",
"ef-blog": "Ιστολόγιο ιδρύματος Ethereum",
- "eips": "Προτάσεις βελτίωσης Ethereum",
- "energy-consumption": "Κατανάλωση ενέργειας Ethereum",
+ "eips": "Προτάσεις βελτίωσης",
+ "energy-consumption": "Κατανάλωση ενέργειας",
"enterprise": "Επιχείρηση",
"enterprise-menu": "Μενού επιχειρήσεων",
"esp": "Πρόγραμμα υποστήριξης οικοσυστήματος",
@@ -63,42 +80,42 @@
"ethereum-bug-bounty": "Πρόγραμμα αναζήτησης σφαλμάτων",
"consensus-when-shipping": "Πότε καταφτάνει;",
"ethereum-upgrades": "Αναβαθμίσεις Ethereum",
- "ethereum-brand-assets": "Ψηφιακά στοιχεία επωνυμίας Ethereum",
+ "ethereum-brand-assets": "Επώνυμα ψηφιακά στοιχεία Ethereum",
"ethereum-online": "Διαδικτυακές κοινότητες",
"ethereum-events": "Συμβάντα του Ethereum",
"ethereum-foundation": "Ίδρυμα Ethereum",
"ethereum-foundation-logo": "Λογότυπο ιδρύματος Ethereum",
- "ethereum-glossary": "Γλωσσάρι Ethereum",
+ "ethereum-glossary": "Γλωσσάρι",
"ethereum-governance": "Διαχείριση Ethereum",
"ethereum-logo": "Λογότυπο Ethereum",
- "ethereum-roadmap": "Οδικός χάρτης Ethereum",
+ "ethereum-roadmap": "Οδικός χάρτης",
"ethereum-protocol": "Πρωτόκολλο ethereum",
- "ethereum-security": "Ασφάλεια του Ethereum και πρόληψη κατά της απάτης",
+ "ethereum-security": "Ασφάλεια και πρόληψη κατά της απάτης",
"ethereum-support": "Υποστήριξη Ethereum",
"ethereum-wallets": "Πορτοφόλια Ethereum",
- "ethereum-whitepaper": "Καταστατικό Ethereum",
+ "ethereum-whitepaper": "Καταστατικό",
"feedback-widget-prompt": "Είναι χρήσιμη αυτή η σελίδα;",
"feedback-card-prompt-page": "Ήταν χρήσιμη αυτή η σελίδα;",
"feedback-card-prompt-article": "Ήταν χρήσιμο αυτό το άρθρο;",
"feedback-card-prompt-tutorial": "Ήταν χρήσιμος αυτός ο οδηγός;",
"feedback-widget-thank-you-title": "Σας ευχαριστούμε για τα σχόλια σας!",
"feedback-widget-thank-you-subtitle": "Κάντε καλύτερη αυτή τη σελίδα απαντώντας σε μερικές ερωτήσεις.",
- "feedback-widget-thank-you-subtitle-ext": "Αν χρειάζεστε βοήθεια, μπορείτε να επικοινωνήσετε με την κοινότητα στο Discord μας.",
+ "feedback-widget-thank-you-subtitle-ext": "Εάν χρειάζεστε βοήθεια, μπορείτε να απευθυνθείτε στην κοινότητά μας στο Discord.",
"feedback-widget-thank-you-timing": "2–3 λεπτά",
"feedback-widget-thank-you-cta": "Άνοιγμα της σύντομης έρευνας",
- "find-wallet": "Εύρεση πορτοφολιού",
+ "find-wallet": "Επιλογή πορτοφολιού",
"future-proofing": "Αντοχή στο μέλλον",
- "get-eth": "Λάβετε ETH",
+ "get-eth": "Αγορά ETH",
"get-involved": "Συμμετοχή",
"get-started": "Ας αρχίσουμε",
"grants": "Επιχορηγήσεις",
"grant-programs": "Προγράμματα επιχορηγήσεων οικοσυστήματος",
"guides": "Οδηγοί",
- "guides-hub": "Κέντρο βοηθημάτων",
+ "guides-hub": "Αναλυτικές οδηγίες",
"history-of-ethereum": "Ιστορία του Ethereum",
"home": "Αρχική",
"how-ethereum-works": "Πώς λειτουργεί το Ethereum",
- "how-to-register-an-ethereum-account": "Πώς να «εγγράψετε» ένα λογαριασμό Ethereum",
+ "how-to-create-an-ethereum-account": "Πώς να «δημιουργήσετε» λογαριασμό Ethereum",
"how-to-revoke-token-access": "Πώς να ανακαλέσετε την πρόσβαση ενός έξυπνου συμβολαίου στο κεφάλαιο κρυπτονομισμάτων σας",
"how-to-swap-tokens": "Πώς να ανταλλάξετε ψηφιακά στοιχεία",
"how-to-use-a-bridge": "Πώς να μεταφέρετε ψηφιακά στοιχεία μέσω γέφυρας στο επίπεδο 2",
@@ -115,7 +132,7 @@
"last-edit": "Τελευταία επεξεργασία",
"layer-2": "Επίπεδο 2",
"learn": "Εκπαίδευση",
- "learn-by-coding": "Μάθετε με κωδικοποίηση",
+ "learn-by-coding": "Μάθετε προγραμματίζοντας",
"learn-hub": "Κέντρο μάθησης",
"learn-menu": "Μενού εκπαίδευσης",
"learn-more": "Μάθετε περισσότερα",
@@ -128,11 +145,114 @@
"loading-error-try-again-later": "Αδυναμία φόρτωσης δεδομένων. Προσπαθήστε ξανά αργότερα.",
"logo": "λογότυπο",
"mainnet-ethereum": "Κεντρικό δίκτυο του Ethereum",
+ "merge": "Συγχώνευση",
"more": "Περισσότερα",
- "nav-developers": "Προγραμματιστές",
+ "nav-about-description": "Ένα δημόσιο έργο ανοικτού κώδικα για την κοινότητα Ethereum",
+ "nav-advanced-description": "Μάθετε τα πιο σύνθετα θέματα",
+ "nav-advanced-label": "Για προχωρημένους",
+ "nav-basics-description": "Κατανοήστε τις βασικές αρχές του Ethereum",
+ "nav-basics-label": "Τα βασικά",
+ "nav-bridges-description": "Το Web3 έχει εξελιχθεί σε ένα οικοσύστημα πρωτογενών blockchain L1 και λύσεων κλιμάκωσης L2",
+ "nav-builders-home-description": "Εγχειρίδιο προγραμματιστή για το Ethereum – φτιαγμένο από προγραμματιστές για προγραμματιστές",
+ "nav-builders-home-label": "Αρχική σελίδα προγραμματιστή",
+ "nav-contribute-description": "Αν θέλετε να βοηθήσετε, αυτό θα σας καθοδηγήσει",
+ "nav-contribute-label": "Συνεισφέρετε στο ethereum.org",
+ "nav-dao-description": "Κοινότητες που ανήκουν στα μέλη χωρίς κεντρική εξουσία",
+ "nav-dapps-description": "Εξερευνήστε ένα πλούσιο οικοσύστημα εφαρμογών που χρησιμοποιούν το Ethereum",
+ "nav-defi-description": "Μια παγκόσμια, ανοικτή εναλλακτική λύση στην παραδοσιακή χρηματοπιστωτική αγορά",
+ "nav-desci-description": "Μια παγκόσμια, ανοικτή εναλλακτική λύση στο τρέχον επιστημονικό σύστημα",
+ "nav-desoc-description": "Πλατφόρμες βασισμένες στο Blockchain για κοινωνική αλληλεπίδραση και δημιουργία περιεχομένου",
"nav-developers-docs": "Τεκμηρίωση προγραμματιστών",
+ "nav-developers": "Προγραμματιστές",
+ "nav-did-description": "Έκδοση και κατοχή των δικών σας μοναδικών αποκεντρωμένων αναγνωριστικών",
+ "nav-docs-description": "Έγγραφα που θα σας βοηθήσουν να κατανοήσετε και να προγραμματίσετε στο Ethereum",
+ "nav-docs-design-description": "Περιγραφή των μοναδικών προκλήσεων στον σχεδιασμό Web3, βέλτιστες πρακτικές και ιδέες για έρευνα από τους χρήστες",
+ "nav-docs-design-label": "Βασικές αρχές σχεδιασμού UX/UI",
+ "nav-docs-foundation-description": "Οι βασικές αρχές για προγραμματισμό στο Ethereum",
+ "nav-docs-foundation-label": "Βασικά θέματα",
+ "nav-docs-overview-description": "Η αρχική σελίδα σας για τα έγγραφα σχετικά με τον προγραμματισμό",
+ "nav-docs-stack-description": "Κατανοήστε όλες τις λεπτομέρειες του Ethereum stack",
+ "nav-eip-description": "Πρότυπα που προσδιορίζουν νέες δυνατότητες ή διεργασίες",
+ "nav-eip-label": "EIP - Προτάσεις βελτίωσης Ethereum",
+ "nav-emerging-description": "Μάθετε για άλλες νεότερες περιπτώσεις χρήσης του Ethereum",
+ "nav-emerging-label": "Μελλοντικές περιπτώσεις χρήσης",
+ "nav-enterprise-description": "Επιχειρηματικές εφαρμογές για το Ethereum",
+ "nav-ethereum-org-description": "Στο τιμόνι αυτού του ιστοτόπου βρίσκεται η κοινότητα. Γίνετε κι εσείς μέλη της και αρχίστε να συνεισφέρετε",
+ "nav-ethereum-wallets-description": "Εφαρμογή για αλληλεπίδραση με τον λογαριασμό Ethereum σας",
+ "nav-events-description": "Αποκέντρωση και ελευθερία συμμετοχής για όλους",
+ "nav-events-irl-description": "Κάθε μήνα λαμβάνουν χώρα μεγάλες εκδηλώσεις Ethereum τόσο διά ζώσης όσο και διαδικτυακά",
+ "nav-events-label": "Κοινότητες και εκδηλώσεις",
+ "nav-events-online-description": "Σε αυτές τις διαδικτυακές κοινότητες μαζεύονται εκατοντάδες χιλιάδες λάτρεις του Ethereum",
+ "nav-find-wallet-description": "Τα πορτοφόλια σάς επιτρέπουν να χρησιμοποιείτε κρυπτονομίσματα",
+ "nav-find-wallet-label": "Επιλέξτε το πορτοφόλι σας",
+ "nav-gas-fees-description": "Πώς υπολογίζονται τα τέλη συναλλαγών ETH",
+ "nav-gas-fees-label": "Κρατήσεις «gas»",
+ "nav-get-eth-description": "Χρειάζεστε ether (ETH) για να χρησιμοποιήσετε τις εφαρμογές του Ethereum",
+ "nav-get-started-description": "Τα πρώτα σας βήματα στη χρήση του Ethereum",
+ "nav-governance-description": "Η διεργασία που σχετίζεται με την αναβάθμιση του πρωτοκόλλου Ethereum",
+ "nav-governance-label": "Διακυβέρνηση",
+ "nav-grants-description": "Κατάλογος που καταρτίστηκε από την κοινότητά μας και περιλαμβάνει έργα που παρέχουν προγράμματα χρηματοδότησης",
+ "nav-guide-create-account-description": "Οποιοσδήποτε μπορεί να δημιουργήσει έναν λογαριασμό Ethereum ανά πάσα στιγμή, δωρεάν με μια εφαρμογή πορτοφολιού",
+ "nav-guide-create-account-label": "Πώς να «δημιουργήσετε» λογαριασμό Ethereum",
+ "nav-guide-revoke-access-description": "Μείνετε ασφαλείς όταν αλληλεπιδράτε με έξυπνα συμβόλαια και εφαρμογές στο οικοσύστημα Ethereum",
+ "nav-guide-revoke-access-label": "Πώς ανακαλείται η πρόσβαση σε έξυπνο συμβόλαιο",
+ "nav-guide-use-wallet-description": "Μάθετε πώς να χρησιμοποιείτε όλες τις βασικές λειτουργίες ενός πορτοφολιού",
+ "nav-guide-use-wallet-label": "Πώς να χρησιμοποιήσετε ένα πορτοφόλι",
+ "nav-guides-description": "Πρακτικοί οδηγοί βήμα προς βήμα για να σας βοηθήσουν να ξεκινήσετε",
+ "nav-guides-label": "Οδηγοί",
+ "nav-history-description": "Χρονοδιάγραμμα όλων των διακλαδώσεων (fork) και ενημερώσεων μείζονος σημασίας",
+ "nav-history-label": "Τεχνική ιστορία του Ethereum",
+ "nav-layer-2-description": "Φθηνότερες και ταχύτερες συναλλαγές για το Ethereum",
+ "nav-learn-by-coding-description": "Εργαλεία που σας βοηθούν να πειραματίζεστε με το Ethereum",
+ "nav-local-env-description": "Επιλέξτε και διαμορφώστε τη δική σας δομή δεδομένων προγραμματισμού του Ethereum",
+ "nav-mainnet-description": "Οι επιχειρηματικές εφαρμογές blockchain μπορούν να βασιστούν στο δημόσιο Κεντρικό Δίκτυο του Ethereum",
+ "nav-nft-description": "Ένας τρόπος για να αντιπροσωπεύσετε οτιδήποτε μοναδικό ως περιουσιακό στοιχείο με βάση το Ethereum",
+ "nav-open-research-description": "Ένα από τα κύρια προτερήματα του Ethereum είναι η δραστήρια ερευνητική του κοινότητα",
+ "nav-open-research-label": "Ανοιχτή έρευνα",
+ "nav-overview-description": "Τα πάντα για το εκπαιδευτικό περιεχόμενο του Ethereum",
+ "nav-overview-label": "Επισκόπηση",
+ "nav-participate-overview-description": "Επισκόπηση του τρόπου συμμετοχής",
"nav-primary": "Κύριο",
- "nft-page": "Μη Εναλλάξιμα Κρυπτοπαραστατικά (NFT)",
+ "nav-quizzes-description": "Μάθετε πόσο καλά κατανοείτε το Ethereum και τα κρυπτονομίσματα",
+ "nav-quizzes-label": "Δοκιμάστε τις γνώσεις σας",
+ "nav-refi-description": "Ένα εναλλακτικό οικονομικό σύστημα που βασίζεται σε αναγεννητικές αρχές",
+ "nav-research-description": "Διεργασίες που χρησιμοποιούνται για τη βελτίωση του Ethereum",
+ "nav-research-label": "Έρευνα και ανάπτυξη",
+ "nav-roadmap-description": "Η πορεία για μεγαλύτερη επεκτασιμότητα, ασφάλεια και βιωσιμότητα για το Ethereum",
+ "nav-roadmap-future-description": "Το Ethereum εδραιώνεται ως εύρωστο και αποκεντρωμένο δίκτυο",
+ "nav-roadmap-future-label": "Αντοχή στο μέλλον",
+ "nav-roadmap-label": "Οδικός χάρτης",
+ "nav-roadmap-scaling-description": "Ενημερώσεις του δικτύου για περαιτέρω μείωση του κόστους και αύξηση της ταχύτητας των συναλλαγών",
+ "nav-roadmap-scaling-label": "Φθηνότερες συναλλαγές",
+ "nav-roadmap-security-description": "Διασφαλίζοντας ότι το Ethereum διατηρεί την ανθεκτικότητά του έναντι παντός είδους μελλοντικών επιθέσεων",
+ "nav-roadmap-security-label": "Αυξημένη ασφάλεια",
+ "nav-roadmap-ux-description": "Η χρήση του Ethereum πρέπει να απλοποιηθεί",
+ "nav-run-a-node-description": "Γίνετε πλήρως ανεξάρτητοι συμβάλλοντας παράλληλα στην ασφάλεια του δικτύου",
+ "nav-security-description": "Μάθετε τις βέλτιστες πρακτικές για τη χρήση κρυπτονομισμάτων",
+ "nav-smart-contracts-description": "Οι κύριοι θεμέλιοι λίθοι του οικοσυστήματος του Ethereum",
+ "nav-stablecoins-description": "Τα κρυπτονομίσματα σταθερής αξίας (stablecoin) είναι αναγνωριστικά του Ethereum που έχουν σχεδιαστεί να διατηρούν μια σταθερή αξία",
+ "nav-stake-description": "Λάβετε ανταμοιβές ενώ βοηθάτε στην ασφάλεια του Ethereum",
+ "nav-stake-label": "Συμμετοχή",
+ "nav-staking-home-description": "Επισκόπηση των διαφόρων επιλογών αποθήκευσης",
+ "nav-staking-home-label": "Αρχική σελίδα αποθήκευσης",
+ "nav-staking-pool-description": "Αποθηκεύστε και κερδίστε ανταμοιβές συμμετέχοντας με οποιοδήποτε ποσό ETH ενώνοντας τις δυνάμεις σας με άλλους",
+ "nav-staking-pool-label": "Αποθήκευση κεφαλαίου σε δεξαμενή",
+ "nav-staking-saas-description": "Οι διαχειριστές των κόμβων που συμμετέχετε ελέγχουν τη λειτουργία του λογισμικού σας επαλήθευσης",
+ "nav-staking-saas-label": "Αποθήκευση κεφαλαίου με υπηρεσία",
+ "nav-staking-solo-description": "Εκτελέστε την οικιακή σας συσκευή και επιληφθείτε προσωπικά για την ασφάλεια και την αποκέντρωση του δικτύου Ethereum",
+ "nav-staking-solo-label": "Ατομική αποθήκευση κεφαλαίου",
+ "nav-start-building-description": "Χρήσιμες πληροφορίες για νεοαφιχθέντες",
+ "nav-translation-program-description": "Συλλογική προσπάθεια μετάφρασης του ethereum.org σε όλες τις γλώσσες",
+ "nav-tutorials-description": "Επιμελημένος κατάλογος της κοινότητας με οδηγούς εκμάθησης",
+ "nav-use-cases-description": "Ανακαλύψτε διαφορετικές ιδέες για τη χρήση του Ethereum",
+ "nav-use-cases-label": "Περιπτώσεις χρήσης",
+ "nav-what-is-ether-description": "Το νόμισμα των εφαρμογών του Ethereum",
+ "nav-what-is-ethereum-description": "Κατανοήστε τι κάνει το Ethereum να ξεχωρίζει",
+ "nav-what-is-web3-label": "Τι είναι το Web3;",
+ "nav-what-is-web3-description": "Μια εναλλακτική λύση στα συγκεντρωτικά μονοπώλια που υπαγορεύουν τους κανόνες",
+ "nav-whitepaper-description": "Το αρχικό λευκό βιβλίο για το Ethereum που γράφτηκε από τον Vitalik Buterin το 2014",
+ "nav-zkp-description": "Ένας τρόπος να αποδειχθεί η εγκυρότητα της δήλωσης χωρίς να αποκαλυφθεί η ίδια η δήλωση",
+ "nft-page": "NFT - Μη Εναλλάξιμα Κρυπτοπαραστατικά",
"nfts": "NFT",
"no": "Όχι",
"on-this-page": "Σε αυτήν τη σελίδα",
@@ -140,6 +260,8 @@
"page-developers-aria-label": "Μενού προγραμματιστών",
"page-index-meta-title": "Αρχική",
"page-last-updated": "Τελευταία ενημέρωση της σελίδας",
+ "participate": "Συμμετοχή",
+ "participate-menu": "Μενού συμμετοχής",
"pbs": "Διαχωρισμός προτείνοντος - κατασκευαστή",
"pools": "Αποθήκευση κεφαλαίου σε δεξαμενή",
"privacy-policy": "Πολιτική απορρήτου",
@@ -149,9 +271,11 @@
"quizzes": "Διαγωνισμοί γνώσεων",
"refresh": "Παρακαλούμε ανανεώστε τη σελίδα.",
"return-home": "επιστροφή στην αρχική",
- "roadmap": "Οδικός χάρτης Ethereum",
+ "roadmap": "Οδικός χάρτης",
+ "research": "Έρευνα",
+ "research-menu": "Μενού έρευνας",
"resources": "Πηγές μετάφρασης",
- "regenerative-finance": "Regenerative finance (ReFi)",
+ "regenerative-finance": "ReFi - Regenerative finance",
"run-a-node": "Εκτελέστε ένα κόμβο",
"rollup-component-website": "Ιστότοπος",
"rollup-component-developer-docs": "Τεκμηρίωση προγραμματιστή",
@@ -164,6 +288,7 @@
"search-box-blank-state-text": "Αναζητήστε ελεύθερα!",
"search-eth-address": "Μοιάζει με διεύθυνση Ethereum. Δεν παρέχουμε δεδομένα ειδικά για διευθύνσεις. Δοκιμάστε να την αναζητήσετε σε έναν εξερευνητή μπλοκ όπως",
"search-no-results": "Δεν υπάρχουν αποτελέσματα για την αναζήτησή σας",
+ "security": "Ασφάλεια",
"single-slot-finality": "Οριστικοποίηση απλής θέσης",
"statelessness": "Statelessness",
"see-contributors": "Δείτε τους συνεισφέροντες",
@@ -181,6 +306,7 @@
"start-here": "Ξεκινήστε από εδώ",
"style-guide": "Οδηγός στυλ",
"solo": "Ατομική αποθήκευση κεφαλαίου",
+ "support": "Υποστήριξη",
"terms-of-use": "Όροι Χρήσης",
"translation-banner-body-new": "Βλέπετε αυτήν τη σελίδα στα αγγλικά επειδή δεν την έχουμε μεταφράσει ακόμα. Βοηθήστε μας να μεταφράσουμε αυτό το περιεχόμενο.",
"translation-banner-body-update": "Υπάρχει μια νέα έκδοση αυτής της σελίδας, αλλά αυτήν τη στιγμή είναι μόνο στα αγγλικά. Βοηθήστε μας να μεταφράσουμε την πιο πρόσφατη έκδοση.",
@@ -191,11 +317,14 @@
"translation-banner-no-bugs-title": "Δεν υπάρχουν σφάλματα εδώ!",
"translation-banner-no-bugs-content": "Αυτή η σελίδα δε μεταφράζεται. Την έχουμε αφήσει σκοπίμως στα Αγγλικά προς το παρόν.",
"translation-banner-no-bugs-dont-show-again": "Να μην εμφανιστεί ξανά",
+ "translation-program": "Πρόγραμμα μετάφρασης",
"try-using-search": "Χρησιμοποιήστε την αναζήτηση για να βρείτε αυτό που ψάχνετε ή",
"tutorials": "Σεμινάρια",
"up": "Πάνω",
+ "use": "Χρήση",
"use-ethereum": "Χρήση του Ethereum",
"use-ethereum-menu": "Χρήση του μενού Ethereum",
+ "use-menu": "Μενού χρήσης",
"user-experience": "Εμπειρία χρήστη",
"verkle-trees": "Verkle trees",
"wallets": "Πορτοφόλια",
diff --git a/src/intl/el/page-dapps.json b/src/intl/el/page-dapps.json
index 3bc86fdd08e..8f94898fc40 100644
--- a/src/intl/el/page-dapps.json
+++ b/src/intl/el/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Μεταδώστε χρήματα σε πραγματικό χρόνο.",
"page-dapps-dapp-description-superrare": "Αγοράστε ψηφιακά έργα τέχνης απευθείας από τους καλλιτέχνες ή από δευτερογενείς αγορές.",
"page-dapps-dapp-description-token-sets": "Επενδυτικές στρατηγικές κρυπτογράφησης που επανισορροπούν αυτόματα.",
- "page-dapps-dapp-description-tornado-cash": "Αποστολή ανώνυμων συναλλαγών στο Ethereum.",
"page-dapps-dapp-description-uniswap": "Μετατρέψτε εύκολα τα κρυπτονομίσματα ή παρέχετε μερικά για % ανταμοιβές.",
"page-dapps-dapp-description-dexguru": "Τερματικό ελεύθερων συναλλαγών για εμπόρους DeFi",
"page-dapps-dapp-description-synthetix": "Το Synthetix είναι ένα πρωτόκολλο για την έκδοση και εμπορία συνθετικών περιουσιακών στοιχείων",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Πρόκειται για εφαρμογές που επικεντρώνονται στην αποκέντρωση των εργαλείων ανάπτυξης, ενσωματώνοντας κρυπτοοικονομικά συστήματα στην υπάρχουσα τεχνολογία και δημιουργώντας αγορές για εργασίες ανάπτυξης ανοιχτού κώδικα.",
"page-dapps-technology-title": "Αποκεντρωμένη τεχνολογία",
"page-dapps-token-sets-logo-alt": "Λογότυπο Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Λογότυπο Tornado cash",
"page-dapps-uniswap-logo-alt": "Λογότυπο Uniswap",
"page-dapps-wallet-callout-button": "Επιλογή πορτοφολιού",
"page-dapps-wallet-callout-description": "Τα πορτοφόλια είναι και αυτά αποκεντρωμένες εφαρμογές. Βρείτε ένα που να ταιριάζει σε εσάς.",
diff --git a/src/intl/el/page-languages.json b/src/intl/el/page-languages.json
index 60db98df4a1..5d7a1104faa 100644
--- a/src/intl/el/page-languages.json
+++ b/src/intl/el/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Θέλετε να δείτε το ethereum.org σε μια διαφορετική γλώσσα;",
"page-languages-want-more-link": "Πρόγραμμα μετάφρασης",
"page-languages-want-more-paragraph": "Οι μεταφραστές του ethereum.org μεταφράζουν πάντα σελίδες σε όσο το δυνατόν περισσότερες γλώσσες. Για να δείτε την τρέχουσα κατάσταση ή να εγγραφείτε για να συμμετάσχετε, διαβάστε",
- "page-languages-filter-placeholder": "Φίλτρο",
+ "page-languages-filter-label": "Φιλτράρισμα λίστας",
+ "page-languages-filter-placeholder": "Πληκτρολογήστε για φιλτράρισμα",
+ "page-languages-browser-default": "Προεπιλογή περιηγητή",
+ "page-languages-translated": "μεταφράστηκαν",
+ "page-languages-words": "λέξεις",
+ "page-languages-recruit-community": "Βοηθήστε μας να μεταφράσουμε το ethereum.org.",
+ "langauge-am": "Αμχαρικά",
"language-ar": "Αραβικά",
"language-az": "Αζερικά",
+ "langauge-be": "Λευκορωσικά",
"language-bg": "Βουλγαρικά",
"language-bn": "Μπενγκάλι",
+ "language-bs": "Βοσνιακά",
"language-ca": "Καταλανικά",
"language-cs": "Τσεχικά",
"language-da": "Δανικά",
@@ -32,6 +40,7 @@
"language-hi": "Χίντι",
"language-hr": "Κροατικά",
"language-hu": "Ουγγρικά",
+ "language-hy-am": "Αρμενικά",
"language-id": "Ινδονησιακά",
"language-ig": "Ίγκμπο",
"language-it": "Ιταλικά",
@@ -39,12 +48,14 @@
"language-ka": "Γεωργιανά",
"language-kk": "Καζακικά",
"language-km": "Χμερ",
+ "language-kn": "Κανάντα",
"language-ko": "Κορεάτικα",
"language-lt": "Λιθουανικά",
"language-ml": "Μαλαγιαλαμικά",
"language-mr": "Μαράτι",
"language-ms": "Μαλαϊκά",
"language-nb": "Νορβηγικά",
+ "language-ne-np": "Νεπαλικά",
"language-nl": "Ολλανδικά",
"language-pcm": "Νιγηριανά Πίντγκιν",
"language-fil": "Φιλιππινεζικά",
@@ -58,8 +69,9 @@
"language-sl": "Σλοβενικά",
"language-sr": "Σερβικά",
"language-sw": "Σουαχίλι",
- "language-th": "Ταϊλανδικά",
"language-ta": "Ταμίλ",
+ "language-th": "Ταϊλανδικά",
+ "language-tk": "Τουρκμενικά",
"language-tr": "Τουρκικά",
"language-uk": "Ουκρανικά",
"language-ur": "Ουρντού",
diff --git a/src/intl/el/page-stablecoins.json b/src/intl/el/page-stablecoins.json
index 5abb71e6e7c..8b4dbf080a7 100644
--- a/src/intl/el/page-stablecoins.json
+++ b/src/intl/el/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Πηγή",
"page-stablecoins-bitcoin-pizza": "Η περίφημη πίτσα Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Το 2010, κάποιος αγόρασε 2 πίτσες στην τιμή των 10.000 bitcoin. Εκείνη τη στιγμή η αξία τους ήταν περίπου ~$41 USD, ενώ σήμερα αξίζουν μερικά εκατομμύρια. Υπάρχουν βέβαια και άλλες παρόμοιες λυπηρές συναλλαγές στην ιστορία του Ethereum. Τα κρυπτονομίσματα σταθερής αξίας έχουν επιλύσει αυτό το πρόβλημα, οπότε μπορείτε να απολαύσετε την πίτσα σας και να κρατήσετε τα ΕΤΗ σας.",
+ "page-stablecoins-category-dashboard-and-education": "Πίνακας ελέγχου & Εκπαίδευση",
"page-stablecoins-coin-price-change": "Μεταβολή τιμής νομίσματος (τελευταίες 30 ημέρες)",
"page-stablecoins-crypto-backed": "Υποστήριξη κρυπτονομισμάτων",
"page-stablecoins-crypto-backed-con-1": "Λιγότερο σταθερό από τα υποστηριζόμενα με fiat κρυπτονομίσματα σταθερής αξίας.",
diff --git a/src/intl/en/common.json b/src/intl/en/common.json
index 2776770d91c..a1669ab757e 100644
--- a/src/intl/en/common.json
+++ b/src/intl/en/common.json
@@ -16,12 +16,14 @@
"beacon-chain": "Beacon Chain",
"bridges": "Blockchain bridges",
"bug-bounty": "Bug bounty",
+ "build": "Build",
+ "build-menu": "Build menu",
"clear": "Clear",
"close": "Close",
"community": "Community",
"community-hub": "Community hub",
"community-menu": "Community Menu",
- "contact": "Contact",
+ "contact": "Press Contact",
"content-buckets": "Content Buckets",
"content-resources": "Content Resources",
"content-standardization": "Content standardization",
@@ -32,14 +34,15 @@
"copied": "Copied",
"copy": "Copy",
"danksharding": "Danksharding",
- "dao-page": "Decentralized autonomous organisations (DAOs)",
+ "dao-page": "DAOs - Decentralized autonomous organizations",
"dark-mode": "Dark",
"data-provided-by": "Data source:",
- "decentralized-applications-dapps": "Decentralized applications (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentralized applications",
"decentralized-identity": "Decentralized identity",
"decentralized-social-networks": "Decentralized social networks",
- "decentralized-science": "Decentralized science (DeSci)",
- "defi-page": "Decentralized finance (DeFi)",
+ "decentralized-science": "DeSci - Decentralized science",
+ "description": "Description for nav item",
+ "defi-page": "DeFi - Decentralized finance",
"design": "Design",
"design-principles": "Design Principles",
"devcon": "Devcon",
@@ -91,6 +94,7 @@
"ethereum-support": "Ethereum support",
"ethereum-wallets": "Ethereum wallets",
"ethereum-whitepaper": "Ethereum Whitepaper",
+ "feedback-widget": "Feedback",
"feedback-widget-prompt": "Is this page helpful?",
"feedback-card-prompt-page": "Was this page helpful?",
"feedback-card-prompt-article": "Was this article helpful?",
@@ -144,10 +148,117 @@
"mainnet-ethereum": "Mainnet Ethereum",
"merge": "Merge",
"more": "More",
- "nav-developers": "Developers",
+ "nav-about-description": "A public, open-source project for the Ethereum community",
+ "nav-advanced-description": "Learn the more complex topics",
+ "nav-advanced-label": "Advanced",
+ "nav-basics-description": "Understand the fundamentals of Ethereum",
+ "nav-basics-label": "Basics",
+ "nav-bridges-description": "Web3 has evolved into an ecosystem of primary L1 blockchains and L2 scaling solutions",
+ "nav-builders-home-description": "A builder's manual for Ethereum—by builders, for builders",
+ "nav-builders-home-label": "Builder's home",
+ "nav-contribute-description": "If you want to help, this will guide you",
+ "nav-contribute-label": "Contributing to ethereum.org",
+ "nav-dao-description": "Member-owned communities without centralized authority",
+ "nav-dapps-description": "Explore a rich ecosystem of apps using Ethereum",
+ "nav-defi-description": "A global, open alternative to the traditional financial market",
+ "nav-desci-description": "A global, open alternative to the current scientific system",
+ "nav-desoc-description": "Blockchain-based platforms for social interaction and content creation",
"nav-developers-docs": "Developers docs",
+ "nav-developers": "Developers",
+ "nav-did-description": "Issue and own your unique decentralized identifiers",
+ "nav-docs-description": "Docs to help you understand and build with Ethereum",
+ "nav-docs-design-description": "Description of unique web3 design challenges, best practices and user research insights",
+ "nav-docs-design-label": "UX/UI design fundamentals",
+ "nav-docs-foundation-description": "Core fundamentals to develop on Ethereum",
+ "nav-docs-foundation-label": "Foundational topics",
+ "nav-docs-overview-description": "Your home for developer docs",
+ "nav-docs-stack-description": "Understand all the details of the Ethereum stack",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Standards that specify new features or processes",
+ "nav-eip-label": "EIPs - Ethereum improvement proposals",
+ "nav-emerging-description": "Get to know other newer use cases for Ethereum",
+ "nav-emerging-label": "Emerging use cases",
+ "nav-enterprise-description": "Business applications for Ethereum",
+ "nav-ethereum-org-description": "This website is community driven—join us and contribute too",
+ "nav-ethereum-wallets-description": "An app to interact with your Ethereum account",
+ "nav-events-description": "Decentralization and freedom to participate for anyone",
+ "nav-events-irl-description": "Every month there are major Ethereum events in-person and online",
+ "nav-events-label": "Communities and events",
+ "nav-events-online-description": "Hundreds of thousands of Ethereum enthusiasts gather in these online communities",
+ "nav-find-wallet-description": "Wallets allow you to use crypto",
+ "nav-find-wallet-label": "Choose your wallet",
+ "nav-gas-fees-description": "How are ETH transaction fees calculated",
+ "nav-gas-fees-label": "Gas fees",
+ "nav-get-eth-description": "You need ether (ETH) to use Ethereum applications",
+ "nav-get-started-description": "Your first steps to use Ethereum",
+ "nav-governance-description": "The process involved in upgrading the Ethereum protocol",
+ "nav-governance-label": "Governance",
+ "nav-grants-description": "A curated list by our community on projects that provide grant funding programs",
+ "nav-guide-overview-description": "List of all guides in one place",
+ "nav-guide-create-account-description": "Anyone can create an Ethereum account at any time, for free with a wallet app",
+ "nav-guide-create-account-label": "How to create an Ethereum account",
+ "nav-guide-revoke-access-description": "Stay safe when interacting with smart contracts and applications in the Ethereum ecosystem",
+ "nav-guide-revoke-access-label": "How to revoke smart contract access",
+ "nav-guide-use-wallet-description": "Learn how to operate all the basic functions of a wallet",
+ "nav-guide-use-wallet-label": "How to use a wallet",
+ "nav-guides-description": "Practical step-by-step guides to help you get started",
+ "nav-guides-label": "How to guides",
+ "nav-history-description": "A timeline of all the major forks and updates",
+ "nav-history-label": "Technical history of Ethereum",
+ "nav-layer-2-description": "Cheaper and faster transactions for Ethereum",
+ "nav-learn-by-coding-description": "Tools that help you experiment with Ethereum",
+ "nav-local-env-description": "Choose and set up your Ethereum development stack",
+ "nav-mainnet-description": "Enterprise blockchain applications can be built on the public Ethereum Mainnet",
+ "nav-nft-description": "A way to represent anything unique as an Ethereum-based asset",
+ "nav-open-research-description": "One of the primary strengths of Ethereum is its active research community",
+ "nav-open-research-label": "Open research",
+ "nav-overview-description": "All things Ethereum education",
+ "nav-overview-label": "Overview",
+ "nav-participate-overview-description": "Overview on how to participate",
"nav-primary": "Primary",
- "nft-page": "Non-fungible tokens (NFTs)",
+ "nav-private-description": "Developer resources for private enterprise Ethereum",
+ "nav-quizzes-description": "Find out how well you understand Ethereum and cryptocurrencies",
+ "nav-quizzes-label": "Test your knowledge",
+ "nav-refi-description": "An alternative economic system built on regenerative principles",
+ "nav-research-description": "Processes used to improve Ethereum",
+ "nav-research-label": "Research and development",
+ "nav-roadmap-overview-description": "The future of Ethereum",
+ "nav-roadmap-description": "The path to more scalability, security and sustainability for Ethereum",
+ "nav-roadmap-future-description": "Solidifying Ethereum as a robust and decentralized network",
+ "nav-roadmap-future-label": "Future-proofing",
+ "nav-roadmap-label": "Roadmap",
+ "nav-roadmap-scaling-description": "Network updates to further reduce transaction costs and speed",
+ "nav-roadmap-scaling-label": "Cheaper transactions",
+ "nav-roadmap-security-description": "Making sure Ethereum stays resilient to all kinds of attacks into the future",
+ "nav-roadmap-security-label": "Improved security",
+ "nav-roadmap-ux-description": "Using Ethereum needs to be simplified",
+ "nav-roadmap-ux-label": "Better user experience",
+ "nav-run-a-node-description": "Become fully sovereign while helping secure the network",
+ "nav-security-description": "Learn best practices when using cryptocurrency",
+ "nav-smart-contracts-description": "The fundamental buliding blocks of the Ethereum ecosystem",
+ "nav-stablecoins-description": "Stablecoins are Ethereum tokens designed to stay at a fixed value",
+ "nav-stake-description": "Earn rewards for securing Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "An overview of different options for staking",
+ "nav-staking-home-label": "Staking home",
+ "nav-staking-pool-description": "Stake and earn rewards with any amount of ETH by joining with others",
+ "nav-staking-pool-label": "Pooled staking",
+ "nav-staking-saas-description": "Third-party node operators handle the operation of your validator client",
+ "nav-staking-saas-label": "Staking with a service",
+ "nav-staking-solo-description": "Run home hardware and personally add to the security and decentralization of the Ethereum network",
+ "nav-staking-solo-label": "Solo staking",
+ "nav-start-building-description": "Useful information for newcomers",
+ "nav-translation-program-description": "A collaborative effort to translate ethereum.org to all languages",
+ "nav-tutorials-description": "Curated list of community tutorials",
+ "nav-use-cases-description": "Discover different ideas for Ethereum usage",
+ "nav-use-cases-label": "Use cases",
+ "nav-what-is-ether-description": "The currency of Ethereum apps",
+ "nav-what-is-ethereum-description": "Understand what makes Ethereum special",
+ "nav-what-is-web3-label": "What is Web3?",
+ "nav-what-is-web3-description": "An alternative to centralized monopolies dictating the rules",
+ "nav-whitepaper-description": "The original Ethereum whitepaper written by Vitalik Buterin in 2014",
+ "nav-zkp-description": "A way to prove the validity of a statement without reveling the statement itself",
+ "nft-page": "NFTs - Non-fungible tokens",
"nfts": "NFTs",
"no": "No",
"on-this-page": "On this page",
@@ -155,6 +266,8 @@
"page-developers-aria-label": "Developers' Menu",
"page-index-meta-title": "Home",
"page-last-updated": "Page last updated",
+ "participate": "Participate",
+ "participate-menu": "Participate menu",
"pbs": "Proposer-builder separation",
"pools": "Pooled staking",
"privacy-policy": "Privacy policy",
@@ -165,8 +278,10 @@
"refresh": "Please refresh the page.",
"return-home": "return home",
"roadmap": "Ethereum roadmap",
+ "research": "Research",
+ "research-menu": "Research menu",
"resources": "Translation resources",
- "regenerative-finance": "Regenerative finance (ReFi)",
+ "regenerative-finance": "ReFi - Regenerative finance",
"run-a-node": "Run a node",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Developer docs",
@@ -212,8 +327,10 @@
"try-using-search": "Try using search to find what you're looking for or",
"tutorials": "Tutorials",
"up": "Up",
+ "use": "Use",
"use-ethereum": "Use Ethereum",
"use-ethereum-menu": "Use Ethereum menu",
+ "use-menu": "Use menu",
"user-experience": "User experience",
"verkle-trees": "Verkle trees",
"wallets": "Wallets",
diff --git a/src/intl/en/glossary.json b/src/intl/en/glossary.json
index 5e2d2a9a58f..e49b4164e79 100644
--- a/src/intl/en/glossary.json
+++ b/src/intl/en/glossary.json
@@ -1,6 +1,6 @@
{
"51%-attack-term": "51% attack",
- "51%-attack-definition": "A type of attack on a decentralized network where a group gains control of the majority of nodes. This would allow them to defraud the blockchain by reversing transactions and double spending ether and other tokens.",
+ "51%-attack-definition": "A type of attack on a decentralized network where a group gains control of the majority of nodes. This would allow them to defraud the blockchain by reversing transactions and double spending ether and other tokens.",
"account-term": "Account",
"account-definition": "An object containing an address, balance, nonce, and optional storage and code. An account can be a contract account or an externally owned account (EOA).
More on Ethereum accounts.",
"address-term": "Address",
@@ -193,18 +193,26 @@
"keystore-definition": "Every account’s private key/address pair exists as a single keyfile in an Ethereum client. These are JSON text files which contains the encrypted private key of the account, which can only be decrypted with the password entered during account creation.",
"keccak-256-term": "Keccak-256",
"keccak-256-definition": "Cryptographic hash function used in Ethereum. Keccak-256 was standardized as SHA-3.",
+ "layer-1-term": "Layer 1",
+ "layer-1-definition": "Layer 1 refers to the main blockchain in a multi-level blockchain network. For example, Ethereum and Bitcoin are layer one blockchains. Many layer two blockchain offload resource-intense transactions to their separate blockchain, while continuing to use Ethereum's or Bitcoin's layer one blockchain for security purposes.",
"layer-2-term": "Layer 2",
"layer-2-definition": "An area of development focused on layering improvements on top of the Ethereum protocol. These improvements are related to transaction speeds, cheaper transaction fees, and transaction privacy. More on layer 2.",
"library-term": "Library",
"library-definition": "A special type of contract that has no payable functions, no fallback function, and no data storage. Therefore, it cannot receive or hold ether, or store data. A library serves as previously deployed code that other contracts can call for read-only computation. More on smart contract libraries.",
"light-client-term": "Light client",
"light-client-definition": "An Ethereum client that does not store a local copy of the blockchain, or validate blocks and transactions. It offers the functions of a wallet and can create and broadcast transactions.",
+ "liquidity-term": "Liquidity",
+ "liquidity-definition": "Liquidity is how quickly and easily an asset can be converted into cash or another asset. Decentralized exchanges like Uniswap have multiple liquidity pools where asset holders can deposit their assets where traders can buy and sell them in a decentralized way in exchange for rewards.",
"lmd-ghost-term": "LMD-GHOST",
"lmd-ghost-definition": "The fork-choice algorithm used by Ethereum's consensus clients to identify the head of the chain. LMD-GHOST is an acronym standing for \"Latest Message Driven Greediest Heaviest Observed SubTree\" which means that the head of the chain is the block with the greatest accumulation of attestations in its history.",
"mainnet-term": "Mainnet",
"mainnet-definition": "Short for \"main network,\" this is the main public Ethereum blockchain.",
+ "max-fee-per-gas-term": "Max Fee Per Gas",
+ "max-fee-per-gas-definition": "The Max Fee is the absolute maximum amount a user is willing to pay per unit of gas (gwei) to get a transaction included in a block.",
"merkle-patricia-tree-term": "Merkle Patricia Tree (MPT)",
"merkle-patricia-tree-definition": "A data structure used in Ethereum to efficiently store key-value pairs.",
+ "merkle-root-term": "Merkle Root",
+ "merkle-root-definition": "A Merkle root is the single top hash of a Merkle tree. It verifies all transactions within a block.",
"message-term": "Message",
"message-definition": "An internal transaction that is never serialized and only sent within the EVM.",
"message-call-term": "Message call",
@@ -225,8 +233,12 @@
"node-definition": "A software client that participates in the network. More on nodes and clients.",
"nonce-term": "Nonce",
"nonce-definition": "In cryptography, a value that can only be used once. An account nonce is a transaction counter in each account, which is used to prevent replay attacks.",
+ "off-chain-term": "Off-Chain",
+ "off-chain-definition": "Off-chain means any transaction or data that exists outside the blockchain. Because committing every transaction on-chain can be expensive and inefficient, third-party tools like oracles that handle pricing data, or layer 2 solutions that execute a higher throughput of transactions, handle a bulk of the processing work off-chain, and will submit information on-chain at less frequent intervals.",
"ommer-term": "Ommer (uncle) block",
"ommer-definition": "When a proof-of-work miner finds a valid block, another miner may have published a competing block which is added to the tip of the blockchain first. This valid, but stale, block can be included by newer blocks as ommers and receive a partial block reward. The term \"ommer\" is the preferred gender-neutral term for the sibling of a parent block, but this is also sometimes referred to as an \"uncle\". This was relevant for Ethereum when it was a proof-of-work network, but ommers are not a feature of proof-of-stake Ethereum because precisely one block proposer is selected in each slot.",
+ "on-chain-term": "On-Chain",
+ "on-chain-definition": "Refers to actions or transactions that happen on the blockchain and are publicly available.
Think of it as writing something in a big, shared notebook that everyone can see and check, making sure that whatever is written (like sending digital money or making a contract) is permanent and can't be changed or erased.",
"optimistic-rollup-term": "Optimistic rollup",
"optimistic-rollup-definition": "A rollup of transactions that use fraud proofs to offer increased layer 2 transaction throughput while using the security provided by Mainnet (layer 1). Unlike Plasma, a similar layer 2 solution, Optimistic rollups can handle more complex transaction types – anything possible in the EVM. They do have latency issues compared to Zero-knowledge rollups because a transaction can be challenged via the fraud proof. More on Optimistic rollups.",
"oracle-term": "Oracle",
diff --git a/src/intl/en/page-dapps.json b/src/intl/en/page-dapps.json
index 3c2d8356592..33124ce32ed 100644
--- a/src/intl/en/page-dapps.json
+++ b/src/intl/en/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "Create, sell and buy tokenised collectibles.",
"page-dapps-dapp-description-rubic": "Cross-Chain tech aggregator for users and dApps.",
"page-dapps-dapp-description-sablier": "Stream money in real-time.",
- "page-dapps-dapp-description-skiff": "End-to-end encrypted email, calendar, documents, and files that give you the power to communicate freely.",
"page-dapps-dapp-description-spatial": "Create your own custom avatar and 3D worlds",
"page-dapps-dapp-description-spruce": "Open-source stack to leave control of identity and data where it should be: with users.",
"page-dapps-dapp-description-status": "Designed to enable the free flow of information, protect the right to private, secure conversations, and promote the sovereignty of individuals.",
"page-dapps-dapp-description-superrare": "Buy digital artworks direct from artists or in secondary markets.",
"page-dapps-dapp-description-synthetix": "A new financial primitive enabling the creation of synthetic assets, offering unique derivatives and exposure to real-world assets on the blockchain.",
"page-dapps-dapp-description-token-sets": "Crypto investment strategies that automatically rebalance.",
- "page-dapps-dapp-description-tornado-cash": "Send anonymous transactions on Ethereum.",
"page-dapps-dapp-description-uniswap": "Swap tokens simply or provide tokens for % rewards.",
"page-dapps-dapp-description-xmtp": "Send messages between blockchain accounts, including DMs, alerts, announcements, and more.",
"page-dapps-dapp-description-yearn": "Decentralized suite of products helping individuals, DAOs, and other protocols earn yield on their digital assets.",
@@ -249,7 +247,6 @@
"page-dapps-set-up-a-wallet-button": "Find wallet",
"page-dapps-set-up-a-wallet-description": "A wallet is your “login” for a dapp",
"page-dapps-set-up-a-wallet-title": "Set up a wallet",
- "page-dapps-skiff-logo-alt": "Skiff logo",
"page-dapps-social-button": "Social",
"page-dapps-social-description": "These are applications that focus on creating decentralized social networks utilizing decentralized identity technologies where digital identities and social graphs are owned by the users.",
"page-dapps-social-title": "Social",
@@ -262,7 +259,6 @@
"page-dapps-technology-description": "These are applications that focus on decentralizing developer tools, incorporating cryptoeconomic systems into existing technology, and creating marketplaces for open-source development work.",
"page-dapps-technology-title": "Decentralized technology",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Find wallet",
"page-dapps-wallet-callout-description": "Wallets are dapps too. Find one based on the features that suit you.",
diff --git a/src/intl/en/page-languages.json b/src/intl/en/page-languages.json
index 53d97878c77..9fd6feea227 100644
--- a/src/intl/en/page-languages.json
+++ b/src/intl/en/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Want to see ethereum.org in a different language?",
"page-languages-want-more-link": "Translation Program",
"page-languages-want-more-paragraph": "ethereum.org translators are always translating pages in as many languages as possible. To see what they're working on right now or to sign up to join them, read about our",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Filter list",
+ "page-languages-filter-placeholder": "Type to filter",
+ "page-languages-browser-default": "Browser default",
+ "page-languages-translated": "translated",
+ "page-languages-words": "words",
+ "page-languages-recruit-community": "Help us translate ethereum.org.",
"langauge-am": "Amharic",
"language-ar": "Arabic",
"language-az": "Azerbaijani",
diff --git a/src/intl/en/page-layer-2.json b/src/intl/en/page-layer-2.json
index d9380cd2c04..1bc7b299858 100644
--- a/src/intl/en/page-layer-2.json
+++ b/src/intl/en/page-layer-2.json
@@ -2,6 +2,7 @@
"layer-2-arbitrum-note": "Fraud proofs only for whitelisted users, whitelist not open yet",
"layer-2-boba-note": "State validation in development",
"layer-2-optimism-note": "Fault proofs in development",
+ "layer-2-base-note": "Fraud proof system is currently under development",
"layer-2-metadata-description": "Introduction page to layer 2",
"layer-2-hero-title": "Layer 2",
"layer-2-hero-header": "Ethereum for everyone",
@@ -88,6 +89,7 @@
"layer-2-go-to": "Go to",
"layer-2-tools-title": "Tools to be effective on layer 2",
"layer-2-tools-l2beat-description": "L2BEAT is a great resource for looking at technical risk assessments of layer 2 projects. We recommend checking out their resources when researching specific layer 2 projects.",
+ "layer-2-tools-growthepie-description": "Curated analytics about Ethereun layer 2s",
"layer-2-tools-l2fees-description": "L2 Fees lets you see the current cost (denominated in USD) for doing transactions on different layer 2s.",
"layer-2-tools-chainlist-description": "Chainlist is a great resource for importing network RPC's into supporting wallets. You will find RPC's for layer 2 projects here to help get you connected.",
"layer-2-tools-zapper-description": "Manage your entire web3 portfolio from DeFi to NFTs and whatever comes next. Invest in the latest opportunities from one convenient place.",
@@ -120,6 +122,7 @@
"arbitrum-description": "Arbitrum One is an Optimistic Rollup that aims to feel exactly like interacting with Ethereum, but with transactions costing a fraction of what they do on L1.",
"optimism-description": "Optimism is a fast, simple, and secure EVM-equivalent optimistic rollup. It scales Ethereum's tech while also scaling its values through retroactive public goods funding.",
"boba-description": "Boba is an Optimistic Rollup originally forked from Optimism which is a scaling solution that aims to reduce gas fees, improve transaction throughput, and extend the capabilities of smart contracts.",
+ "base-description": "Base is a secure, low-cost, developer-friendly Ethereum L2 built to bring the next billion users to web3. It is an Ethereum L2, incubated by Coinbase and built on the open-source OP Stack.",
"loopring-description": "Loopring's zkRollup L2 solution aims to offer the same security guarantees as Ethereum mainnet, with a big scalability boost: throughput increased by 1000x, and cost reduced to just 0.1% of L1.",
"zksync-description": "zkSync is a user-centric zk rollup platform from Matter Labs. It is a scaling solution for Ethereum, already live on Ethereum mainnet. It supports payments, token swaps and NFT minting.",
"zkspace-description": "The ZKSpace platform consists of three main parts: a layer 2 AMM DEX utilizing ZK-Rollups technology called ZKSwap, a payment service called ZKSquare, and an NFT marketplace called ZKSea.",
diff --git a/src/intl/en/page-stablecoins.json b/src/intl/en/page-stablecoins.json
index 9287933aaeb..c9342a57a2a 100644
--- a/src/intl/en/page-stablecoins.json
+++ b/src/intl/en/page-stablecoins.json
@@ -56,6 +56,7 @@
"page-stablecoins-algorithmic-con-1": "You need to trust (or be able to read) the algorithm.",
"page-stablecoins-algorithmic-con-2": "Your balance of coins will change based on total supply.",
"page-stablecoins-algorithmic-description": "These stablecoins aren't backed by any other asset. Instead an algorithm will sell tokens if the price falls below the desired value and supply tokens if the value goes beyond the desired amount. Because the number of these tokens in circulation changes regularly, the number of tokens you own will change, but will always reflect your share.",
+ "page-stablecoins-algorithmic-disclaimer": "Algorithmic stablecoins are experimental technology. You should be aware of the risks before using them.",
"page-stablecoins-algorithmic-pro-1": "No collateral needed.",
"page-stablecoins-algorithmic-pro-2": "Controlled by a public algorithm.",
"page-stablecoins-bank-apy": "0.05%",
@@ -63,6 +64,7 @@
"page-stablecoins-bank-apy-source-link": "Source",
"page-stablecoins-bitcoin-pizza": "The infamous Bitcoin pizza",
"page-stablecoins-bitcoin-pizza-body": "In 2010, someone bought 2 pizzas for 10,000 bitcoin. At the time these were worth ~$41 USD. In today’s market that’s millions of dollars. There are many similar regretful transactions in Ethereum’s history. Stablecoins solve this problem, so you can enjoy your pizza and hold on to your ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Education",
"page-stablecoins-coin-price-change": "Coin price change (last 30 days)",
"page-stablecoins-crypto-backed": "Crypto backed",
"page-stablecoins-crypto-backed-con-1": "Less stable than fiat-backed stablecoins.",
diff --git a/src/intl/en/page-staking.json b/src/intl/en/page-staking.json
index 950e31d96bd..4eb7361ca9e 100644
--- a/src/intl/en/page-staking.json
+++ b/src/intl/en/page-staking.json
@@ -187,7 +187,7 @@
"page-staking-section-comparison-requirements-title": "Requirements",
"page-staking-section-comparison-solo-requirements-li1": "You must deposit 32 ETH",
"page-staking-section-comparison-solo-requirements-li2": "Maintain hardware that runs both an Ethereum execution client and consensus client while connected to the internet",
- "page-staking-section-comparison-solo-requirements-li3": "The Staking Launchpad will walk you through the process and hardware requirements",
+ "page-staking-section-comparison-solo-requirements-li3": "The Staking Launchpad will walk you through the process and hardware requirements",
"page-staking-section-comparison-saas-requirements-li1": "Deposit 32 ETH and generate your keys with assistance",
"page-staking-section-comparison-saas-requirements-li2": "Store your keys securely",
"page-staking-section-comparison-saas-requirements-li3": "The rest is taken care of, though specific services will vary",
diff --git a/src/intl/es/common.json b/src/intl/es/common.json
index acc9b6c07bf..8a889d2b7d5 100644
--- a/src/intl/es/common.json
+++ b/src/intl/es/common.json
@@ -15,6 +15,9 @@
"aria-toggle-menu-button": "Cambiar botón de menú",
"beacon-chain": "Cadena de baliza",
"bridges": "Puentes de cadena de bloques",
+ "bug-bounty": "Recompensa de error",
+ "build": "Construir",
+ "build-menu": "Menú Construir",
"clear": "Borrar",
"close": "Cerrar",
"community": "Comunidad",
@@ -31,14 +34,15 @@
"copied": "Copiado",
"copy": "Copiar",
"danksharding": "Danksharding",
- "dao-page": "Organizaciones Autónomas Descentralizadas (DAO)",
+ "dao-page": "DAO - Organizaciones Autónomas Descentralizadas",
"dark-mode": "Oscuro",
"data-provided-by": "Fuente de datos:",
- "decentralized-applications-dapps": "Aplicaciones descentralizadas (DApps)",
+ "decentralized-applications-dapps": "DApps - Aplicaciones descentralizadas",
"decentralized-identity": "Identidad descentralizada",
"decentralized-social-networks": "Redes sociales descentralizadas",
- "decentralized-science": "Ciencias descentralizadas (DeSci)",
- "defi-page": "Finanzas descentralizadas (DeFi)",
+ "decentralized-science": "DeSci - Ciencias descentralizadas",
+ "description": "Descripción de un elemento de navegación",
+ "defi-page": "DeFi - Finanzas descentralizadas",
"design": "Diseño",
"design-principles": "Principios de diseño",
"devcon": "Devcon",
@@ -96,7 +100,7 @@
"feedback-card-prompt-tutorial": "¿Le ha resultado útil este tutorial?",
"feedback-widget-thank-you-title": "¡Gracias por sus comentarios!",
"feedback-widget-thank-you-subtitle": "Mejore esta página respondiendo a algunas preguntas.",
- "feedback-widget-thank-you-subtitle-ext": "Si necesita ayuda, puede comunicarse con la comunidad en nuestro canal Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Si necesita ayuda, puede comunicarse con la comunidad en nuestro canal Discord.",
"feedback-widget-thank-you-timing": "2–3 minutos",
"feedback-widget-thank-you-cta": "Abrir encuesta breve",
"find-wallet": "Encontrar cartera",
@@ -143,10 +147,115 @@
"mainnet-ethereum": "Red principal de Ethereum",
"merge": "Fusión",
"more": "Más",
- "nav-developers": "Desarrolladores",
+ "nav-about-description": "Un proyecto público de código abierto para la comunidad Ethereum",
+ "nav-advanced-description": "Conozca los temas más complejos",
+ "nav-advanced-label": "Recursos avanzados",
+ "nav-basics-description": "Entienda lo esencial de Ethereum",
+ "nav-basics-label": "Lo básico",
+ "nav-bridges-description": "Web3 ha evolucionado en un ecosistema de cadenas de bloques primarios de capa 1 y soluciones de escalabilidad de capa 2",
+ "nav-builders-home-description": "Un manual de constructores para Ethereum. De constructores para constructores.",
+ "nav-builders-home-label": "Inicio para los constructores",
+ "nav-contribute-description": "Si quiere ayudar, esta guía le dirá cómo.",
+ "nav-contribute-label": "Colaborar con ethereum.org",
+ "nav-dao-description": "Comunidades con propiedad compartida por los miembros sin liderazgo centralizado.",
+ "nav-dapps-description": "Explore el rico ecosistema de aplicaciones que usan Ethereum",
+ "nav-defi-description": "Una alternativa abierta y global al tradicional mercado financiero",
+ "nav-desci-description": "Una alternativa global y abierta al sistema científico actual",
+ "nav-desoc-description": "Plataformas basadas en cadenas de bloques para interacción social y creación de contenido",
"nav-developers-docs": "Documentos para desarrolladores",
+ "nav-developers": "Desarrolladores",
+ "nav-did-description": "Cree y sea propietario de sus identificadores descentralizados propios",
+ "nav-docs-description": "Documentación de ayuda para entender y construir en Ethereum",
+ "nav-docs-design-description": "Descripción de los retos de diseño únicos de Web3, mejores prácticas y hallazgos de investigaciones de los usuarios",
+ "nav-docs-design-label": "Lo esencial del diseño de la UX/IU",
+ "nav-docs-foundation-description": "Los fundamentos para desarrollar en Ethereum",
+ "nav-docs-foundation-label": "Temas fundamentales",
+ "nav-docs-overview-description": "El sitio donde buscar documentación para desarrolladores",
+ "nav-docs-stack-description": "Entender todos los detalles de la pila Ethereum",
+ "nav-docs-stack-label": "Pila de Ethereum",
+ "nav-eip-description": "Estándares que especifican nuevas características o procesos",
+ "nav-eip-label": "EIP - Propuestas de mejora de Ethereum",
+ "nav-emerging-description": "Conozca otros nuevos casos de uso para Ethereum",
+ "nav-emerging-label": "Casos de uso emergentes",
+ "nav-enterprise-description": "Aplicaciones empresariales para Ethereum",
+ "nav-ethereum-org-description": "Este sitio web está orientado a la comunidad: únase y contribuya con él",
+ "nav-ethereum-wallets-description": "Una aplicación para interactuar con su cuenta Ethereum",
+ "nav-events-description": "Descentralización y libertad para que todos participen",
+ "nav-events-irl-description": "Cada mes se celebran grandes eventos Etheerum en persona y en línea",
+ "nav-events-label": "Comunidades y eventos",
+ "nav-events-online-description": "Cientos de miles de entusiastas de Ethereum producen estas comunidades en línea",
+ "nav-find-wallet-description": "Las carteras le permiten usar criptomonedas",
+ "nav-find-wallet-label": "Elija su cartera",
+ "nav-gas-fees-description": "Cómo se calcula la comisión por transacción de sus ETH",
+ "nav-gas-fees-label": "Tarifas de gas",
+ "nav-get-eth-description": "Necesita ether (ETH) para utilizar las aplicaciones de Ethereum",
+ "nav-get-started-description": "Sus primeros pasos para utilizar Ethereum",
+ "nav-governance-description": "El proceso implicado en la actualización del protocolo de Ethereum",
+ "nav-governance-label": "Gobernanza",
+ "nav-grants-description": "Una lista seleccionada por nuestra comunidad de proyectos que proporcionan programas de financiación mediante becas",
+ "nav-guide-create-account-description": "Cualquiera puede crearse una cuenta en Ethereum siempre que lo desee, de forma gratuita y con una aplicación de cartera",
+ "nav-guide-create-account-label": "Cómo crear una cuenta de Ethereum",
+ "nav-guide-revoke-access-description": "Interactúe con contratos inteligentes y aplicaciones en el ecosistema de Ethereum de forma segura",
+ "nav-guide-revoke-access-label": "Cómo revocar el acceso a contratos inteligentes",
+ "nav-guide-use-wallet-description": "Domine el funcionamiento de todas las funciones básicas de su cartera",
+ "nav-guide-use-wallet-label": "Cómo utilizar una cartera",
+ "nav-guides-description": "Guías prácticas paso a paso para ayudarle a empezar",
+ "nav-guides-label": "Guías prácticas",
+ "nav-history-description": "Una cronología de las actualizaciones y bifurcaciones principales",
+ "nav-history-label": "Historia técnica de Ethereum",
+ "nav-layer-2-description": "Transacciones más rápidas y baratas para Ethereum",
+ "nav-learn-by-coding-description": "Herramientas que le ayudan a experimentar con Ethereum",
+ "nav-local-env-description": "Elija y defina su pila de desarrollo en Ethereum",
+ "nav-mainnet-description": "Las aplicaciones de cadena de bloques para empresa se pueden construir en la red principal y pública de Ethereum",
+ "nav-nft-description": "Una forma de representar cualquier cosa única como un activo basado en Ethereum",
+ "nav-open-research-description": "Una de las principales bazas de Ethereum es su activa comunidad de investigación",
+ "nav-open-research-label": "Abrir investigación",
+ "nav-overview-description": "Recursos educativos de Ethereum",
+ "nav-overview-label": "Resumen",
+ "nav-participate-overview-description": "Resumen de cómo participar",
"nav-primary": "Principal",
- "nft-page": "Tókenes no fungibles (NFT)",
+ "nav-private-description": "Recursos para desarrolladores para la empresa privada Ethereum",
+ "nav-quizzes-description": "Descubra cómo de bien puede entender Ethereum y las criptomonedas",
+ "nav-quizzes-label": "Evalúe su conocimiento",
+ "nav-refi-description": "Un sistema económico alternativo basado en principios regenerativos",
+ "nav-research-description": "Procesos utilizados para mejorar Ethereum",
+ "nav-research-label": "Investigación y desarrollo",
+ "nav-roadmap-description": "El camino hacia una mayor escalabilidad, seguridad y sostenibilidad para Ethereum",
+ "nav-roadmap-future-description": "Reforzar Ethereum como una red descentralizada y sólida",
+ "nav-roadmap-future-label": "De cara al futuro",
+ "nav-roadmap-label": "Hoja de ruta",
+ "nav-roadmap-scaling-description": "Actualizaciones de red para reducir aún más los costes de transacciones y la velocidad",
+ "nav-roadmap-scaling-label": "Transacciones más baratas",
+ "nav-roadmap-security-description": "Asegurarse de que Etherum sigue resistiendo a todo tipo de ataques en el futuro",
+ "nav-roadmap-security-label": "Seguridad mejorada",
+ "nav-roadmap-ux-description": "El uso de Ethereum debe simplificarse",
+ "nav-roadmap-ux-label": "Mejor experiencia de usuario",
+ "nav-run-a-node-description": "Sea completamente autónomo mientras ayuda a proteger la red",
+ "nav-security-description": "Aprenda las mejores prácticas en el uso de criptomonedas",
+ "nav-smart-contracts-description": "Los bloques de construcción fundamentales del ecosistema Ethereum",
+ "nav-stablecoins-description": "Las monedas estables son los tókenes de Ethereum diseñados para mantenerse a un valor fijo",
+ "nav-stake-description": "Gane recompensas por proteger Ethereum",
+ "nav-stake-label": "Participar",
+ "nav-staking-home-description": "Una presentación de las distintas opciones de participación",
+ "nav-staking-home-label": "Inicio de participaciones",
+ "nav-staking-pool-description": "Participe y gane recompensas con cualquier cantidad de ETH al unirse a otros",
+ "nav-staking-pool-label": "Participación agrupada",
+ "nav-staking-saas-description": "Nodos de terceros gestionan la operación de su cliente validador",
+ "nav-staking-saas-label": "Participar con un servicio",
+ "nav-staking-solo-description": "Ejecute hardware doméstico y contribuya personalmente a la seguridad y a la descentralización de la red Ethereum.",
+ "nav-staking-solo-label": "Participación en solitario",
+ "nav-start-building-description": "Información útil para principiantes",
+ "nav-translation-program-description": "Una iniciativa de colaboración para traducir ethereum.org a todos los idiomas",
+ "nav-tutorials-description": "Lista seleccionada de tutoriales de la comunidad",
+ "nav-use-cases-description": "Descubra diferentes ideas de usos de Ethereum",
+ "nav-use-cases-label": "Casos de uso",
+ "nav-what-is-ether-description": "La moneda de las aplicaciones de Ethereum",
+ "nav-what-is-ethereum-description": "Entienda qué es lo que hace a Ethereum especial",
+ "nav-what-is-web3-label": "¿Qué es Web 3.0?",
+ "nav-what-is-web3-description": "Una alternativa a los monopolios centralizados que dictan las normas",
+ "nav-whitepaper-description": "El informe técnico original de Ethereum escrito por Vitalik Buterin en 2014",
+ "nav-zkp-description": "Una forma de demostrar la validez de una declaración sin tener que revelarla",
+ "nft-page": "NFT - Tókenes no fungibles",
"nfts": "NTF",
"no": "No",
"on-this-page": "En esta página",
@@ -154,6 +263,8 @@
"page-developers-aria-label": "Menú para desarrolladores",
"page-index-meta-title": "Inicio",
"page-last-updated": "Última actualización de la página",
+ "participate": "Participar",
+ "participate-menu": "Menú Participar",
"pbs": "Separación del creador de propuestas",
"pools": "Participación agrupada",
"privacy-policy": "Política de privacidad",
@@ -164,8 +275,10 @@
"refresh": "Actualice la página.",
"return-home": "volver a la página principal",
"roadmap": "Hoja de ruta de Ethereum",
+ "research": "Investigación",
+ "research-menu": "Menú Investigación",
"resources": "Recursos de traducción",
- "regenerative-finance": "Finanzas regerenativas (ReFi)",
+ "regenerative-finance": "ReFi - Finanzas regerenativas",
"run-a-node": "Ejecutar un nodo",
"rollup-component-website": "Sitio web",
"rollup-component-developer-docs": "Documentos para desarrolladores",
@@ -182,7 +295,7 @@
"single-slot-finality": "Finalidad de la ranura única",
"statelessness": "Sin estado",
"see-contributors": "Ver colaboradores",
- "set-up-local-env": "Configurar entorno local",
+ "set-up-local-env": "Crear un entorno local",
"sharding": "Fragmentación",
"show-all": "Mostrar todo",
"show-less": "Mostrar menos",
@@ -211,8 +324,10 @@
"try-using-search": "Utilice el buscador para encontrar lo que está buscando o",
"tutorials": "Tutoriales",
"up": "Subir",
+ "use": "Usar",
"use-ethereum": "Usar Ethereum",
"use-ethereum-menu": "Usar menú de Ethereum",
+ "use-menu": "Menú Usar",
"user-experience": "Experiencia de usuario",
"verkle-trees": "Árboles Verkle",
"wallets": "Carteras",
diff --git a/src/intl/es/page-dapps.json b/src/intl/es/page-dapps.json
index 05da20aaa59..731d920b46f 100644
--- a/src/intl/es/page-dapps.json
+++ b/src/intl/es/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "Cree, venda y compre coleccionables tokenizados.",
"page-dapps-dapp-description-rubic": "Agregador tecnológico de cadena cruzada para usuarios y DApps.",
"page-dapps-dapp-description-sablier": "Envíe dinero en tiempo real.",
- "page-dapps-dapp-description-skiff": "Correo electrónico, calendario, documentos y archivos cifrados de extremo a extremo que le dan el poder de comunicarse libremente.",
"page-dapps-dapp-description-spatial": "Cree su propio avatar y sus mundos 3D",
"page-dapps-dapp-description-spruce": "Apilar el código abierto para dejar el control de la identidad y los datos donde debería estar: con los usuarios.",
"page-dapps-dapp-description-status": "Diseñado para permitir el flujo libre de información, proteger el derecho a la privacidad, conversaciones seguras y promover la soberanía de los individuos.",
"page-dapps-dapp-description-superrare": "Compre obras de arte digitales directamente de artistas o en mercados secundarios.",
"page-dapps-dapp-description-synthetix": "Synthetix es un protocolo para emitir y comercializar activos sintéticos.",
"page-dapps-dapp-description-token-sets": "Estrategias de inversión criptográficas que se reequilibran automáticamente.",
- "page-dapps-dapp-description-tornado-cash": "Envíe transacciones anónimas en Ethereum.",
"page-dapps-dapp-description-uniswap": "Intercambie tókenes simplemente o proporcione tókenes por un porcentaje de recompensas.",
"page-dapps-dapp-description-xmtp": "Envíe mensajes entre cuentas de la cadena de bloques, incluyendo mensajes privados, alertas, anuncios y más.",
"page-dapps-dapp-description-yearn": "Yearn Finance es un agregador de rendimiento, que otorga a particulares, DAO y otros protocolos una forma de depositar activos financieros y recibir rendimiento.",
@@ -248,7 +246,6 @@
"page-dapps-set-up-a-wallet-button": "Encontrar cartera",
"page-dapps-set-up-a-wallet-description": "Una cartera es su inicio de sesión para una DApp",
"page-dapps-set-up-a-wallet-title": "Configurar una cartera",
- "page-dapps-skiff-logo-alt": "Logotipo de Skiff",
"page-dapps-social-button": "Social",
"page-dapps-social-description": "Estas son aplicaciones que se centran en crear redes sociales descentralizadas utilizando tecnologías de identidad también descentralizadas donde las identidades digitales y las huellas sociales son propiedad de los usuarios.",
"page-dapps-social-title": "Social",
@@ -260,7 +257,6 @@
"page-dapps-technology-description": "Estas son aplicaciones que se centran en descentralizar las herramientas de los desarrolladores, incorporar sistemas criptoeconómicos a la tecnología existente y crear mercados para el trabajo de desarrollo de código abierto.",
"page-dapps-technology-title": "Tecnología descentralizada",
"page-dapps-token-sets-logo-alt": "Logo de Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo de Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo de Uniswap",
"page-dapps-wallet-callout-button": "Encontrar cartera",
"page-dapps-wallet-callout-description": "Las carteras también son DApps. Encuentre una basada en las características que le convengan.",
diff --git a/src/intl/es/page-languages.json b/src/intl/es/page-languages.json
index 766f0a7d674..953fa7a037b 100644
--- a/src/intl/es/page-languages.json
+++ b/src/intl/es/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "¿Quiere ver ethereum.org en otro idioma?",
"page-languages-want-more-link": "Programa de traducción",
"page-languages-want-more-paragraph": "Los traductores de ethereum.org siempre traducen páginas a tantos idiomas como sea posible. Para ver en qué están trabajando ahora mismo o para registrarse y unirse a ellos, lea acerca de nuestro",
- "page-languages-filter-placeholder": "Filtrar",
+ "page-languages-filter-label": "Lista de filtros",
+ "page-languages-filter-placeholder": "Escriba el filtro",
+ "page-languages-browser-default": "Navegador por defecto",
+ "page-languages-translated": "traducido(s)",
+ "page-languages-words": "palabras",
+ "page-languages-recruit-community": "Ayúdenos a traducir ethereum.org.",
"langauge-am": "Amárico",
"language-ar": "Árabe",
"language-az": "Azerbaiyano",
diff --git a/src/intl/es/page-stablecoins.json b/src/intl/es/page-stablecoins.json
index 5fdcb3f220d..3a58ae6ef51 100644
--- a/src/intl/es/page-stablecoins.json
+++ b/src/intl/es/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Fuente",
"page-stablecoins-bitcoin-pizza": "La infame pizza de Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "En 2010, alguien compró 2 pizzas con 10.000 bitcoins. En ese momento equivalían a unos 41 dólares. En el mercado de hoy en día, valen millones de dólares. Hay varias transacciones similares lamentables en la historia de Ethereum. Las monedas estables resuelven este problema, así que puede disfrutar de la pizza y conservar sus ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Panel de control y educación",
"page-stablecoins-coin-price-change": "Cambio del precio de la moneda (últimos 30 días)",
"page-stablecoins-crypto-backed": "Respaldado por criptomonedas",
"page-stablecoins-crypto-backed-con-1": "Menos estable que las monedas estables respaldadas por dinero fiduciario.",
diff --git a/src/intl/fa/common.json b/src/intl/fa/common.json
index b6a1f944d1f..cda3cd041cc 100644
--- a/src/intl/fa/common.json
+++ b/src/intl/fa/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "انتزاع حساب",
"about-ethereum-org": "درباره ethereum.org",
"about-us": "درباره ما",
+ "adding-desci-projects": "افزودن پروژههای Desci",
+ "adding-developer-tools": "افزودن ابزارهای توسعهدهنده",
+ "adding-exchanges": "افزودن صرافیها",
+ "adding-glossary-terms": "افزودن عبارات واژهنامه",
+ "adding-staking-products": "افزودن پروژههای سهامگذاری",
+ "adding-wallets": "افزودن کیف پول",
+ "account-abstraction": "تفکیک حساب",
+ "acknowledgements": "تقدیرات",
"aria-toggle-search-button": "تغییر وضعیت دکمه جستجو",
"aria-toggle-menu-button": "تغییر وضعیت دکمه منو",
- "beacon-chain": "زنجیره بیکن",
- "bridges": "پلهای زنجیرهی بلوکی",
+ "beacon-chain": "زنجیرهی بیکن",
+ "bridges": "پلهای بلاکچین",
+ "bug-bounty": "پاداش برای باگ",
+ "build": "ساخت",
+ "build-menu": "منوی ساخت",
"clear": "پاککردن",
"close": "بستن",
- "community": "جامعه",
- "community-hub": "مرکز اجتماع",
+ "community": "اجتماع",
+ "community-hub": "دورهمی جامعه",
"community-menu": "منوی جامعه",
"contact": "تماس",
+ "content-buckets": "دستههای محتوا",
+ "content-resources": "منابع محتوا",
"content-standardization": "استانداردسازی محتوا",
"contributing": "مشارکت",
"contributors": "مشارکت کنندگان",
@@ -19,17 +31,20 @@
"cookie-policy": "سیاست کوکیها",
"copied": "کپی شد",
"copy": "کپی",
- "danksharding": "Danksharding",
- "dao-page": "سازمانهای مستقل غیر متمرکز (DAOs)",
+ "danksharding": "دانکشاردینگ",
+ "dao-page": "DAOها - سازمانهای خودمختار غیرمتمرکز",
"dark-mode": "تاریک",
"data-provided-by": "منبع دادهها:",
- "decentralized-applications-dapps": "برنامههای کاربردی غیر متمرکز (dapps)",
- "decentralized-identity": "هویت نامتمرکز",
- "decentralized-social-networks": "شبکههای مجازی نامتمرکز",
- "decentralized-science": "دانش نامتمرکز (دیسای)",
- "defi-page": "امور مالی غیر متمرکز (DeFi)",
+ "decentralized-applications-dapps": "Dapps - برنامههای کاربردی غیر متمرکز",
+ "decentralized-identity": "هویت غیرمتمرکز",
+ "decentralized-social-networks": "شبکه های اجتماعی غیر متمرکز",
+ "decentralized-science": "دیسای - دانش نامتمرکز",
+ "description": "توضیحات برای آیتم پیمایش",
+ "defi-page": "DeFi - امور مالی غیر متمرکز",
+ "design": "طراحی",
+ "design-principles": "اصول طراحی",
"devcon": "دِوکان",
- "developers": "توسعه دهندگان",
+ "developers": "توسعهدهندگان",
"developers-home": "خانه توسعه دهندگان",
"docs": "اسناد",
"docsearch-to-select": "برای انتخاب",
@@ -37,7 +52,7 @@
"docsearch-to-close": "مسدود کردن",
"docsearch-search-by": "جست و جو بر اساس",
"docsearch-start-recent-searches-title": "موارد اخیر",
- "docsearch-start-no-recent-searches": "به تازگی جست و جویی نکردهاید",
+ "docsearch-start-no-recent-searches": "به تازگی جست و جویی نکرده اید",
"docsearch-start-save-recent-search": "ذخیره این جستجو",
"docsearch-start-remove-recent-search": "حذف کردن این جست و جو از تاریخچه",
"docsearch-start-favorite-searches": "علاقه مندی ها",
@@ -63,7 +78,7 @@
"ethereum-bug-bounty": "برنامه پاداش باگ اتریوم",
"consensus-when-shipping": "چه زمانی راهاندازی میشود؟",
"ethereum-upgrades": "ارتقاهای اتریوم",
- "ethereum-brand-assets": "داراییهای نام تجاری اتریوم",
+ "ethereum-brand-assets": "داراییهای \"برند\" اتریوم",
"ethereum-online": "جوامع آنلاین",
"ethereum-events": "رویدادهای اتریوم",
"ethereum-foundation": "بنیاد اتریوم",
@@ -75,7 +90,7 @@
"ethereum-protocol": "پروتکل اتریوم",
"ethereum-security": "امنیت اتریوم و جلوگیری از کلاهبرداری",
"ethereum-support": "پشتیبانی اتریوم",
- "ethereum-wallets": "کیف پول های اتریوم",
+ "ethereum-wallets": "کیفهای پول اتریوم",
"ethereum-whitepaper": "برگه سفید اتریوم",
"feedback-widget-prompt": "آیا این صفحه مفید است؟",
"feedback-card-prompt-page": "آیا این برگه مفید بود؟",
@@ -86,19 +101,19 @@
"feedback-widget-thank-you-subtitle-ext": "اگر به کمک نیاز دارید، میتوانید از طریق دیسکورد ما با انجمن در تماس باشید.",
"feedback-widget-thank-you-timing": "2-3 دقیقه",
"feedback-widget-thank-you-cta": "باز کردن نظرسنجی کوتاه",
- "find-wallet": "یافتن کیف پول",
+ "find-wallet": "کیف پول را پیدا کنید",
"future-proofing": "تضمین آینده",
- "get-eth": "دریافت اتریوم",
+ "get-eth": "دریافت اتر",
"get-involved": "مشارکت کنید",
"get-started": "شروع کنید",
"grants": "کمکهای بلاعوض",
"grant-programs": "برنامههای اعطای اکوسیستم",
"guides": "راهنماییها",
- "guides-hub": "مرکز راهنماییها",
+ "guides-hub": "راهنماها",
"history-of-ethereum": "تاریخچه اتریوم",
"home": "خانه",
"how-ethereum-works": "اتریوم چگونه کار می کند",
- "how-to-register-an-ethereum-account": "چگونگی «ساخت» یک حساب اتریوم",
+ "how-to-create-an-ethereum-account": "چگونگی «ساخت» یک حساب اتریوم",
"how-to-revoke-token-access": "چطور میتوانید دسترسی قرارداد هوشمند را به رمزارزهای خود ممنوع کنید",
"how-to-swap-tokens": "چگونگی مبادله توکنها",
"how-to-use-a-bridge": "چگونه توکنها را به لایه 2 انتقال دهیم",
@@ -128,11 +143,115 @@
"loading-error-try-again-later": "امکان بارگذاری دادهها وجود ندارد. لطفا بعدا دوباره تلاش کنید.",
"logo": "لوگو",
"mainnet-ethereum": "شبکه اصلی اتریوم",
+ "merge": "ادغام",
"more": "بیشتر",
- "nav-developers": "توسعهدهندگان",
+ "nav-about-description": "یک پروژه عمومی و منبعباز برای جامعه اتریوم",
+ "nav-advanced-description": "موضوعات پیچیدهتر را بیاموزید",
+ "nav-advanced-label": "پیشرفته",
+ "nav-basics-description": "اصول اتریوم را بشناسید",
+ "nav-basics-label": "اصول اولیه",
+ "nav-bridges-description": "Web3 به اکوسیستمی از بلاکچینهای L1 اولیه و راهکارهای مقیاسپذیری L2 تکامل یافته است",
+ "nav-builders-home-description": "کتابچه راهنمای سازنده برای اتریوم—توسط سازندگان، برای سازندگان",
+ "nav-builders-home-label": "خانه سازنده",
+ "nav-contribute-description": "اگر میخواهید کمک کنید، این شما را راهنمایی میکند",
+ "nav-contribute-label": "مشارکت در ethereum.org",
+ "nav-dao-description": "جوامع تحت مالکیت اعضا بدون مرجع متمرکز",
+ "nav-dapps-description": "با استفاده از اتریوم، در اکوسیستمی غنی از برنامهها کاوش کنید",
+ "nav-defi-description": "یک جایگزین جهانی و باز برای بازار مالی سنتی",
+ "nav-desci-description": "یک جایگزین جهانی و باز برای سیستم علمی فعلی",
+ "nav-desoc-description": "پلتفرمهای مبتنی بر بلاکچین برای تعامل اجتماعی و تولید محتوا",
"nav-developers-docs": "اسناد توسعهدهندگان",
+ "nav-developers": "توسعهدهندگان",
+ "nav-did-description": "شناسههای غیرمتمرکز منحصربهفرد خود را صادر کرده و مالک آن شوید",
+ "nav-docs-description": "اسنادی برای کمک به شما بهمنظور درک و ساخت با اتریوم",
+ "nav-docs-design-description": "شرح چالشهای منحصربهفرد طراحی web3، بهترین رویهها، و آمار تحقیقاتی کاربر",
+ "nav-docs-design-label": "اصول طراحی UX/UI",
+ "nav-docs-foundation-description": "اصول اساسی برای توسعه در اتریوم",
+ "nav-docs-foundation-label": "موضوعات بنیادی",
+ "nav-docs-overview-description": "خانه شما برای اسناد توسعهدهنده",
+ "nav-docs-stack-description": "از تمام جزئیات سهام اتریوم آگاه شوید",
+ "nav-docs-stack-label": "سهام اتریوم",
+ "nav-eip-description": "استانداردهایی که ویژگیها یا فرآیندهای جدید را مشخص میکنند",
+ "nav-eip-label": "EIPs - پیشنهادهای بهبود اتریوم",
+ "nav-emerging-description": "سایر موارد کاربردهای جدیدتر برای اتریوم را بشناسید",
+ "nav-emerging-label": "موارد کاربرد در حال ظهور",
+ "nav-enterprise-description": "کاربردهای تجاری برای اتریوم",
+ "nav-ethereum-org-description": "این وبسایت از نوع جامعهمحور است—به ما بپیوندید و شما نیز مشارکت کنید",
+ "nav-ethereum-wallets-description": "برنامهای برای تعامل با حساب اتریوم شما",
+ "nav-events-description": "تمرکززدایی و آزادی مشارکت برای همگان",
+ "nav-events-irl-description": "هر ماه رویدادهای مهم اتریوم بهصورت حضوری و آنلاین برگزار میشود",
+ "nav-events-label": "جوامع و رویدادها",
+ "nav-events-online-description": "صدها هزار نفر از علاقهمندان به اتریوم در این جوامع آنلاین پیشگام میشوند",
+ "nav-find-wallet-description": "کیفهای پول به شما امکان استفاده از رمزارز را میدهند",
+ "nav-find-wallet-label": "کیف پول خود را انتخاب کنید",
+ "nav-gas-fees-description": "کارمزدهای تراکنش ETH چگونه محاسبه میشوند",
+ "nav-get-eth-description": "برای استفاده از برنامههای اتریوم به اتر (ETH) نیاز دارید",
+ "nav-get-started-description": "اولین قدمهای شما برای استفاده از اتریوم",
+ "nav-governance-description": "فرآیند دخیل در ارتقای پروتکل اتریوم",
+ "nav-governance-label": "حکومت",
+ "nav-grants-description": "فهرستی تنظیمشده توسط جامعه ما در مورد پروژههایی که برنامههای تأمین مالی را ارائه میکنند",
+ "nav-guide-create-account-description": "هر کسی میتواند در هر زمانی که بخواهد، بهصورت رایگان با یک برنامه کیف پول، یک حساب اتریوم ایجاد کند",
+ "nav-guide-create-account-label": "چگونگی «ساخت» یک حساب اتریوم",
+ "nav-guide-revoke-access-description": "هنگام تعامل با قراردادهای هوشمند و برنامههای کاربردی در اکوسیستم اتریوم همواره در امان باشید",
+ "nav-guide-revoke-access-label": "نحوه لغو دسترسی قرارداد هوشمند",
+ "nav-guide-use-wallet-description": "یاد بگیرید چگونه با تمام عملکردهای اساسی یک کیف پول کار کنید",
+ "nav-guide-use-wallet-label": "چگونگی استفاده از کیفپول",
+ "nav-guides-description": "راهنماهای عملی گامبهگام برای کمک به شما در شروع کار",
+ "nav-guides-label": "نحوه دسترسی به راهنماییها",
+ "nav-history-description": "خط زمانی تمام دستهبندیها و بهروزرسانیهای اصلی",
+ "nav-history-label": "تاریخچه فنی اتریوم",
+ "nav-layer-2-description": "تراکنشهای ارزانتر و سریعتر برای اتریوم",
+ "nav-learn-by-coding-description": "ابزارهایی که به شما کمک میکنند با اتریوم آزمایش کنید",
+ "nav-local-env-description": "سهام توسعه اتریوم خود را انتخاب و راهاندازی کنید",
+ "nav-mainnet-description": "برنامههای بلاکچین سازمانی را میتوان بر روی شبکه اصلی عمومی اتریوم ایجاد کرد",
+ "nav-nft-description": "راهی برای نمایش دادن هر چیز بیهمتا بهعنوان یک دارایی مبتنی بر اتریوم",
+ "nav-open-research-description": "یکی از نقاط قوت اولیه اتریوم جامعه تحقیقاتی فعال آن است",
+ "nav-open-research-label": "پژوهش باز",
+ "nav-overview-description": "آموزش همهجانبه درباره اتریوم",
+ "nav-overview-label": "نگاه اجمالی",
+ "nav-participate-overview-description": "مروری بر نحوه مشارکت",
"nav-primary": "اولیه",
- "nft-page": "توکنهای معاوضهناپذیر (NFT)",
+ "nav-private-description": "منابع توسعه دهندگان برای تشکیلات سازمانی اتریوم",
+ "nav-quizzes-description": "دریابید که چقدر از اتریوم و رمزارزها آگاه هستید",
+ "nav-quizzes-label": "دانش خود را بسنجید",
+ "nav-refi-description": "یک سیستم اقتصادی جایگزین مبتنی بر اصول بازتولیدکننده",
+ "nav-research-description": "فرآیندهای مورد استفاده برای بهبود اتریوم",
+ "nav-research-label": "تحقیق و توسعه",
+ "nav-roadmap-description": "مسیری به سمت افزایش مقیاسپذیری، امنیت و پایداری اتریوم",
+ "nav-roadmap-future-description": "تثبیت اتریوم بهعنوان یک شبکه قوی و غیرمتمرکز",
+ "nav-roadmap-future-label": "تضمین آینده",
+ "nav-roadmap-label": "نقشهی راه",
+ "nav-roadmap-scaling-description": "بهروزرسانیهای شبکه برای کاهش بیشتر هزینهها و سرعت تراکنش",
+ "nav-roadmap-scaling-label": "تراکنشهای ارزانتر",
+ "nav-roadmap-security-description": "اطمینان از اینکه اتریوم در برابر انواع حملات در آینده مقاوم میماند",
+ "nav-roadmap-security-label": "بهبود امنیت",
+ "nav-roadmap-ux-description": "استفاده از اتریوم باید ساده شود",
+ "nav-run-a-node-description": "درعینحال که به امنیت شبکه کمک میکنید، حاکمیت کامل را به دست آورید",
+ "nav-security-description": "بهترین رویهها را در هنگام استفاده از رمزارز بیاموزید",
+ "nav-smart-contracts-description": "عناصر سازنده اساسی اکوسیستم اتریوم",
+ "nav-stablecoins-description": "استیبل کوینها توکنهای اتریوم هستند که به گونهای طراحی شدهاند که مقدارشان ثابت میماند",
+ "nav-stake-description": "در ازای ایمنسازی اتریوم، پاداش کسب کنید",
+ "nav-stake-label": "سهامگذاری",
+ "nav-staking-home-description": "مروری بر گزینههای مختلف برای سهامگذاری",
+ "nav-staking-home-label": "صفحه اصلی سهامگذاری",
+ "nav-staking-pool-description": "از طریق پیوستن به دیگران، هر چقدر ETH که میخواهید سهامگذاری کنید و پاداش کسب کنید",
+ "nav-staking-pool-label": "سهامگذاری گروهی",
+ "nav-staking-saas-description": "عملگرهای گره شخص ثالث، عملیات کلاینت اعتبارسنج شما را مدیریت میکنند",
+ "nav-staking-saas-label": "سهامگذاری با یک خدمت",
+ "nav-staking-solo-description": "سختافزار خانگی را اجرا کنید و شخصاً امنیت و تمرکززدایی شبکه اتریوم را بیشتر کنید",
+ "nav-staking-solo-label": "سهام گذاری انفرادی",
+ "nav-start-building-description": "اطلاعات مفید برای تازهواردان",
+ "nav-translation-program-description": "تلاش جمعی برای ترجمه ethereum.org به همه زبانها",
+ "nav-tutorials-description": "لیست تهیهشده از آموزشهای انجمن",
+ "nav-use-cases-description": "ایدههای مختلف برای استفاده از اتریوم را کشف کنید",
+ "nav-use-cases-label": "موارد استفاده",
+ "nav-what-is-ether-description": "واحد پول برنامههای کاربردی اتریوم",
+ "nav-what-is-ethereum-description": "با ویژگی متمایز اتریوم آشنا شوید",
+ "nav-what-is-web3-label": "Web3 چیست؟",
+ "nav-what-is-web3-description": "جایگزینی برای انحصارهای متمرکز که قوانین را تحمیل میکنند",
+ "nav-whitepaper-description": "وایتپیپر اصلی اتریوم که توسط ویتالیک بوترین در سال 2014 نوشته شده است",
+ "nav-zkp-description": "روشی برای اثبات اعتبار یک گزاره بدون افشای خودِ گزاره",
+ "nft-page": "NFT - توکنهای معاوضهناپذیر",
"nfts": "توکنهای معاوضهناپذیر",
"no": "خیر",
"on-this-page": "در این صفحه",
@@ -140,6 +259,8 @@
"page-developers-aria-label": "منوی توسعهدهندهها",
"page-index-meta-title": "خانه",
"page-last-updated": "آخرین بروزرسانی صفحه",
+ "participate": "مشارکت کنید",
+ "participate-menu": "منوی مشارکت",
"pbs": "جداسازی سازنده-پیشنهاددهنده",
"pools": "سهامگذاری گروهی",
"privacy-policy": "سیاست حریم خصوصی",
@@ -150,10 +271,12 @@
"refresh": "لطفا صفحه را دوباره باز کنید.",
"return-home": "بازگشت به صفحه اصلی",
"roadmap": "نقشه راه اتریوم",
+ "research": "پژوهش",
+ "research-menu": "منوی پژوهش",
"resources": "منابع ترجمه",
- "regenerative-finance": "امور مالی بازتولیدکننده (ReFi)",
+ "regenerative-finance": "ReFi - امور مالی بازتولیدکننده",
"run-a-node": "راهاندازی یک گره",
- "rollup-component-website": "وبسایت",
+ "rollup-component-website": "وب سایت",
"rollup-component-developer-docs": "اسناد توسعهدهندگان",
"rollup-component-technology-and-risk-summary": "خلاصه فناوری و ریسک",
"scaling": "مقیاسپذیری",
@@ -164,23 +287,24 @@
"search-box-blank-state-text": "جستجو کنید!",
"search-eth-address": "این شبیه به یک آدرس اتریوم است. ما اطلاعات دقیقی درباره آدرسها ارائه نمیکنیم. به دنبال یک جستجوگر بلاک برای این کار بگردید مثل",
"search-no-results": "موردی برای جستجویتان یافت نشد",
+ "security": "ایمنی",
"single-slot-finality": "قطعیت تک جایگاهی",
"statelessness": "بیوضعیتی",
"see-contributors": "مشاهده مشارکت کنندگان",
"set-up-local-env": "تنظیم محیط محلی",
- "sharding": "خرد کردن",
+ "sharding": "زنجیره ای سازی",
"show-all": "نمایش همه",
"show-less": "نمایش کمتر",
"site-description": "اتریوم یک پلتفرم جهانی و غیرمتمرکز برای پول و انواع جدیدی از کاربردها است. در اتریوم میتوانید کدی بنویسید که بتواند پول را کنترل کند، و برنامههایی بسازید که در هر جای دنیا قابل دسترسی باشند.",
- "site-title": "ethereum.org",
"skip-to-main-content": "پرش به محتوای اصلی",
"smart-contracts": "قراردادهای هوشمند",
- "stablecoins": "ارز دیجیتال باثبات",
+ "stablecoins": "استیبل کوینها",
"stake-eth": "اتر را سهام گذاری کنید",
"staking": "سهام گذاری",
"start-here": "از اینجا شروع کنید",
"style-guide": "راهنمای سبک",
"solo": "سهام گذاری انفرادی",
+ "support": "پشتیبانی",
"terms-of-use": "شرایط استفاده",
"translation-banner-body-new": "شما این صفحه را به زبان انگلیسی میبینید زیرا ما هنوز آن را ترجمه نکردهایم. برای ترجمه این محتوا به ما کمک کنید.",
"translation-banner-body-update": "نسخه جدیدی از این صفحه موجود است اما در حال حاضر فقط به زبان انگلیسی است. در ترجمه آخرین نسخه به ما کمک کنید.",
@@ -191,19 +315,22 @@
"translation-banner-no-bugs-title": "اینجا هیچ اشکالی وجود ندارد!",
"translation-banner-no-bugs-content": "این صفحه هنوز ترجمه نشده است. ما فعلا این صفحه را عمدا به زبان انگلیسی رها کردهایم.",
"translation-banner-no-bugs-dont-show-again": "دیگر نمایش نده",
+ "translation-program": "برنامه ترجمه",
"try-using-search": "سعی کنید از جستجو برای پیدا کردن آنچه به دنبال آن هستید استفاده کنید یا",
"tutorials": "آموزشها",
"up": "بالا",
+ "use": "استفاده",
"use-ethereum": "از اتریوم استفاده کنید",
"use-ethereum-menu": "از منوی اتریوم استفاده کنید",
+ "use-menu": "منوی استفاده",
"user-experience": "تجربهی کاربری",
"verkle-trees": "درختان ورکل",
- "wallets": "کیف پولها",
+ "wallets": "کیفپولها",
"we-couldnt-find-that-page": "ما نتوانستیم آن صفحه را پیدا کنیم",
"web3": "Web3 چیست؟",
"web3-title": "Web3",
"website-last-updated": "آخرین بروزرسانی وبسایت",
- "what-is-ether": "اتریوم (ETH) چیست؟",
+ "what-is-ether": "اتر (ETH) چیست؟",
"what-is-ethereum": "اتریوم چیست؟",
"withdrawals": "برداشتها از سهامگذاری",
"yes": "بله",
diff --git a/src/intl/fa/page-dapps.json b/src/intl/fa/page-dapps.json
index a47a98255b2..8e50e7b9ba3 100644
--- a/src/intl/fa/page-dapps.json
+++ b/src/intl/fa/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "درآمد تولید محتوای رسانهای در آن واحد.",
"page-dapps-dapp-description-superrare": "کارهای هنری دیجیتالی را مستقیماً از هنرمندان یا بازارهای ثانویه خریداری کنید.",
"page-dapps-dapp-description-token-sets": "راهبردهای سرمایهگذاری بر ارز دیجیتال که بهصورت خودکار تعادل خود را بازیافته است.",
- "page-dapps-dapp-description-tornado-cash": "معاملات ناشناس را بر بستر اتریوم انجام دهید.",
"page-dapps-dapp-description-uniswap": "توکنها را بهسادگی تعویض کنید یا با درصدی بهعنوان پاداش، توکن فراهم کنید.",
"page-dapps-dapp-description-dexguru": "ترمینال معاملاتی غیرحضانتی برای تریدرهای دیفای",
"page-dapps-dapp-description-synthetix": "سینتتیکس (Synthetix) یک پروتکل برای ضرب و مبادله دارایی های مصنوعی است",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "اینها برنامههای کاربردیای هستند که تمرکزشان بر روی غیرمتمرکزسازی ابزارهای توسعهدهنده است و نظام اقتصادی رمزارز را با فناوری موجود تلفیق میکنند و بازاری برای کار توسعه با منبع آزاد ایجاد میکنند.",
"page-dapps-technology-title": "فناوری نامتمرکز",
"page-dapps-token-sets-logo-alt": "لوگوی مجموعههای توکنی",
- "page-dapps-tornado-cash-logo-alt": "لوگوی پول تورنادو",
"page-dapps-uniswap-logo-alt": "لوگوی Uniswap",
"page-dapps-wallet-callout-button": "یافتن کیف پول",
"page-dapps-wallet-callout-description": "کیف پولها هم جزء دپها هستند. یکی از آنها را که مناسب شما هستند انتخاب کنید.",
diff --git a/src/intl/fa/page-languages.json b/src/intl/fa/page-languages.json
index d4b9ea65d54..e4190ba0c04 100644
--- a/src/intl/fa/page-languages.json
+++ b/src/intl/fa/page-languages.json
@@ -11,11 +11,18 @@
"page-languages-want-more-header": "آیا میخواهید ethereum.org را به زبان دیگری ببینید؟",
"page-languages-want-more-link": "برنامه ترجمه",
"page-languages-want-more-paragraph": "مترجمان ethereum.org همیشه در حال ترجمه صفحات به بیشترین زبان ممکن هستند. برای اینکه ببینید در حال حاضر درحال انجام چهکاری هستند در مورد ما بخوانید",
- "page-languages-filter-placeholder": "فیلتر",
+ "page-languages-filter-label": "فیلتر کردن لیست",
+ "page-languages-filter-placeholder": "برای فیلتر کردن، تایپ کنید",
+ "page-languages-browser-default": "پیشفرض مرورگر",
+ "page-languages-translated": "ترجمهشده",
+ "page-languages-words": "کلمات",
+ "page-languages-recruit-community": "به ما در ترجمه ethereum.org کمک کنید.",
"language-ar": "عربی",
"language-az": "آذربایجانی",
+ "langauge-be": "بلاروسی",
"language-bg": "بلغارستانی",
"language-bn": "بنگالی",
+ "language-bs": "بوسنی",
"language-ca": "كاتالانی",
"language-cs": "چک",
"language-da": "دانمارکی",
@@ -32,6 +39,7 @@
"language-hi": "هندی",
"language-hr": "کرواتی",
"language-hu": "مجارستانی",
+ "language-hy-am": "امریکایی",
"language-id": "اندونزیایی",
"language-ig": "ایگبو",
"language-it": "ایتالیایی",
@@ -39,12 +47,14 @@
"language-ka": "گرجستانی",
"language-kk": "قزاق",
"language-km": "خمری",
+ "language-kn": "کانادا",
"language-ko": "کرهای",
"language-lt": "لیتوانیایی",
"language-ml": "مالايالام",
"language-mr": "مراتی",
"language-ms": "مالزیایی",
"language-nb": "نروژی",
+ "language-ne-np": "اسپانیایی پاناما",
"language-nl": "هلندی",
"language-pcm": "پیجین نیجریه",
"language-fil": "فیلیپینی",
@@ -58,8 +68,9 @@
"language-sl": "اسلونیایی",
"language-sr": "صربی",
"language-sw": "سواحیلی",
- "language-th": "تایلندی",
"language-ta": "تامیلی",
+ "language-th": "تایلندی",
+ "language-tk": "ترکمن",
"language-tr": "ترکی استانبولی",
"language-uk": "اوکراینی",
"language-ur": "اردو",
diff --git a/src/intl/fa/page-stablecoins.json b/src/intl/fa/page-stablecoins.json
index 4a2efbe42da..eb9471a72ec 100644
--- a/src/intl/fa/page-stablecoins.json
+++ b/src/intl/fa/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "منبع",
"page-stablecoins-bitcoin-pizza": "پیتزای بدنام بیتکوینی",
"page-stablecoins-bitcoin-pizza-body": "در سال 2010، یک نفر 2 پیتزا را به ارزش 10 هزار بیت کوین خریداری کرد. در آن زمان، ارزش آنها 41 دلار امریکا بود. در بازار امروز، ارزش آنها میلیونها دلار است. تراکنشهای بسیار زیاد مشابه و پشیمانکنندهای در تاریخچه اتریوم وجود دارد. پایدارزها این مشکل را حل کردهاند، بنابراین شما میتوانید از پیتزای خود لذت ببرید و اتریوم خود را نگه دارید.",
+ "page-stablecoins-category-dashboard-and-education": "داشبورد و آموزش",
"page-stablecoins-coin-price-change": "تغییر قیمت ارز (30 روز گذشته)",
"page-stablecoins-crypto-backed": "پشتیبانی رمزارز",
"page-stablecoins-crypto-backed-con-1": "پایداری کمتر از استیبل کوینها با پشتوانه مالی فیات.",
diff --git a/src/intl/fi/common.json b/src/intl/fi/common.json
index 1541f45340a..ce4e25c185d 100644
--- a/src/intl/fi/common.json
+++ b/src/intl/fi/common.json
@@ -1,28 +1,70 @@
{
"about-ethereum-org": "Lue ethereum.org:sta",
"about-us": "Lue meistä",
+ "adding-desci-projects": "DeSci-projektien lisääminen",
+ "adding-developer-tools": "Kehittäjätyökalujen lisääminen",
+ "adding-exchanges": "Vaihtopörssien lisääminen",
+ "adding-glossary-terms": "Sanastotermien lisääminen",
+ "adding-staking-products": "Panostamistuotteiden lisääminen",
+ "adding-wallets": "Lompakoiden lisääminen",
+ "account-abstraction": "Tilien erotteleminen",
+ "acknowledgements": "Kiitokset",
"aria-toggle-search-button": "Paina hakupainiketta",
"aria-toggle-menu-button": "Paina valikkopainiketta",
"beacon-chain": "Beaconketju",
"bridges": "Lohkoketjusillat",
+ "bug-bounty": "Löytöpalkkio bugeista",
+ "build": "Rakenna",
+ "build-menu": "Rakennusvalikko",
+ "clear": "Tyhjennä",
+ "close": "Sulje",
"community": "Yhteisö",
"community-hub": "Yhteisökeskus",
"community-menu": "Yhteisövalikko",
"contact": "Ota yhteyttä",
+ "content-buckets": "Sisältösangot",
+ "content-resources": "Sisältöresurssit",
+ "content-standardization": "Sisällön standardisointi",
"contributing": "Osallistu projektiin",
"contributors": "Avustajat",
"contributors-thanks": "Kaikki, jotka ovat myötävaikuttaneet tähän sivuun – kiitos!",
"cookie-policy": "Evästekäytäntö",
"copied": "Kopioitu",
"copy": "Kopio",
+ "danksharding": "Danksharding",
+ "dao-page": "DAO:t - Hajautetut autonomiset organisaatiot",
"dark-mode": "Tumma",
"data-provided-by": "Tietolähde:",
- "decentralized-applications-dapps": "Hajautetut sovellukset (dapps)",
+ "decentralized-applications-dapps": "Dapps - Hajautetut sovellukset",
+ "decentralized-identity": "Hajautettu identiteetti",
+ "decentralized-social-networks": "Hajautettu sosiaalinen verkosto",
+ "decentralized-science": "DeSci - Hajautettu tiede",
+ "description": "Navigointinimikkeen kuvaus",
+ "defi-page": "DeFi - Hajautettu rahoitus",
+ "design": "Suunnittelu",
+ "design-principles": "Suunnitteluperiaatteet",
"devcon": "Devcon",
"developers": "Kehittäjät",
"developers-home": "Kehittäjien etusivu",
"docs": "Dokumentit",
+ "docsearch-to-select": "Valitaksesi",
+ "docsearch-to-navigate": "Navigoidaksesi",
+ "docsearch-to-close": "Sulkeaksesi",
+ "docsearch-search-by": "Hakuperuste",
+ "docsearch-start-recent-searches-title": "Uusimmat",
+ "docsearch-start-no-recent-searches": "Ei viimeaikaisia hakuja",
+ "docsearch-start-save-recent-search": "Tallenna tämä haku",
+ "docsearch-start-remove-recent-search": "Poista tämä haku historiasta",
+ "docsearch-start-favorite-searches": "Suosikki",
+ "docsearch-start-remove-favorite-search": "Poista tämä haku suosikeista",
+ "docsearch-no-results-text": "Ei tuloksia kohteelle",
+ "docsearch-no-results-suggested-query": "Yritä etsiä",
+ "docsearch-no-results-missing": "Pitäisikö tämän kyselyn antaa tuloksia?",
+ "docsearch-no-results-missing-link": "Kerro meille.",
+ "docsearch-error-title": "Ei voitu hakea tuloksia",
+ "docsearch-error-help": "Tarkista verkkoyhteytesi.",
"documentation": "Dokumentaatio",
+ "down": "Alas",
"ecosystem": "Ekosysteemi",
"edit-page": "Muokkaa sivua",
"ef-blog": "Ethereum Foundation -säätiön blogi",
@@ -32,9 +74,10 @@
"enterprise-menu": "Yritysvalikko",
"esp": "Ekosysteemin tukiohjelma",
"eth-current-price": "Nykyinen ETH-kauppahinta (USD)",
+ "ethereum-basics": "Ethereumin perusteet",
+ "ethereum-bug-bounty": "Ethereumin virhepalkkiojärjestelmä",
"consensus-when-shipping": "Milloin se julkaistaan?",
"ethereum-upgrades": "Ethereumin päivitykset",
- "ethereum-brand-assets": "Ethereum-mediapankki",
"ethereum-online": "Verkkoyhteisöt",
"ethereum-events": "Ethereum-tapahtumat",
"ethereum-foundation": "Ethereum Foundation -säätiö",
@@ -42,20 +85,37 @@
"ethereum-glossary": "Ethereum-sanasto",
"ethereum-governance": "Ethereumin hallinnointi",
"ethereum-logo": "Ethereum-logo",
+ "ethereum-roadmap": "Ethereum-tiekartta",
+ "ethereum-protocol": "Ethereum-protokolla",
"ethereum-security": "Ethereumin turvallisuus ja huijausten ehkäisy",
"ethereum-support": "Ethereum-tuki",
"ethereum-wallets": "Ethereum-lompakot",
"ethereum-whitepaper": "Ethereum-tietopaketti",
- "find-wallet": "Etsi lompakko",
- "get-eth": "Hanki ETH:ta",
+ "feedback-widget-prompt": "Onko tämä sivu hyödyllinen?",
+ "feedback-card-prompt-page": "Oliko tämä sivu hyödyllinen?",
+ "feedback-card-prompt-article": "Oliko tämä artikkeli hyödyllinen?",
+ "feedback-card-prompt-tutorial": "Oliko tästä ohjeesta hyötyä?",
+ "feedback-widget-thank-you-title": "Kiitos palautteestasi!",
+ "feedback-widget-thank-you-subtitle": "Tee tästä sivusta vieläkin parempi vastaamalla muutamaan kysymykseen.",
+ "feedback-widget-thank-you-subtitle-ext": "Ota yhteyttä Discord-yhteisöömme, jos tarvitset apua.",
+ "feedback-widget-thank-you-timing": "2–3 minuuttia",
+ "feedback-widget-thank-you-cta": "Avaa lyhyt kysely",
+ "find-wallet": "Valitse lompakko",
+ "future-proofing": "Tulevaisuusvarmentaminen",
+ "get-eth": "Hanki Ethereitä",
"get-involved": "Tule mukaan",
- "get-started": "Aloittaminen",
+ "get-started": "Näin pääset alkuun",
"grants": "Avustukset",
"grant-programs": "Ekosysteemin avustusohjelmat",
- "guides-and-resources": "Yhteisön ohjeet ja resurssit",
+ "guides": "Oppaat",
+ "guides-hub": "How-to-oppaat",
"history-of-ethereum": "Ethereumin historia",
"home": "Etusivu",
"how-ethereum-works": "Kuinka Ethereum toimii",
+ "how-to-revoke-token-access": "Miten voit perua älysopimuksen pääsyn kryptovaroihisi",
+ "how-to-swap-tokens": "Miten tokeneita vaihdetaan",
+ "how-to-use-a-bridge": "Miten voit silloittaa rahakkeita tasolle 2",
+ "how-to-use-a-wallet": "Miten lompakkoa käytetään",
"image": "kuva",
"in-this-section": "Tässä osiossa",
"individuals": "Yksityishenkilöille",
@@ -66,8 +126,10 @@
"languages": "Kielet",
"last-24-hrs": "Viimeiset 24 tuntia",
"last-edit": "Viimeksi muokattu",
+ "layer-2": "Taso 2",
"learn": "Opi",
"learn-by-coding": "Opi koodaamalla",
+ "learn-hub": "Oppimiskeskus",
"learn-menu": "Opi-valikko",
"learn-more": "Opi lisää",
"less": "Vähemmän",
@@ -76,31 +138,163 @@
"loading": "Ladataan...",
"loading-error": "Latausvirhe.",
"loading-error-refresh": "Virhe, päivitä sivu.",
+ "loading-error-try-again-later": "Tietojen lataaminen epäonnistui. Yritä uudelleen myöhemmin.",
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Yhdistä",
"more": "Lisää",
+ "nav-about-description": "Julkinen, avoimen lähdekoodin projekti Ethereum-yhteisölle",
+ "nav-advanced-description": "Opiskele monimutkaisia aiheita",
+ "nav-advanced-label": "Edistyneille",
+ "nav-basics-description": "Ymmärrä Ethereumin perusteet",
+ "nav-basics-label": "Perusteet",
+ "nav-bridges-description": "Web3 on kehittynyt ekosysteemiksi, jossa on tason 1 peruslohkoketjuja ja tason 2 skaalausratkaisuita",
+ "nav-builders-home-description": "Ethereum-kehittäjän opas – kehittäjiltä kehittäjille",
+ "nav-builders-home-label": "Kehittäjän etusivu",
+ "nav-contribute-description": "Jos haluat auttaa, tämä opastaa sinua",
+ "nav-contribute-label": "Ethereum.org-sivuston avustaminen",
+ "nav-dao-description": "Jäsenten omistamat yhteisöt ilman keskitettyä määräysvaltaa",
+ "nav-dapps-description": "Tutki sovellusten rikasta ekosysteemiä käyttämällä Ethereumia",
+ "nav-defi-description": "Globaali ja avoin vaihtoehto perinteisille rahoitusmarkkinoille",
+ "nav-desci-description": "Globaali ja avoin vaihtoehto nykyiselle tiedejärjestelmälle",
+ "nav-desoc-description": "Lohkoketjupohjaiset alustat sosiaalista vuorovaikutusta ja sisällön luomista varten",
+ "nav-developers-docs": "Kehittäjien dokumentit",
+ "nav-developers": "Kehittäjät",
+ "nav-did-description": "Myönnä ja omista omia hajautettuja tunnisteitasi",
+ "nav-docs-description": "Ymmärrä Ethereumia ja Ethereumissa rakentamista näiden dokumenttien avulla",
+ "nav-docs-design-description": "Kuvaus uniikeista web3:n suunnitteluhaasteista, parhaista käytännöistä ja käyttäjätutkimusten oivalluksista",
+ "nav-docs-design-label": "UI/UX-suunnittelun perusteet",
+ "nav-docs-foundation-description": "Ethereum-kehittämisen ydinperusteet",
+ "nav-docs-overview-description": "Etusivusi kehittäjän dokumenteille",
+ "nav-docs-stack-description": "Tutustu Ethereum-pinon yksityiskohtiin",
+ "nav-eip-description": "Uusia ominaisuuksia tai prosesseja määrittelevät standardit",
+ "nav-eip-label": "EIP:t - Ethereum-parannusehdotukset",
+ "nav-emerging-description": "Tutustu muihin uudempiin Ethereumin käyttötapauksiin",
+ "nav-enterprise-description": "Liiketoimintasovellukset Ethereumille",
+ "nav-ethereum-org-description": "Tämä verkkosivusto on yhteisölähtöinen – liity mukaan ja osallistu",
+ "nav-ethereum-wallets-description": "Pysy yhteydessä Ethereum-tiliisi sovelluksen kautta",
+ "nav-events-description": "Hajauttaminen ja osallistumisvapaus kaikille",
+ "nav-events-irl-description": "Joka kuukausi järjestetään merkittäviä Ethereum-tapahtumia sekä livenä että verkossa",
+ "nav-events-label": "Yhteisöt ja tapahtumat",
+ "nav-events-online-description": "Sadattuhannet Ethereum-harrastajat kerääntyvät näihin verkkoyhteisöihin",
+ "nav-find-wallet-description": "Lompakoiden avulla voit käyttää kryptoa",
+ "nav-find-wallet-label": "Valitse lompakkosi",
+ "nav-gas-fees-description": "Kuinka etherin (EHT) transaktiomaksut lasketaan",
+ "nav-get-eth-description": "Tarvitset etheriä (EHT) käyttääksesi Ethereum-sovelluksia",
+ "nav-get-started-description": "Ensiaskeleet Ethereumin käyttöön",
+ "nav-governance-description": "Ethereum-protokollan päivittämiseen liittyvä prosessi",
+ "nav-governance-label": "Hallinto",
+ "nav-grants-description": "Yhteisömme luoma lista apurahaohjelmia tarjoavista projekteista",
+ "nav-guide-create-account-description": "Kuka tahansa voi luoda Ethereum-tilin milloin tahansa ilmaiseksi lompakkosovelluksella",
+ "nav-guide-revoke-access-description": "Älysopimusten ja sovellusten turvallinen käyttö Ethereumin ekosysteemissä",
+ "nav-guide-revoke-access-label": "Kuinka perua pääsy älysopimukseen",
+ "nav-guide-use-wallet-description": "Opi käyttämään kaikkia lompakon perustoimintoja",
+ "nav-guide-use-wallet-label": "Miten lompakkoa käytetään",
+ "nav-guides-description": "Käytännölliset ja vaiheittaiset oppaat, joilla pääset alkuun",
+ "nav-guides-label": "How to -oppaat",
+ "nav-history-description": "Aikajana kaikista merkittävistä haarautumista ja päivityksistä",
+ "nav-history-label": "Ethereumin tekninen historia",
+ "nav-layer-2-description": "Halvemmat ja nopeammat transaktiot Ethereumille",
+ "nav-learn-by-coding-description": "Kokeile Ethereumin käyttöä työkaluilla",
+ "nav-local-env-description": "Valitse ja luo omat Ethereum-kehitystyökalusi",
+ "nav-mainnet-description": "Julkisessa Ethereumin pääverkossa voidaan rakentaa lohkoketjusovelluksia yrityksille",
+ "nav-nft-description": "Tapa esittää ainutlaatuisia asioita digitaalisena Ethereum-omaisuuseränä",
+ "nav-open-research-description": "Yksi Ethereumin suurimmista vahvuuksista on sen aktiivinen tutkimusyhteisö",
+ "nav-open-research-label": "Avion tutkimus",
+ "nav-overview-description": "Kaikki Ethereum-kouluttautumisesta",
+ "nav-participate-overview-description": "Katsaus osallistumiseen",
+ "nav-primary": "Ensisijainen",
+ "nav-quizzes-description": "Selvitä, kuinka hyvin tunnet Ethereumin ja kryptovaluutat",
+ "nav-quizzes-label": "Testaa tietosi",
+ "nav-refi-description": "Uudistaville periaatteille rakennettu vaihtoehtoinen talousjärjestelmä",
+ "nav-research-description": "Ethereumin kehitysprosessit",
+ "nav-research-label": "Tutkimus ja kehittämistoiminta",
+ "nav-roadmap-description": "Kohti skaalautuvampaa, turvallisempaa ja vastuullisempaa Ethereumia",
+ "nav-roadmap-future-description": "Ethereumin vakiinnuttaminen voimakkaana ja hajautettuna verkostona",
+ "nav-roadmap-future-label": "Tulevaisuusvarmentaminen",
+ "nav-roadmap-label": "Etenemissuunnitelma",
+ "nav-roadmap-scaling-description": "Transaktiokuluja ja -nopeutta vähentävät verkkopäivitykset",
+ "nav-roadmap-security-description": "Varmistetaan, että Ethereum kestää tulevaisuudessa kaikenlaiset hyökkäykset",
+ "nav-roadmap-security-label": "Paranneltu turvallisuus",
+ "nav-roadmap-ux-description": "Ethereumin käytön pitää olla yksinkertaista",
+ "nav-run-a-node-description": "Auta edelläkävijänä verkon suojaamisessa",
+ "nav-security-description": "Tutustu kryptovaluutan käytön parhaisiin käytäntöihin",
+ "nav-smart-contracts-description": "Ethereum-ekosysteemin olennaiset rakennuspalikat",
+ "nav-stablecoins-description": "Vakausvaluutat ovat Ethereum-rahakkeita, joiden arvo on suunniteltu pysymään vakaana",
+ "nav-stake-description": "Ansaitse palkkioita Ethereum-verkoston suojaamisesta",
+ "nav-stake-label": "Steikkaus",
+ "nav-staking-home-description": "Eri vaihtoehtoja steikkaukseen",
+ "nav-staking-home-label": "Steikkaus etusivu",
+ "nav-staking-pool-description": "Steikkaa ja ansaitse palkkioita pienelläkin ether-summalla yhdessä muiden kanssa",
+ "nav-staking-pool-label": "Yhdistetty panostus",
+ "nav-staking-saas-description": "Kolmannen osapuolen solmupiste-operaattorit käsittelevät toimintaa omalla varmentajallaan.",
+ "nav-staking-saas-label": "Steikkaus palvelun kautta",
+ "nav-staking-solo-description": "Ylläpidä kotilaitteistoa ja lisää turvallisuutta sekä Ethereum-verkon hajauttamista.",
+ "nav-staking-solo-label": "Panostus soolona",
+ "nav-start-building-description": "Tarpeellista tietoa aloittelijoille",
+ "nav-translation-program-description": "Yhteistyöprojekti ethereum.org-sivuston kääntämiseksi kaikille kielille",
+ "nav-tutorials-description": "Huolellisesti valikoituja yhteisöoppaita",
+ "nav-use-cases-description": "Löydä erilaisia ideoita Ethereumin käyttöön",
+ "nav-what-is-ether-description": "Ethereum-sovelluksissa käytetty valuutta",
+ "nav-what-is-ethereum-description": "Oivalla, mikä tekee Ethereumista erityisen",
+ "nav-what-is-web3-label": "Mikä on Web3?",
+ "nav-what-is-web3-description": "Vaihtoehto sääntöjä saneleville keskitetyille monopoleille",
+ "nav-whitepaper-description": "Alkuperäisen Ethereum-tietopaketin kirjoitti Vitalik Buterin vuonna 2014",
+ "nav-zkp-description": "Tapa todistaa väittämän oikeellisuus paljastamatta itse väittämää",
+ "nft-page": "NFT:t - Ei-vaihdettavat poletit",
+ "nfts": "NFT:t",
"no": "Ei",
"on-this-page": "Tällä sivulla",
+ "open-research": "Avion tutkimus",
+ "page-developers-aria-label": "Kehittäjien valikko",
+ "page-index-meta-title": "Etusivu",
"page-last-updated": "Sivu viimeksi päivitetty",
+ "participate": "Osallistu ja osallista",
+ "participate-menu": "Osallistumisvalikko",
+ "pbs": "Ehdottajan ja kehittäjän erottaminen",
+ "pools": "Yhdistetty panostus",
"privacy-policy": "Tietosuojakäytäntö",
"private-ethereum": "Yksityinen Ethereum",
+ "product-disclaimer": "Tuotteet ja palvelut on lueteltu viitteeksi Ethereum-yhteisölle. Tuotteen tai palvelun sisällyttäminen ei edusta suositusta ethereum.org-verkkosivuston tiimiltä tai Ethereum Foundation -säätiöltä.",
+ "quizzes-title": "Kyselykeskus",
+ "quizzes": "Kyselyt",
"refresh": "Lataa sivu uudelleen.",
+ "return-home": "palaa etusivulle",
+ "roadmap": "Ethereum-tiekartta",
+ "research": "Tutkimus",
+ "research-menu": "Tutkimusvalikko",
+ "resources": "Käännöstyökalut",
"run-a-node": "Aja solmu",
+ "rollup-component-website": "Verkkosivusto",
+ "rollup-component-developer-docs": "Kehittäjien dokumentit",
+ "rollup-component-technology-and-risk-summary": "Teknologia ja riskien tiivistelmä",
+ "scaling": "Skaalaus",
+ "saas": "Staking as a service -palvelu",
"search": "Hae",
+ "search-ethereum-org": "Hae osoitteesta ethereum.org",
+ "secret-leader-election": "Salainen johtajan vaali",
"search-box-blank-state-text": "Etsi pois!",
"search-eth-address": "Tämä näyttää Ethereum-osoitteelta. Emme anna osoitekohtaisia tietoja. Kokeile etsiä sitä lohkoselaimella, kuten",
"search-no-results": "Haullasi ei löytynyt tuloksia",
+ "security": "Turvallisuus",
+ "single-slot-finality": "Single-slot-ratkaisevuus",
+ "statelessness": "Maattomuus",
"see-contributors": "Katso osallistujat",
"set-up-local-env": "Asenna paikallinen ympäristö",
- "sharding": "Sirpaleketjut",
+ "sharding": "Sirpalointi",
"show-all": "Näytä kaikki",
"show-less": "Näytä vähemmän",
"site-description": "Ethereum on maailmanlaajuinen, hajautettu alusta rahaa ja uudenlaisia sovelluksia varten. Ethereumin avulla voit kirjoittaa rahaa säätelevää koodia ja rakentaa sovelluksia kaikkialle maailmaan.",
"site-title": "ethereum.org",
"skip-to-main-content": "Siirry pääsisältöön",
"smart-contracts": "Älysopimukset",
- "stablecoins": "Vakausvaluutat",
+ "stablecoins": "Vakaat kryptovaluutat",
+ "stake-eth": "Steikkaa ETH",
"staking": "Panostaminen",
+ "start-here": "Aloita tästä",
+ "style-guide": "Tyyliopas",
+ "solo": "Panostus soolona",
+ "support": "Tuki",
"terms-of-use": "Käyttöehdot",
"translation-banner-body-new": "Katselet tätä sivua englanniksi, koska emme ole vielä kääntäneet sitä. Auta meitä kääntämään tämä sisältö.",
"translation-banner-body-update": "Tästä sivusta on uusi versio, mutta se on tällä hetkellä vain englanniksi. Auta meitä kääntämään uusin versio.",
@@ -108,17 +302,26 @@
"translation-banner-button-translate-page": "Käännä sivu",
"translation-banner-title-new": "Auta kääntämään tämä sivu",
"translation-banner-title-update": "Auta päivittämään tämä sivu",
+ "translation-banner-no-bugs-title": "Täällä ei ole virheitä!",
+ "translation-banner-no-bugs-content": "Tätä sivua ei ole käännetty. Olemme tarkoituksellisesti jättäneet tämän sivun toistaiseksi englanniksi.",
+ "translation-banner-no-bugs-dont-show-again": "Älä näytä uudestaan",
+ "translation-program": "Käännösohjelma",
+ "try-using-search": "Kokeile hakua, jotta löydät etsimäsi, tai",
"tutorials": "Tutoriaalit",
+ "up": "Ylös",
+ "use": "Käytä",
"use-ethereum": "Käytä Ethereumia",
"use-ethereum-menu": "Käytä Ethereumia -valikko",
+ "use-menu": "Käyttövalikko",
+ "user-experience": "Käyttäjäkokemus",
+ "verkle-trees": "Verkle-puut",
"wallets": "Lompakot",
+ "we-couldnt-find-that-page": "Sivua ei valitettavasti löytynyt",
+ "web3": "Mikä on Web3?",
"website-last-updated": "Sivusto viimeksi päivitetty",
- "what-is-ether": "Mikä on ether (ETH)?",
+ "what-is-ether": "Mikä on Ether (ETH)?",
"what-is-ethereum": "Mikä on Ethereum?",
- "defi-page": "Hajautettu rahoitus (DeFi)",
- "dao-page": "Hajautetut autonomiset organisaatiot (DAO:t)",
- "nft-page": "Ei-vaihdettavat poletit (NFT:t)",
+ "withdrawals": "Panostamisen nostot",
"yes": "Kyllä",
- "page-index-meta-title": "Etusivu",
- "page-developers-aria-label": "Kehittäjien valikko"
+ "zero-knowledge-proofs": "Nollatietotodistukset"
}
diff --git a/src/intl/fi/page-dapps.json b/src/intl/fi/page-dapps.json
index 294c18b6656..917f1c2c860 100644
--- a/src/intl/fi/page-dapps.json
+++ b/src/intl/fi/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Rahan siirtoa reaali-aikaisesti.",
"page-dapps-dapp-description-superrare": "Osta digitaalisia taideteoksia suoraan taiteilijoilta tai jälkimarkkinoilta.",
"page-dapps-dapp-description-token-sets": "Tasapainotetut kryptojen investointistrategiat käyttöösi.",
- "page-dapps-dapp-description-tornado-cash": "Lähetä transaktioita Ethereumiin anonyymisti.",
"page-dapps-dapp-description-uniswap": "Vaihda rahakkeita kätevästi tai anna niitä käyttöön prosenttipalkkiolla.",
"page-dapps-dapp-description-dexguru": "Käyttäjän hallitsema DeFi-kaupankäyntipääte",
"page-dapps-docklink-dapps": "Johdanto dAppeihin",
@@ -198,7 +197,6 @@
"page-dapps-technology-description": "Nämä sovellukset keskittyvät kehittäjien työkalujen hajauttamiseen, krypto-talousjärjestelmien integroimiseen olemassa olevaan teknologiaympäristöön ja avaamaan foorumeja avoimen lähdekoodin kehitystyöhön.",
"page-dapps-technology-title": "Hajautettu teknologia",
"page-dapps-token-sets-logo-alt": "Token Sets -logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash -logo",
"page-dapps-uniswap-logo-alt": "Uniswap-logo",
"page-dapps-wallet-callout-button": "Valitse lompakko",
"page-dapps-wallet-callout-description": "Myös lompakot ovat dAppeja. Valitse lompakko, jonka ominaisuudet sopivat sinulle.",
diff --git a/src/intl/fi/page-languages.json b/src/intl/fi/page-languages.json
index 57836e04e6e..da24b7cef69 100644
--- a/src/intl/fi/page-languages.json
+++ b/src/intl/fi/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Haluatko nähdä ethereum.org kieliversioita?",
"page-languages-want-more-link": "Käännösohjelma",
"page-languages-want-more-paragraph": "Ethereum.orgin kääntäjät työskentelevät kaiken aikaa käännösohjelman parissa eri kielillä. Klikkaa linkkiä, jos haluat nähdä tilannekatsauksen, liittyä käännöstiimiin tai lukea lisää",
- "page-languages-filter-placeholder": "Suodatin",
+ "page-languages-filter-label": "Suodatinlista",
+ "page-languages-filter-placeholder": "Suodata kirjoittamalla",
+ "page-languages-browser-default": "Selaimen oletus",
+ "page-languages-translated": "käännetyt",
+ "page-languages-words": "sanat",
+ "page-languages-recruit-community": "Auta meitä kääntämään ethereum.org-sivusto.",
+ "langauge-am": "Amharic",
"language-ar": "arabia",
"language-az": "azeri",
+ "langauge-be": "Belarusian",
"language-bg": "bulgaria",
"language-bn": "bengali",
+ "language-bs": "Bosnian",
"language-ca": "katalaani",
"language-cs": "Tšekki",
"language-da": "tanska",
@@ -32,6 +40,7 @@
"language-hi": "hindi",
"language-hr": "kroatia",
"language-hu": "unkari",
+ "language-hy-am": "Armenian",
"language-id": "indonesia",
"language-ig": "igbo",
"language-it": "Italia",
@@ -39,12 +48,14 @@
"language-ka": "georgia",
"language-kk": "kazakki",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "korea",
"language-lt": "liettua",
"language-ml": "malajalam",
"language-mr": "marathi",
"language-ms": "malaiji",
"language-nb": "norja",
+ "language-ne-np": "Nepali",
"language-nl": "hollanti",
"language-pcm": "Nigerian pidgin",
"language-fil": "filipino",
@@ -58,8 +69,9 @@
"language-sl": "sloveeni",
"language-sr": "serbia",
"language-sw": "swahili",
- "language-th": "thai",
"language-ta": "Tamili",
+ "language-th": "thai",
+ "language-tk": "Turkmen",
"language-tr": "turkki",
"language-uk": "ukraina",
"language-ur": "urdu",
diff --git a/src/intl/fi/page-stablecoins.json b/src/intl/fi/page-stablecoins.json
index 288a0dfd1ab..ca0c2f55737 100644
--- a/src/intl/fi/page-stablecoins.json
+++ b/src/intl/fi/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Lähde",
"page-stablecoins-bitcoin-pizza": "Bitcoin-pizzasta se lähti",
"page-stablecoins-bitcoin-pizza-body": "Vuonna 2010 asiakas osti kaksi pizzaa 10 000 bitcoinilla, mikä vastasi tuolloin noin 41 USD:a. Tänä päivänä summan arvo on miljoonia dollareita. Useita vastaavia harmittavia transaktioita on tapahtunut Ethereuminkin historiassa. Vakaat kryptot ratkaisivat ongelman, joten nyt voit nauttia pizzaa kohtuuhintaan.",
+ "page-stablecoins-category-dashboard-and-education": "Hallintapaneeli ja koulutus",
"page-stablecoins-coin-price-change": "Kolikon hinnan muutos (viimeiset 30 päivää)",
"page-stablecoins-crypto-backed": "Kryptoihin perustuva",
"page-stablecoins-crypto-backed-con-1": "Vähemmän vakaa kuin perinteisiin fiat-valuuttoihin sidotut vakaat kryptot.",
diff --git a/src/intl/fil/common.json b/src/intl/fil/common.json
index 10cde6fdca8..86600debbdc 100644
--- a/src/intl/fil/common.json
+++ b/src/intl/fil/common.json
@@ -1,17 +1,26 @@
{
- "account-abstraction": "Account abstraction",
"about-ethereum-org": "Tungkol sa ethereum.org",
"about-us": "Tungkol sa amin",
+ "adding-desci-projects": "Pagdaragdag ng Mga Desci Project",
+ "adding-developer-tools": "Pagdaragdag ng Mga Tool ng Developer",
+ "adding-exchanges": "Pagdaragdag ng Mga Exchange",
+ "adding-glossary-terms": "Pagdaragdag ng Mga Termino sa Glossary",
+ "adding-staking-products": "Pagdaragdag ng Mga Produkto sa Staking",
+ "adding-wallets": "Pagdaragdag ng Mga Wallet",
+ "acknowledgements": "Mga pagkilala",
"aria-toggle-search-button": "I-toggle ang button sa paghahanap",
"aria-toggle-menu-button": "I-toggle ang button ng menu",
"beacon-chain": "Beacon Chain",
"bridges": "Mga blockchain bridge",
+ "build-menu": "Menu ng build",
"clear": "I-clear",
"close": "Isara",
"community": "Komunidad",
"community-hub": "Hub ng komunidad",
"community-menu": "Menu ng Komunidad",
"contact": "I-contact",
+ "content-buckets": "Mga Content Bucket",
+ "content-resources": "Mga Resource ng Content",
"content-standardization": "Pag-standardize ng content",
"contributing": "Pag-contribute",
"contributors": "Mga Contributor",
@@ -20,14 +29,17 @@
"copied": "Kinopya",
"copy": "Kopyahin",
"danksharding": "Danksharding",
- "dao-page": "Mga decentralized autonomous organization (DAOs)",
+ "dao-page": "DAOs - Mga decentralized autonomous organization",
"dark-mode": "Madilim",
"data-provided-by": "Pinagmulan ng data:",
- "decentralized-applications-dapps": "Mga decentralized application (dapps)",
+ "decentralized-applications-dapps": "Dapps - Mga decentralized application",
"decentralized-identity": "Decentralized na identity",
"decentralized-social-networks": "Mga decentralized na social network",
- "decentralized-science": "Decentralized science (DeSci)",
- "defi-page": "Decentralized finance (DeFi)",
+ "decentralized-science": "DeSci - Decentralized science",
+ "description": "Paglalarawan para sa nav item",
+ "defi-page": "DeFi - Decentralized finance",
+ "design": "Disenyo",
+ "design-principles": "Mga Alituntunin ng Disenyo",
"devcon": "Devcon",
"developers": "Mga Developer",
"developers-home": "Home ng mga developer",
@@ -51,7 +63,7 @@
"documentation": "Dokumentasyon",
"down": "Pababa",
"ecosystem": "Ecosystem",
- "edit-page": "I-edit ang pahina",
+ "edit-page": "Ayusin ang pahina",
"ef-blog": "Blog ng Ethereum Foundation",
"eips": "Mga Mungkahi sa Pagpapaganda ng Ethereum",
"energy-consumption": "Pagkonsumo ng enerhiya ng Ethereum",
@@ -59,11 +71,11 @@
"enterprise-menu": "Enterprise Menu",
"esp": "Ecosystem Support Program",
"eth-current-price": "Kasalukuyang presyo ng ETH (USD)",
- "ethereum-basics": "Basics ng Ethereum",
+ "ethereum-basics": "Mga pangunahing kaalaman sa Ethereum",
"ethereum-bug-bounty": "Ethereum bug bounty program",
"consensus-when-shipping": "Kailan ito masi-ship?",
"ethereum-upgrades": "Mga pag-upgrade ng Ethereum",
- "ethereum-brand-assets": "Mga assset ng Ethereum brand",
+ "ethereum-brand-assets": "Mga brand assset ng Ethereum",
"ethereum-online": "Mga online na komunidad",
"ethereum-events": "Mga kaganapan sa Ethereum",
"ethereum-foundation": "Ethereum Foundation",
@@ -71,11 +83,11 @@
"ethereum-glossary": "Glossary ng Ethereum",
"ethereum-governance": "Pamamahala sa Ethereum",
"ethereum-logo": "Logo ng Ethereum",
- "ethereum-roadmap": "Lalakbaying daan ng Ethereum",
+ "ethereum-roadmap": "Roadmap ng Ethereum",
"ethereum-protocol": "Protocol ng Ethereum",
"ethereum-security": "Seguridad ng Ethereum at pag-iwas sa scam",
"ethereum-support": "Suporta sa Ethereum",
- "ethereum-wallets": "Mga Ethereum wallet",
+ "ethereum-wallets": "Mga wallet ng Ethereum",
"ethereum-whitepaper": "Ethereum Whitepaper",
"feedback-widget-prompt": "Nakakatulong ba ang page na ito?",
"feedback-card-prompt-page": "Nakatulong ba ang page na ito?",
@@ -83,7 +95,7 @@
"feedback-card-prompt-tutorial": "Nakatulong ba ang tutorial na ito?",
"feedback-widget-thank-you-title": "Salamat sa iyong feedback!",
"feedback-widget-thank-you-subtitle": "Pagandahin ang page na ito sa pamamagitan ng pagsagot ng ilang tanong.",
- "feedback-widget-thank-you-subtitle-ext": "Kung kailangan mo ng tulong, puwede kang makipag-ugnayan sa community sa aming Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Kung kailangan mo ng tulong, puwede kang makipag-ugnayan sa komunidad sa aming Discord.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Buksan ang maikling survey",
"find-wallet": "Maghanap ng wallet",
@@ -98,7 +110,7 @@
"history-of-ethereum": "Kasaysayan ng Ethereum",
"home": "Home",
"how-ethereum-works": "Paano gumagana ang Ethereum",
- "how-to-register-an-ethereum-account": "Paano \"magrehistro\" ng Ethereum account",
+ "how-to-create-an-ethereum-account": "Paano \"gumawa\" ng Ethereum account",
"how-to-revoke-token-access": "Paano bawiin ang access sa smart contract sa iyong mga pondo sa crypto",
"how-to-swap-tokens": "Paano mag-swap ng mga token",
"how-to-use-a-bridge": "Paano madadala ang mga token sa layer 2",
@@ -115,11 +127,11 @@
"last-edit": "Huling pag-edit",
"layer-2": "Layer 2",
"learn": "Matuto",
- "learn-by-coding": "Matuto sa pamamagitan ng pag-code",
+ "learn-by-coding": "Matuto sa pamamagitan ng coding",
"learn-hub": "Learn Hub",
"learn-menu": "Menu ng pag-aaral",
"learn-more": "Matuto pa",
- "less": "Mas kaunti",
+ "less": "Bawasan ang nakikita",
"light-mode": "Light",
"listing-policy-disclaimer": "Ang lahat ng produktong nakalista sa page na ito ay hindi opisyal na ineendorso, at ibinibigay lang ang mga ito para sa mga layuning pang-impormasyon. Kung nais mong mag dagdag ng produkto o magbigay ng feedback sa mga polisiya, mangyaring magsumite ng issue sa GitHub.",
"loading": "Naglo-load...",
@@ -128,11 +140,109 @@
"loading-error-try-again-later": "Hindi mai-load. Subukang muli mamaya.",
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
- "more": "Higit pa",
- "nav-developers": "Mga Developer",
+ "merge": "I-merge",
+ "more": "Tumingin pa",
+ "nav-about-description": "Isang pampubliko, open-source na proyekto para sa komunidad ng Ethereum",
+ "nav-advanced-description": "Matutuhan ang mas kumplikadong mga paksa",
+ "nav-advanced-label": "Advanced",
+ "nav-basics-description": "Nauunawaan ang mga pangunahing kaalaman ng Ethereum",
+ "nav-basics-label": "Pangunahing Kaalaman",
+ "nav-bridges-description": "Umunlad ang web3 at naging ecosystem ng primary L1 blockchains at L2 scaling solutions",
+ "nav-builders-home-description": "Isang manual ng builder para sa Ethereum—gawa ng mga builder, para sa mga builder",
+ "nav-builders-home-label": "Bahay ng builder",
+ "nav-contribute-description": "Kung gusto mong tumulong, gagabayan ka nito",
+ "nav-contribute-label": "Nakikibahagi sa ethereum.org",
+ "nav-dao-description": "Mga komunidad ng miyembro na walang sentralisadong awtoridad",
+ "nav-dapps-description": "Tuklasin ang isang mayamang ecosystem ng mga app gamit ang Ethereum",
+ "nav-defi-description": "Isang pandaigdigan at bukas na alternatibo sa tradisyonal na pinansyal na merkado",
+ "nav-desci-description": "Isang pandaigdigan at bukas na alternaribo sa kasalukuyang sistema ng siyentipiko",
+ "nav-desoc-description": "Mga blockchain-based na platform para sa social interaction at paggawa ng content",
"nav-developers-docs": "Developers docs",
+ "nav-developers": "Mga Developer",
+ "nav-did-description": "Ibigay at maging may-ari ng iyong natatanging decentralized na mga identifier",
+ "nav-docs-description": "Mga dokumento upang tulungan kang maunawaan at gumawa sa Ethereum",
+ "nav-docs-design-description": "Paglalarawan ng mga natatanging web3 design challenge, pinakamagandang gawain at mga pananaw sa pananaliksik ng user",
+ "nav-docs-design-label": "Mga pangunahing kaalaman sa UX/UI design",
+ "nav-docs-foundation-description": "Mga pangunahing batayan upang umunlad sa Ethereum",
+ "nav-docs-overview-description": "Ang tahanan mo para sa mga dokumento ng developer",
+ "nav-docs-stack-description": "Maunawaan ang lahat ng detalye ng Ethereum stack",
+ "nav-eip-description": "Mga pamantayan na tumutukoy ng mga bagong feature o proseso",
+ "nav-eip-label": "EIPs - Mga pagsusulong para sa pagpapabuti ng Ethereum",
+ "nav-emerging-description": "Malaman ang ibang mas bagong mga kaso ng paggamit para sa Ethereum",
+ "nav-emerging-label": "Mga bagong use case",
+ "nav-enterprise-description": "Mga gamit sa negosyo ng Ethereum",
+ "nav-ethereum-org-description": "Kinokontrol ng komunidad ang website na ito—sumali sa amin at magbahagi rin",
+ "nav-ethereum-wallets-description": "Isang app upang makipag-ugnayan sa iyong Ethereum account",
+ "nav-events-description": "Desentralisasyon at kalayaan na makilahok para sa lahat",
+ "nav-events-irl-description": "Bawat buwan ay mayroong personal at online na malalaking Ethereum event",
+ "nav-events-label": "Mga komunidad at event",
+ "nav-events-online-description": "Libo-libong mahilig sa Ethereum ang nangunguna sa mga online na komunidad na ito",
+ "nav-find-wallet-description": "Pinahihintulutan ka ng mga wallet na gumamit ng crypto",
+ "nav-find-wallet-label": "Pumili ng wallet",
+ "nav-gas-fees-description": "Paano kinakalkula ang mga bayad sa transaksyon ng ETH",
+ "nav-get-eth-description": "Kailangan mo ng ether (ETH) para magamit ang mga Ethereum application",
+ "nav-get-started-description": "Ang mga una mong hakbang sa paggamit ng Ethereum",
+ "nav-governance-description": "Ang proseso na ginagamit sa pagpapaunlad ng protokol ng Ethereum",
+ "nav-governance-label": "Pamamahala",
+ "nav-grants-description": "Isang piniling listahan ng aming komunidad sa mga proyekto na nagbibigay ng mga programa sa paghahandog ng salapi",
+ "nav-guide-create-account-description": "Maaaring gumawa ng Ethereum account nang libre ang kahit sino, kahit kailan gamit ang isang wallet app",
+ "nav-guide-create-account-label": "Paano \"gumawa\" ng Ethereum account",
+ "nav-guide-revoke-access-description": "Manatiling ligtas sa tuwing nakikipag-ugnayan sa mga smart na kontrata at application sa Ethereum ecosystem",
+ "nav-guide-revoke-access-label": "Paano bawiin ang access sa smart na kontrata",
+ "nav-guide-use-wallet-description": "Alamin kung paano gamitin ang lahat ng pangunahing function ng isang wallet",
+ "nav-guide-use-wallet-label": "Paano gumamit ng wallet",
+ "nav-guides-description": "Praktikal na mga gabay upang tulungan kang makapagsimula",
+ "nav-guides-label": "Sundin kung paano at ang mga gabay",
+ "nav-history-description": "Isang timeline ng lahat ng malalaking fork at update",
+ "nav-history-label": "Teknikal na kasaysayan ng Ethereum",
+ "nav-layer-2-description": "Mas mura at mabilis na mga transaksyon para sa Ethereum",
+ "nav-learn-by-coding-description": "Mga tool na tutulong sa iyong mag-eksperimento sa Ethereum",
+ "nav-local-env-description": "Piliin at itakda ang iyong Ethereum development stack",
+ "nav-mainnet-description": "Puwedeng buuin ang mga enterprise blockchain application sa pampublikong Ethereum Mainnet",
+ "nav-nft-description": "Isang paraan para katawanin ang kahit anong natatangi bilang Ethereum-based asset",
+ "nav-open-research-description": "Ang isa sa mga pangunahing kalakasan ng Ethereum ay ang aktibo nitong komunidad sa pananaliksik",
+ "nav-open-research-label": "Open research",
+ "nav-overview-description": "Edukasyon sa lahat ng mga bagay sa Ethereum",
+ "nav-participate-overview-description": "Pangkalahatang-ideya sa kung paano makilahok",
"nav-primary": "Primary",
- "nft-page": "Mga non-fungible token (NFT)",
+ "nav-quizzes-description": "Malaman kung paano mo lubos na nauunawaan ang Ethereum at mga cryptocurrency",
+ "nav-quizzes-label": "Subukan ang iyong kaalaman",
+ "nav-refi-description": "Isang alternatibong sistema ng ekonomiya na ginawa batay sa mga prinsipyong regenative",
+ "nav-research-description": "Mga ginamit na proseso upang mapahusay ang Ethereum",
+ "nav-research-label": "Pananaliksik at pag-unlad",
+ "nav-roadmap-description": "Ang landas tungo sa higit na scalability, seguridad at sustainability para sa Ethereum",
+ "nav-roadmap-future-description": "Pagpapatibay ng Ethereum bilang isang malakas at desentralisadong network",
+ "nav-roadmap-future-label": "Pag-future proof",
+ "nav-roadmap-label": "Roadmap",
+ "nav-roadmap-scaling-description": "Mga update sa network upang mas mapababa ang gastos sa transaksyon at bilis",
+ "nav-roadmap-security-description": "Tinitiyak na manatiling makababangon ang Ethereum sa lahat ng uri ng pag-atake sa hinaharap",
+ "nav-roadmap-security-label": "Mas pinahusay na seguridad",
+ "nav-roadmap-ux-description": "Kailangang pasimplehin ang paggamit ng Ethereum",
+ "nav-run-a-node-description": "Maging ganap na sovereign habang tumutulong na i-secure ang network",
+ "nav-security-description": "Matutuhan ang pinakamagandang mga gawain kapag ginagamit ang cryptocurrency",
+ "nav-smart-contracts-description": "Ang pangunahing bumubuo ng Ethereum ecosystem",
+ "nav-stablecoins-description": "Ang stablecoins ay mga Ethereum token na dinisenyong magkaroon ng hindi nababagong halaga",
+ "nav-stake-description": "Magkaroon ng mga reward para sa pag-secure ng Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "Isang pangkalahatang-ideya ng iba't ibang opsyon sa pag-stake",
+ "nav-staking-home-label": "Staking home",
+ "nav-staking-pool-description": "Mag-stake at makakuha ng mga reward sa anumang halaga ng ETH sa pamamagitan ng pagsama sa iba",
+ "nav-staking-pool-label": "Pooled staking",
+ "nav-staking-saas-description": "Ang mga third-party node operator ang nangangasiwa sa operasyon ng iyong validator client",
+ "nav-staking-saas-label": "Pag-stake nang may serbisyo",
+ "nav-staking-solo-description": "Patakbuhin ang home hardware at personal na magdagdag sa seguridad at decentralization ng Ethereum network",
+ "nav-staking-solo-label": "Solo staking",
+ "nav-start-building-description": "Kapaki-pakinabang na impormasyon para sa mga baguhan",
+ "nav-translation-program-description": "Isang sama-samang pagsisikap upang isalin ang ethereum.org sa lahat ng wika",
+ "nav-tutorials-description": "Isang piniling listahan ng mga tutorial ng komunidad",
+ "nav-use-cases-description": "Matuklasan ang iba't ibang ideya ng paggamit ng Ethereum",
+ "nav-what-is-ether-description": "Ang currency ng mga Ethereum app",
+ "nav-what-is-ethereum-description": "Maunawaan kung bakit naging espesyal ang Ethereum",
+ "nav-what-is-web3-label": "Ano ang Web3?",
+ "nav-what-is-web3-description": "Isang alternatibo sa sentralisadong monopolyo na nagdidikta ng mga panuntunan",
+ "nav-whitepaper-description": "Ang orihinal na whitepaper ng Ethereum na isinulat ni Vitalik Buterin noong 2014",
+ "nav-zkp-description": "Isang paraan para patunayan ang validity ng isang pahayag nang hindi ipinapakita ang mismong pahayag",
+ "nft-page": "NFT - Mga non-fungible token",
"nfts": "NFTs",
"no": "Hindi",
"on-this-page": "Sa page na ito",
@@ -140,6 +250,8 @@
"page-developers-aria-label": "Menu ng mga Developer",
"page-index-meta-title": "Home",
"page-last-updated": "Huling na-update ang page",
+ "participate": "Sumali",
+ "participate-menu": "Menu ng pakikilahok",
"pbs": "Paghihiwalay ng tagamungkahi at tagabuo",
"pools": "Pooled staking",
"privacy-policy": "Patakaran sa privacy",
@@ -150,9 +262,11 @@
"refresh": "Paki-refresh ang pahina.",
"return-home": "bumalik sa home",
"roadmap": "Roadmap ng Ethereum",
+ "research": "Pananaliksik",
+ "research-menu": "Menu ng pananaliksik",
"resources": "Mga resource sa translation",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Mag-run ng node",
+ "regenerative-finance": "ReFi - Regenerative finance",
+ "run-a-node": "Magpatakbo ng Node",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Developer docs",
"rollup-component-technology-and-risk-summary": "Buod ng teknolohiya at risk",
@@ -164,6 +278,7 @@
"search-box-blank-state-text": "Hanapin!",
"search-eth-address": "Mukhang isang Ethereum address ito. Hindi kami nagbibigay ng data na partikular sa mga address. Subukang hanapin ito sa isang block explorer tulad ng",
"search-no-results": "Walang resulta sa iyong hinahanap",
+ "security": "Seguridad",
"single-slot-finality": "Pagiging pinal ng single-slot",
"statelessness": "Kawalan ng estado",
"see-contributors": "Tingnan ang mga contributor",
@@ -172,15 +287,14 @@
"show-all": "Ipakita lahat",
"show-less": "Magpakita ng mas kaunti",
"site-description": "Ang Ethereum ay isang pandaigdigan at decentralized na platform para sa pera at mga bagong uri ng mga application. Sa Ethereum, maaari kang magsulat ng code na kumokontrol sa pera, at bumuo ng mga application na naa-access saanman sa mundo.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Lumaktaw sa main content",
"smart-contracts": "Mga smart contract",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Mga Stablecoin",
"stake-eth": "Mag-stake ng ETH",
"staking": "Staking",
"start-here": "Magsimula dito",
- "style-guide": "Style guide",
"solo": "Solo staking",
+ "support": "Support",
"terms-of-use": "Mga tuntunin ng paggamit",
"translation-banner-body-new": "Tinitingnan mo ang pahinang ito sa English dahil hindi pa namin ito naisalin. Tulungan kaming isalin ang nilalamang ito.",
"translation-banner-body-update": "May bagong bersyon ng page na ito ngunit nasa English lang ito ngayon. Tulungan kaming isalin ang pinakabagong bersyon.",
@@ -191,14 +305,17 @@
"translation-banner-no-bugs-title": "Walang mga bug dito!",
"translation-banner-no-bugs-content": "Ang pahinang ito ay hindi isinasalin. Sinadya naming iwan ang pahinang ito sa Ingles sa ngayon.",
"translation-banner-no-bugs-dont-show-again": "Huwag nang ipakita ulit",
+ "translation-program": "Translation Program",
"try-using-search": "Subukang gamitin ang paghahanap upang mahanap kung ano ang iyong hinahanap o",
"tutorials": "Mga tutorial",
"up": "Pataas",
+ "use": "Gamitin",
"use-ethereum": "Gumamit ng Ethereum",
"use-ethereum-menu": "Gamitin ang Ethereum menu",
- "user-experience": "User experience",
+ "use-menu": "Menu ng paggamit",
+ "user-experience": "Karanasan ng user",
"verkle-trees": "Verkle trees",
- "wallets": "Mga Wallet",
+ "wallets": "Mga wallets",
"we-couldnt-find-that-page": "Hindi namin mahanap ang page na iyon",
"web3": "Ano ang Web3?",
"web3-title": "Web3",
diff --git a/src/intl/fil/page-dapps.json b/src/intl/fil/page-dapps.json
index eaed641e328..da307754081 100644
--- a/src/intl/fil/page-dapps.json
+++ b/src/intl/fil/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Mag-stream ng pera nang real time.",
"page-dapps-dapp-description-superrare": "Bumili ng mga digital artwork nang direkta mula sa mga artist o sa mga secondary market.",
"page-dapps-dapp-description-token-sets": "Mga paraan ng pamumuhunan sa crypto na awtomatikong nagre-rebalance.",
- "page-dapps-dapp-description-tornado-cash": "Magpadala ng mga anonymous na transaksyon sa Ethereum.",
"page-dapps-dapp-description-uniswap": "Mag-swap ng mga token o magbigay ng mga token para sa % rewards.",
"page-dapps-dapp-description-dexguru": "Non-custodial trading terminal para sa mga DeFi trader",
"page-dapps-dapp-description-synthetix": "Ang Synthetix ay isang protocol para sa paglalabas at pagte-trade ng mga synthetic asset",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Ito ay mga application na nakation sa pag-decentralize ng mga tool ng developer, paglalagay sa kasalukuyang teknolohiya, at paggawa ng mga marketplace para sa open-source development work.",
"page-dapps-technology-title": "Decentralized na teknolohiya",
"page-dapps-token-sets-logo-alt": "Logo ng Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo ng Tornado Cash",
"page-dapps-uniswap-logo-alt": "Logo ng Uniswap",
"page-dapps-wallet-callout-button": "Maghanap ng pitaka",
"page-dapps-wallet-callout-description": "Decentralized applications (dapps) din ang mga wallet. Maghanap ng wallet batay sa mga feature na akma sa iyo.",
diff --git a/src/intl/fil/page-languages.json b/src/intl/fil/page-languages.json
index 369b00839f9..9f05aef7cfc 100644
--- a/src/intl/fil/page-languages.json
+++ b/src/intl/fil/page-languages.json
@@ -11,11 +11,18 @@
"page-languages-want-more-header": "Gustong makita ang ethereum.org sa ibang wika?",
"page-languages-want-more-link": "Translation Program",
"page-languages-want-more-paragraph": "Ang mga translator ng ethereum.org ay palaging nagsasalin ng mga page sa lahat ng wikang makakaya. Para makita kung ano ang ginagawa nila ngayon o para mag-sign up para sumali sa kanila, magbasa tungkol sa aming",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Listahan ng filter",
+ "page-languages-filter-placeholder": "Mag-type para i-filter",
+ "page-languages-browser-default": "Default na browser",
+ "page-languages-translated": "naisalin",
+ "page-languages-words": "mga salita",
+ "page-languages-recruit-community": "Tulungan kaming isalin ang ethereum.org.",
"language-ar": "Arabic",
"language-az": "Azerbaijani",
+ "langauge-be": "Belarusian",
"language-bg": "Bulgarian",
"language-bn": "Bengali",
+ "language-bs": "Bosnian",
"language-ca": "Catalan",
"language-cs": "Czech",
"language-da": "Danish",
@@ -32,6 +39,7 @@
"language-hi": "Hindi",
"language-hr": "Croatian",
"language-hu": "Hungarian",
+ "language-hy-am": "Armenian",
"language-id": "Indonesian",
"language-ig": "Igbo",
"language-it": "Italian",
@@ -39,12 +47,14 @@
"language-ka": "Georgian",
"language-kk": "Kazakh",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Korean",
"language-lt": "Lithuanian",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malay",
"language-nb": "Norwegian",
+ "language-ne-np": "Nepali",
"language-nl": "Dutch",
"language-pcm": "Nigerian Pidgin",
"language-fil": "Filipino",
@@ -58,8 +68,9 @@
"language-sl": "Slovenian",
"language-sr": "Serbian",
"language-sw": "Swahili",
- "language-th": "Thai",
"language-ta": "Tamil",
+ "language-th": "Thai",
+ "language-tk": "Turkmen",
"language-tr": "Turkish",
"language-uk": "Ukrainian",
"language-ur": "Urdu",
diff --git a/src/intl/fil/page-stablecoins.json b/src/intl/fil/page-stablecoins.json
index 2c38ae954a5..7874ec739ab 100644
--- a/src/intl/fil/page-stablecoins.json
+++ b/src/intl/fil/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Source",
"page-stablecoins-bitcoin-pizza": "Ang sikat na Bitcoin pizza",
"page-stablecoins-bitcoin-pizza-body": "Noong 2010, may bumili ng 2 pizza gamit ang 10,000 bitcoin. Noong panahong ito, ~$41 USD ang katumbas nito. Sa kasalukuyang market, katumbas iyon ng milyong-milyong dolyar. Maraming nakakapanghinayang na transaksyon sa kasaysayan ng Ethereum na katulad nito. Malulutas ng mga stablecoin ang ganitong problema, kaya makakain mo ang pizza mo at maitatabi mo ang ETH mo.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard at Edukasyon",
"page-stablecoins-coin-price-change": "Pagbabago sa presyo ng coin (nakalipas na 30 araw)",
"page-stablecoins-crypto-backed": "Crypto backed",
"page-stablecoins-crypto-backed-con-1": "Hindi masyadong stable kumpara sa mga fiat-backed stablecoin.",
diff --git a/src/intl/fr/common.json b/src/intl/fr/common.json
index 2c50d192156..5cc7cec9341 100644
--- a/src/intl/fr/common.json
+++ b/src/intl/fr/common.json
@@ -15,6 +15,9 @@
"aria-toggle-menu-button": "Basculer le bouton du menu",
"beacon-chain": "Chaîne phare",
"bridges": "Ponts de connexion blockchain",
+ "bug-bounty": "Prime de bogue",
+ "build": "Construire",
+ "build-menu": "Construire le menu",
"clear": "Traitée",
"close": "Fermer",
"community": "Communauté",
@@ -31,14 +34,15 @@
"copied": "Copié",
"copy": "Copier",
"danksharding": "Danksharding",
- "dao-page": "Organisations autonomes décentralisées (DAO)",
+ "dao-page": "DAO - Organisations autonomes décentralisées",
"dark-mode": "Sombre",
"data-provided-by": "Source de données :",
- "decentralized-applications-dapps": "Applications décentralisées (dApps)",
+ "decentralized-applications-dapps": "DApps - Applications décentralisées",
"decentralized-identity": "Identité décentralisée",
"decentralized-social-networks": "Réseaux sociaux décentralisés",
- "decentralized-science": "Science décentralisée (DeSci)",
- "defi-page": "Finance décentralisée (DeFi)",
+ "decentralized-science": "DeSci - Science décentralisée",
+ "description": "Description de l'élément de navigation",
+ "defi-page": "DeFi - Finance décentralisée",
"design": "Conception",
"design-principles": "Principes de conception",
"devcon": "Devcon",
@@ -76,7 +80,7 @@
"ethereum-bug-bounty": "Programme de chasse aux bogues d'Ethereum",
"consensus-when-shipping": "C'est pour quand ?",
"ethereum-upgrades": "Mises à niveau d'Ethereum",
- "ethereum-brand-assets": "Éléments de la marque Ethereum",
+ "ethereum-brand-assets": "Actifs de la marque Ethereum",
"ethereum-online": "Communautés en ligne",
"ethereum-events": "Évènements Ethereum",
"ethereum-foundation": "Ethereum Foundation",
@@ -96,7 +100,7 @@
"feedback-card-prompt-tutorial": "Ce tutoriel vous a été utile ?",
"feedback-widget-thank-you-title": "Merci pour vos commentaires !",
"feedback-widget-thank-you-subtitle": "Améliorez cette page en répondant à quelques questions.",
- "feedback-widget-thank-you-subtitle-ext": "Si vous avez besoin d'aide, you pouvez contacter la communauté sur notre Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Si vous avez besoin d'aide, vous pouvez contacter la communauté sur notre Discord.",
"feedback-widget-thank-you-timing": "2-3 min",
"feedback-widget-thank-you-cta": "Ouvrir l'enquête courte",
"find-wallet": "Trouver un portefeuille",
@@ -143,10 +147,115 @@
"mainnet-ethereum": "Réseau principal Ethereum",
"merge": "Fusion",
"more": "Plus",
- "nav-developers": "Développeurs",
+ "nav-about-description": "Un projet public et open-source pour la communauté Ethereum",
+ "nav-advanced-description": "Maîtriser les sujets les plus complexes",
+ "nav-advanced-label": "Avancé",
+ "nav-basics-description": "Comprendre les fondamentaux d'Ethereum",
+ "nav-basics-label": "Les bases",
+ "nav-bridges-description": "Le Web3 a évolué vers un écosystème de blockchains primaires de couche 1 et de solutions de mise à l'échelle de couche 2",
+ "nav-builders-home-description": "Un manuel de construction pour Ethereum - par ceux qui le construisent, pour ceux qui le construisent",
+ "nav-builders-home-label": "Homepage constructeur",
+ "nav-contribute-description": "Pour contribuer, suivez ces recommandations",
+ "nav-contribute-label": "Contribuer à ethereum.org",
+ "nav-dao-description": "Des communautés détenues par leurs membres sans autorité centralisée",
+ "nav-dapps-description": "Découvrez un riche écosystème d'applications utilisant Ethereum",
+ "nav-defi-description": "Une alternative ouverte et globale au marché financier traditionnel",
+ "nav-desci-description": "Une alternative ouverte et globale au système scientifique actuel",
+ "nav-desoc-description": "Des plateformes basées sur la blockchain favorisant les interactions sociales et la création de contenu",
"nav-developers-docs": "Documentation pour les développeurs",
+ "nav-developers": "Développeurs",
+ "nav-did-description": "Émettez et possédez vos identifiants décentralisés uniques",
+ "nav-docs-description": "Des documents pour vous aider à comprendre et à construire avec Ethereum",
+ "nav-docs-design-description": "Description des défis uniques en matière de conception web3, des bonnes pratiques et des résultats de recherche des utilisateurs",
+ "nav-docs-design-label": "Les fondamentaux du UX/UI design",
+ "nav-docs-foundation-description": "Principes de base pour développer sur Ethereum",
+ "nav-docs-foundation-label": "Sujets fondamentaux",
+ "nav-docs-overview-description": "Votre centre de documentation pour les développeurs",
+ "nav-docs-stack-description": "Comprendre tous les détails de la pile Ethereum",
+ "nav-docs-stack-label": "Pile d'Ethereum",
+ "nav-eip-description": "Normes définissant de nouvelles caractéristiques ou de nouveaux processus",
+ "nav-eip-label": "EIP - Propositions d'amélioration d'Ethereum",
+ "nav-emerging-description": "Découvrez d'autres cas d'utilisation plus récents d'Ethereum",
+ "nav-emerging-label": "Cas d'utilisation émergents",
+ "nav-enterprise-description": "Applications commerciales d'Ethereum",
+ "nav-ethereum-org-description": "Ce site web est animé par la communauté - rejoignez-nous et contribuez vous aussi",
+ "nav-ethereum-wallets-description": "Une application pour interagir avec votre compte Ethereum",
+ "nav-events-description": "Décentralisation et liberté de participation pour tous",
+ "nav-events-irl-description": "Chaque mois, des événements majeurs liés à Ethereum sont organisés en personne ou en ligne",
+ "nav-events-label": "Communautés et événements",
+ "nav-events-online-description": "Des centaines de milliers de passionnés d'Ethereum participent à ces communautés en ligne",
+ "nav-find-wallet-description": "Les portefeuilles vous permettent d'utiliser des cryptomonnaies",
+ "nav-find-wallet-label": "Choisissez votre portefeuille",
+ "nav-gas-fees-description": "Comment sont calculés les frais de transaction ETH ?",
+ "nav-gas-fees-label": "Frais de Gaz",
+ "nav-get-eth-description": "Vous avez besoin d'éther (ETH) pour utiliser les applications Ethereum",
+ "nav-get-started-description": "Vos premiers pas pour utiliser Ethereum",
+ "nav-governance-description": "Le processus de mise à jour du protocole Ethereum",
+ "nav-governance-label": "Gouvernance",
+ "nav-grants-description": "Une liste établie par notre communauté sur les projets proposant des programmes de financement sous forme de bourses",
+ "nav-guide-create-account-description": "Tout le monde peut créer un compte Ethereum à tout moment, gratuitement, avec une application de portefeuille",
+ "nav-guide-create-account-label": "Comment créer un compte Ethereum",
+ "nav-guide-revoke-access-description": "Restez en sécurité en interagissant avec les contrats intelligents et les applications dans l'écosystème Ethereum",
+ "nav-guide-revoke-access-label": "Comment révoquer l'accès à un contrat intelligent ?",
+ "nav-guide-use-wallet-description": "Apprenez à utiliser toutes les fonctions de base d'un portefeuille",
+ "nav-guide-use-wallet-label": "Comment utiliser un portefeuille",
+ "nav-guides-description": "Des guides pratiques étape par étape pour vous aider à démarrer",
+ "nav-guides-label": "Guides de procédures",
+ "nav-history-description": "Une chronologie de toutes les principales fourches et mises à jour",
+ "nav-history-label": "Histoire technique d'Ethereum",
+ "nav-layer-2-description": "Des transactions moins chères et plus rapides pour Ethereum",
+ "nav-learn-by-coding-description": "Des outils qui vous aident à expérimenter avec Ethereum",
+ "nav-local-env-description": "Choisissez et mettez en place votre pile de développement Ethereum",
+ "nav-mainnet-description": "Les applications blockchain d'entreprise peuvent être créées sur le réseau public principal Ethereum",
+ "nav-nft-description": "Un moyen de représenter tout ce qui est unique en tant qu'actif Ethereum",
+ "nav-open-research-description": "L'un des principaux atouts d'Ethereum est sa communauté de recherche active",
+ "nav-open-research-label": "Recherche ouverte",
+ "nav-overview-description": "Tout savoir sur l'éducation à l'Ethereum",
+ "nav-overview-label": "Aperçu",
+ "nav-participate-overview-description": "Aperçu des modalités de participation",
"nav-primary": "Principale",
- "nft-page": "Jetons non fongibles (NFTs)",
+ "nav-private-description": "Ressources Ethereum pour les développeurs en entreprise",
+ "nav-quizzes-description": "Découvrez dans quelle mesure vous comprenez Ethereum et les cryptomonnaies",
+ "nav-quizzes-label": "Testez vos connaissances",
+ "nav-refi-description": "Un système économique alternatif fondé sur les principes de la régénération",
+ "nav-research-description": "Processus utilisés pour améliorer Ethereum",
+ "nav-research-label": "Recherche et développement",
+ "nav-roadmap-description": "La voie vers davantage d'évolutivité, de sécurité et de durabilité pour Ethereum",
+ "nav-roadmap-future-description": "Consolider Ethereum en tant que réseau robuste et décentralisé",
+ "nav-roadmap-future-label": "Pérenniser",
+ "nav-roadmap-label": "Feuille de route",
+ "nav-roadmap-scaling-description": "Mise à jour du réseau pour réduire davantage les coûts et la vitesse des transactions",
+ "nav-roadmap-scaling-label": "Transactions plus abordables",
+ "nav-roadmap-security-description": "Veiller à ce qu'Ethereum reste résilient face à tous les types d'attaques à venir",
+ "nav-roadmap-security-label": "Sécurité renforcée",
+ "nav-roadmap-ux-description": "L'utilisation d'Ethereum doit être simplifiée",
+ "nav-roadmap-ux-label": "Meilleure expérience utilisateur",
+ "nav-run-a-node-description": "Devenez pleinement autonome tout en contribuant à la sécurisation du réseau",
+ "nav-security-description": "Apprenez les bonnes pratiques en matière d'utilisation des cryptomonnaies",
+ "nav-smart-contracts-description": "Les éléments fondamentaux de l'écosystème Ethereum",
+ "nav-stablecoins-description": "Les Stablecoins sont des jetons Ethereum conçus pour conserver une valeur fixe",
+ "nav-stake-description": "Gagnez des récompenses en sécurisant Ethereum",
+ "nav-stake-label": "Mise",
+ "nav-staking-home-description": "Un aperçu des différentes options de mise en jeu",
+ "nav-staking-home-label": "Accueil mise en jeu",
+ "nav-staking-pool-description": "Misez et gagnez des récompenses avec n'importe quel montant en ETH en vous joignant à d'autres personnes",
+ "nav-staking-pool-label": "Mise en jeu en pool",
+ "nav-staking-saas-description": "Les opérateurs de nœuds tiers gèrent le fonctionnement de votre client de validateur",
+ "nav-staking-saas-label": "Mise en jeu en tant que service",
+ "nav-staking-solo-description": "Faites fonctionner votre propre matériel et contribuez ainsi à la sécurité et la décentralisation du réseau Ethereum",
+ "nav-staking-solo-label": "Mise en jeu en solo",
+ "nav-start-building-description": "Informations utiles pour les nouveaux venus",
+ "nav-translation-program-description": "Un effort collaboratif pour traduire ethereum.org dans toutes les langues",
+ "nav-tutorials-description": "Liste de tutoriels de la communauté",
+ "nav-use-cases-description": "Découvrez des idées originales d'utilisation d'Ethereum",
+ "nav-use-cases-label": "Cas d'usage",
+ "nav-what-is-ether-description": "La monnaie des applications Ethereum",
+ "nav-what-is-ethereum-description": "Comprendre la spécificité d'Ethereum",
+ "nav-what-is-web3-label": "Qu'est-ce que le Web3 ?",
+ "nav-what-is-web3-description": "Une alternative aux monopoles centralisés qui dictent les règles",
+ "nav-whitepaper-description": "Le livre blanc original d'Ethereum écrit par Vitalik Buterin en 2014",
+ "nav-zkp-description": "Une façon de prouver la validité d'une information sans révéler l'information elle-même",
+ "nft-page": "NFTs - Jetons non fongibles",
"nfts": "NFTs",
"no": "Non",
"on-this-page": "Sur cette page",
@@ -154,6 +263,8 @@
"page-developers-aria-label": "Menu des développeurs",
"page-index-meta-title": "Accueil",
"page-last-updated": "Dernière mise à jour de la page",
+ "participate": "Participer",
+ "participate-menu": "Menu de participation",
"pbs": "Séparation entre le validateur et le constructeur de blocs",
"pools": "Mise en jeu en pool",
"privacy-policy": "Politique de confidentialité",
@@ -164,9 +275,11 @@
"refresh": "Veuillez actualiser la page.",
"return-home": "retour à l'accueil",
"roadmap": "Feuille de route d'Ethereum",
+ "research": "Recherche",
+ "research-menu": "Menu de recherche",
"resources": "Traduction des ressources",
- "regenerative-finance": "Finance régénérative (ReFi)",
- "run-a-node": "Exécuter un nœud",
+ "regenerative-finance": "ReFi - Finance régénérative",
+ "run-a-node": "Ajouter un nœud",
"rollup-component-website": "Site Web",
"rollup-component-developer-docs": "Documentation pour les développeurs",
"rollup-component-technology-and-risk-summary": "Résumé des technologies et des risques",
@@ -211,8 +324,10 @@
"try-using-search": "Essayez d'utiliser la recherche pour trouver ce que vous cherchez ou",
"tutorials": "Tutoriels",
"up": "Vers le haut",
+ "use": "Utiliser",
"use-ethereum": "Utiliser Ethereum",
"use-ethereum-menu": "Utiliser le menu Ethereum",
+ "use-menu": "Utiliser le menu",
"user-experience": "Expérience utilisateur",
"verkle-trees": "Les arbres de Verkle",
"wallets": "Portefeuilles",
diff --git a/src/intl/fr/glossary.json b/src/intl/fr/glossary.json
new file mode 100644
index 00000000000..c819f40b517
--- /dev/null
+++ b/src/intl/fr/glossary.json
@@ -0,0 +1,344 @@
+{
+ "51%-attack-term": "Attaque de 51 %",
+ "51%-attack-definition": "Un type d'attaque sur un réseau décentralisé où un groupe prend le contrôle de la majorité des nœuds. Cela leur permettrait de frauder la blockchain en inversant des transactions et en dépensant deux fois de l'éther et d'autres jetons.",
+ "account-term": "Compte",
+ "account-definition": "Un objet contenant une adresse, un solde, un nonce, ainsi qu'un stockage et un code facultatifs. Un compte peut être un compte de contrat ou un compte externe (EOA).
En savoir plus sur les comptes Ethereum.",
+ "address-term": "Adresse",
+ "address-definition": "Plus généralement, il s'agit d'un compte externe (EOA) ou d'un compte de contrat qui peut recevoir (adresse de destination) ou envoyer (adresse source) des transactions sur la blockchain. Plus précisément, il s'agit des 160 bits les plus à droite d'un hachage Keccak d'une clé publiqueECDSA.",
+ "abi-term": "Interface Binaire d'Application (ABI)",
+ "abi-definition": "La manière standard d'interagir avec les contrats dans l'écosystème Ethereum, à la fois depuis l'extérieur de la blockchain et pour les interactions de contrat à contrat. En savoir plus sur ABI.",
+ "api-term": "Interface de Programmation des Applications (API)",
+ "api-definition": "Une interface de programmation d'application (API) est un ensemble de définitions sur la manière d'utiliser un logiciel. Une API se situe entre une application et un serveur web, et facilite le transfert de données entre eux.",
+ "asic-term": "ASIC",
+ "asic-definition": "Circuit intégré spécifique à une application. Il s'agit généralement d'un circuit intégré conçu sur mesure pour le minage de crypto-monnaies.",
+ "assert-term": "asset",
+ "assert-definition": "Dans Solidity, `assert(false)` compile vers `0xfe`, un opcode invalide, qui utilise tout le gaz restant et annule tous les changements. Quand une déclaration `assert()` échoue, quelque chose de très mauvais et d'inattendu est en train de se produire, et vous devrez corriger votre code. Vous devriez utiliser `assert()` pour éviter des conditions qui ne devraient jamais se produire. En savoir plus sur la sécurité des contrats intelligents.",
+ "attestation-term": "Attestation",
+ "attestation-definition": "Une affirmation faite par une entité que quelque chose est vrai. Dans le contexte d'Ethereum, les validateurs de consensus doivent affirmer ce qu'ils pensent être l'état de la chaîne. À certains moments, chaque validateur est responsable de la publication de différentes attestations qui déclarent formellement son point de vue sur la chaîne, y compris le dernier point de contrôle finalisé et la tête actuelle de la chaîne. En savoir plus sur les attestations.",
+ "base-fee-term": "Frais de base",
+ "base-fee-definition": "Chaque bloc, fournit un prix de réserve connu sous le nom de 'base fee'. Cela représente les frais minimum par unité de gas, qu'un utilisateur aura a payer après avoir choisi la transaction à inclure dans le bloc suivant. En savoir plus sur les frais de gas.",
+ "beacon-chain-term": "Chaîne phare",
+ "beacon-chain-definition": "La Chaîne phare est la blockchain qui a introduit la preuve d'enjeu et les validateurs dans Ethereum. Elle a fonctionné parallèlement au réseau principal Ethereum de preuve de travail de décembre 2020 jusqu'à ce que les deux chaînes soient fusionnées en septembre 2022 pour former l'Ethereum d'aujourd'hui. En savoir plus sur la Chaîne phare.",
+ "big-endian-term": "Big-endian",
+ "big-endian-definition": "Représentation positionnelle des nombres où le chiffre le plus significatif est le premier dans la mémoire. Le contraire de little-endian, où le chiffre le moins significatif est le premier.",
+ "block-term": "Bloc",
+ "block-definition": "Un bloc est une unité d'informations regroupées qui comprend une liste ordonnée de transactions et d'informations liées au consensus. Les blocs sont proposés par des validateurs de preuve d'enjeu, puis partagés sur l'ensemble du réseau pair-à-pair, où ils peuvent facilement être vérifiés de manière indépendante par tous les autres nœuds. Les règles de consensus régissent le contenu d'un bloc qui est considéré comme valide, et tout bloc non valide est ignoré par le réseau. L'ordre de ces blocs et les transactions qu'ils contiennent créent une chaîne d'événements déterministe dont la fin représente l'état actuel du réseau. En savoir plus sur les blocs.",
+ "block-explorer-term": "Explorateur de bloc",
+ "block-explorer-definition": "Une interface qui permet à un utilisateur de rechercher des informations à partir d'une blockchain et à son sujet. Cela comprend la récupération de transactions individuelles, d'activités associées à des adresses spécifiques et d'informations sur le réseau.",
+ "block-header-term": "Les en-têtes de bloc",
+ "block-header-definition": "L'en-tête de bloc est une collection de métadonnées à propos d'un bloc et un résumé des transactions incluses dans le bloc d'exécution.",
+ "block-propagation-term": "Propagation de bloc",
+ "block-propagation-definition": "Le procédé de transmission de la confirmation d'un bloc à tous les autres nœuds au sein du réseau.",
+ "block-proposer-term": "Proposant de bloc",
+ "block-proposer-definition": "Validateur spécifique choisi pour créer un bloc dans un créneau particulier.",
+ "block-reward-term": "Récompense du bloc",
+ "block-reward-definition": "C'est le total d'ether reversé au proposant d'un nouveau bloc valide.",
+ "block-status-term": "État du bloc",
+ "block-status-definition": "Les états dans lesquels un bloc peut exister. Les états possibles sont les suivants :
proposé : le bloc a été proposé par un validateur
programmé : les validateurs sont en train de soumettre des données
manqué/supprimé : le proposant n'a pas proposé de bloc dans le délai imparti
.",
+ "block-time-term": "Durée de blocage",
+ "block-time-definition": "L'intervalle de temps entre les blocs ajoutés à la blockchain.",
+ "block-validation-term": "Validation de bloc",
+ "block-validation-definition": "Le processus consistant à vérifier qu'un nouveau bloc contient des transactions et des signatures valides, qu'il s'appuie sur la chaîne historique la plus lourde et qu'il respecte toutes les autres règles de consensus. Les blocs valides sont ajoutés à la fin de la chaîne et propagés aux autres membres du réseau. Les blocs non valides sont ignorés.",
+ "blockchain-term": "Blockchain",
+ "blockchain-definition": "Il s'agit d'une séquence de blocs, chacun d'entre eux étant lié à son prédécesseur jusqu'au bloc d'origine en se référant au hachage du bloc précédent. L'intégrité de la blockchain est crypto-économiquement garantie par un mécanisme de consensus basé sur la preuve de l'enjeu. Qu'est-ce qu'une blockchain ?",
+ "bootnode-term": "Nœud d'amorçage",
+ "bootnode-definition": "Les nœuds qui peuvent être utilisés pour lancer le processus de découverte lors de l'exécution d'un nœud. Les points de terminaison de ces nœuds sont enregistrés dans le code source d'Ethereum.",
+ "bytecode-term": "Bytecode",
+ "bytecode-definition": "Ensemble d'instructions abstraites conçu pour être exécuté efficacement par un interprète logiciel ou une machine virtuelle. Contrairement au code source lisible par l'homme, le bytecode est exprimé en format numérique.",
+ "byzantium-fork-term": "fourche Byzantium",
+ "byzantium-fork-definition": "Le premier de deux hard forks pour l'étape de développement Metropolis. Il comprenait l'EIP-649 Metropolis Difficulty Bomb Delay et Block Reward Reduction, où l'âge de glace a été retardé d'un an et la récompense en blocs a été réduite de 5 à 3 Ethers.",
+ "casper-ffg-term": "Casper FFG",
+ "casper-ffg-definition": "Casper-FFG est un protocole de consensus par preuve d'enjeu utilisé avec l'algorithme de choix de fourche LMD-GHOST pour permettre à des clients de consensus de s'entendre sur la tête de la chaîne phare.",
+ "checkpoint-term": "Point de contrôle",
+ "checkpoint-definition": "La chaîne phare a un tempo divisé en créneaux (12 secondes) et en époques (32 créneaux). Le premier créneau de chaque époque est un point de contrôle. Lorsqu'une supermajorité de validateurs atteste du lien entre deux points de contrôle, ceux-ci peuvent être justifiés, puis lorsqu'un autre point de contrôle est justifié par-dessus, ils peuvent être finalisés.",
+ "compiling-term": "Compiler",
+ "compiling-definition": "Traduire du code écrit dans un langage de programmation de haut niveau (par exemple, Solidity) en un langage de plus bas niveau (par exemple, le bytecode de l'EVM).Plus d'informations sur la compilation de contrats intelligents",
+ "committee-term": "Comité",
+ "committee-definition": "Un groupe d'au moins 128 validateurs chargés de valider les blocs dans chaque créneau. L'un des validateurs du comité est l'agrégateur, chargé d'agréger les signatures de tous les autres validateurs du comité qui s'accordent sur une attestation. À ne pas confondre avec le comité de synchronisation.",
+ "computational-infeasibility-term": "Infaisabilité informatique",
+ "computational-infeasibility-definition": "Un processus est infaisable sur le plan informatique s'il prenait un temps excessivement long (par exemple, des milliards d'années) pour quiconque pourrait avoir un intérêt à le mettre en œuvre.",
+ "consensus-term": "Consensus",
+ "consensus-definition": "Lorsqu'une supermajorité de nœuds du réseau dispose de tous les mêmes blocs dans la meilleure blockchain validée localement. À ne pas confondre avec les règles de consensus.",
+ "consensus-client-term": "Client de consensus",
+ "consensus-client-definition": "Les clients de consensus (tels que Prysm, Teku, Nimbus, Lighthouse, Lodestar) exécutent l'algorithme de consensus par preuve d'enjeu d'Ethereum, ce qui permet au réseau de parvenir à un accord sur la tête de la chaîne de balises. Les clients de consensus ne participent pas à la validation/diffusion des transactions ni à l'exécution des transitions d'état. Ces tâches sont effectuées par le client d'exécution.",
+ "consensus-layer-term": "Couche de consensus",
+ "consensus-layer-definition": "La couche de consensus d'Ethereum est le réseau des clients de consensus.",
+ "consensus-rules-term": "Règles de consensus",
+ "consensus-rules-definition": "Les règles de validation des blocs que les nœuds complets suivent pour rester en consensus avec les autres nœuds. À ne pas confondre avec le consensus.",
+ "cfi-term": "Envisagé pour inclusion (CFI)",
+ "cfi-definition": "Un Core EIP qui n'est pas encore actif sur le réseau pricnipal, et les développeurs de clients sont généralement favorables à l'idée. En supposant qu'il remplisse toutes les conditions d'inclusion sur le réseau principal, il pourrait être inclus dans une mise à jour du réseau (pas nécessairement la prochaine).",
+ "constantinople-fork-term": "Fourche Constantinople",
+ "constantinople-fork-definition": "La deuxième partie de l'étape Metropolis, initialement prévue pour la mi-2018. Elle devrait inclure le passage à un algorithme de consensus hybride avec preuve de travail et preuve d'enjeu, entre autres changements.",
+ "contract-account-term": "Compte d'un contract",
+ "contract-account-definition": "Compte contenant du code qui s'exécute chaque fois qu'il reçoit une transaction d'un autre compte (qu'il s'agisse d'un compte externe ou d'un contrat).",
+ "contract-creation-transaction-term": "Transaction de création de contrat",
+ "contract-creation-transaction-definition": "Une transaction spéciale qui inclut le code d'initiation d'un contrat. Le destinataire est défini à `null` et le contrat est déployé à une adresse générée à partir de l'adresse de l'utilisateur et de `nonce`, qui est utilisé pour enregistrer un contrat et l'enregistrer sur la blockchain Ethereum.",
+ "cryptoeconomics-term": "Cryptoéconomies",
+ "cryptoeconomics-definition": "L'économie des cryptomonnaies.",
+ "doge-d-term": "Đ",
+ "doge-d-definition": "Đ (D avec trait) est utilisé en vieil anglais, en moyen anglais, en islandais et en féroïen pour représenter la lettre majuscule « Eth ». Il est utilisé dans des mots comme ĐEV ou Đapp (application décentralisée), où le Đ est la lettre nordique « eth ». L'eth majuscule (Ð) est également utilisé pour symboliser la crypto-monnaie Dogecoin. On le voit couramment dans l'ancienne littérature d'Ethereum, mais il est moins utilisé aujourd'hui.",
+ "dag-term": "DAG",
+ "dag-definition": "DAG signifie Directed Acyclic Graph (graphe acyclique dirigé). Il s'agit d'une structure de données composée de nœuds et de liens entre eux. Avant la Fusion, Ethereum utilisait un DAG dans son algorithme de preuve de travail, Ethash, mais il n'est plus utilisé dans la preuve d'enjeu.",
+ "dapp-term": "DApp",
+ "dapp-definition": "Application décentralisée. Il s'agit au minimum d'un contrat intelligent et d'une interface utilisateur web. Plus généralement, une dApp est une application web construite sur des services d'infrastructure peer-to-peer ouverts et décentralisés. En outre, de nombreuses dApps incluent un stockage décentralisé et/ou un protocole et une plateforme de messages. Introduction aux dApps",
+ "data-availability-term": "Disponibilité des données",
+ "data-availability-definition": "Propriété permettant à tout noeud connecté au réseau de télécharger n'importe quelle portion de l'état qu'il souhaite.",
+ "decentralization-term": "Décentralisation",
+ "decentralization-definition": "Action de transférer le contrôle et l'exécution des processus en dehors d'une entité centrale.",
+ "dao-term": "Organisation autonome décentralisée (DAO)",
+ "dao-definition": "Une entreprise ou une autre organisation qui fonctionne sans direction hiérarchique. DAO peut également faire référence à un contrat nommé « The DAO » lancé le 30 avril 2016, qui a ensuite été piraté en juin 2016 ; cela a finalement motivé une fourche majeure (nom de code DAO) au bloc 1 192 000, qui a inversé le contrat DAO piraté et a provoqué la scission d'Ethereum et d'Ethereum Classic en deux systèmes concurrents. En savoir plus sur les organisations autonomes décentralisées (DAO)",
+ "dex-term": "Échange décentralisé (DEX)",
+ "dex-definition": "Un type de dApp qui vous permet d'échanger des jetons avec des pairs sur le réseau. Vous avez besoin d'ether pour l'utiliser (pour payer les frais de transaction) mais elles ne sont soumises à aucune restriction géographique contrairement aux plateformes d'échanges centralisés et n'importe qui peut participer.",
+ "deposit-contract-term": "Contrat de dépôt",
+ "deposit-contract-definition": "La passerelle vers le staking sur Ethereum. Le contrat de dépôt est un contrat intelligent sur Ethereum qui accepte les dépôts d'ETH et gère les soldes des validateurs. Un validateur ne peut être activé sans déposer de l'ETH dans ce contrat. Le contrat nécessite de l'ETH et des données d'entrée. Ces données d'entrée comprennent la clé publique du validateur et la clé publique du retrait, signées par la clé privée du validateur. Ces données sont nécessaires pour qu'un validateur soit identifié et approuvé par le réseau de preuve d'enjeu.",
+ "defi-term": "DeFi",
+ "defi-definition": "Abréviation de « Decentralized Finance » (finance décentralisée), vaste catégorie d'dApps visant à fournir des services financiers sur toute la blockchain, sans aucun intermédiaire et de sorte que toute personne ayant une connexion Internet puisse participer. En savoir plus sur la finance décentralisée (DeFi).",
+ "difficulty-term": "Difficulté",
+ "difficulty-definition": "Un paramètre à l'échelle du réseau dans les réseaux de preuve de travail qui contrôle la quantité de calcul moyenne nécessaire pour trouver un nonce valide. La difficulté est représentée par le nombre de zéros en tête qui sont nécessaires dans le hachage du bloc résultant pour qu'il soit considéré comme valide. Ce concept est obsolète dans Ethereum depuis la transition vers la preuve d'enjeu.",
+ "difficulty-bomb-term": "Bombe de difficulté",
+ "difficulty-bomb-definition": "Augmentation exponentielle planifiée du paramètre de difficulté de la preuve de travail qui a été conçue pour inciter à la transition vers la preuve d'enjeu, réduisant les possibilités d'une fourche. La bombe de difficulté a été supprimée lors de la Fusion.",
+ "digital-signatures-term": "Signature numérique",
+ "digital-signatures-definition": "Une courte chaîne de données qu'un utilisateur produit pour un document à l'aide d'une clé privée, de sorte que toute personne disposant de la clé publique correspondante, de la signature et du document peut vérifier que (1) le document a été « signé » par le propriétaire de cette clé privée particulière, et (2) que le document n'a pas été modifié après avoir été signé.",
+ "discovery-term": "La découverte",
+ "discovery-definition": "Procédé au cours duquel un noeud du réseau Ethereum trouve d'autres nœuds auxquels se connecter.",
+ "distributed-hash-table-term": "Table d'empreintes numériques distribuée (DHT)",
+ "distributed-hash-table-definition": "Une structure de données contenant des paires `(key, value)` utilisées par les nœuds Ethereum pour identifier les pairs auxquels se connecter et déterminer les protocoles à utiliser pour communiquer.",
+ "double-spend-term": "Double dépense",
+ "double-spend-definition": "Il s'agit d'un fork délibéré de la blockchain, dans lequel un utilisateur disposant d'une puissance minière ou d'un enjeu suffisamment important envoie une transaction déplaçant une certaine devise hors de la chaîne (par exemple, en sortant en monnaie fiduciaire ou en effectuant un achat hors de la chaîne), puis réorganise la blockchain afin de supprimer cette transaction. Une double dépense réussie laisse l'attaquant avec ses actifs sur la chaîne et hors chaîne.",
+ "ecdsa-term": "Algorithme de Signature Numérique à Courbe Elliptique (ECDSA)",
+ "ecdsa-definition": "Algorithme cryptographique utilisé par Ethereum pour garantir que les fonds ne peuvent être dépensés que par leurs propriétaires. C'est la méthode préférée pour créer des clés publiques et privées. Pertinent pour la génération d'adresses de compte et la vérification des transactions.",
+ "encryption-term": "Chiffrement",
+ "encryption-definition": "Le cryptage de données est la conversion électronique en une forme illisible exceptée par le détenteur de la clé correspondante de décryptage.",
+ "entropy-term": "Entropie",
+ "entropy-definition": "Dans le contexte de la cryptographie, manque de prévisibilité ou niveau d'erreurs. Lorsqu'ils génèrent des informations secrètes, telles que des clés privées, les algorithmes s'appuient généralement sur une source d'entropie élevée pour s'assurer que le résultat est imprévisible.",
+ "epoch-term": "Période",
+ "epoch-definition": "Une période de 32 créneaux, chaque créneau étant de 12 secondes, soit un total de 6,4 minutes. Les comités de validation sont mélangés à chaque époque pour des raisons de sécurité. Chaque époque est l'occasion de finaliser la chaîne. Chaque validateur se voit attribuer de nouvelles responsabilités au début de chaque époque. En savoir plus sur la preuve d'enjeu.",
+ "equivocation-term": "Ambiguïté",
+ "equivocation-definition": "Un validateur qui envoie deux messages qui se contredisent. Un exemple simple est celui d'un émetteur de transaction qui envoie deux transactions avec le même nonce. Un autre exemple est celui d'un proposant de bloc qui propose deux blocs à la même hauteur de bloc (ou pour le même créneau).",
+ "eth1-term": "Eth1",
+ "eth1-definition": "'Eth1' est un terme qui se réfère au réseau principal Ethereum, la blockchain de preuve de travail existante. Ce terme a depuis été abandonné au profit de la 'couche d'exécution'. En savoir plus sur ce changement de nom.",
+ "eth2-term": "Eth2",
+ "eth2-definition": "'Eth2' est un terme qui faisait référence à un ensemble de mises à jour du protocole Ethereum, y compris la transition d'Ethereum vers la preuve d'enjeu. Ce terme a depuis été abandonné au profit de la 'couche de consensus'. En savoir plus sur ce changement de nom.",
+ "eip-term": "Proposition d'amélioration d'Ethereum (EIP)",
+ "eip-definition": "Document de conception visant à informer la communauté Ethereum qui décrit une nouvelle fonctionnalité proposée, ses processus ou son environnement (voir ERC). Introduction aux EIP",
+ "ens-term": "Ethereum Name Service (ENS)",
+ "ens-definition": "Le registre ENS est un contrat central unique qui fournit une correspondance entre des noms de domaine et des propriétaires et des résolveurs, comme décrit dans l'EIP-137. En savoir plus sur ens.domains",
+ "execution-client-term": "Client d'exécution",
+ "execution-client-definition": "Les clients d'exécution (anciennement appelés « clients Eth1 »), tels que Besu, Erigon, Go-Ethereum (Geth), Nethermind, sont chargés de traiter et de diffuser les transactions et de gérer l'état d'Ethereum. Ils exécutent les calculs pour chaque transaction en utilisant la machine virtuelle Ethereum pour s'assurer que les règles du protocole sont respectées.",
+ "execution-layer-term": "Couche d'exécution",
+ "execution-layer-definition": "La couche d'exécution d'Ethereum est le réseau des clients d'exécution.",
+ "eoa-term": "Compte externe (EOA)",
+ "eoa-definition": "Les comptes détenus en externe (EOA) sont des comptes contrôlés par des clés privées, généralement générées à l'aide d'une phrase de récupération. Contrairement aux contrats intelligents, les comptes détenus en externe sont des comptes auxquels aucun code n'est associé. En général, ces comptes sont gérés par un portefeuille.",
+ "erc-term": "Demande de commentaires Ethereum (ERC)",
+ "erc-definition": "Libellé donné à certaines EIP qui visent à définir une norme spécifique d'utilisation d'Ethereum.",
+ "ethash-term": "Ethash",
+ "ethash-definition": "Algorithme de preuve de travail qui a été utilisé sur Ethereum avant de passer à la preuve d'enjeu.En savoir plus.",
+ "ether-term": "Ether",
+ "ether-definition": "La crypto-monnaie native utilisée par l'écosystème Ethereum, qui couvre les coûts du gaz lors de l'exécution des transactions. Également écrit ETH ou son symbole Ξ, le caractère Xi majuscule grec. En savoir plus sur l'éther.",
+ "events-term": "Événements",
+ "events-definition": "Permet d'utiliser les fonctions de journalisation de l'EVM. Les dApps peuvent écouter les événements et les utiliser pour déclencher des rappels JavaScript dans l'interface utilisateur. En savoir plus sur les événements et les journaux.",
+ "evm-term": "Machine virtuelle Ethereum (EVM)",
+ "evm-definition": "Une machine virtuelle basée sur une pile qui exécute du bytecode. Avec Ethereum, le modèle d'exécution spécifie comment l'état du système est modifié compte tenu d'une série d'instructions bytecode et d'un petit tuple de données environnementales. Ceci est spécifié à travers un modèle formel d'une machine d'état virtuelle. En savoir plus sur la machine virtuelle Ethereum.",
+ "evm-assembly-language-term": "Langage d'assemblage de l'EVM",
+ "evm-assembly-language-definition": "Forme lisible par l'homme du bytecode de l'EVM.",
+ "fallback-function-term": "Fonction de secours",
+ "fallback-function-definition": "Fonction par défaut appelée en l'absence de données ou d'un nom de fonction déclaré.",
+ "faucet-term": "Robinet",
+ "faucet-definition": "Service exécuté via un contrat intelligent, qui distribue des fonds sous la forme d'ethers de test gratuits pouvant être utilisés sur un réseau de test.",
+ "finality-term": "Finalisation",
+ "finality-definition": "La finalité est la garantie qu'un ensemble de transactions effectuées avant un moment donné ne changera pas et ne pourra pas être annulé. En savoir plus sur la finalité de la preuve d'enjeu.",
+ "finney-term": "Finney",
+ "finney-definition": "Une dénomination d'ether. 1 finney = 1015wei. 103 finney = 1 ether.",
+ "fork-term": "Fourche",
+ "fork-definition": "Changement de protocole causant la création d'une chaîne alternative ou divergence temporelle en deux chemins de blocs potentiels.",
+ "fork-choice-algorithm-term": "Algorithme de sélection de fourche",
+ "fork-choice-algorithm-definition": "L'algorithme utilisé pour identifier la tête de la blockchain. Sur la couche d'exécution, la tête de la chaîne est identifiée comme étant celle qui présente la plus grande difficulté totale. Cela signifie que la véritable tête de la chaîne est celle qui a nécessité le plus de travail pour la miner. Dans la couche de consensus, l'algorithme observe les attestations cumulées des validateurs (LMD_GHOST).",
+ "fraud-proof-term": "Preuve de fraude",
+ "fraud-proof-definition": "Un modèle de sécurité pour certaines solutions de seconde couche où, pour augmenter la vitesse, les transactions sont regroupées en lots et soumises à Ethereum en une seule transaction. Elles sont présumées valides mais peuvent être contestées si une fraude est suspectée. Une preuve de fraude exécutera alors la transaction pour voir si une fraude a eu lieu. Cette méthode augmente le nombre de transactions possibles tout en maintenant la sécurité. Certains rollups utilisent des preuves de validité. En savoir plus sur les rollups optimistes.",
+ "frontier-term": "Frontier",
+ "frontier-definition": "Phase initiale de développement à des fins de test d'Ethereum, qui a duré de juillet 2015 à mars 2016.",
+ "gas-term": "Gaz",
+ "gas-definition": "Un carburant virtuel utilisé dans Ethereum pour exécuter des contrats intelligents. L'EVM utilise un mécanisme de comptabilité pour mesurer la consommation de gaz et limiter la consommation de ressources informatiques (voir Turing complet). En savoir plus sur le gaz et les frais.",
+ "gas-limit-term": "Limite de gaz",
+ "gas-limit-definition": "Montant maximum de gaz qu'une transaction ou qu'un bloc peut consommer.",
+ "gas-price-term": "Prix du gaz",
+ "gas-price-definition": "Prix en éther d'une unité de gaz spécifiée dans une transaction.",
+ "genesis-block-term": "Bloc d'origine",
+ "genesis-block-definition": "Premier bloc d'une blockchain, utilisé pour initialiser un certain réseau et sa cryptomonnaie.",
+ "geth-term": "Geth",
+ "geth-definition": "Go Ethereum. L'une des implémentations les plus importantes du protocole Ethereum, écrite en Go. En savoir plus sur geth.ethereum.org",
+ "gwei-term": "Gwei",
+ "gwei-definition": "Abréviation de gigawei, une dénomination de l'Ether, couramment utilisée pour fixer le prix du gaz. 1 gwei = 109wei. 109 gwei = 1 Ether.",
+ "hard-fork-term": "Fourche majeure",
+ "hard-fork-definition": "Une divergence permanente dans la blockchain, également connue sous le nom de « hard-forking change ». Une telle divergence se produit généralement lorsque des nœuds non mis à niveau ne peuvent pas valider des blocs créés par des nœuds mis à niveau qui suivent des règles de consensus plus récentes. À ne pas confondre avec un fork, un soft fork, un software fork ou un Git fork.",
+ "hash-term": "Empreinte numérique",
+ "hash-definition": "Une empreinte digitale de longueur fixe d'une entrée de taille variable, produite par une fonction de hachage. (Voir keccak-256).",
+ "hash-rate-term": "Taux de hachage",
+ "hash-rate-definition": "Nombre de calculs par seconde réalisé par les ordinateurs minant sur le réseau.",
+ "homestead-term": "Homestead",
+ "homestead-definition": "Deuxième phase de développement d'Ethereum, lancée en mars 2016 au bloc 1 150 000.",
+ "index-term": "Index",
+ "index-definition": "Structure réseau destinée à optimiser la sollicitation d'informations à travers la blockchain en fournissant un chemin efficace vers sa source de stockage.",
+ "ide-term": "Environnement de développement intégré (IDE)",
+ "ide-definition": "Une interface utilisateur qui combine généralement un éditeur de code, un compilateur, un moteur d'exécution et un débogueur. En savoir plus sur les environnements de développement intégrés.",
+ "immutable-deployed-code-problem-term": "Problème de code déployé immuable",
+ "immutable-deployed-code-problem-definition": "Une fois que le code d'un contrat (ou d'une bibliothèque) est déployé, il devient immuable. Les pratiques standard de développement de logiciels reposent sur la possibilité de corriger d'éventuels bogues et d'ajouter de nouvelles fonctionnalités, ce qui représente un défi pour le développement de contrats intelligents. En savoir plus sur le déploiement des contrats intelligents.",
+ "internal-transaction-term": "Transaction interne",
+ "internal-transaction-definition": "Transaction envoyée depuis un compte de contrat vers un autre compte de contrat ou vers un compte externe (EOA) (voir message).",
+ "issuance-term": "Émission",
+ "issuance-definition": "Frappe de nouveaux ethers pour récompenser la proposition de bloc, l'attestation et la dénonciation.",
+ "kdf-term": "Fonction de dérivation de clé (KDF)",
+ "kdf-definition": "Aussi appelée « algorithme d'étirement de mot de passe », elle est utilisée par les formats keystore pour protéger des attaques par force brute, par dictionnaire et table arc-en-ciel sur le chiffrement des phrases de sécurité, en hachant celles-ci de façon répétée.",
+ "keystore-term": "Keystore",
+ "keystore-definition": "La paire clé privée/adresse de chaque compte existe sous la forme d'un fichier clé unique dans un client Ethereum. Il s'agit de fichiers texte JSON qui contiennent la clé privée cryptée du compte, qui ne peut être décryptée qu'avec le mot de passe saisi lors de la création du compte.",
+ "keccak-256-term": "Keccak-256",
+ "keccak-256-definition": "Fonction de hachage cryptographique utilisée dans Ethereum. Keccak-256 a été standardisée en tant que SHA-3.",
+ "layer-2-term": "Niveau 2",
+ "layer-2-definition": "Un domaine de développement axé sur la superposition d'améliorations sur le protocole Ethereum. Ces améliorations concernent la vitesse des transactions, les frais de transaction moins élevés et la confidentialité des transactions. En savoir plus sur la couche 2.",
+ "library-term": "Bibliothèque",
+ "library-definition": "Un type spécial de contrat qui n'a pas de fonctions payantes, pas de fonction de repli et pas de stockage de données. Il ne peut donc pas recevoir ou conserver de l'éther, ni stocker des données. Une bibliothèque sert de code précédemment déployé que d'autres contrats peuvent appeler pour des calculs en lecture seule. En savoir plus sur les bibliothèques de contrats intelligents.",
+ "light-client-term": "Client léger",
+ "light-client-definition": "Un client Ethereum qui ne stocke pas de copie locale de la blockchain, ni ne valide les blocs et les transactions. Il offre les fonctions d'un portefeuille et peut créer et diffuser des transactions.",
+ "lmd-ghost-term": "LMD-GHOST",
+ "lmd-ghost-definition": "L'algorithme de choix de fourche utilisé par les clients de consensus d'Ethereum pour identifier la tête de la chaîne. LMD-GHOST est un acronyme signifiant \"Latest Message Driven Greediest Heaviest Observed SubTree\", ce qui signifie que la tête de la chaîne est le bloc qui a accumulé le plus grand nombre d'attestations dans son histoire.",
+ "mainnet-term": "Réseau principal",
+ "mainnet-definition": "Appelé « mainnet » en anglais (pour « main network »), il s'agit de la blockchain principale du réseau public Ethereum.",
+ "merkle-patricia-tree-term": "Arbre de Merkle (MTP)",
+ "merkle-patricia-tree-definition": "Structure des données utilisée dans Ethereum pour stocker efficacement les paires clés-valeurs.",
+ "message-term": "Message",
+ "message-definition": "Transaction interne qui n'est jamais sérialisée et qui est uniquement envoyée dans l'EVM.",
+ "message-call-term": "Appel de message",
+ "message-call-definition": "La transmission d'un message d'un compte à un autre. Si le compte de destination est associé au code EVM, la VM sera démarrée avec l'état de cet objet et le message sera traité.",
+ "mining-term": "Minage",
+ "mining-definition": "Le processus de hachage répété d'un en-tête de bloc tout en incrémentant un nonce jusqu'à ce que le résultat contienne un nombre arbitraire de zéros binaires de tête. C'est le processus par lequel de nouveaux blocs sont ajoutés à une blockchain à preuve de travail. C'est ainsi qu'Ethereum était sécurisé avant de passer à la preuve d'enjeu.",
+ "miner-term": "Mineur",
+ "miner-definition": "Un nœud du réseau qui trouve une preuve de travail valide pour les nouveaux blocs, par un hachage répété (voir Ethash). Les mineurs ne font plus partie d'Ethereum - ils ont été remplacés par des validateurs lorsque Ethereum est passé à la preuve d'enjeu.",
+ "mint-term": "Frapper",
+ "mint-definition": "La frappe de monnaie est le processus qui consiste à créer de nouveaux jetons et à les mettre en circulation pour qu'ils puissent être utilisés. Il s'agit d'un mécanisme décentralisé permettant de créer un nouveau jeton sans l'intervention d'une autorité centrale.",
+ "network-term": "Réseau",
+ "network-definition": "En référence au réseau Ethereum, un réseau pair-à-pair qui propage les transactions et les blocs à chaque nœud Ethereum (participant au réseau). En savoir plus sur les réseaux.",
+ "network-hashrate-term": "Puissance de hachage du réseau",
+ "network-hashrate-definition": "Le hashrate collectif produit par l'ensemble d'un réseau de minage. Le minage sur Ethereum a été désactivé lorsque Ethereum est passé à la preuve d'enjeu.",
+ "nft-term": "Jeton non fongible (NFT)",
+ "nft-definition": "Il s'agit d'une norme de jeton introduite par la proposition ERC-721. Les NFT peuvent être suivis et échangés, mais chaque jeton est unique et distinct ; ils ne sont pas interchangeables comme les jetons ETH et ERC-20. Les NFT peuvent représenter la propriété d'actifs numériques ou physiques. En savoir plus sur les jetons non fongibles (NFT).",
+ "node-term": "Nœud",
+ "node-definition": "Un client logiciel qui participe au réseau. En savoir plus sur les nœuds et les clients.",
+ "nonce-term": "Nonce",
+ "nonce-definition": "En cryptographie, une valeur qui ne peut être utilisée qu'une seule fois. Un nonce de compte est un compteur de transactions dans chaque compte, qui est utilisé pour empêcher les attaques par rejeu.",
+ "ommer-term": "Bloc oncle (ommer)",
+ "ommer-definition": "Lorsqu'un mineur en preuve de travail trouve un bloc valide, un autre mineur peut avoir publié un bloc concurrent qui est ajouté au bout de la blockchain en premier. Ce bloc valide, mais périmé, peut être inclus par des blocs plus récents en tant qu'ommers et recevoir une récompense de bloc partielle. Le terme « ommer » est le terme de genre neutre préféré pour désigner le frère ou la sœur d'un bloc parent, mais cela est parfois également appelé « oncle ». Cela était pertinent pour Ethereum lorsqu'il s'agissait d'un réseau de preuve de travail, mais les ommers ne sont pas une caractéristique de l'Ethereum de preuve d'enjeu car un seul proposeur de bloc est sélectionné dans chaque créneau.",
+ "optimistic-rollup-term": "Rollup optimisé",
+ "optimistic-rollup-definition": "Un rollup de transactions qui utilise des preuves de fraude pour offrir un débit de transactions en seconde couche accru tout en utilisant la sécurité fournie par le reseau principal (couche 1). Contrairement au Plasma, une solution de seconde couche similaire, les rollups optimistes peuvent gérer des types de transactions plus complexes – tout ce qui est possible dans l'EVM. Cependant, ils présentent des problèmes de latence par rapport aux Zero-knowledge rollups car une transaction peut être contestée via la preuve de fraude. En savoir plus sur les rollups optimistes.",
+ "oracle-term": "Oracle",
+ "oracle-definition": "Un oracle est un pont entre la blockchain et le monde réel. Ils agissent comme des API sur la chaîne qui peuvent être interrogées pour obtenir des informations et utilisées dans les contrats intelligents. En savoir plus sur les oracles.",
+ "peer-term": "Pair",
+ "peer-definition": "Ordinateurs connectés exécutant le logiciel client Ethereum qui ont des copies identiques de la blockchain.",
+ "peer-to-peer-network-term": "Réseaux Pair-à-Pair",
+ "peer-to-peer-network-definition": "Réseau d'ordinateurs (pairs) collectivement capables d'exécuter des fonctionnalités sans avoir besoin de services centralisés, basés sur un serveur.",
+ "plasma-term": "Plasma",
+ "plasma-definition": "Une solution de mise à l'échelle hors chaîne qui utilise des preuves de fraude, comme les rollups optimistes. Plasma est limité aux transactions simples comme les transferts et les échanges de jetons. En savoir plus sur Plasma.",
+ "private-key-term": "Clé privée",
+ "private-key-definition": "Nombre secret qui permet aux utilisateurs Ethereum de prouver la propriété d'un compte ou de contrats en produisant une signature numérique (voir clé publique, adresse, ECDSA).",
+ "private-chain-term": "Chaîne privée",
+ "private-chain-definition": "Une blockchain est dite privée si on y accède en y étant autorisé, par opposition à une blockchain publique.",
+ "pos-term": "Preuve d'enjeu (PoS)",
+ "pos-definition": "Une méthode par laquelle un protocole de blockchain de crypto-monnaie vise à atteindre un consensus distribué. La preuve d'enjeu demande aux utilisateurs de prouver qu'ils possèdent un certain montant de crypto-monnaie (leur « participation » dans le réseau) afin de pouvoir participer à la validation des transactions. En savoir plus sur la preuve d'enjeu.",
+ "pow-term": "Preuve de travail (PoW)",
+ "pow-definition": "Un élément de données (la preuve) dont la découverte nécessite un calcul important. En savoir plus sur la preuve de travail.",
+ "public-key-term": "Clé publique",
+ "public-key-definition": "Nombre dérivé d'une clé privée via une fonction à sens unique, qui peut être partagé publiquement et utilisé par n'importe qui pour vérifier une signature numérique créée avec la clé privée correspondante.",
+ "receipt-term": "Reçu",
+ "receipt-definition": "Données renvoyées par un client Ethereum pour représenter le résultat d'une transaction particulière, y compris un hachage numérique de la transaction, son numéro de bloc, la quantité de gaz utilisée et, en cas de déploiement d'un contrat intelligent, l'adresse du contrat.",
+ "re-entrancy-attack-term": "Attaque par réentrance",
+ "re-entrancy-attack-definition": "Attaque consistant pour un contrat de l'attaquant à appeler une fonction d'un contrat de la victime de telle sorte qu'au cours de l'exécution, la victime appelle à nouveau le contrat de l'attaquant, de manière récursive. Cela peut entraîner, par exemple, le vol de fonds en sautant les parties du contrat de la victime qui mettent à jour les soldes ou comptent les montants des retraits. En savoir plus sur la réentrance.",
+ "reward-term": "Récompense",
+ "reward-definition": "Quantité d'ethers inclus dans chaque nouveau bloc en tant que récompense du réseau au mineur qui a trouvé la solution de la preuve de travail.",
+ "rlp-term": "Préfixe de longueur récursive (RLP)",
+ "rlp-definition": "Norme d'encodage conçue par les développeurs Ethereum pour encoder et sérialiser des objets (structure de données) de complexité et de longueur arbitraires.",
+ "rollups-term": "Rollups",
+ "rollups-definition": "Un type de solution de mise à l'échelle de la couche 2 qui regroupe plusieurs transactions et les soumet à la chaîne principale Ethereum en une seule transaction. Cela permet de réduire les coûts de gaz et d'augmenter le débit des transactions. Il existe des rollups optimistes et à connaissance nulle qui utilisent différentes méthodes de sécurité pour offrir ces gains d'évolutivité. En savoir plus sur les rollups.",
+ "rpc-term": "Appel de procédure distante (RPC)",
+ "rpc-definition": "L'appel de procédure à distance (RPC) est un protocole qu'un programme utilise pour demander un service à un programme situé sur un autre ordinateur dans un réseau sans avoir à comprendre les détails du réseau.",
+ "sha-term": "Algorithme de hachage sécurisé (SHA)",
+ "sha-definition": "Famille de fonctions de hachage cryptographique publiées par le National Institute of Standards and Technology (NIST) aux États-Unis.",
+ "serialization-term": "La sérialisation",
+ "serialization-definition": "Procédé de conversion d'une structure de données en une séquence d'octets.",
+ "shard-term": "Fragment / chaîne de fragments",
+ "shard-definition": "Les chaînes de fragments sont des sections discrètes de la blockchain totale dont des sous-ensembles de validateurs peuvent être responsables. Cela permettra d'augmenter le débit des transactions pour Ethereum et d'améliorer la disponibilité des données pour les solutions de couche 2 telles que les rollups optimistes et les rollups ZK. Plus d'informations sur danksharding.",
+ "sidechain-term": "Chaîne latérale",
+ "sidechain-definition": "Une solution de mise à l'échelle qui utilise une chaîne séparée avec des règles de consensus différentes, souvent plus rapides. Un pont est nécessaire pour connecter ces chaînes latérales au Réseau principal. Les rollups utilisent également des sidechains, mais ils fonctionnent en collaboration avec le Réseau principal. En savoir plus sur les sidechains.",
+ "signing-term": "Signature",
+ "signing-definition": "Prouve cryptographiquement qu'une transaction a été approuvée par le détenteur d'une clé privée spécifique.",
+ "singleton-term": "Singleton",
+ "singleton-definition": "Terme de programmation informatique décrivant un objet dont il ne peut exister qu'une seule instance.",
+ "slasher-term": "Exclure",
+ "slasher-definition": "Un slasher est une entité qui analyse les attestations à la recherche d'infractions pouvant faire l'objet d'un slash. Les slashs sont diffusés sur le réseau et le prochain proposant de bloc ajoute la preuve au bloc. L'auteur de la proposition de bloc reçoit alors une récompense pour la suppression du validateur malveillant.",
+ "slot-term": "Créneau",
+ "slot-definition": "Période de temps (12 secondes) pendant laquelle de nouveaux blocs peuvent être proposés par un validateur dans le système de preuve d'enjeu. Un slot peut être vide. 32 slots constituent une époque. En savoir plus sur la preuve d'enjeu.",
+ "smart-contract-term": "Contrat intelligent",
+ "smart-contract-definition": "Un programme qui s'exécute sur l'infrastructure informatique Ethereum. Introduction aux contrats intelligents.",
+ "snark-term": "SNARK",
+ "snark-definition": "Abréviation de « succinct non-interactive argument of knowledge », un SNARK est un type de preuve à connaissance nulle. En savoir plus sur les rollups ZK.",
+ "soft-fork-term": "Fourche mineure",
+ "soft-fork-definition": "Une divergence dans une blockchain qui se produit lorsque les règles de consensus changent. Contrairement à un hard fork, un soft fork est rétrocompatible ; les nœuds mis à niveau peuvent valider les blocs créés par des nœuds non mis à niveau tant qu'ils respectent les nouvelles règles de consensus.",
+ "solidity-term": "Solidity",
+ "solidity-definition": "Langage de programmation procédural (impératif) dont la syntaxe est similaire à JavaScript, C++ ou Java. Le langage le plus populaire et le plus fréquemment utilisé pour les contrats intelligents Ethereum. Créé par Gavin Wood. En savoir plus sur Solidity.",
+ "solidity-inline-assembly-term": "Assemblage en ligne Solidity",
+ "solidity-inline-assembly-definition": "Le langage d'assemblage EVM dans un programme Solidity. La prise en charge de l'assemblage en ligne par Solidity facilite l'écriture de certaines opérations.",
+ "stablecoin-term": "Stablecoin",
+ "stablecoin-definition": "Un jeton ERC-20 dont la valeur est liée à celle d'un autre actif. Il existe des stablecoins adossés à des monnaies fiduciaires comme le dollar, à des métaux précieux comme l'or et à d'autres crypto-monnaies comme le Bitcoin.",
+ "staking-term": "Staking",
+ "staking-definition": "Le dépôt d'une quantité d'ether (votre mise) pour devenir un validateur et sécuriser le réseau. Un validateur vérifie les transactions et propose des blocs sous un modèle de consensus de preuve d'enjeu. Le staking vous offre une incitation économique à agir dans le meilleur intérêt du réseau. Vous recevrez des récompenses pour l'exécution de vos tâches de validateur, mais vous perdrez des quantités variables d'ETH si vous ne le faites pas. En savoir plus sur le staking Ethereum.",
+ "staking-pool-term": "Pools de mise en jeu",
+ "staking-pool-definition": "L'ETH combiné de plus d'un staker Ethereum, utilisé pour atteindre les 32 ETH requis pour activer un ensemble de clés de validation. Un opérateur de nœud utilise ces clés pour participer au consensus et les récompenses du bloc sont réparties entre les stakers qui y contribuent. Les pools de staking ou la délégation de staking ne font pas partie du protocole Ethereum, mais de nombreuses solutions ont été élaborées par la communauté. En savoir plus sur les pools de mise en jeu.",
+ "stark-term": "STARK",
+ "stark-definition": "Abréviation de « scalable transparent argument of knowledge », un STARK est un type de preuve à connaissance nulle. En savoir plus sur les rollups ZK.",
+ "state-term": "État",
+ "state-definition": "Image instantanée de tous les soldes et métadonnées présents à un moment donné sur la blockchain, qui renvoie normalement à la condition d'un bloc particulier.",
+ "state-channels-term": "Canaux d'état",
+ "state-channels-definition": "Une solution de couche 2 où un canal est mis en place entre les participants, où ils peuvent effectuer des transactions librement et à moindre coût. Seule une transaction pour établir le canal et le fermer est envoyée au réseau principal. Cela permet un débit de transaction très élevé, mais nécessite de connaître le nombre de participants à l'avance et de bloquer les fonds. En savoir plus sur les canaux d'État.",
+ "supermajority-term": "Supermajorité",
+ "supermajority-definition": "La supermajorité est le terme utilisé pour désigner un montant dépassant les 2/3 (66 %) du nombre total d'Ether mis en jeu pour sécuriser Ethereum. Un vote à la supermajorité est nécessaire pour que les blocs soient finalisés sur la chaîne phare.",
+ "syncing-term": "Synchronisation",
+ "syncing-definition": "Le processus de téléchargement de la dernière version complète d'une blockchain sur un nœud.",
+ "sync-committee-term": "Comité de synchronisation",
+ "sync-committee-definition": "Un comité de synchronisation est un groupe de validateurs sélectionnés de manière aléatoire et rafraîchis toutes les 27 heures environ. Leur objectif est d'ajouter leurs signatures aux en-têtes de blocs valides. Les comités de synchronisation permettent aux clients légers de suivre l'évolution de la tête de la blockchain sans avoir besoin d'accéder à l'ensemble des validateurs.",
+ "szabo-term": "Szabo",
+ "szabo-definition": "Une dénomination d'ether. 1 szabo = 1012wei. 106 szabo = 1 ether.",
+ "terminal-total-difficulty-term": "Difficulté Totale Terminale (TTD)",
+ "terminal-total-difficulty-definition": "La difficulté totale est la somme des difficultés de minage d'Ethash pour tous les blocs jusqu'à un certain point de la blockchain. La difficulté totale terminale est une valeur spécifique de la difficulté totale qui a été utilisée comme déclencheur pour que les clients d'exécution arrêtent leurs fonctions de minage et d'échange de blocs, permettant ainsi au réseau de passer à la preuve d'enjeu.",
+ "testnet-term": "Réseau de test",
+ "testnet-definition": "Aussi appelé « testnet », il s'agit d'un réseau utilisé pour simuler le comportement du réseau principal Ethereum.",
+ "token-term": "Jeton",
+ "token-definition": "Bien virtuel négociable défini dans les contrats intelligents sur la blockchain Ethereum.",
+ "transaction-term": "Transaction",
+ "transaction-definition": "Données engagées dans la blockchain Ethereum, signées par un compte d'origine, ciblant une adresse spécifique. La transaction contient des métadonnées telles que la limite de gaz pour cette transaction. En savoir plus sur les transactions.",
+ "transaction-fee-term": "Frais de transaction",
+ "transaction-fee-definition": "Des frais que vous devez payer chaque fois que vous utilisez le réseau Ethereum. Les exemples incluent l'envoi de fonds depuis votre portefeuille ou une interaction avec une dApp, comme échanger des jetons ou acheter un objet de collection. Vous pouvez considérer cela comme des frais de service. Cette commission variera en fonction de l'encombrement du réseau. Cela est dû au fait que les validateurs, les personnes responsables du traitement de votre transaction, sont susceptibles de prioriser les transactions avec des frais plus élevés – donc la congestion fait monter le prix.
À un niveau technique, vos frais de transaction sont liés à la quantité de gaz que votre transaction nécessite.
La réduction des frais de transaction est un sujet d'intérêt intense en ce moment. Voir Seconde Couche.",
+ "trustlessness-term": "Absence de confiance",
+ "trustlessness-definition": "La capacité d'un réseau à effectuer des transactions sans qu'aucune des parties impliquées n'ait besoin de faire confiance à un tiers.",
+ "turing-complete-term": "Turing-complet",
+ "turing-complete-definition": "Un concept nommé d'après le mathématicien et informaticien anglais Alan Turing. \nUn système de règles de traitement de données (instructions d'un ordinateur, langage de programmation ou automate cellulaire) est dit « Turing-complet » ou « universel sur le plan informatique » s'il a au moins le pouvoir des machines de Turing.",
+ "validator-term": "Validateur",
+ "validator-definition": "Un nœud dans un système de preuve d'enjeu responsable du stockage des données, du traitement des transactions et de l'ajout de nouveaux blocs à la blockchain. Pour activer le logiciel de validation, vous devez être en mesure de miser 32 ETH. En savoir plus sur la mise en jeu dans Ethereum.",
+ "validator-lifecycle-term": "Cycle de vie du validateur",
+ "validator-lifecycle-definition": "La séquence d'états dans laquelle un validateur peut exister. Cela inclut :
déposé : Au moins 32 ETH ont été déposés dans le contrat de dépôt par le validateur
en attente : le validateur est dans la file d'attente d'activation en attendant d'être voté dans le réseau par les validateurs existants
actif : atteste et propose actuellement des blocs
puni : le validateur a mal agi et est en train d'être pénalisé
sortie : le validateur a été signalé pour quitter le réseau, soit volontairement, soit parce qu'il a été éjecté.
",
+ "validity-proof-term": "Preuve de validité",
+ "validity-proof-definition": "Un modèle de sécurité pour certaines solutions de couche 2 où, pour augmenter la vitesse, les transactions sont regroupées en lots et soumises à Ethereum en une seule transaction. Le calcul des transactions est effectué en hors chaîne, puis fourni à la chaîne principale avec une preuve de leur validité. Cette méthode permet d'augmenter le nombre de transactions possibles tout en maintenant la sécurité. Certains rollups utilisent des preuves de fraude. En savoir plus sur les rollups à connaissance nulle.",
+ "validium-term": "Validium",
+ "validium-definition": "Une solution hors chaîne qui utilise des preuves de validité pour améliorer le débit des transactions. Contrairement aux rollups ZK, les données de validium ne sont pas stockées sur la couche 1 du réseau principal. En savoir plus sur le validium.",
+ "vyper-term": "Vyper",
+ "vyper-definition": "Un langage de programmation de haut niveau avec une syntaxe semblable à celle de Python. Destiné à se rapprocher d'un langage fonctionnel pur. Créé par Vitalik Buterin. En savoir plus sur Vyper.",
+ "wallet-term": "Portefeuille",
+ "wallet-definition": "Logiciel qui détient les clés privées. Elles sont utilisées pour accéder et contrôler les comptes Ethereum et interagir avec les contrats intelligents. Les clés n'ont pas besoin d'être stockées dans un portefeuille et peuvent être récupérées à partir d'un stockage hors ligne (c'est-à-dire une carte mémoire ou du papier) pour une meilleure sécurité. Malgré leur nom, les portefeuilles ne stockent jamais les pièces ou les jetons proprement dits. En savoir plus sur les portefeuilles Ethereum.",
+ "web3-term": "Web3",
+ "web3-definition": "La troisième version du web. Terme proposé pour la première fois par le Dr Gavin Wood, Web3 représente une nouvelle vision et une nouvelle orientation pour les applications web : passant d'applications gérées et détenues de façon centralisée à des applications construites sur des protocoles décentralisés. Plus sur Web3.",
+ "wei-term": "Wei",
+ "wei-definition": "La plus petite dénomination d'ether. 1018 wei = 1 ether.",
+ "zero-address-term": "Adresse zéro",
+ "zero-address-definition": "Une adresse Ethereum, composée entièrement de zéros, qui est fréquemment utilisée comme adresse pour retirer les jetons de la circulation. Une distinction est faite entre les jetons officiellement retirés de l'index d'un contrat intelligent via la méthode burn() et ceux envoyés à cette adresse.",
+ "zk-proof-term": "Preuve de connaissance zéro",
+ "zk-proof-definition": "Une preuve à connaissance nulle est une méthode cryptographique qui permet à une personne de prouver qu'une déclaration est vraie sans transmettre d'informations supplémentaires. En savoir plus sur les rollups à connaissance nulle.",
+ "zk-rollup-term": "Rollup ZK",
+ "zk-rollup-definition": "Un rollup de transactions qui utilise des preuves de validité pour offrir un débit de transactions en seconde couche accru tout en utilisant la sécurité fournie par le réseau principal (couche 1). Bien qu'ils ne puissent pas gérer des types de transactions complexes, comme les rollups optimistes, ils n'ont pas de problèmes de latence car les transactions sont prouvées valides lorsqu'elles sont soumises. En savoir plus sur les rollups Zk."
+}
diff --git a/src/intl/fr/page-languages.json b/src/intl/fr/page-languages.json
index 2165d978b97..56ce62f3a5b 100644
--- a/src/intl/fr/page-languages.json
+++ b/src/intl/fr/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Voulez-vous voir ethereum.org dans une autre langue ?",
"page-languages-want-more-link": "Programme de traduction",
"page-languages-want-more-paragraph": "Les traducteurs d’ethereum.org traduisent constamment les pages dans le plus de langues possible. Pour voir ce sur quoi ils sont en train de travailler actuellement ou pour les rejoindre, lisez notre",
- "page-languages-filter-placeholder": "Filtre",
+ "page-languages-filter-label": "Liste des filtres",
+ "page-languages-filter-placeholder": "Écrivez pour filtrer",
+ "page-languages-browser-default": "Navigateur par défaut",
+ "page-languages-translated": "traduit",
+ "page-languages-words": "mots",
+ "page-languages-recruit-community": "Aidez-nous à traduire ethereum.org.",
"langauge-am": "Amharique",
"language-ar": "Arabe",
"language-az": "Azéri",
@@ -50,6 +55,7 @@
"language-mr": "Marathi",
"language-ms": "Malais",
"language-nb": "Norvégien",
+ "language-ne-np": "Népalais",
"language-nl": "Néerlandais",
"language-pcm": "Pidgin Nigérian",
"language-fil": "Philippin",
diff --git a/src/intl/gl/common.json b/src/intl/gl/common.json
index c9db4d8edfb..a88581ca929 100644
--- a/src/intl/gl/common.json
+++ b/src/intl/gl/common.json
@@ -1,28 +1,70 @@
{
"about-ethereum-org": "Acerca de ethereum.org",
"about-us": "Sobre nós",
+ "adding-desci-projects": "Engadindo proxectos DeSci",
+ "adding-developer-tools": "Engadindo ferramentas para desenvolvedores",
+ "adding-exchanges": "Engadindo intercambios",
+ "adding-glossary-terms": "Engadindo termos ó glosario",
+ "adding-staking-products": "Engadindo produtos de participación",
+ "adding-wallets": "Engadindo carteiras",
+ "account-abstraction": "Abstracción de conta",
+ "acknowledgements": "Agradecementos",
"aria-toggle-search-button": "Cambiar botón de busca",
"aria-toggle-menu-button": "Cambiar botón de menú",
"beacon-chain": "Cadea de Baliza",
"bridges": "Pontes de Blockchain",
+ "bug-bounty": "Recompensa de erro",
+ "build": "Construír",
+ "build-menu": "Menú Construír",
+ "clear": "Borrar",
+ "close": "Pechar",
"community": "Comunidade",
"community-hub": "Centro de Comunidade",
"community-menu": "Menú de Comunidade",
"contact": "Contacto",
+ "content-buckets": "Series de contido",
+ "content-resources": "Recursos de contido",
+ "content-standardization": "Normalización do contido",
"contributing": "Contribuír",
"contributors": "Contribuidores",
"contributors-thanks": "A todos os que contribuíron a esta páxina, grazas!",
"cookie-policy": "Política de cookies",
"copied": "Copiado",
"copy": "Copiar",
+ "danksharding": "Danksharding",
+ "dao-page": "DAO en inglés - Organizacións Autónomas Descentralizadas",
"dark-mode": "Escuro",
"data-provided-by": "Orixe de datos:",
- "decentralized-applications-dapps": "Aplicacións descentralizadas (dapps)",
+ "decentralized-applications-dapps": "Dapps - Aplicacións descentralizadas",
+ "decentralized-identity": "Identidade descentralizada",
+ "decentralized-social-networks": "Redes sociais descentralizadas",
+ "decentralized-science": "DeSci - Ciencias descentralizadas",
+ "description": "Descrición dun elemento de navegación",
+ "defi-page": "DeFi - Finanzas descentralizadas",
+ "design": "Deseño",
+ "design-principles": "Principios de deseño",
"devcon": "Devcon",
"developers": "Programadores",
"developers-home": "Menú para programadores",
"docs": "Documentos",
+ "docsearch-to-select": "Para seleccionar",
+ "docsearch-to-navigate": "Para navegar",
+ "docsearch-to-close": "Para pechar",
+ "docsearch-search-by": "Buscar por",
+ "docsearch-start-recent-searches-title": "Recente",
+ "docsearch-start-no-recent-searches": "Non hai buscas recentes",
+ "docsearch-start-save-recent-search": "Gardar esta busca",
+ "docsearch-start-remove-recent-search": "Eliminar esta busca do historial",
+ "docsearch-start-favorite-searches": "Favorito",
+ "docsearch-start-remove-favorite-search": "Eliminar esta busca de favoritos",
+ "docsearch-no-results-text": "Sen resultados para",
+ "docsearch-no-results-suggested-query": "Intentar buscar por",
+ "docsearch-no-results-missing": "Considera que esta consulta debería amosar resultados?",
+ "docsearch-no-results-missing-link": "Fáganolo saber.",
+ "docsearch-error-title": "Non se atoparon resultados",
+ "docsearch-error-help": "Pode que desexe revisar a súa conexión de rede.",
"documentation": "Documentación",
+ "down": "Baixar",
"ecosystem": "Ecosistema",
"edit-page": "Editar páxina",
"ef-blog": "Blog da Fundación Ethereum",
@@ -32,6 +74,7 @@
"enterprise-menu": "Menú Empresa",
"esp": "Programa de soporte do ecosistema",
"eth-current-price": "Prezo actual de ETH (USD)",
+ "ethereum-bug-bounty": "Programa de caza de erros de Ethereum",
"consensus-when-shipping": "Cando se envía?",
"ethereum-upgrades": "Melloras de Ethereum",
"ethereum-brand-assets": "Activos de marca de Ethereum",
@@ -42,20 +85,37 @@
"ethereum-glossary": "Glosario de Ethereum",
"ethereum-governance": "Gobernanza de Ethereum",
"ethereum-logo": "Logotipo de Ethereum",
+ "ethereum-roadmap": "Folla de ruta de Ethereum",
+ "ethereum-protocol": "Protocolo de Ethereum",
"ethereum-security": "Seguridade en Ethereum e prevención de fraudes",
"ethereum-support": "Soporte de Ethereum",
"ethereum-wallets": "Carteiras de Ethereum",
"ethereum-whitepaper": "Informe de Ethereum",
+ "feedback-widget-prompt": "É útil esta páxina?",
+ "feedback-card-prompt-page": "Foi útil esta páxina?",
+ "feedback-card-prompt-article": "Foi útil este artigo?",
+ "feedback-card-prompt-tutorial": "Foi útil este tutorial?",
+ "feedback-widget-thank-you-title": "Grazas polos vosos comentarios!",
+ "feedback-widget-thank-you-subtitle": "Faga que esta páxina sexa aínda mellor contestando unhas preguntas.",
+ "feedback-widget-thank-you-subtitle-ext": "Se precisa axuda, pode poñerse en contacto coa comunidade en Discord.",
+ "feedback-widget-thank-you-timing": "2-3 min",
+ "feedback-widget-thank-you-cta": "Abrir unha breve enquisa",
"find-wallet": "Buscar carteira",
+ "future-proofing": "Preparado para o futuro",
"get-eth": "Obter ETH",
"get-involved": "Participar",
"get-started": "Comezar",
"grants": "Permisos",
"grant-programs": "Programas para permisos do ecosistema",
- "guides-and-resources": "Guías e recursos para a comunidade",
+ "guides": "Guías",
+ "guides-hub": "Guías prácticas",
"history-of-ethereum": "Historia de Ethereum",
"home": "Inicio",
"how-ethereum-works": "Como funciona Ethereum",
+ "how-to-revoke-token-access": "Como anular o acceso a contratos intelixentes ós seus fondos en criptomoedas",
+ "how-to-swap-tokens": "Como intercambiar tokens",
+ "how-to-use-a-bridge": "Como pasar os tokens á capa 2",
+ "how-to-use-a-wallet": "Como usar unha carteira",
"image": "imaxe",
"in-this-section": "Nesta sección",
"individuals": "Usuarios",
@@ -66,8 +126,10 @@
"languages": "Idiomas",
"last-24-hrs": "Últimas 24 horas",
"last-edit": "Última edición",
+ "layer-2": "Capa 2",
"learn": "Información",
- "learn-by-coding": "Aprender mediante codificación",
+ "learn-by-coding": "Aprende programando",
+ "learn-hub": "Centro de aprendizaxe",
"learn-menu": "Menú de información",
"learn-more": "Máis información",
"less": "Menos",
@@ -76,31 +138,159 @@
"loading": "Cargando...",
"loading-error": "Erro de carga.",
"loading-error-refresh": "Erro. Actualice a páxina.",
+ "loading-error-try-again-later": "Non se puideron cargar os datos. Inténteo de novo máis tarde.",
"logo": "logotipo",
"mainnet-ethereum": "Rede principal de Ethereum",
+ "merge": "Fusionar",
"more": "Máis",
+ "nav-about-description": "Un proxecto público de código aberto para a comunidade Ethereum",
+ "nav-advanced-description": "Coñeza os temas máis complexos",
+ "nav-advanced-label": "Avanzado",
+ "nav-basics-description": "Entenda o esencial de Ethereum",
+ "nav-basics-label": "Conceptos básicos",
+ "nav-bridges-description": "Web3 evolucionou nun ecosistema de cadeas de bloques primarios de capa 1 e solucións de escalabilidade de capa 2",
+ "nav-builders-home-description": "Un manual de construtores para Ethereum. De construtores para construtores.",
+ "nav-builders-home-label": "Inicio dos construtores",
+ "nav-contribute-description": "Se quere axudar, isto diralle como",
+ "nav-contribute-label": "Colaborar con ethereum.org",
+ "nav-dao-description": "Comunidades propiedade dos membros sen autoridade centralizada",
+ "nav-dapps-description": "Explore un rico ecosistema de aplicacións con Ethereum",
+ "nav-defi-description": "Unha alternativa aberta e global ó mercado financeiro tradicional",
+ "nav-desci-description": "Unha alternativa aberta e global ó sistema científico actual",
+ "nav-desoc-description": "Plataformas baseadas en cadeas de bloques para a interacción social e a creación de contido",
+ "nav-developers-docs": "Documentación para o desenvolvedor",
+ "nav-developers": "Programadores",
+ "nav-did-description": "Cree e sexa propietario dos seus identificadores descentralizados propios",
+ "nav-docs-description": "Documentación de axuda para entender e construír en Ethereum",
+ "nav-docs-design-description": "Descrición dos retos de deseño únicos de Web3, mellores prácticas e investigacións dos usuarios",
+ "nav-docs-design-label": "Elementos de deseño esenciais da experiencia de usuario e da IU",
+ "nav-docs-foundation-description": "Elementos esenciais para desenvolver en Ethereum",
+ "nav-docs-foundation-label": "Temas fundamentais",
+ "nav-docs-overview-description": "O lugar onde atopar documentación de programadores",
+ "nav-docs-stack-description": "Entender todos os detalles da pila de Ethereum",
+ "nav-docs-stack-label": "Stack de Ethereum",
+ "nav-eip-description": "Normas que especifican novas características ou procesos",
+ "nav-eip-label": "Propostas de mellora de Ethereum",
+ "nav-emerging-description": "Coñecer outros casos de uso máis recentes de Ethereum",
+ "nav-enterprise-description": "Aplicacións empresariais para Ethereum",
+ "nav-ethereum-org-description": "Este sitio web está impulsado pola comunidade: únase a nós e contribúa tamén",
+ "nav-ethereum-wallets-description": "Unha aplicación para interactuar coa sua conta de Ethereum",
+ "nav-events-description": "Descentralización e liberdade para que todo o mundo participe",
+ "nav-events-irl-description": "Cada mes teñen lugar grandes eventos de Ethereum en persoa e en liña",
+ "nav-events-label": "Comunidades e eventos",
+ "nav-events-online-description": "Centos de miles de entusiastas de Ethereum conciben estas comunidades en liña",
+ "nav-find-wallet-description": "As carteiras permítenlle usar criptomoedas",
+ "nav-find-wallet-label": "Elixa a súa carteira",
+ "nav-gas-fees-description": "Como se calculan as comisións por transacción das ETH",
+ "nav-get-eth-description": "Precisa ether (ETH) para empregar as aplicacións de Ethereum",
+ "nav-get-started-description": "Os seus primeiros pasos para usar Ethereum",
+ "nav-governance-description": "O proceso implicado na actualización do protocolo de Ethereum",
+ "nav-governance-label": "Gobernanza",
+ "nav-grants-description": "Unha lista seleccionada pola nosa comunidade de proxectos que ofrecen programas de financiamento mediante bolsas",
+ "nav-guide-create-account-description": "Calquera pode crear unha conta de Ethereum en calquera momento, gratuitamente, a través dunha aplicación de carteira",
+ "nav-guide-revoke-access-description": "Interactúe con contratos intelixentes e aplicacións no ecosistema de Ethereum de forma segura",
+ "nav-guide-revoke-access-label": "Como revocar o acceso a contratos intelixentes",
+ "nav-guide-use-wallet-description": "Domine o funcionamento de todas as funcións básicas da súa carteira",
+ "nav-guide-use-wallet-label": "Como usar unha carteira",
+ "nav-guides-description": "Guías prácticas paso a paso para axudalo a comezar",
+ "nav-guides-label": "Guías prácticas",
+ "nav-history-description": "Unha cronoloxía das actualizacións e bifurcacións principais",
+ "nav-history-label": "Historia técnica de Ethereum",
+ "nav-layer-2-description": "Transaccións máis rápidas e baratas para Ethereum",
+ "nav-learn-by-coding-description": "Ferramentas que lle permiten experimentar con Ethereum",
+ "nav-local-env-description": "Elixa e configure a súa pila de desenvolvemento de Ethereum",
+ "nav-mainnet-description": "As aplicacións de cadea de bloques para empresa pódense construír na rede principal e pública de Ethereum",
+ "nav-nft-description": "Unha forma de representar calquera cousa única como un activo baseado en Ethereum",
+ "nav-open-research-description": "Unha das principais fortalezas de Ethereum é a súa comunidade de investigación activa",
+ "nav-open-research-label": "Abrir investigación",
+ "nav-overview-description": "Recursos educativos de Ethereum",
+ "nav-participate-overview-description": "Resumen de como participar",
+ "nav-primary": "Primario",
+ "nav-quizzes-description": "Descubra en que medida entende Ethereum e as criptomoedas",
+ "nav-quizzes-label": "Poña a proba os seus coñecementos",
+ "nav-refi-description": "Un sistema económico alternativo baseado en principios rexenerativos",
+ "nav-research-description": "Procesos empregados para mellorar Ethereum",
+ "nav-research-label": "Investigación e desenvolvemento",
+ "nav-roadmap-description": "O principio para unha maior adaptabilidade, seguridade e sostibilidade para Ethereum",
+ "nav-roadmap-future-description": "Reforzar Ethereum como unha rede descentralizada e sólida",
+ "nav-roadmap-future-label": "Preparado para o futuro",
+ "nav-roadmap-label": "Folla de ruta",
+ "nav-roadmap-scaling-description": "Actualizacións de rede para reducir aínda máis os custos de transaccións e a velocidade",
+ "nav-roadmap-security-description": "Asegurarse de que Ethereum segue resistindo a todo tipo de ataques no futuro",
+ "nav-roadmap-security-label": "Seguridade mellorada",
+ "nav-roadmap-ux-description": "O uso de Ethereum debe simplificarse",
+ "nav-run-a-node-description": "Sexa completamente autónomo mentres axuda a protexer a rede",
+ "nav-security-description": "Aprenda as mellores prácticas con respecto ó uso de criptomoedas",
+ "nav-smart-contracts-description": "Os bloques de construción fundamentais do ecosistema de Ethereum",
+ "nav-stablecoins-description": "As moedas estables son os tokens de Ethereum deseñados para manterse a un valor fixo",
+ "nav-stake-description": "Gañe recompensas por protexer a Ethereum",
+ "nav-stake-label": "Participar",
+ "nav-staking-home-description": "Unha presentación das distintas opcións de participación",
+ "nav-staking-pool-description": "Participe e gañe recompensas con calquera cantidade de ETH ó unirse a outros",
+ "nav-staking-pool-label": "Participación agrupada",
+ "nav-staking-saas-label": "Participar cun servizo",
+ "nav-staking-solo-label": "Participación individual",
+ "nav-start-building-description": "Información útil para os que acaban de chegar",
+ "nav-translation-program-description": "Un esforzo conxunto para traducir ethereum.org a todos os idiomas",
+ "nav-tutorials-description": "Unha lista coidadosamente elaborada de tutoriais da comunidade",
+ "nav-use-cases-description": "Descubra diferentes ideas de uso de Ethereum",
+ "nav-what-is-ether-description": "A divisa das aplicacións de Ethereum",
+ "nav-what-is-ethereum-description": "Comprender que é o que fai que Ethereum sexa especial",
+ "nav-what-is-web3-label": "Que é Web3?",
+ "nav-what-is-web3-description": "Unha alternativa ós monopolios centralizados que establecen as normas",
+ "nav-whitepaper-description": "O documento técnico orixinal de Ethereum escrito por Vitalik Buterin en 2014",
+ "nav-zkp-description": "Unha forma de demostrar a validez dunha declaración sen ter que revelala",
+ "nft-page": "NFTs - Tokens non funxibles",
+ "nfts": "NFT",
"no": "Non",
"on-this-page": "Nesta páxina",
+ "open-research": "Abrir investigación",
+ "page-developers-aria-label": "Menú para programadores",
+ "page-index-meta-title": "Inicio",
"page-last-updated": "Última actualización da páxina",
+ "participate": "Participa",
+ "participate-menu": "Menú Participar",
+ "pbs": "Separación do creador de propostas",
+ "pools": "Participación agrupada",
"privacy-policy": "Política de privacidade",
"private-ethereum": "Ethereum privado",
+ "product-disclaimer": "Os produtos e servizos enuméranse para a comodidade da comunidade Ethereum. A inclusión dun produto ou servizo non implica a súa recomendación por parte do equipo do sitio web ethereum.org nin da Fundación Ethereum.",
+ "quizzes-title": "Centro de cuestionarios",
+ "quizzes": "Cuestionarios",
"refresh": "Por favor, actualice a páxina.",
+ "return-home": "volver ó inicio",
+ "roadmap": "Folla de ruta de Ethereum",
+ "research": "Investigación",
+ "research-menu": "Menú Investigación",
+ "resources": "Recursos de tradución",
"run-a-node": "Executar un nó",
+ "rollup-component-website": "Website",
+ "rollup-component-developer-docs": "Documentación para desenvolvedores",
+ "rollup-component-technology-and-risk-summary": "Resumo da tecnoloxía e riscos",
+ "scaling": "Dimensionamento",
+ "saas": "Participación como servizo",
"search": "Buscar",
+ "search-ethereum-org": "Buscar ethereum.org",
+ "secret-leader-election": "Elección de líder secreto",
"search-box-blank-state-text": "Buscar noutro sitio!",
"search-eth-address": "Isto parece un enderezo de Ethereum. Nós non fornecemos datos específicos para enderezos. Intente buscalo nun explorador de bloques como",
"search-no-results": "Sen resultados para a súa busca",
+ "security": "Seguridade",
+ "single-slot-finality": "Finalidade dunha soa rañura",
+ "statelessness": "Apátrida",
"see-contributors": "Ver colaboradores",
"set-up-local-env": "Configurar ambiente local",
- "sharding": "Cadeas de fragmentos",
"show-all": "Mostrar todo",
"show-less": "Mostrar menos",
"site-description": "Ethereum é unha plataforma global e descentralizada para diñeiro e novos tipos de aplicacións. En Ethereum, pode escribir código que controle o diñeiro e construír aplicacións accesibles desde calquera parte do mundo.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Ir ao contido principal",
"smart-contracts": "Contratos intelixentes",
"stablecoins": "Stablecoins",
+ "stake-eth": "Facer stake de ETH",
"staking": "Staking",
+ "start-here": "Comezar aquí",
+ "solo": "Participación individual",
+ "support": "Soporte",
"terms-of-use": "Termos de uso",
"translation-banner-body-new": "Está a ver esta páxina en inglés porque aínda non a traducimos. Axúdenos a traducir este contido.",
"translation-banner-body-update": "Existe unha nova versión desta páxina, pero polo momento só existe en inglés. Axúdenos a traducir a versión máis recente.",
@@ -108,16 +298,25 @@
"translation-banner-button-translate-page": "Traducir páxina",
"translation-banner-title-new": "Axude a traducir esta páxina",
"translation-banner-title-update": "Axude a actualizar esta páxina",
+ "translation-banner-no-bugs-title": "Aquí non hai erros!",
+ "translation-banner-no-bugs-content": "Esta páxina non está a ser traducida. Deixamos esta páxina intencionalmente en inglés de momento.",
+ "translation-banner-no-bugs-dont-show-again": "Non amosar de novo",
+ "translation-program": "Programa de tradución",
+ "try-using-search": "Intente usar o buscador para atopar o que está a procurar ou",
"tutorials": "Titoriais",
+ "up": "Subir",
+ "use": "Uso",
"use-ethereum": "Usar Ethereum",
"use-ethereum-menu": "Usar o menú de Ethereum",
+ "use-menu": "Menú Uso",
+ "verkle-trees": "Árbores Verkle",
"wallets": "Carteiras",
+ "we-couldnt-find-that-page": "Non conseguimos atopar esta páxina",
+ "web3": "Que é Web3?",
"website-last-updated": "Última actualización da web",
"what-is-ether": "Que é o ether (ETH)?",
"what-is-ethereum": "Que é Ethereum?",
- "defi-page": "Finanzas descentralizadas (DeFi)",
- "dao-page": "Organizacións Autónomas Descentralizadas (DAO en inglés)",
- "nft-page": "Tokens non funxibles (NFTs)",
+ "withdrawals": "Retiradas de participación",
"yes": "Si",
- "page-index-meta-title": "Inicio"
+ "zero-knowledge-proofs": "Probas de coñecemento cero"
}
diff --git a/src/intl/gl/page-languages.json b/src/intl/gl/page-languages.json
index 5277d5ee219..1146b6c3a99 100644
--- a/src/intl/gl/page-languages.json
+++ b/src/intl/gl/page-languages.json
@@ -1,9 +1,32 @@
{
+ "page-languages-h1": "Soporte de idiomas",
+ "page-languages-interested": "Interesado en contribuír?",
+ "page-languages-learn-more": "Saiba máis sobre noso Programa de tradución",
+ "page-languages-meta-desc": "Recursos para todos os idiomas aceptados en ethereum.org e maneiras de participar como tradutor.",
+ "page-languages-meta-title": "Traducións de idiomas de ethereum.org",
+ "page-languages-p1": "Ethereum é un proxecto global e é fundamental que o sitio ethereum.org sexa accesible para todos, independentemente da nacionalidade ou do idioma. A nosa comunidade está a traballar moito para facer isto realidade.",
+ "page-languages-translations-available": "ethereum.org está dispoñible nos seguintes idiomas",
+ "page-languages-resources-paragraph": "Ademais de traducir contido de ethereum.org, tamén mantemos unha",
+ "page-languages-resources-link": "lista coidadosamente elaborada de recursos de Ethereum en diversos idiomas",
+ "page-languages-want-more-header": "Quere ver ethereum.org noutro idioma?",
+ "page-languages-want-more-link": "Programa de tradución",
+ "page-languages-want-more-paragraph": "Os tradutores do ethereum.org están sempre traducindo as páxinas para a maior cantidade de idiomas posibles. Para ver en que están a traballar agora ou inscribise para participar, lea sobre o noso",
+ "page-languages-filter-label": "Listaxe de filtrado",
+ "page-languages-filter-placeholder": "Escriba para filtrar",
+ "page-languages-browser-default": "Opcións predeterminadas do navegador",
+ "page-languages-translated": "traducido",
+ "page-languages-words": "palabras",
+ "page-languages-recruit-community": "Axúdenos a traducir ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Árabe",
+ "language-az": "Acerbaixano",
+ "langauge-be": "Belarusian",
"language-bg": "Búlgaro",
"language-bn": "Bengalí",
+ "language-bs": "Bosnian",
"language-ca": "Catalán",
"language-cs": "Checo",
+ "language-da": "Danés",
"language-de": "Alemán",
"language-el": "Grego",
"language-en": "Inglés",
@@ -11,21 +34,31 @@
"language-fa": "Farsi",
"language-fi": "Finlandés",
"language-fr": "Francés",
+ "language-gl": "Galego",
+ "language-gu": "Gujarati",
+ "language-he": "Hebrew",
"language-hi": "Hindi",
"language-hr": "Croata",
"language-hu": "Húngaro",
+ "language-hy-am": "Armenian",
"language-id": "Indonesio",
"language-ig": "Igbo",
"language-it": "Italiano",
"language-ja": "Xaponés",
"language-ka": "Xeorxiano",
+ "language-kk": "Casaco",
+ "language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Coreano",
"language-lt": "Lituano",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malaio",
"language-nb": "Noruegués",
+ "language-ne-np": "Nepali",
"language-nl": "Neerlandés",
+ "language-pcm": "Nigerian Pidgin",
+ "language-fil": "Filipino",
"language-pl": "Polaco",
"language-pt": "Portugués",
"language-pt-br": "Portugués (Brasil)",
@@ -36,9 +69,13 @@
"language-sl": "Esloveno",
"language-sr": "Serbio",
"language-sw": "Suahili",
+ "language-ta": "Tamil",
"language-th": "Tailandés",
+ "language-tk": "Turkmen",
"language-tr": "Turco",
"language-uk": "Ucraíno",
+ "language-ur": "Urdu",
+ "language-uz": "Uzbek",
"language-vi": "Vietnamita",
"language-zh": "Chinés simplificado",
"language-zh-tw": "Chinés tradicional"
diff --git a/src/intl/gl/page-stablecoins.json b/src/intl/gl/page-stablecoins.json
index 1f8b7b4982a..4dc7bdb4ef2 100644
--- a/src/intl/gl/page-stablecoins.json
+++ b/src/intl/gl/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "Logotipo de MakerDao",
"matcha-logo": "Logotipo de Matcha",
"oasis-logo": "Logotipo de Oasis",
- "uniswap-logo": "Logotipo de Uniswap"
+ "uniswap-logo": "Logotipo de Uniswap",
+ "page-stablecoins-category-dashboard-and-education": "Panel de control & Educación"
}
diff --git a/src/intl/gu/common.json b/src/intl/gu/common.json
index 0d62461499d..f36e83f4519 100644
--- a/src/intl/gu/common.json
+++ b/src/intl/gu/common.json
@@ -1,32 +1,72 @@
{
"about-ethereum-org": "ethereum.org વિશે",
"about-us": "અમારા વિશે",
+ "adding-desci-projects": "Desci પ્રોજેક્ટ્સ ઉમેરી રહ્યા છીએ",
+ "adding-developer-tools": "વિકાસકર્તા સાધનો ઉમેરી રહ્યા છીએ",
+ "adding-exchanges": "એક્સચેન્જ ઉમેરી રહ્યા છીએ",
+ "adding-glossary-terms": "ગ્લોસરી શબ્દો ઉમેરી રહ્યા છીએ",
+ "adding-staking-products": "સ્ટેકિંગ પ્રોડક્ટ્સ ઉમેરી રહ્યા છીએ",
+ "adding-wallets": "વૉલેટ્સ ઉમેરી રહ્યા છીએ",
+ "account-abstraction": "ખાતાનો સાર",
+ "acknowledgements": "સ્વીકૃતિઓ",
"aria-toggle-search-button": "શોધ બટનને ટૉગલ કરો",
"aria-toggle-menu-button": "ટૉગલ મેનુ બટન",
"beacon-chain": "બીકન ચેન",
"bridges": "બ્લોકચેન પુલ",
+ "bug-bounty": "બગ બક્ષિસ",
+ "build": "બીલ્ડ",
+ "build-menu": "બિલ્ડ મેનુ",
+ "clear": "સાફ કરો",
"close": "બંધ",
"community": "સમુદાય",
"community-hub": "સમુદાય-હબ",
"community-menu": "સમુદાય-મેનુ",
"contact": "સંપર્ક",
+ "content-buckets": "સામગ્રી બકેટ્સ",
+ "content-resources": "સામગ્રી સંસાધનો",
+ "content-standardization": "સામગ્રી પ્રમાણીકરણ",
"contributing": "યોગદાન આપી રહ્યા છે",
"contributors": "યોગદાન આપનાર",
"contributors-thanks": "દરેક વ્યક્તિ જેણે આ પૃષ્ઠમાં યોગદાન આપ્યું છે - આભાર!",
"cookie-policy": "કૂકી નીતિ",
"copied": "નકલ કરી",
"copy": "નકલ કરો",
+ "danksharding": "ડેંકશાર્ડીંગ",
+ "dao-page": "DAOs - વિકેન્દ્રિત સ્વાયત્ત સંસ્થાઓ",
"dark-mode": "અંધારુ",
"data-provided-by": "માહિતીનું પ્રાપ્તિસ્થાન:",
- "decentralized-applications-dapps": "વિકેન્દ્રિત એપ્લિકેશન (dapps)",
- "decentralized-science": "વિકેન્દ્રિત વિજ્ઞાન (DeSci)",
+ "decentralized-applications-dapps": "Dapps - વિકેન્દ્રિત એપ્લિકેશન",
+ "decentralized-identity": "વિકેન્દ્રિત ઓળખ",
+ "decentralized-social-networks": "વિકેન્દ્રિત સામાજિક નેટવર્ક્સ",
+ "decentralized-science": "DeSci - વિકેન્દ્રિત વિજ્ઞાન",
+ "description": "nav આઇટમ માટે વર્ણન",
+ "defi-page": "DeFi - વિકેન્દ્રિત ફાઇનાન્સ",
+ "design": "ડિઝાઇન",
+ "design-principles": "ડિઝાઇન સિદ્ધાંતો",
"devcon": "ડેવકોન",
"developers": "વિકાસકર્તાઓ",
"developers-home": "વિકાસકર્તાઓનું ઘર",
"docs": "દસ્તાવેજ",
+ "docsearch-to-select": "પસંદ કરવા માટે",
+ "docsearch-to-navigate": "પહોંચવા માટે",
+ "docsearch-to-close": "બંધ કરવા માટે",
+ "docsearch-search-by": "દ્વારા શોધો",
+ "docsearch-start-recent-searches-title": "તાજેતરના",
+ "docsearch-start-no-recent-searches": "કોઈ તાજેતરની શોધ નથી",
+ "docsearch-start-save-recent-search": "આ શોધ સાચવો",
+ "docsearch-start-remove-recent-search": "ઇતિહાસમાંથી આ શોધ દૂર કરો",
+ "docsearch-start-favorite-searches": "મનપસંદ",
+ "docsearch-start-remove-favorite-search": "આ શોધને મનપસંદમાંથી દૂર કરો",
+ "docsearch-no-results-text": "માટે કોઈ પરિણામ નથી",
+ "docsearch-no-results-suggested-query": "શોધવાનો પ્રયાસ કરો",
+ "docsearch-no-results-missing": "માને છે કે આ ક્વેરી પરિણામ આપશે?",
+ "docsearch-no-results-missing-link": "અમને જણાવો.",
+ "docsearch-error-title": "પરિણામો મેળવવામાં અસમર્થ",
+ "docsearch-error-help": "તમે તમારું નેટવર્ક કનેક્શન તપાસવા ઇચ્છી શકો છો.",
"documentation": "દસ્તાવેજીકરણ",
+ "down": "નીચે",
"ecosystem": "ઇકોસિસ્ટમ",
- "edit-page": "પેજ સંપાદિત કરો",
+ "edit-page": "પાનું સંપાદિત કરો",
"ef-blog": "ઈથિરિયમ ફાઉન્ડેશન બ્લોગ",
"eips": "ઈથિરિયમ સુધારણા દરખાસ્તો",
"energy-consumption": "ઈથિરિયમ ઊર્જા વપરાશ",
@@ -37,7 +77,7 @@
"ethereum-bug-bounty": "ઈથિરિયમ બગ બાઉન્ટી પ્રોગ્રામ",
"consensus-when-shipping": "તે ક્યારે શિપિંગ કરે છે?",
"ethereum-upgrades": "ઈથિરિયમ સુધારાઓ",
- "ethereum-brand-assets": "ઈથિરિયમ બ્રાન્ડ અસ્કયામતો",
+ "ethereum-brand-assets": "Ethereum બ્રાન્ડ અસ્કયામતો",
"ethereum-online": "ઑનલાઇન સમુદાયો",
"ethereum-events": "ઈથિરિયમ ઘટનાઓ",
"ethereum-foundation": "ઈથિરિયમ ફાઉન્ડેશન",
@@ -45,9 +85,11 @@
"ethereum-glossary": "ઈથિરિયમ ગ્લોસરી",
"ethereum-governance": "ઈથિરિયમ શાસન",
"ethereum-logo": "ઈથિરિયમ લોગો",
+ "ethereum-roadmap": "ઈથિરિયમ રોડમેપ",
+ "ethereum-protocol": "ઇથેરિયમ પ્રોટોકોલ",
"ethereum-security": "ઈથિરિયમ સુરક્ષા અને કૌભાંડ નિવારણ",
"ethereum-support": "ઈથિરિયમ સપોર્ટ",
- "ethereum-wallets": "ઈથિરિયમ વૉલેટ",
+ "ethereum-wallets": "ઇથેરિયમ પાકીટ",
"ethereum-whitepaper": "ઈથિરિયમ વ્હાઇટપેપર",
"feedback-widget-prompt": "શું આ પેજ મદદરૂપ છે?",
"feedback-card-prompt-page": "શું આ પેજ મદદરૂપ થયું?",
@@ -55,19 +97,25 @@
"feedback-card-prompt-tutorial": "શું આ ટ્યુટોરીયલ મદદરૂપ હતું?",
"feedback-widget-thank-you-title": "તમારા પ્રતિભાવ બદલ આભાર!",
"feedback-widget-thank-you-subtitle": "થોડા પ્રશ્નોના જવાબ આપીને આ પેજને વધુ સારું બનાવો.",
- "feedback-widget-thank-you-subtitle-ext": "જો તમને મદદની જરૂર હોય, તો તમે અમારા Discord પર સમુદાયનો સંપર્ક કરી શકો છો.",
+ "feedback-widget-thank-you-subtitle-ext": "જો તમને મદદની જરૂર હોય, તો તમે અમારા વિરામ પર સમુદાયનો સંપર્ક કરી શકો છો.",
"feedback-widget-thank-you-timing": "2-3 મિનિટ",
"feedback-widget-thank-you-cta": "ટૂંકા સર્વેક્ષણ ખોલો",
"find-wallet": "વૉલેટ શોધો",
- "get-eth": "ETH મેળવો",
+ "future-proofing": "ફ્યુચર-પ્રૂફિંગ",
+ "get-eth": "મેળવો ETH",
"get-involved": "સામેલ કરો",
"get-started": "શરૂઆત કરો",
"grants": "અનુદાન",
"grant-programs": "ઇકોસિસ્ટમ ગ્રાન્ટ પ્રોગ્રામ્સ",
- "guides-and-resources": "સમુદાય માર્ગદર્શિકાઓ અને સંસાધનો",
+ "guides": "માર્ગદર્શિકાઓ",
+ "guides-hub": "કેવી રીતે માર્ગદર્શન આપવું",
"history-of-ethereum": "ઈથિરિયમનો ઇતિહાસ",
"home": "હોમ",
"how-ethereum-works": "ઈથિરિયમ કેવી રીતે કામ કરે છે",
+ "how-to-revoke-token-access": "તમારા ક્રિપ્ટો ફંડ્સમાં સ્માર્ટ કોન્ટ્રાક્ટ ઍક્સેસ કેવી રીતે રદ કરવો",
+ "how-to-swap-tokens": "ટોકન્સ કેવી રીતે સ્વેપ કરવા",
+ "how-to-use-a-bridge": "ટોકન્સને લેયર 2 પર કેવી રીતે બ્રિજ કરવા",
+ "how-to-use-a-wallet": "વૉલેટનો ઉપયોગ કેવી રીતે કરવો",
"image": "છબી",
"in-this-section": "આ વિભાગમાં",
"individuals": "વ્યક્તિઓ",
@@ -81,6 +129,7 @@
"layer-2": "સ્તર 2",
"learn": "શીખો",
"learn-by-coding": "કોડિંગ દ્વારા શીખો",
+ "learn-hub": "હબ શીખો",
"learn-menu": "મેનૂ શીખો",
"learn-more": "વધુ શીખો",
"less": "ઓછા",
@@ -89,42 +138,154 @@
"loading": "લોડ કરી રહ્યું છે...",
"loading-error": "લોડ કરવામાં ભૂલ.",
"loading-error-refresh": "ભૂલ, કૃપા કરીને રિફ્રેશ કરો.",
+ "loading-error-try-again-later": "ડેટા લોડ કરવામાં અસમર્થ. પછીથી ફરી પ્રયાસ કરો.",
"logo": "લોગો",
"mainnet-ethereum": "મેઇનનેટ ઈથિરિયમ",
+ "merge": "મર્જ કરો",
"more": "વધુ",
- "nav-developers": "વિકાસકર્તાઓ",
+ "nav-about-description": "ઈથિરિયમ સમુદાય માટે જાહેર, ઓપન સોર્સ પ્રોજેક્ટ",
+ "nav-advanced-description": "વધુ જટિલ વિષયો જાણો",
+ "nav-basics-description": "ઈથિરિયમની મૂળભૂત બાબતોને સમજો",
+ "nav-basics-label": "મૂળભૂત",
+ "nav-bridges-description": "Web3 પ્રાથમિક L1 બ્લોકચેન અને L2 સ્કેલિંગ સોલ્યુશન્સની ઇકોસિસ્ટમમાં વિકસિત થયું છે",
+ "nav-builders-home-description": "ઈથિરિયમ માટે બિલ્ડરનું મેન્યુઅલ—બિલ્ડર દ્વારા, બિલ્ડર માટે",
+ "nav-builders-home-label": "બિલ્ડરનું હોમ",
+ "nav-contribute-description": "જો તમે મદદ કરવા માંગતા હોવ, તો આ તમને માર્ગદર્શન આપશે",
+ "nav-contribute-label": "Ethereum.org માં યોગદાન આપવું",
+ "nav-dao-description": "કેન્દ્રિય સત્તા વગરના સભ્ય-માલિકીના સમુદાયો",
+ "nav-dapps-description": "ઈથિરિયમનો ઉપયોગ કરીને એપ્લિકેશન્સની સમૃદ્ધ ઇકોસિસ્ટમનું અન્વેષણ કરો",
+ "nav-defi-description": "પરંપરાગત નાણાંકીય બજારનો વૈશ્વિક, ખુલ્લો વિકલ્પ",
+ "nav-desci-description": "વર્તમાન વૈજ્ઞાનિક પ્રણાલીનો વૈશ્વિક, ખુલ્લો વિકલ્પ",
+ "nav-desoc-description": "સામાજિક ક્રિયાપ્રતિક્રિયા અને સામગ્રી નિર્માણ માટે બ્લોકચેન-આધારિત પ્લેટફોર્મ",
"nav-developers-docs": "વિકાસકર્તાઓ દસ્તાવેજો",
+ "nav-developers": "વિકાસકર્તાઓ",
+ "nav-did-description": "તમારા અનન્ય વિકેન્દ્રિત ઓળખકર્તાઓ રજૂ કરો અને માલિકી મેળવો",
+ "nav-docs-description": "ઈથિરિયમ સાથે સમજવા અને બિલ્ડ કરવામાં તમારી મદદ કરવા માટે દસ્તાવેજ",
+ "nav-docs-design-description": "અનન્ય web3 ડિઝાઇન પડકારો, શ્રેષ્ઠ પ્રયાસો અને વપરાશકર્તા સંશોધન આંતરદૃષ્ટિનું વર્ણન",
+ "nav-docs-design-label": "UX/UI ડિઝાઇનની મૂળભૂત બાબતો",
+ "nav-docs-foundation-description": "ઈથિરિયમ પર વિકસાવવા માટેના મુખ્ય મૂળભૂત સિદ્ધાંતો",
+ "nav-docs-overview-description": "વિકાસકર્તા દસ્તાવેજો માટે તમારું હોમ",
+ "nav-docs-stack-description": "ઈથિરિયમ સ્ટેકની તમામ વિગતો સમજો",
+ "nav-eip-description": "ધોરણો કે જે નવી સુવિધાઓ અથવા પ્રક્રિયાઓનો ઉલ્લેખ કરે છે",
+ "nav-eip-label": "EIP - ઈથિરિયમ સુધારણા દરખાસ્તો",
+ "nav-emerging-description": "ઈથિરિયમ માટે અન્ય નવા ઉપયોગના કેસો જાણો",
+ "nav-enterprise-description": "ઈથિરિયમ માટે વ્યવસાયિક એપ્લિકેશન્સ",
+ "nav-ethereum-org-description": "આ વેબસાઇટ સમુદાય આધારિત છે - અમારી સાથે જોડાઓ અને યોગદાન આપો",
+ "nav-ethereum-wallets-description": "તમારા ઈથિરિયમ એકાઉન્ટ સાથે ક્રિયાપ્રતિક્રિયા કરવા માટેની એપ્લિકેશન",
+ "nav-events-description": "વિકેન્દ્રીકરણ અને કોઈપણ માટે ભાગ લેવાની સ્વતંત્રતા",
+ "nav-events-irl-description": "દર મહિને મુખ્ય ઈથિરિયમ ઇવેન્ટ્સ વ્યક્તિગત અને ઑનલાઇન હોય છે",
+ "nav-events-label": "સમુદાયો અને ઘટનાઓ",
+ "nav-events-online-description": "આ ઑનલાઇન સમુદાયોમાં હજારો ઈથિરિયમ ઉત્સાહીઓ પિતા છે",
+ "nav-find-wallet-description": "વોલેટ્સ તમને ક્રિપ્ટોનો ઉપયોગ કરવા દે છે",
+ "nav-find-wallet-label": "તમારું વોલેટ પસંદ કરો",
+ "nav-gas-fees-description": "ETH ટ્રાન્ઝેક્શન ફીની ગણતરી કેવી રીતે કરવામાં આવે છે",
+ "nav-get-eth-description": "ઈથિરિયમ એપ્લિકેશનનો ઉપયોગ કરવા માટે તમને ઈથર (ETH) ની જરૂર છે",
+ "nav-get-started-description": "ઈથિરિયમનો ઉપયોગ કરવા માટેના તમારા પ્રથમ પગલાં",
+ "nav-governance-description": "ઈથિરિયમ પ્રોટોકોલને અપગ્રેડ કરવામાં સામેલ પ્રક્રિયા",
+ "nav-governance-label": "શાસન",
+ "nav-grants-description": "ગ્રાન્ટ ફંડિંગ પ્રોગ્રામ્સ પ્રદાન કરતા પ્રોજેક્ટ્સ પર અમારા સમુદાય દ્વારા ક્યુરેટેડ સૂચિ",
+ "nav-guide-create-account-description": "વોલેટ એપ્લિકેશન વડે કોઈપણ વ્યક્તિ કોઈપણ સમયે મફતમાં ઈથિરિયમ એકાઉન્ટ બનાવી શકે છે",
+ "nav-guide-revoke-access-description": "ઈથિરિયમ ઇકોસિસ્ટમમાં સ્માર્ટ કોન્ટ્રેક્ટ્સ અને એપ્લિકેશન્સ સાથે ક્રિયાપ્રતિક્રિયા કરતી વખતે સુરક્ષિત રહો",
+ "nav-guide-revoke-access-label": "સ્માર્ટ કોન્ટ્રેક્ટ એક્સેસ કેવી રીતે રદ કરવો",
+ "nav-guide-use-wallet-description": "વોલેટના તમામ મૂળભૂત કાર્યોને કેવી રીતે સંચાલિત કરવા તે જાણો",
+ "nav-guide-use-wallet-label": "વૉલેટનો ઉપયોગ કેવી રીતે કરવો",
+ "nav-guides-description": "તમને પ્રારંભ કરવામાં મદદ કરવા માટે પ્રાયોગિક પગલા-દર-પગલા માર્ગદર્શિકાઓ",
+ "nav-guides-label": "કેવી રીતે માર્ગદર્શન આપવું",
+ "nav-history-description": "તમામ મુખ્ય ફોર્ક અને અપડેટ્સની સમયરેખા",
+ "nav-history-label": "ઈથિરિયમનો ટેકનિકલ ઇતિહાસ",
+ "nav-layer-2-description": "ઈથિરિયમ માટે સસ્તા અને ઝડપી વ્યવહારો",
+ "nav-learn-by-coding-description": "સાધનો કે જે તમને ઈથિરિયમ સાથે પ્રયોગ કરવામાં મદદ કરે છે",
+ "nav-local-env-description": "તમારા ઈથિરિયમ વિકાસ સ્ટેકને પસંદ કરો અને સેટ કરો",
+ "nav-mainnet-description": "એન્ટરપ્રાઇઝ બ્લોકચેન એપ્લિકેશન જાહેર ઈથિરિયમ મેઇનેટ પર બનાવી શકાય છે",
+ "nav-nft-description": "ઈથિરિયમ-આધારિત સંપત્તિ તરીકે અનન્ય કંઈપણ રજૂ કરવાની રીત",
+ "nav-open-research-description": "ઈથિરિયમની પ્રાથમિક શક્તિઓમાંનો એક તેનો સક્રિય સંશોધન સમુદાય છે",
+ "nav-open-research-label": "ખુલ્લું સંશોધન",
+ "nav-overview-description": "બધી વસ્તુઓનું ઈથિરિયમ શિક્ષણ",
+ "nav-participate-overview-description": "કેવી રીતે ભાગ લેવો તેની ઝાંખી",
"nav-primary": "પ્રાથમિક",
+ "nav-quizzes-description": "તમે ઈથિરિયમ અને ક્રિપ્ટોકરન્સીને કેટલી સારી રીતે સમજો છો તે જાણો",
+ "nav-quizzes-label": "તમારા જ્ઞાનનું પરીક્ષણ કરો",
+ "nav-refi-description": "વૈકલ્પિક આર્થિક પ્રણાલી પુનર્જીવિત સિદ્ધાંતો પર બનેલી છે",
+ "nav-research-description": "ઈથિરિયમ સુધારવા માટે વપરાતી પ્રક્રિયાઓ",
+ "nav-research-label": "સંશોધન અને વિકાસ",
+ "nav-roadmap-description": "ઈથિરિયમ માટે વધુ સ્કેલેબિલીટી, સુરક્ષા અને ટકાઉપણાંનો માર્ગ",
+ "nav-roadmap-future-description": "મજબૂત અને વિકેન્દ્રિત નેટવર્ક તરીકે ઈથિરિયમને ઘન બનાવવું",
+ "nav-roadmap-future-label": "ફ્યુચર-પ્રૂફિંગ",
+ "nav-roadmap-label": "રોડમેપ",
+ "nav-roadmap-scaling-description": "વ્યવહારના ખર્ચ અને ઝડપને વધુ ઘટાડવા માટે નેટવર્ક અપડેટ્સ",
+ "nav-roadmap-security-description": "ભવિષ્યમાં ઈથિરિયમ તમામ પ્રકારના હુમલાઓ માટે સ્થિતિસ્થાપક રહે તેની ખાતરી કરવી",
+ "nav-roadmap-security-label": "સુધારેલ સુરક્ષા",
+ "nav-roadmap-ux-description": "સુધારેલ સુરક્ષા",
+ "nav-run-a-node-description": "નેટવર્કને સુરક્ષિત કરવામાં મદદ કરતી વખતે સંપૂર્ણ શ્રેષ્ઠ બનો",
+ "nav-security-description": "ક્રિપ્ટોકરન્સીનો ઉપયોગ કરતી વખતે શ્રેષ્ઠ પ્રણાલી જાણો",
+ "nav-smart-contracts-description": "ઈથિરિયમ ઇકોસિસ્ટમના મૂળભૂત બિલ્ડીંગ બ્લોક્સ",
+ "nav-stablecoins-description": "સ્ટેબલકોઇન્સ એ ઈથિરિયમ ટોકન્સ છે જે નિશ્ચિત મૂલ્ય પર રહેવા માટે રચાયેલ છે",
+ "nav-stake-description": "ઈથિરિયમને સુરક્ષિત કરવા માટે પુરસ્કારો કમાઓ",
+ "nav-stake-label": "સ્ટેક",
+ "nav-staking-home-description": "સ્ટેકિંગ માટેના વિવિધ વિકલ્પોનું પૂર્વાવલોકન",
+ "nav-staking-pool-description": "અન્ય લોકો સાથે જોડાઈને ETH ની કોઈપણ રકમ સાથે સ્ટેક કરો અને પુરસ્કારો કમાઓ",
+ "nav-staking-pool-label": "પૂલ સ્ટેકિંગ",
+ "nav-staking-saas-label": "સેવા સાથે સ્ટેકિંગ",
+ "nav-staking-solo-label": "સોલો સ્ટેકિંગ",
+ "nav-start-building-description": "નવા આવનારાઓ માટે ઉપયોગી માહિતી",
+ "nav-translation-program-description": "ethereum.org ને બધી ભાષાઓમાં અનુવાદિત કરવાનો સહયોગી પ્રયાસ",
+ "nav-tutorials-description": "સમુદાય ટ્યુટોરિયલ્સની ક્યૂરેટ કરેલ સૂચિ",
+ "nav-use-cases-description": "ઈથિરિયમના ઉપયોગ માટેના વિવિધ ખ્યાલો શોધો",
+ "nav-what-is-ether-description": "ઈથિરિયમ એપ્લિકેશન્સનું ચલણ",
+ "nav-what-is-ethereum-description": "ઈથિરિયમને શું ખાસ બનાવે છે તે સમજો",
+ "nav-what-is-web3-label": "વેબ3 શું છે?",
+ "nav-what-is-web3-description": "નિયમોનું નિર્દેશન કરતાં કેન્દ્રિય એકાધિકારનો વિકલ્પ",
+ "nav-whitepaper-description": "2014 માં વિટાલિક બ્યુટેરિન દ્વારા લખાયેલ મૂળ ઈથિરિયમ વ્હાઇટપેપર",
+ "nav-zkp-description": "પોતે જ નિવેદન જાહેર કર્યા વિના નિવેદનની માન્યતા સાબિત કરવાની રીત",
+ "nft-page": "NFTs - નોન-ફંગીબલ ટોકન્સ",
+ "nfts": "NFT",
"no": "ના",
"on-this-page": "આ પેજ પર",
"open-research": "ખુલ્લું સંશોધન",
+ "page-developers-aria-label": "ડેવેલોપર્સ મેનુ",
+ "page-index-meta-title": "હોમ",
"page-last-updated": "પેજ નું છેલ્લું અપડેટ",
- "privacy-policy": "ગોપનીયતા માટે નીતિ",
+ "participate-menu": "સહભાગી મેનૂ",
+ "pbs": "પ્રપોઝર-બિલ્ડરનું વિભાજન",
+ "pools": "પૂલ સ્ટેકિંગ",
+ "privacy-policy": "ગોપનીયતા નીતિ",
"private-ethereum": "ખાનગી ઈથિરિયમ",
+ "product-disclaimer": "ઉત્પાદનો અને સેવાઓ ઈથિરિયમ સમુદાય માટે સુવિધા તરીકે સૂચિબદ્ધ છે. ઉત્પાદન અથવા સેવાનો સમાવેશ ethereum.org વેબસાઇટ ટીમ અથવા ઈથિરિયમ ફાઉન્ડેશન તરફથી સમર્થનનું પ્રતિનિધિત્વ કરતું નથી.",
+ "quizzes-title": "ક્વિઝ હબ",
+ "quizzes": "ક્વિઝ",
"refresh": "કૃપા કરીને પેજ રિફ્રેશ કરો.",
"return-home": "હોમ પર પરત",
+ "roadmap": "ઈથિરિયમ રોડમેપ",
+ "research": "સંશોધન",
+ "research-menu": "સંશોધન મેનૂ",
+ "resources": "અનુવાદ સંસાધનો",
"run-a-node": "નોડ ચલાવો",
"rollup-component-website": "વેબસાઈટ",
"rollup-component-developer-docs": "વિકાસકર્તા દસ્તાવેજો",
"rollup-component-technology-and-risk-summary": "ટેકનોલોજી અને જોખમ સારાંશ",
+ "saas": "સેવા તરીકે સ્ટેકિંગ",
"search": "શોધો",
+ "search-ethereum-org": "ethereum.org શોધો",
+ "secret-leader-election": "ગુપ્ત આગેવાનની ચૂંટણી",
"search-box-blank-state-text": "દૂર શોધો!",
"search-eth-address": "આ ઈથિરિયમ સરનામા જેવું લાગે છે. અમે સરનામાં માટે વિશિષ્ટ ડેટા પ્રદાન કરતા નથી. બ્લોક એક્સપ્લોરર જેવા પર તેને શોધવાનો પ્રયાસ કરો",
"search-no-results": "તમારી શોધ માટે કોઈ પરિણામ નથી",
+ "security": "સુરક્ષા",
+ "single-slot-finality": "સિંગલ-સ્લોટ ફાઇનાલિટી",
+ "statelessness": "રાજ્યવિહીનતા",
"see-contributors": "યોગદાનકર્તાઓ જુઓ",
"set-up-local-env": "સ્થાનિક પર્યાવરણ સેટ કરો",
- "sharding": "શાર્ડિંગ",
+ "sharding": "શેરિંગ",
"show-all": "બધું બતાવો",
"show-less": "ઓછું બતાવો",
"site-description": "ઈથિરિયમ એ નાણાં અને નવા પ્રકારની એપ્લિકેશન માટે વૈશ્વિક, વિકેન્દ્રિત પ્લેટફોર્મ છે. ઈથિરિયમ પર, તમે કોડ લખી શકો છો જે પૈસાને નિયંત્રિત કરે છે અને વિશ્વમાં ગમે ત્યાં સુલભ એપ્લિકેશનો બનાવી શકે છે.",
- "site-title": "ethereum.org",
"skip-to-main-content": "મુખ્ય સામગ્રી પર જાઓ",
"smart-contracts": "સ્માર્ટ કરાર",
"stablecoins": "સ્ટેબલકોઇન્સ",
"staking": "સ્ટેકિંગ",
+ "start-here": "અહીંથી પ્રારંભ કરો",
"solo": "સોલો સ્ટેકિંગ",
- "saas": "સેવા તરીકે સ્ટેકિંગ",
- "pools": "પૂલ સ્ટેકિંગ",
+ "support": "આધાર",
"terms-of-use": "ઉપયોગના નિયમો",
"translation-banner-body-new": "તમે આ પેજ અંગ્રેજીમાં જોઈ રહ્યાં છો કારણ કે અમે હજી સુધી તેનો અનુવાદ કર્યો નથી. આ સામગ્રીનો અનુવાદ કરવામાં અમારી મદદ કરો.",
"translation-banner-body-update": "આ પેજનું નવું સંસ્કરણ છે પરંતુ તે હમણાં અંગ્રેજીમાં જ છે. નવીનતમ સંસ્કરણનો અનુવાદ કરવામાં અમારી મદદ કરો.",
@@ -135,22 +296,22 @@
"translation-banner-no-bugs-title": "અહીં કોઈ ભૂલો નથી!",
"translation-banner-no-bugs-content": "આ પેજનું ભાષાંતર કરવામાં આવી રહ્યું નથી. અમે ઇરાદાપૂર્વક આ પેજ અંગ્રેજીમાં હમણાં માટે છોડી દીધું છે.",
"translation-banner-no-bugs-dont-show-again": "ફરીથી બતાવશો નહીં",
+ "translation-program": "અનુવાદ કાર્યક્રમ",
"try-using-search": "તમે જે શોધી રહ્યાં છો તે શોધવા માટે શોધનો ઉપયોગ કરવાનો પ્રયાસ કરો અથવા",
"tutorials": "ટ્યુટોરિયલ્સ",
+ "up": "ઉપર",
+ "use": "ઉપયોગ",
"use-ethereum": "ઈથિરિયમનો ઉપયોગ કરો",
"use-ethereum-menu": "ઈથિરિયમ મેનુનો ઉપયોગ કરો",
- "wallets": "વૉલેટ",
+ "use-menu": "ઉપયોગ મેનૂ",
+ "verkle-trees": "વર્કલ ટ્રીસ",
+ "wallets": "પાકીટ",
"we-couldnt-find-that-page": "અમે તે પેજ શોધી શક્યાં નથી",
"web3": "વેબ3 શું છે?",
- "website-last-updated": "Website નું છેલ્લું અપડેટ",
+ "website-last-updated": "વેબસાઇટનું છેલ્લું અપડેટ",
"what-is-ether": "ઈથર (ETH) શું છે?",
- "what-is-ethereum": "ઈથિરિયમ શું છે?",
- "defi-page": "વિકેન્દ્રિત ફાઇનાન્સ (DeFi)",
- "dao-page": "વિકેન્દ્રિત સ્વાયત્ત સંસ્થાઓ (DAOs)",
- "nft-page": "નોન-ફંગીબલ ટોકન્સ (NFTs)",
- "decentralized-social-networks": "વિકેન્દ્રિત સામાજિક નેટવર્ક્સ",
- "decentralized-identity": "વિકેન્દ્રિત ઓળખ",
+ "what-is-ethereum": "શું છે ઇથિરિયમ?",
+ "withdrawals": "સ્ટેકીંગ ઉપાડ",
"yes": "હા",
- "zero-knowledge-proofs": "શૂન્ય-જાણકારી પુરાવાઓ",
- "page-index-meta-title": "હોમ"
+ "zero-knowledge-proofs": "શૂન્ય-જાણકારી પુરાવાઓ"
}
diff --git a/src/intl/gu/page-languages.json b/src/intl/gu/page-languages.json
index 57507c5f268..d9ea63528ca 100644
--- a/src/intl/gu/page-languages.json
+++ b/src/intl/gu/page-languages.json
@@ -1,4 +1,12 @@
{
+ "page-languages-h1": "ભાષા સમર્થન",
+ "page-languages-want-more-link": "અનુવાદ કાર્યક્રમ",
+ "page-languages-filter-label": "ફિલ્ટર યાદી",
+ "page-languages-filter-placeholder": "ફિલ્ટર કરવા માટે ટાઈપ કરો",
+ "page-languages-browser-default": "બ્રાઉઝર ડિફૉલ્ટ",
+ "page-languages-translated": "અનુવાદિત",
+ "page-languages-words": "શબ્દો",
+ "page-languages-recruit-community": "ethereum.org નો અનુવાદ કરવામાં અમારી મદદ કરો.",
"language-ar": "અરબી",
"language-az": "અઝરબૈજાની",
"language-bg": "બલ્ગેરિયન",
@@ -14,6 +22,8 @@
"language-fi": "ફિનિશ",
"language-fr": "ફ્રેન્ચ",
"language-gl": "ગેલિશિયન",
+ "language-gu": "ગુજરાતી",
+ "language-he": "હીબ્રુ",
"language-hi": "હિન્દી",
"language-hr": "ક્રોએશિયન",
"language-hu": "હંગેરિયન",
diff --git a/src/intl/gu/page-stablecoins.json b/src/intl/gu/page-stablecoins.json
index ef477457f96..c474682a6ca 100644
--- a/src/intl/gu/page-stablecoins.json
+++ b/src/intl/gu/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao લોગો",
"matcha-logo": "મેચ લોગો",
"oasis-logo": "ઓએસિસ લોગો",
- "uniswap-logo": "યુનિસ્વેપ લોગો"
+ "uniswap-logo": "યુનિસ્વેપ લોગો",
+ "page-stablecoins-category-dashboard-and-education": "ડેશબોર્ડ અને શિક્ષણ"
}
diff --git a/src/intl/he/common.json b/src/intl/he/common.json
index 14fd7ef65cf..6db1b768429 100644
--- a/src/intl/he/common.json
+++ b/src/intl/he/common.json
@@ -1,17 +1,30 @@
{
- "account-abstraction": "הפשטת חשבון",
"about-ethereum-org": "אודות ethereum.org",
"about-us": "אודותינו",
+ "adding-desci-projects": "הוספת פרויקטים Desci",
+ "adding-developer-tools": "הוספת כלי פיתוח",
+ "adding-exchanges": "הוספת בורסות",
+ "adding-glossary-terms": "הוספת מונחים למילון מונחים",
+ "adding-staking-products": "הוספת מוצרי סטייקינג",
+ "adding-wallets": "הוספת ארנקים",
+ "account-abstraction": "הפשטת חשבון",
+ "acknowledgements": "תודות",
"aria-toggle-search-button": "החלף את לחצן החיפוש",
"aria-toggle-menu-button": "החלף את לחצן התפריט",
"beacon-chain": "Beacon Chain",
"bridges": "גשרי בלוקצ'יין",
+ "bug-bounty": "תוכנת תמריצים לזיהוי שגיאות",
+ "build": "בנה",
+ "build-menu": "בנה תפריט",
"clear": "נקה",
"close": "סגור",
"community": "קהילה",
"community-hub": "בית הקהילה",
"community-menu": "הקהילה",
"contact": "צור קשר",
+ "content-buckets": "קטגוריות החומרים",
+ "content-resources": "משאבי תוכן",
+ "content-standardization": "סטנדרטיזציה של תוכן",
"contributing": "תורמים",
"contributors": "משתתפי הפרויקט",
"contributors-thanks": "לכל מי שתרם לדף זה - תודה!",
@@ -19,21 +32,45 @@
"copied": "מועתק",
"copy": "העתק",
"danksharding": "דנקסהארדינג",
+ "dao-page": "DAOs - ארגונים אוטונומיים מבוזרים",
"dark-mode": "כהה",
"data-provided-by": "מקור הנתונים:",
- "decentralized-applications-dapps": "יישומים מבוזרים (dapps)",
- "decentralized-science": "מדע מבוזר (DeSci)",
+ "decentralized-applications-dapps": "Dapps - יישומים מבוזרים",
+ "decentralized-identity": "זהות מבוזרת",
+ "decentralized-social-networks": "רשת חברתית מבוזרת",
+ "decentralized-science": "DeSci - מדע מבוזר",
+ "description": "תיאור פריט ניווט",
+ "defi-page": "DeFi - פיננסים מבוזרים",
+ "design": "עיצוב",
+ "design-principles": "עקרונות העיצוב",
"devcon": "Devcon",
"developers": "מפתחים",
"developers-home": "דף הבית של מפתחים",
- "docs": "מסמכים",
- "documentation": "דוקומנטציה",
+ "docs": "תיעוד",
+ "docsearch-to-select": "לבחור",
+ "docsearch-to-navigate": "לעבור",
+ "docsearch-to-close": "לסגור",
+ "docsearch-search-by": "חיפוש לפי",
+ "docsearch-start-recent-searches-title": "לאחרונה",
+ "docsearch-start-no-recent-searches": "לא נמצאו חיפושים אחרונים",
+ "docsearch-start-save-recent-search": "שמור את החיפוש הזה",
+ "docsearch-start-remove-recent-search": "מחק את החיפוש הזה מהיסטורית חיפושים",
+ "docsearch-start-favorite-searches": "מועדף",
+ "docsearch-start-remove-favorite-search": "מחק חיפוש זה מהחיפושים המעודפים",
+ "docsearch-no-results-text": "אין תוצאות עבור",
+ "docsearch-no-results-suggested-query": "תנסה לחפש",
+ "docsearch-no-results-missing": "האם אתה מאמין שהמשפט צריך להחזיר תשובות?",
+ "docsearch-no-results-missing-link": "תודיע לנו.",
+ "docsearch-error-title": "לא ניתן להשיג תוצאות",
+ "docsearch-error-help": "ייתכן שתרצה לבדוק את חיבור האינטרנט שלך.",
+ "documentation": "תיעוד",
+ "down": "מטה",
"ecosystem": "סביבת האקולוגיה",
- "edit-page": "ערוך עמוד",
+ "edit-page": "דף עריכה",
"ef-blog": "בלוג קרן אתריום",
"eips": "הצעות לשיפור אטריום",
"energy-consumption": "צריכת האנרגיה של אתריום",
- "enterprise": "יוזמה",
+ "enterprise": "עסק",
"enterprise-menu": "תפריט מיזם",
"esp": "תוכנית תמיכה מערכת אקולוגית ",
"eth-current-price": "מחיר ETH עכשווי (USD)",
@@ -48,9 +85,11 @@
"ethereum-glossary": "מילון מונחי אטריום",
"ethereum-governance": "הפיקוח של אתריום",
"ethereum-logo": "לוגו אטריום",
+ "ethereum-roadmap": "מפת הדרכים של אתריום",
+ "ethereum-protocol": "פרוטוקול אתריום",
"ethereum-security": "אבטחה של אתריום ומניעת הונאה",
"ethereum-support": "תמיכת אתריום",
- "ethereum-wallets": "ארנקי אטריום",
+ "ethereum-wallets": "ארנקי אתריום",
"ethereum-whitepaper": "דפי הסבר אטריום",
"feedback-widget-prompt": "האם הדף הזה מועיל?",
"feedback-card-prompt-page": "האם הדף הזה עזר לך?",
@@ -58,7 +97,7 @@
"feedback-card-prompt-tutorial": "האם המדריך הזה היה מועיל?",
"feedback-widget-thank-you-title": "תודה על המשוב שלך!",
"feedback-widget-thank-you-subtitle": "תעשה את הדף הזה אפילו יותר טוב אם תענה על כמה שאלות.",
- "feedback-widget-thank-you-subtitle-ext": "אם אתה צריך עזרה, אתה יכול ליצור איתנו קשר בDiscord.",
+ "feedback-widget-thank-you-subtitle-ext": "אם נדרשת לך לעזרה, ניתן לפנות לקהילה בDiscord שלנו.",
"feedback-widget-thank-you-timing": "2-3 דקות",
"feedback-widget-thank-you-cta": "פתח שאלון קצר",
"find-wallet": "محفظة",
@@ -68,20 +107,18 @@
"get-started": "התחל",
"grants": "מענקים",
"grant-programs": "תוכנית מענקים של המערכת האקולוגית",
- "guides-and-resources": "מדריכים ומשאבים של הקהילה",
"guides": "מדריכים",
- "guides-hub": "מרכז מדריכים",
+ "guides-hub": "מדריכים פרקטיים",
"history-of-ethereum": "היסטוריה של אתריום",
"home": "דף הבית",
"how-ethereum-works": "איך אתריום עובד",
- "how-to-create-an-ethereum-account": "איך \"לרשום\" חשבון אתריום",
"how-to-revoke-token-access": "איך לבטל גישה של חוזה חכם לכספי הקריפטו שלך",
"how-to-swap-tokens": "איך להחליף אסימונים",
"how-to-use-a-bridge": "איך לגשר אסימונים לשכבה 2",
"how-to-use-a-wallet": "איך להשתמש בארנק",
"image": "איור",
"in-this-section": "במדור זה",
- "individuals": "יחיד",
+ "individuals": "יחידים",
"jobs": "משרות",
"kraken-logo": "לוגו של קראקן",
"language-resources": "משאבי שפה",
@@ -90,8 +127,9 @@
"last-24-hrs": "24 השעות האחרונות",
"last-edit": "עריכה אחרונה",
"layer-2": "שכבה 2",
- "learn": "למדו",
+ "learn": "למד",
"learn-by-coding": "למדו דרך תכנות",
+ "learn-hub": "מרכז למידה",
"learn-menu": "תפריט למידה",
"learn-more": "למדו עוד",
"less": "פחות",
@@ -100,33 +138,140 @@
"loading": "טוען...",
"loading-error": "שגיאת טעינה.",
"loading-error-refresh": "שגיאה, נא לרענן את העמוד.",
+ "loading-error-try-again-later": "לא ניתן לטעון מידע. נא לנסות שוב.",
"logo": "לוגו",
"mainnet-ethereum": "אתריום ב-Mainnet",
+ "merge": "מיזוג",
"more": "יותר",
- "nav-developers": "מפתחים",
+ "nav-about-description": "פרויקט פומבי עם קוד פתוח לקהילת אתריום",
+ "nav-advanced-description": "עיין בנושאים מורכבים יותר",
+ "nav-advanced-label": "מתקדם",
+ "nav-basics-description": "תבין את היסודות של אתריום",
+ "nav-basics-label": "יסודות",
+ "nav-bridges-description": "Web3 התפתחה למערכת אקולוגית של בלוקצ'יין בשכבה 1 ופתרונות, שניתן לעשות להם סקיילינג, בשכבה 2",
+ "nav-builders-home-description": "מדריך בונה באתריום - שנכתב ע\"י בונים ולבונים",
+ "nav-builders-home-label": "בית הבונים",
+ "nav-contribute-description": "אם ברצונך לעזור, הוא ידריך אותך",
+ "nav-contribute-label": "תרומה ל-ethereum.org",
+ "nav-dao-description": "קהילות בבעלות חברי הקהילות ללא סמכות מרכזית",
+ "nav-dapps-description": "גלה מערכת אקולוגית עשירה של אפליקציות ע\"י שימוש באתריום",
+ "nav-defi-description": "חלופה גלובלית ופתוחה לשוק הפיננסי המסורתי",
+ "nav-desci-description": "חלופה גלובלית ופתוחה למערכת המדעית הנוכחית",
+ "nav-desoc-description": "פלטפורמות המבוססות על בלוקצ'יין לאינטראקציה חברתית ויצירת תוכן",
"nav-developers-docs": "מסמכי מפתחים",
+ "nav-developers": "מפתחים",
+ "nav-did-description": "הנפק את המזהים המבוזרים הייחודיים שלך ותהיה בעלים שלהם",
+ "nav-docs-description": "המסמכים לעזרתך כדי שתבין את אתריום ותבנה איתו",
+ "nav-docs-design-description": "תיאור האתגרים לעיצוב ייחודי ב-web3, שיטות עבודה הטובות ביותר, ותובנות במחקר של המשתמשים",
+ "nav-docs-design-label": "יסודות עיצוב UX/UI",
+ "nav-docs-foundation-description": "יסודות הליבה של פיתוח באתריום",
+ "nav-docs-overview-description": "הבית שלך למסמכי המפתח",
+ "nav-docs-stack-description": "תבין את כל הפרטים של אתריום",
+ "nav-eip-description": "התקנים המגדירים את התכונות או תהליכים החדשים",
+ "nav-eip-label": "EIP - הצעות לשיפור אתריום",
+ "nav-emerging-description": "למד על מקרי שימוש חדשים אחרים באתריום",
+ "nav-enterprise-description": "אפליקציות עסקיות לאתריום",
+ "nav-ethereum-org-description": "האתר מונע ע\"י קהילה - הצטרף אלינו ותרום גם כן",
+ "nav-ethereum-wallets-description": "האפליקציה כדי לתקשר עם חשבון האתריום שלך",
+ "nav-events-description": "ביזור וחופש להשתתף לכל אחד",
+ "nav-events-irl-description": "כל חודש ישנם אירועים גדולים הקשורים לאתריום אופליין ואונליין",
+ "nav-events-label": "קהילות ואירועים",
+ "nav-events-online-description": "מאות אלפי חובבי אתריום משתתפים בקהילות האלה אונליין",
+ "nav-find-wallet-description": "הארנקים מאפשרים להשתמש במטבעות קריפטו",
+ "nav-find-wallet-label": "בחר את הארנק שלך",
+ "nav-gas-fees-description": "איך מחושבות עמלות עבור עסקאות עם שימוש ב-ETH",
+ "nav-get-eth-description": "כדי להשתמש באפליקציות אתריום נדרש אתריום (ETH)",
+ "nav-get-started-description": "הצעדים הראשונים שלך לשימוש באתריום",
+ "nav-governance-description": "התהליך המעורב בעדכון פרוטוקול אתריום",
+ "nav-governance-label": "פיקוח",
+ "nav-grants-description": "רשימת הפרויקטים המפוקחים ע\"י הקהילה שלנו, אשר מספקים תוכניות מימון באמצעות מענקים כספיים",
+ "nav-guide-create-account-description": "כל אחד יכול ליצור חשבון אתריום בכל עת בחינם עם אפליקציית ארנק",
+ "nav-guide-revoke-access-description": "תישארו מאובטחים כאשר אתם מתקשרים עם חוזים חכמים ואפליקציות במערכת אקולוגית של אתריום",
+ "nav-guide-revoke-access-label": "איך לשחזר גישה לחוזה חכם",
+ "nav-guide-use-wallet-description": "למד איך להפעיל את כל הפונקציות הבסיסיות של ארנק",
+ "nav-guide-use-wallet-label": "איך להשתמש בארנק",
+ "nav-guides-description": "מדריכים מעשיים צעד אחר צעד שיעזרו לך להתחיל",
+ "nav-guides-label": "מדריכים שמסבירים איך לעבוד",
+ "nav-history-description": "ציר הזמן של כל הפורקים ועדכונים העיקריים",
+ "nav-history-label": "היסטוריה טכנית של אתריום",
+ "nav-layer-2-description": "עסקאות זולות ומהירות יותר עם אתריום",
+ "nav-learn-by-coding-description": "הכלים שעוזרים לך לנסות את אתריום",
+ "nav-local-env-description": "בחר והגדר את ערכת פיתוח של אתרריום שלך",
+ "nav-mainnet-description": "אפליקציות עסקיות לעבודה עם בלוקצ'יינים ניתן לבנות ברשת Mainnet הציבורית של אתריום",
+ "nav-nft-description": "דרך להציג משהו ייחודי בתור נכס המבוסס על אתריום",
+ "nav-open-research-description": "אחד היתרונות העיקריים של אתריום הוא הקהילה המחקרית הפעילה",
+ "nav-open-research-label": "פתח מחקר",
+ "nav-overview-description": "כל הדברים בהדרכה בנושא אתריום",
+ "nav-participate-overview-description": "סקירה כללית על אופן השתתפות",
"nav-primary": "עיקרי",
+ "nav-quizzes-description": "גלה עד כמה אתה מבין אתריום ומטבעות קריפטו",
+ "nav-quizzes-label": "בדוק את הידע שלך",
+ "nav-refi-description": "מערכת כלכלית חילופית הנבנית על עקרונות התחדשות",
+ "nav-research-description": "התהליכים שהיו בשימוש כדי לשפר אתריום",
+ "nav-research-label": "מחקר ופיתוח",
+ "nav-roadmap-description": "הדרך לסילומיות, בטיחות וקיימות של אתריום",
+ "nav-roadmap-future-description": "חיזוק אתריום כרשת חזקה ומבוזרת",
+ "nav-roadmap-future-label": "הגהה בעתיד",
+ "nav-roadmap-label": "מפת דרך",
+ "nav-roadmap-scaling-description": "עדכוני רשת להנמיך עוד יותר את העלויות ולהגביר מהירות",
+ "nav-roadmap-security-description": "כדי לוודא שאתריום יישאר עמיד בפני כל מיני התקפות בעתיד",
+ "nav-roadmap-security-label": "בטיחות משופרת",
+ "nav-roadmap-ux-description": "יש לפשט את השימוש באתריום",
+ "nav-run-a-node-description": "תהפוך להיות ריבון מוחלט בזמן ביצוע עזרה לאבטחת הרשת",
+ "nav-security-description": "למד שיטות עבודה הכי טובות בעת שימוש במטבעות קריפטו",
+ "nav-smart-contracts-description": "אבני הבניין הבסיסיות של המערכת האקולוגית של אתריום",
+ "nav-stablecoins-description": "מטבעות יציבים הם אסימוני אתריום שנועדו להישאר בעלי ערך קבוע",
+ "nav-stake-description": "הרוויחו פרסים על הבטחת אתריום",
+ "nav-stake-label": "הסכום הנעול",
+ "nav-staking-home-description": "סקירה כללית של אפשרויות שונות עבור סטייקינג",
+ "nav-staking-pool-description": "בצע סטייקינג ותרוויח פרסים עם כל סכום של אתריום ע\"י הצטרפות לאחרים",
+ "nav-staking-pool-label": "הפקדה מאוחדת",
+ "nav-staking-saas-label": "ביצוע סטייקינג באמצעות שירות",
+ "nav-staking-solo-label": "הפקד לבד",
+ "nav-start-building-description": "מידע שימושי למתחילים",
+ "nav-translation-program-description": "מאמץ משותף לתרגם את ethereum.org לכל השפות",
+ "nav-tutorials-description": "הרשימה המפוקחת של מדריכי הקהילה",
+ "nav-use-cases-description": "גלה רעיונות שימוש באתריום שונים",
+ "nav-what-is-ether-description": "מטבע אפליקציות אתריום",
+ "nav-what-is-ethereum-description": "תבין מה עושה אתריום מיוחד",
+ "nav-what-is-web3-label": "מה זה Web3?",
+ "nav-what-is-web3-description": "חלופה למונופולים העיקריים המכתיבים את הכללים",
+ "nav-whitepaper-description": "הספר הלבן המקורי של אתריום שנכתב על ידי ויטליק בוטרין בשנת 2014",
+ "nav-zkp-description": "דרך להוכיח את התקפות של אמירה מבלי לחשוף את ההצהרה עצמה",
+ "nft-page": "NFTs - אסימונים לא ניתנים לשינוי",
"nfts": "NFTs",
"no": "לא",
"on-this-page": "בדף זה",
"open-research": "פתח מחקר",
+ "page-developers-aria-label": "תפריט המפתחים",
+ "page-index-meta-title": "דף הבית",
"page-last-updated": "הדף עודכן לאחרונה",
+ "participate-menu": "תפריט השתתפות",
"pbs": "הפרדה של המציע-בונה",
+ "pools": "הפקדה מאוחדת",
"privacy-policy": "מדיניות הפרטיות",
"private-ethereum": "אתריום פרטי",
+ "product-disclaimer": "המוצרים והשירותים מפורטים כאפשרויות עבור קהילת אתריום. הכללת מוצר או שירות אינה מייצגת אישור של צוות האתר ethereum.org, או של קרן אתריום.",
+ "quizzes-title": "צומת חידונים",
+ "quizzes": "חידונים",
"refresh": "נא לרענן את העמוד.",
"return-home": "חזרה לדף הבית",
"roadmap": "מפת הדרכים של אתריום",
+ "research": "מחקר",
+ "research-menu": "תפריט מחקר",
+ "resources": "משאבי תרגום",
"run-a-node": "הפעל נוד",
"rollup-component-website": "אתר אינטרנט",
"rollup-component-developer-docs": "מדריכי מפתחים",
"rollup-component-technology-and-risk-summary": "תקציר טכנולוגיה וסיכונים",
- "scaling": "Scaling",
+ "saas": "הפקדה בתור שירות",
"search": "חיפוש",
+ "search-ethereum-org": "חפש ב-ethereum.org",
"secret-leader-election": "בחירת מנהיג בחשאי",
"search-box-blank-state-text": "חפש!",
"search-eth-address": "זה נראה כמו כתובת אתריום. אנחנו לא מספקים מידע על כתובות מסיומות. נסה לחפש בחוקרי בלוק",
"search-no-results": "לא נמצאו תוצאות לחיפוש",
+ "security": "אבטחה",
"single-slot-finality": "סופיות של משבצת אחת",
"statelessness": "ללא מדינה",
"see-contributors": "צפה בכל התורמים",
@@ -135,15 +280,14 @@
"show-all": "הצג הכל",
"show-less": "הצג פחות",
"site-description": "אתריום הוא פלטפורמה גלובלית מבוזרת לכסף ולסוגים חדשים של יישומים. על גבי הפלטפורמה של אתריום ניתן לכתוב קוד ששולט על כסף ולבנות יישומים נגישים בכל מקום בעולם.",
- "site-title": "ethereum.org",
"skip-to-main-content": "דלג לתוכן העיקרי",
"smart-contracts": "חוזים חכמים",
"stablecoins": "מטבעות יציבים",
+ "stake-eth": "ETH להימור",
"staking": "מפקיד",
+ "start-here": "התחל כאן",
"solo": "הפקד לבד",
- "saas": "הפקדה בתור שירות",
- "pools": "הפקדה מאוחדת",
- "withdrawals": "משיכות הימור",
+ "support": "תמיכה",
"terms-of-use": "תנאי שימוש",
"translation-banner-body-new": "אתה רואה עמוד זה באנגית מכיוון שעוד לא תירגמנו אותו. עזור לנו לתרגם את התוכן הזה.",
"translation-banner-body-update": "יש גרסה חדשה יותר של הדף הזה אבל הוא כרגע זמין רק באנגלית. עזור לנו לתרגם את הגרסה העדכנית.",
@@ -154,26 +298,23 @@
"translation-banner-no-bugs-title": "אין כאן באגים!",
"translation-banner-no-bugs-content": "הדף הזה לא הולך להיות מתורגם כעת. השארנו דף זה באנגלית בכוונה לעת עתה.",
"translation-banner-no-bugs-dont-show-again": "אל תציג שוב",
+ "translation-program": "תוכנית תרגום",
"try-using-search": "נסה להשתמש בחיפוש כדאי למצוא מה שאתה מחפש",
"tutorials": "הדרכות",
+ "up": "למעלה",
+ "use": "השתמש",
"use-ethereum": "השתמשו באתריום",
"use-ethereum-menu": "השתמש באתריום",
- "user-experience": "User experience",
+ "use-menu": "תפריט שימוש",
"verkle-trees": "עצי ורקל",
"wallets": "ארנקים",
"we-couldnt-find-that-page": "לא הצלחנו למצוא עמוד זה",
"web3": "מה זה Web3?",
"web3-title": "Web3",
"website-last-updated": "אתר האינטרנט עודכן לאחרונה",
- "what-is-ether": "מה זה אתר (ETH)?",
+ "what-is-ether": "מה זה אית'ר (ETH)?",
"what-is-ethereum": "מה זה אתריום?",
- "defi-page": "פיננסים מבוזרים (DeFi)",
- "dao-page": "ארגונים אוטונומיים מבוזרים (DAOs)",
- "nft-page": "אסימונים לא ניתנים לשינוי (NFTs)",
- "decentralized-social-networks": "רשת חברתית מבוזרת",
- "decentralized-identity": "זהות מבוזרת",
+ "withdrawals": "משיכות הימור",
"yes": "כן",
- "zero-knowledge-proofs": "הוכחות אפס ידע",
- "ethereum-roadmap": "מפת הדרכים של אתריום",
- "page-index-meta-title": "דף הבית"
+ "zero-knowledge-proofs": "הוכחות אפס ידע"
}
diff --git a/src/intl/he/page-languages.json b/src/intl/he/page-languages.json
index 3030b24e37d..eaceba5be92 100644
--- a/src/intl/he/page-languages.json
+++ b/src/intl/he/page-languages.json
@@ -1,4 +1,22 @@
{
+ "page-languages-h1": "תמיכת שפה",
+ "page-languages-interested": "Interested in contributing?",
+ "page-languages-learn-more": "Learn more about our Translation Program",
+ "page-languages-meta-desc": "Resources to all supported languages of ethereum.org and ways to get involved as a translator.",
+ "page-languages-meta-title": "ethereum.org Language Translations",
+ "page-languages-p1": "Ethereum is a global project, and it is critical that ethereum.org is accessible to everyone, regardless of their nationality or language. Our community has been working hard to make this vision a reality.",
+ "page-languages-translations-available": "ethereum.org is available in the following languages",
+ "page-languages-resources-paragraph": "In addition to translating ethereum.org content, we also maintain a",
+ "page-languages-resources-link": "curated list of Ethereum resources in many languages",
+ "page-languages-want-more-header": "Want to see ethereum.org in a different language?",
+ "page-languages-want-more-link": "קבוצת תירגום",
+ "page-languages-want-more-paragraph": "ethereum.org translators are always translating pages in as many languages as possible. To see what they're working on right now or to sign up to join them, read about our",
+ "page-languages-filter-label": "רשימת סינון",
+ "page-languages-filter-placeholder": "הקלד כדי לסנן",
+ "page-languages-browser-default": "דפדפן ברירת מחדל",
+ "page-languages-translated": "תורגם",
+ "page-languages-words": "מילים",
+ "page-languages-recruit-community": "עזור לנו לתרגם ethereum.org.",
"language-ar": "ערבית",
"language-az": "אזרביג'אנית",
"language-bg": "בולגרית",
@@ -43,8 +61,8 @@
"language-sl": "סלובנית",
"language-sr": "סרבית",
"language-sw": "סווהילי",
- "language-th": "תאית",
"language-ta": "טמילית",
+ "language-th": "תאית",
"language-tr": "טורקית",
"language-uk": "אוקראינית",
"language-uz": "אוזבקית",
diff --git a/src/intl/he/page-stablecoins.json b/src/intl/he/page-stablecoins.json
index 22effe1d946..a08c916c7ac 100644
--- a/src/intl/he/page-stablecoins.json
+++ b/src/intl/he/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "לוגו של MakerDao",
"matcha-logo": "לוגו של מאתצא",
"oasis-logo": "לוגו של אואסיס",
- "uniswap-logo": "לוגו של אוניס'אפ"
+ "uniswap-logo": "לוגו של אוניס'אפ",
+ "page-stablecoins-category-dashboard-and-education": "לוח מחוונים וחינוך"
}
diff --git a/src/intl/hi/common.json b/src/intl/hi/common.json
index 380a1a58ae8..5c55c097c0c 100644
--- a/src/intl/hi/common.json
+++ b/src/intl/hi/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "खाता ऐब्स्ट्रैक्शन",
"about-ethereum-org": "ethereum.org के बारे में",
"about-us": "हमारे बारे में",
+ "adding-desci-projects": "Desci प्रोजेक्ट जोड़ना",
+ "adding-developer-tools": "डेवलपर टूल जोड़ना",
+ "adding-exchanges": "एक्सचेंज जोड़ना",
+ "adding-glossary-terms": "ग्लॉसरी के शब्द जोड़ना",
+ "adding-staking-products": "स्टेकिंग प्रोडक्ट जोड़ना",
+ "adding-wallets": "वॉलेट जोड़ना",
+ "account-abstraction": "खाता ऐब्स्ट्रैक्शन",
+ "acknowledgements": "पावतियाँ",
"aria-toggle-search-button": "खोज बटन टॉगल करें",
"aria-toggle-menu-button": "मेनू बटन टॉगल करें",
"beacon-chain": "बीकन चेन",
"bridges": "ब्लॉकचेन ब्रिज",
+ "bug-bounty": "बग बाउंटी",
+ "build": "बिल्ड",
+ "build-menu": "बिल्ड मेनू",
"clear": "स्पष्ट करें",
"close": "बंद करे",
"community": "कम्युनिटी",
"community-hub": "सामुदायिक फ़ोरम",
"community-menu": "कम्युनिटी मेनू",
"contact": "संपर्क करें",
+ "content-buckets": "कंटेंट बकेट",
+ "content-resources": "कंटेंट संसाधन",
"content-standardization": "अंतर्वस्तु मानकीकरण",
"contributing": "सहयोग करना",
"contributors": "योगदानकर्ता",
@@ -20,14 +32,17 @@
"copied": "कॉपी किया गया",
"copy": "कॉपी करें",
"danksharding": "डैंकशार्डिंग",
- "dao-page": "विकेन्द्रीकृत स्वायत्त संगठन (DAO)",
+ "dao-page": "DAO - विकेन्द्रीकृत स्वायत्त संगठन",
"dark-mode": "गहरा रंग",
"data-provided-by": "डाटा सोर्स:",
- "decentralized-applications-dapps": "विकेंद्रीकृत अनुप्रयोग (dapps)",
+ "decentralized-applications-dapps": "Dapps - विकेंद्रीकृत अनुप्रयोग",
"decentralized-identity": "विकेन्द्रीकृत पहचान",
"decentralized-social-networks": "विकेन्द्रीकृत सोशल नेटवर्क",
- "decentralized-science": "विकेंद्रित विज्ञान (DeSci)",
- "defi-page": "विकेन्द्रीकृत वित्त (DeFi)",
+ "decentralized-science": "DeSci - विकेंद्रित विज्ञान",
+ "description": "नेविगेशन आइटम का ब्यौरा",
+ "defi-page": "DeFi - विकेन्द्रीकृत वित्त",
+ "design": "डिज़ाइन",
+ "design-principles": "डिज़ाइन सिद्धांत",
"devcon": "डेवकॉन",
"developers": "डेवलपर",
"developers-home": "डेवलपर के लिए मुखपृष्ठ",
@@ -59,11 +74,11 @@
"enterprise-menu": "एंटरप्राइज़ मेनू",
"esp": "इकोसिस्टम सहायता कार्यक्रम",
"eth-current-price": "वर्तमान ETH मूल्य (USD)",
- "ethereum-basics": "Ethereum की मूल बातें",
+ "ethereum-basics": "इथेरियम की मूल बातें",
"ethereum-bug-bounty": "इथेरियम बग बाउंटी कार्यक्रम",
"consensus-when-shipping": "यह कब शिप हो रहा है?",
"ethereum-upgrades": "एथेरियम के अपग्रेड",
- "ethereum-brand-assets": "इथेरियम ब्रांड संपत्ति",
+ "ethereum-brand-assets": "इथेरियम ब्रांड की संपत्ति",
"ethereum-online": "ऑनलाइन समुदाय",
"ethereum-events": "एथेरियम इवेंट्स",
"ethereum-foundation": "Ethereum फाउंडेशन",
@@ -75,7 +90,7 @@
"ethereum-protocol": "इथेरियम प्रोटोकॉल",
"ethereum-security": "Ethereum सुरक्षा और धोखाधड़ी से रोकथाम",
"ethereum-support": "एथेरियम सपोर्ट",
- "ethereum-wallets": "Ethereum वॉलेट",
+ "ethereum-wallets": "इथेरियम वॉलेट",
"ethereum-whitepaper": "Ethereum व्हाइटपेपर",
"feedback-widget-prompt": "क्या यह पृष्ठ सहायक है?",
"feedback-card-prompt-page": "क्या यह पेज सहायक था?",
@@ -83,7 +98,7 @@
"feedback-card-prompt-tutorial": "क्या यह ट्यूटोरियल सहायक था?",
"feedback-widget-thank-you-title": "आपकी प्रतिक्रिया के लिए धन्यवाद!",
"feedback-widget-thank-you-subtitle": "कुछ सवालों के जवाब देकर इस पेज को और बेहतर बनाएं।",
- "feedback-widget-thank-you-subtitle-ext": "अगर आपको मदद चाहिए, तो आप हमारे Discord पर समुदाय से संपर्क कर सकते हैं।",
+ "feedback-widget-thank-you-subtitle-ext": "अगर आपको मदद चाहिए तो आप हमारे Discord पर कम्युनिटी से संपर्क कर सकते हैं।",
"feedback-widget-thank-you-timing": "2–3 मिनट",
"feedback-widget-thank-you-cta": "लघु सर्वेक्षण खोलें",
"find-wallet": "वॉलेट खोजें",
@@ -94,11 +109,11 @@
"grants": "अनुदान",
"grant-programs": "इकोसिस्टम ग्रांट प्रोग्राम",
"guides": "मार्गदर्शक",
- "guides-hub": "मार्गदर्शक केंद्र",
+ "guides-hub": "कैसे-करें मार्गदर्शिकाएं",
"history-of-ethereum": "Ethereum का इतिहास",
"home": "मुखपृष्ठ",
"how-ethereum-works": "Ethereum कैसे काम करता है",
- "how-to-register-an-ethereum-account": "एथेरियम खाते को \"पंजीकृत\" कैसे करें",
+ "how-to-create-an-ethereum-account": "इथेरियम खाते को कैसे \"बनाएं\"",
"how-to-revoke-token-access": "अपने क्रिप्टो कोष के लिए स्मार्ट अनुबंध के प्रवेश को कैसे रद्द करें",
"how-to-swap-tokens": "टोकन कैसे स्वैप करें",
"how-to-use-a-bridge": "टोकन को दूसरी परत से कैसे जोड़े",
@@ -116,7 +131,7 @@
"layer-2": "परत 2",
"learn": "सीखें",
"learn-by-coding": "कोडिंग द्वारा सीखें",
- "learn-hub": "लर्न केंद्र",
+ "learn-hub": "लर्न हब",
"learn-menu": "सीखने का मेनू",
"learn-more": "अधिक जानें",
"less": "कम",
@@ -128,11 +143,113 @@
"loading-error-try-again-later": "डेटा लोड नहीं किया जा सका। बाद में फिर से कोशिश करें।",
"logo": "लोगो",
"mainnet-ethereum": "Ethereum का मुख्य नेटवर्क",
+ "merge": "मर्ज करें",
"more": "अधिक",
- "nav-developers": "डिवेलपर्स",
+ "nav-about-description": "एथेरियम कम्युनिटी के लिए एक पब्लिक, ओपन-सोर्स प्रोजेक्ट",
+ "nav-advanced-description": "ज़्यादा जटिल विषयों को जानें",
+ "nav-advanced-label": "उन्नत",
+ "nav-basics-description": "एथेरियम की बुनियादी बातों को समझें",
+ "nav-basics-label": "बुनियादी बातें",
+ "nav-bridges-description": "Web3 विकसित होकर प्राइमरी L1 ब्लॉकचेन और L2 स्केलिंग सॉल्यूशन का एक इकोसिस्टम बन गया हैं",
+ "nav-builders-home-description": "एथेरियम का एक बिल्डर्स मेनू—बिल्डरों द्वारा, बिल्डरों के लिए",
+ "nav-builders-home-label": "बिल्डर्स होम",
+ "nav-contribute-description": "अगर आप मदद करना चाहते हैं, तो यह आपको गाइड करेगा",
+ "nav-contribute-label": "Ethereum.org में योगदान",
+ "nav-dao-description": "केंद्रीकृत प्राधिकरण के बिना सदस्य के स्वामित्व वाली कम्युनिटी",
+ "nav-dapps-description": "एथेरियम का इस्तेमाल करके ऐप्स के एक रिच इकोसिस्टम को एक्सप्लोर करें",
+ "nav-defi-description": "परंपरागत वित्तीय बाज़ार का एक वैश्विक, खुला विकल्प",
+ "nav-desci-description": "मौजूदा वैज्ञानिक प्रणाली का एक वैश्विक, खुला विकल्प",
+ "nav-desoc-description": "सामाजिक संपर्क और सामग्री निर्माण के लिए ब्लॉकचेन-आधारित प्लेटफ़ॉर्म",
"nav-developers-docs": "डिवेलपर्स डॉक्यूमेंट",
+ "nav-developers": "डेवलपर",
+ "nav-did-description": "अपने अद्वितीय विकेन्द्रीकृत पहचानकर्ता जारी करें और उनके मालिक बनें",
+ "nav-docs-description": "एथेरियम को समझने और बनाने में आपकी मदद करने वाले दस्तावेज़",
+ "nav-docs-design-description": "अनोखे web3 डिज़ाइन से जुड़ी चुनौतियों, सबसे अच्छे तरीकों और यूज़र रिसर्च इनसाइट का ब्यौरा",
+ "nav-docs-design-label": "UX/UI डिज़ाइन की बुनियादी बातें",
+ "nav-docs-foundation-description": "एथेरियम पर विकसित करने की मुख्य बुनियादी बातें",
+ "nav-docs-foundation-label": "मूलभूत विषय",
+ "nav-docs-overview-description": "डिवेलपर से जुड़े दस्तावेज़ों के लिए आपका घर",
+ "nav-docs-stack-description": "एथेरियम स्टैक का सारा विवरण समझें",
+ "nav-docs-stack-label": "इथेरियम स्टैक",
+ "nav-eip-description": "नए फ़ीचर और प्रोसेस के बारे में बताने वाले मानक",
+ "nav-eip-label": "EIP - एथेरियम सुधार प्रस्ताव",
+ "nav-emerging-description": "एथेरियम के दूसरे नए उपयोग से जुड़े मामलों के बारे में जानें",
+ "nav-emerging-label": "उभरते उपयोग के मामले",
+ "nav-enterprise-description": "एथेरियम के लिए बिज़नेस एप्लिकेशन",
+ "nav-ethereum-org-description": "यह वेबसाइट कम्युनिटी से चलती है—हमसे जुड़ें और योगदान भी दें",
+ "nav-ethereum-wallets-description": "आपके एथेरियम खाते के साथ इंटरैक्ट करने वाला ऐप",
+ "nav-events-description": "विकेंद्रीकरण और किसी के लिए भी भाग लेने की आज़ादी",
+ "nav-events-irl-description": "हर महीने व्यक्तिगत और ऑनलाइन बड़े एथेरियम इवेंट्स होते हैं",
+ "nav-events-label": "कम्युनिटी और इवेंट्स",
+ "nav-events-online-description": "एथरियम को लेकर उत्साह रखने वाले सैकड़ों-हजारों उत्साही पिता शामिल हैं",
+ "nav-find-wallet-description": "वॉलेट आपको क्रिप्टो का इस्तेमाल करने देते हैं",
+ "nav-find-wallet-label": "अपना वॉलेट चुनें",
+ "nav-gas-fees-description": "ETH लेनदेन शुल्क की गणना कैसे की जाती है",
+ "nav-get-eth-description": "एथेरियम एप्लिकेशन का इस्तेमाल करने के लिए आपको एथर (ETH) की ज़रूरत होती है",
+ "nav-get-started-description": "एथेरियम का इस्तेमाल करने के लिए आपके पहले कदम",
+ "nav-governance-description": "इस प्रोसेस में एथेरियम प्रोटोकॉल को अपग्रेड करना शामिल है",
+ "nav-governance-label": "गवर्नेंस",
+ "nav-grants-description": "ग्रांट फ़ंडिंग प्रोग्राम उपलब्ध कराने वाले प्रोजेक्ट पर हमारी कम्युनिटी द्वारा क्यूरेट की गई लिस्ट",
+ "nav-guide-create-account-description": "कोई भी व्यक्ति किसी भी समय, किसी वॉलेट ऐप की मदद से एथेरियम खाता मुफ़्त में बना सकता है",
+ "nav-guide-create-account-label": "इथेरियम खाते को कैसे बनाएं",
+ "nav-guide-revoke-access-description": "एथेरियम इकोसिस्टम में स्मार्ट अनुबंधों और एप्लिकेशन के साथ इंटरैक्ट करते समय सुरक्षित रहें",
+ "nav-guide-revoke-access-label": "स्मार्ट अनुबंध का एक्सेस निरस्त कैसे करें",
+ "nav-guide-use-wallet-description": "किसी वॉलेट के सभी बुनियादी फ़ंक्शन के काम करने का तरीका जानें",
+ "nav-guide-use-wallet-label": "वॉलेट का उपयोग कैसे करें",
+ "nav-guides-description": "शुरुआत करने में आपकी मदद के लिए व्यावहारिक चरण-दर-चरण गाइड",
+ "nav-guides-label": "कैसे-करें गाइड",
+ "nav-history-description": "सभी बड़े फ़ोर्क और अपडेट की टाइमलाइन",
+ "nav-history-label": "एथेरियम का तकनीकी इतिहास",
+ "nav-layer-2-description": "एथेरियम के लिए सस्ते और तेज़ लेनदेन",
+ "nav-learn-by-coding-description": "एथेरियम के साथ प्रयोग करने में आपकी मदद करने वाले उपकरण",
+ "nav-local-env-description": "अपना एथेरियम डेवलपमेंट स्टैक चुनें और सेट अप करें",
+ "nav-mainnet-description": "एंटरप्राइज़ ब्लॉकचेन एप्लिकेशन पब्लिक एथेरियम मेननेट पर बनाए जा सकते हैं",
+ "nav-nft-description": "किसी भी अनोखी चीज़ को एथेरियम-आधारित एसेट के तौर पर पेश करने का तरीका",
+ "nav-open-research-description": "एथेरियम की प्रमुख खूबियों में से एक है इसकी एक्टिव रिसर्च कम्युनिटी",
+ "nav-open-research-label": "शोध खोलें",
+ "nav-overview-description": "एथेरियम से जुड़ी शिक्षा के बारे में सबकुछ",
+ "nav-overview-label": "अवलोकन",
+ "nav-participate-overview-description": "भाग लेने के तरीके के बारे में खास जानकारी",
"nav-primary": "प्राथमिक",
- "nft-page": "नॉन-फंजिबल टोकन (NFT)",
+ "nav-private-description": "निजी उद्यम एथेरियम के लिए विकासकर्ता संसाधन",
+ "nav-quizzes-description": "पता करें कि आप एथेरियम और क्रिप्टोकरेंसी को कितनी अच्छी तरह समझते हैं",
+ "nav-quizzes-label": "अपनी जानकारी को परखें",
+ "nav-refi-description": "रिजेनेरेटिव प्रिंसिपल्स पर बना एक वैकल्पिक इकोनॉमिक सिस्टम",
+ "nav-research-description": "एथेरियम को बेहतर बनाने के लिए इस्तेमाल की जाने वाली प्रोसेस",
+ "nav-research-label": "रिसर्च और डेवलपमेंट",
+ "nav-roadmap-description": "एथेरियम के लिए ज़्यादा स्केलेबिलिटी, सुरक्षा और स्थिरता का रास्ता",
+ "nav-roadmap-future-description": "एथेरियम को एक तेज़ और विकेंद्रीकृत नेटवर्क की तरह मज़बूत बनाना",
+ "nav-roadmap-future-label": "फ़्यूचर-प्रूफ़िंग",
+ "nav-roadmap-label": "रोडमैप",
+ "nav-roadmap-scaling-description": "लेनदेन के खर्चों और गति को और भी कम करने के लिए नेटवर्क से जुड़े अपडेट",
+ "nav-roadmap-security-description": "यह पक्का करना कि एथेरियम भविष्य में सभी तरह के हमलों को लेकर लचीला बना रहे",
+ "nav-roadmap-security-label": "बेहतर सुरक्षा",
+ "nav-roadmap-ux-description": "एथेरियम के इस्तेमाल को आसान बनाने की ज़रूरत हैं",
+ "nav-run-a-node-description": "नेटवर्क को सुरक्षित करने में मदद करते समय पूरी तरह से आत्मनिर्भर बनना",
+ "nav-security-description": "क्रिप्टोकरेंसी का इस्तेमाल करते समय सबसे अच्छे तरीकों को जानना",
+ "nav-smart-contracts-description": "एथेरियम इकोसिस्टम के बुनियादी बिल्डिंग ब्लॉक",
+ "nav-stablecoins-description": "स्टेबलकॉइन एक तय कीमत पर बने रहने के लिए डिज़ाइन किए गए एथेरियम टोकन हैं",
+ "nav-stake-description": "एथेरियम को सुरक्षित करने के लिए रिवॉर्ड जीतें",
+ "nav-stake-label": "स्टेक",
+ "nav-staking-home-description": "स्टेकिंग के अलग-अलग विकल्पों के बारे में खास जानकारी",
+ "nav-staking-home-label": "स्टेकिंग होम",
+ "nav-staking-pool-description": "दूसरों के साथ जुड़कर स्टेक करें और ETH की कितनी भी राशि के रिवॉर्ड जीतें",
+ "nav-staking-pool-label": "संयोजित स्टेकिंग",
+ "nav-staking-saas-description": "तीसरे पक्ष के नोड ऑपरेटर आपके सत्यापनकर्ता क्लाइंट के संचालन को संभालते हैं",
+ "nav-staking-saas-label": "किसी सेवा के साथ स्टेक करना",
+ "nav-staking-solo-description": "होम हार्डवेयर चलाएं और व्यक्तिगत रूप से इथेरियम नेटवर्क की सुरक्षा और विकेंद्रीकरण में जोड़ें",
+ "nav-staking-solo-label": "एकल स्टेकिंग",
+ "nav-start-building-description": "नए लोगों के लिए उपयोगी जानकारी",
+ "nav-translation-program-description": "Ethereum.org का सभी भाषाओं में अनुवाद करने की एक सहयोगी कोशिश",
+ "nav-tutorials-description": "कम्युनिटी ट्यूटोरियल की क्यूरेट की गई लिस्ट",
+ "nav-use-cases-description": "एथेरियम के इस्तेमाल के अलग-अलग तरीके जानें",
+ "nav-what-is-ether-description": "एथेरियम ऐप्स की करेंसी",
+ "nav-what-is-ethereum-description": "समझें कि एथेरियम को क्या चीज़ खास बनाती हैं",
+ "nav-what-is-web3-label": "Web3 क्या है?",
+ "nav-what-is-web3-description": "नियमों को निर्धारित करने वाले केंद्रीकृत एकाधिकार का एक विकल्प",
+ "nav-whitepaper-description": "विटालिक बूटरिन द्वारा 2014 में लिखा गया ओरिजनल एथेरियम व्हाइट पेपर",
+ "nav-zkp-description": "किसी कथन का खुलासा किए बिना उस कथन की वैधता साबित करने का एक तरीका",
+ "nft-page": "NFT - नॉन-फंजिबल टोकन",
"nfts": "NFTs",
"no": "नहीं",
"on-this-page": "इस पेज पर",
@@ -140,6 +257,8 @@
"page-developers-aria-label": "डेवलपर के मेन्यू",
"page-index-meta-title": "मुखपृष्ठ",
"page-last-updated": "पृष्ठ अंतिम बार अपडेट किया गया",
+ "participate": "भाग लें",
+ "participate-menu": "भाग लेने का मेनू",
"pbs": "प्रस्तावक-निर्माणकर्ता पृथक्करण",
"pools": "संयोजित स्टेकिंग",
"privacy-policy": "गोपनीयता नीति",
@@ -150,9 +269,11 @@
"refresh": "कृपया पेज को रिफ्रेश करें।",
"return-home": "होम पेज पर लौटें",
"roadmap": "एथेरियम दिशानिर्देश",
+ "research": "रिसर्च",
+ "research-menu": "रिसर्च मेनू",
"resources": "अनुवाद के संसाधन",
- "regenerative-finance": "रीजेनेरेटिव फाइनेंस (ReFi)",
- "run-a-node": "नोड चलाएँ",
+ "regenerative-finance": "ReFi - रीजेनेरेटिव फाइनेंस",
+ "run-a-node": "नोड चलाएं",
"rollup-component-website": "वेबसाइट",
"rollup-component-developer-docs": "डिवेलपर डॉक्यूमेंट",
"rollup-component-technology-and-risk-summary": "टेक्नोलॉजी और जोखिम का सारांश",
@@ -164,6 +285,7 @@
"search-box-blank-state-text": "खोज करें!",
"search-eth-address": "यह Ethereum पते की तरह दिखता है। हम पते के लिए विशिष्ट डेटा प्रदान नहीं करते हैं। ब्लॉक एक्सप्लोरर पर खोज करने का प्रयास करें, जैसे",
"search-no-results": "आपकी खोज का कोई परिणाम नहीं है",
+ "security": "सुरक्षा",
"single-slot-finality": "सिंगल-स्लॉट अन्तिम स्थिति",
"statelessness": "स्तिथि हीनता",
"see-contributors": "योगदानकर्ताओं को देखें",
@@ -175,12 +297,12 @@
"site-title": "ethereum.org",
"skip-to-main-content": "मुख्य सामग्री पर जाएँ",
"smart-contracts": "स्मार्ट अनुबंध",
- "stablecoins": "स्टेबलकॉइन",
+ "stablecoins": "स्थिर कॉइन",
"stake-eth": "स्टेक ETH",
"staking": "स्टेकिंग",
"start-here": "यहाँ से शुरू करें",
- "style-guide": "Style guide",
"solo": "एकल स्टेकिंग",
+ "support": "सपोर्ट",
"terms-of-use": "उपयोग की शर्तें",
"translation-banner-body-new": "आप इस पृष्ठ को अंग्रेज़ी में देख रहे हैं क्योंकि हमने अभी तक इसका अनुवाद नहीं किया है। इस सामग्री का अनुवाद करने में हमारी सहायता करें।",
"translation-banner-body-update": "इस पृष्ठ का एक नया संस्करण है लेकिन अभी यह केवल अंग्रेजी में है। नवीनतम संस्करण का अनुवाद करने में हमारी सहायता करें।",
@@ -191,20 +313,22 @@
"translation-banner-no-bugs-title": "इसमें कोई बग नहीं है!",
"translation-banner-no-bugs-content": "इस पेज का अनुवाद नहीं किया जा रहा है। हमने इस पेज को जानबूझकर अंग्रेज़ी में छोड़ा है।",
"translation-banner-no-bugs-dont-show-again": "फिर से न दिखाएँ",
+ "translation-program": "अनुवाद कार्यक्रम",
"try-using-search": "आप जो चीज़ ढूँढ रहे हैं, उसके लिए खोज का उपयोग करके देखें या",
"tutorials": "ट्यूटोरियल",
"up": "ऊपर",
+ "use": "इस्तेमाल",
"use-ethereum": "Ethereum का प्रयोग करें",
"use-ethereum-menu": "Ethereum मेनू का प्रयोग करें",
- "user-experience": "User का अनुभव",
+ "use-menu": "मेनू का इस्तेमाल करें",
+ "user-experience": "यूज़र का अनुभव",
"verkle-trees": "वर्कल ट्री",
"wallets": "वॉलेट",
"we-couldnt-find-that-page": "हमें यह पेज नहीं मिल सका",
"web3": "Web3 क्या है?",
- "web3-title": "Web3",
"website-last-updated": "वेबसाइट अंतिम बार अपडेट की गई",
"what-is-ether": "ईथर (ETH) क्या है?",
- "what-is-ethereum": "Ethereum क्या है?",
+ "what-is-ethereum": "इथेरियम क्या है?",
"withdrawals": "स्टेकिंग निकालना",
"yes": "हाँ",
"zero-knowledge-proofs": "शून्य-ज्ञान प्रमाण"
diff --git a/src/intl/hi/page-dapps.json b/src/intl/hi/page-dapps.json
index 2983bf1fc94..71c6f6ed806 100644
--- a/src/intl/hi/page-dapps.json
+++ b/src/intl/hi/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "वास्तविक समय में धन स्ट्रीम करें।",
"page-dapps-dapp-description-superrare": "कलाकारों या द्वितीयक बाजारों से सीधे डिजिटल कलाकृतियां खरीदें।",
"page-dapps-dapp-description-token-sets": "क्रिप्टो निवेश रणनीतियां, जो स्वचालित रूप से रीबैलेंस करती हैं।",
- "page-dapps-dapp-description-tornado-cash": "इथेरियम पर बेनाम लेनदेन भेजें।",
"page-dapps-dapp-description-uniswap": "% पुरस्कारों के लिए टोकन को बस स्वैप करें या टोकन प्रदान करें।",
"page-dapps-dapp-description-dexguru": "DeFi व्यापारियों के लिए नॉन-कस्टोडियल ट्रेडिंग टर्मिनल",
"page-dapps-dapp-description-synthetix": "Synthetix सिंथेटिक एसेट को जारी करने और व्यापार करने के लिए एक प्रोटोकॉल है",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "ये ऐसे एप्लिकेशन हैं, जो डेवलपर टूल पर विकेंद्रीकरण करते हैं, जो मौजूदा तकनीक में क्रिप्टोकरंसी सिस्टम को शामिल करते हैं, और ओपन-सोर्स डेवलपमेंट वर्क के लिए मार्केटप्लेस बनाते हैं।",
"page-dapps-technology-title": "विकेंद्रीकृत तकनीक",
"page-dapps-token-sets-logo-alt": "टोकन सेट का लोगो",
- "page-dapps-tornado-cash-logo-alt": "टोरनेडो कैश का लोगो",
"page-dapps-uniswap-logo-alt": "Uniswap का लोगो",
"page-dapps-wallet-callout-button": "वॉलेट खोजें",
"page-dapps-wallet-callout-description": "वॉलेट भी डेप्स हैं। उन विशेषताओं के आधार पर खोजें, जो आपके लिए सही हैं।",
diff --git a/src/intl/hi/page-languages.json b/src/intl/hi/page-languages.json
index a9bb93f9269..bfda746884b 100644
--- a/src/intl/hi/page-languages.json
+++ b/src/intl/hi/page-languages.json
@@ -11,7 +11,13 @@
"page-languages-want-more-header": "किसी और भाषा में ethereum.org देखना चाहते हैं?",
"page-languages-want-more-link": "अनुवाद कार्यक्रम",
"page-languages-want-more-paragraph": "ethereum.org अनुवादक हमेशा यथासंभव अधिक भाषाओं में पृष्ठों का अनुवाद कर रहे हैं। यह देखने के लिए कि वे अभी क्या काम कर रहे हैं या उनसे जुड़ने के लिए साइन अप करें, हमारे इसके बारे में पढ़ें",
- "page-languages-filter-placeholder": "फ़िल्टर",
+ "page-languages-filter-label": "फ़िल्टर लिस्ट",
+ "page-languages-filter-placeholder": "फ़िल्टर करने के लिए टाइप करें",
+ "page-languages-browser-default": "ब्राउज़र डिफॉल्ट",
+ "page-languages-translated": "अनुवाद किया गया",
+ "page-languages-words": "शब्द",
+ "page-languages-recruit-community": "Ethereum.org का अनुवाद करने में हमारी मदद करें.",
+ "langauge-am": "Amharic",
"language-ar": "अरबी",
"language-az": "अज़रबैजानी",
"language-bg": "बुल्गेरियाई",
@@ -58,8 +64,8 @@
"language-sl": "स्लोवेनियाई",
"language-sr": "सर्बियन",
"language-sw": "स्वाहिली",
- "language-th": "थाई",
"language-ta": "तमिल",
+ "language-th": "थाई",
"language-tr": "तुर्की",
"language-uk": "यूक्रेनियाई",
"language-ur": "उर्दू",
diff --git a/src/intl/hi/page-stablecoins.json b/src/intl/hi/page-stablecoins.json
index 94034bdfc00..d1be261df25 100644
--- a/src/intl/hi/page-stablecoins.json
+++ b/src/intl/hi/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "स्रोत",
"page-stablecoins-bitcoin-pizza": "बदनाम बिटकॉइन पिज़्ज़ा",
"page-stablecoins-bitcoin-pizza-body": "2010 में, किसी ने 10,000 बिटकॉइन से 2 पिज़्ज़ा खरीदा। उस समय इनका मूल्य ~$41 USD था। आज के बाजार में जो लाखों डॉलर का है। इथेरियम के इतिहास में कई समान अफसोसजनक लेनदेन हैं। स्थिर कॉइन इस समस्या को हल कर देते हैं, जिससे आप अपने पिज़्ज़ा का आनंद ले सकते हैं और अपने ETH पर पकड़ बना सकते हैं।",
+ "page-stablecoins-category-dashboard-and-education": "डैशबोर्ड और शिक्षा",
"page-stablecoins-coin-price-change": "कॉइन मूल्य परिवर्तन (पिछले 30 दिन)",
"page-stablecoins-crypto-backed": "क्रिप्टो समर्थित",
"page-stablecoins-crypto-backed-con-1": "फिएट-समर्थित स्थिर कॉइन की तुलना में कम स्थिर।",
diff --git a/src/intl/hr/common.json b/src/intl/hr/common.json
index 4a6efc85178..f25c8c5119c 100644
--- a/src/intl/hr/common.json
+++ b/src/intl/hr/common.json
@@ -5,8 +5,6 @@
"adding-developer-tools": "Dodavanje alata za razvojne programere",
"adding-exchanges": "Dodavanje mjenjačnica",
"adding-glossary-terms": "Dodavanje pojmova",
- "adding-layer-2s": "Adding Layer 2s",
- "adding-products": "Adding Products",
"adding-staking-products": "Dodavanje ulagačkih proizvoda",
"adding-wallets": "Dodavanje novčanika",
"account-abstraction": "Apstrakcija računa",
@@ -15,6 +13,9 @@
"aria-toggle-menu-button": "Gumb za izbornik",
"beacon-chain": "Beacon Chain",
"bridges": "Blockchain mostovi",
+ "bug-bounty": "Nagrada za pogrešku",
+ "build": "Izgradnja",
+ "build-menu": "Gradivni izbornik",
"clear": "Obriši",
"close": "Zatvori",
"community": "Zajednica",
@@ -31,14 +32,15 @@
"copied": "Kopirano",
"copy": "Kopiraj",
"danksharding": "Dank-razdjeljivanje",
- "dao-page": "Decentralizirane autonomne organizacije (DAO-ovi)",
+ "dao-page": "DAO-ovi - Decentralizirane autonomne organizacije",
"dark-mode": "Tamno",
"data-provided-by": "Izvor podataka:",
- "decentralized-applications-dapps": "Decentralizirane aplikacije (dapp-ovi)",
+ "decentralized-applications-dapps": "Dapp-ovi - Decentralizirane aplikacije",
"decentralized-identity": "Decentraliziran identitet",
"decentralized-social-networks": "Decentralizirane društvene mreže",
- "decentralized-science": "Decentralizirana znanost (DeSci)",
- "defi-page": "Decentralizirane financije (DeFi)",
+ "decentralized-science": "DeSci - Decentralizirana znanost",
+ "description": "Opis navigacijske stavke",
+ "defi-page": "DeFi - Decentralizirane financije",
"design": "Dizajn",
"design-principles": "Principi dizajna",
"devcon": "Devcon",
@@ -72,11 +74,10 @@
"enterprise-menu": "Izbornik poduzeća",
"esp": "Program potpore ekosustavu",
"eth-current-price": "Trenutačna cijena ETH (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Ethereum program nagrađivanja lova na pogreške",
"consensus-when-shipping": "Kada kreće?",
"ethereum-upgrades": "Ethereum nadogradnje",
- "ethereum-brand-assets": "Sredstva marke Ethereum",
+ "ethereum-brand-assets": "Imovina marke Ethereum",
"ethereum-online": "Zajednice na internetu",
"ethereum-events": "Ethereum događaji",
"ethereum-foundation": "Zaklada Ethereum",
@@ -88,7 +89,7 @@
"ethereum-protocol": "Ethereum protokol",
"ethereum-security": "Sigurnost Ethereuma i sprječavanje prijevara",
"ethereum-support": "Ethereum podrška",
- "ethereum-wallets": "Novčanici Ethereum",
+ "ethereum-wallets": "Ethereumovi novčanici",
"ethereum-whitepaper": "Ethereumova tehnička dokumentacija",
"feedback-widget-prompt": "Je li ova stranica korisna?",
"feedback-card-prompt-page": "Je li ova stranica bila korisna?",
@@ -107,11 +108,10 @@
"grants": "Stipendije",
"grant-programs": "Programi stipendiranja ekosustava",
"guides": "Vodiči",
- "guides-hub": "How-to guides",
+ "guides-hub": "Vodiči sa smjernicama",
"history-of-ethereum": "Povijest Ethereuma",
"home": "Početna",
"how-ethereum-works": "Kako Ethereum radi",
- "how-to-create-an-ethereum-account": "How to \"create\" an Ethereum account",
"how-to-revoke-token-access": "Kako pametnom ugovoru oduzeti pravo pristupa vašim kripto sredstvima",
"how-to-swap-tokens": "Kako zamijeniti tokene",
"how-to-use-a-bridge": "Kako premostiti tokene na 2. sloj",
@@ -143,10 +143,105 @@
"mainnet-ethereum": "Glavna mreža Ethereum",
"merge": "Spoji",
"more": "Više",
- "nav-developers": "Programeri",
+ "nav-about-description": "Javni projekt otvorenog izvornika za zajednicu Ethereuma",
+ "nav-advanced-description": "Upoznajte složenije teme",
+ "nav-advanced-label": "Napredno",
+ "nav-basics-description": "Razumijevanje temelja Ethereuma",
+ "nav-basics-label": "Osnove",
+ "nav-bridges-description": "Web3 razvio se u ekosustav primarnih L1 lanaca blokova i L2 rješenja za skaliranje",
+ "nav-builders-home-description": "Graditeljski priručnik za Ethereum – od graditelja, za graditelje",
+ "nav-builders-home-label": "Dom za gradiitelje",
+ "nav-contribute-description": "Ako želite pomoći, ovo će vam pokazati put",
+ "nav-contribute-label": "Doprinesite web-mjestu ethereum.org",
+ "nav-dao-description": "Zajednice u vlasništvu svojih članova bez centraliziranog nadzornog tijela",
+ "nav-dapps-description": "Istražite bogati ekosustav aplikacija uz Ethereum",
+ "nav-defi-description": "Globalna, otvorena alternativa tradicionalnom financijskom tržištu",
+ "nav-desci-description": "Globalna, otvorena alternativa trenutačnom znanstvenom sustavu",
+ "nav-desoc-description": "Platforma temeljena na blokovima lanaca za društvene interakcije i izradu sadržaja",
"nav-developers-docs": "Dokumenti za programere",
+ "nav-developers": "Programeri",
+ "nav-did-description": "Izradite i posjedujte vlastite jedinstvene, decentralizirane identifikatore",
+ "nav-docs-description": "Dokumenti koji će vam pomoći da razumijete Ethereum i gradite njime",
+ "nav-docs-design-description": "Opis jedinstvenih izazova, najboljih praksi i uvida u korisnička istraživanja za web3 dizajn",
+ "nav-docs-design-label": "Temelji dizajna korisničkog iskustva/sučelja",
+ "nav-docs-foundation-description": "Osnovne razvoja na Ethereumu",
+ "nav-docs-foundation-label": "Temeljne teme",
+ "nav-docs-overview-description": "Vaš dom dokumentacije za razvojni tim",
+ "nav-docs-stack-description": "Razumijevanje svih pojedinosti Ethereumovih stogova",
+ "nav-docs-stack-label": "Ethereumovi stogovi",
+ "nav-eip-description": "Standardi koji definiraju nove značajke ili postupke",
+ "nav-eip-label": "EIP - Prijedlozi za poboljšanje Ethereuma",
+ "nav-emerging-description": "Upoznajte novije slučajeve upotrebe Ethereuma",
+ "nav-enterprise-description": "Poslovne primjene Ethereuma",
+ "nav-ethereum-org-description": "Ovo web-mjesto pokreće zajednica – pridružite nam se i doprinesite svojim sudjelovanjem",
+ "nav-ethereum-wallets-description": "Aplikacija za interakciju sa svojim Ethereum računom",
+ "nav-events-description": "Decentralizacija i sloboda sudjelovanja za sve",
+ "nav-events-irl-description": "Svakog mjeseca dostupni su značajni Ethereumovi događaji, na mreži ili na lokaciji",
+ "nav-events-label": "Zajednice i događaji",
+ "nav-events-online-description": "Stotine tisuća Ethereumovih entuzijasta sudjeluju u ovim mrežnim zajednicama",
+ "nav-find-wallet-description": "Novčanici vam omugućuju korištenje kriptovalutom",
+ "nav-find-wallet-label": "Odaberite svoj novčanik",
+ "nav-gas-fees-description": "Kako se izračunavaju naknade za transakcije ETH-om",
+ "nav-get-eth-description": "Za upotrebu Ethereum aplikacija potreban vam je ether (ETH)",
+ "nav-get-started-description": "Prvi koraci u radu s Ethereumom",
+ "nav-governance-description": "Postupak nadogradnje Ethereumovog protokola",
+ "nav-governance-label": "Upravljanje",
+ "nav-grants-description": "Odabrani popis zajednice o projektima koji omogućuju programe ulaganja",
+ "nav-guide-create-account-description": "Uz aplikaciju Novčanika svatko može besplatno izraditi Ethereum račun",
+ "nav-guide-revoke-access-description": "Ostanite zaštićeni dok surađujete s pametnim ugovorima i aplikacijama Ethereum ekosustava",
+ "nav-guide-revoke-access-label": "Kako uskratiti pristup pametnom ugovoru",
+ "nav-guide-use-wallet-description": "Upoznajte sve osnovne funkcije novčanika",
+ "nav-guide-use-wallet-label": "Kako koristiti novčanik",
+ "nav-guides-description": "Praktične, detaljne upute za prve korake",
+ "nav-guides-label": "Vodiči sa smjernicama",
+ "nav-history-description": "Vremenski plan svih značajnih ažuriranja",
+ "nav-history-label": "Tehnička povijest Ethereuma",
+ "nav-layer-2-description": "Jeftinije i brže transakcije Ethereuma",
+ "nav-learn-by-coding-description": "Alati pomoći u eksperimentiranju s Ethereumom",
+ "nav-local-env-description": "Odaberite i postavite svoj stog za razvoj Ethereuma",
+ "nav-mainnet-description": "Poslovne aplikacije za lance blokova mogu se graditi na javnoj glavnoj mreži Ethereuma",
+ "nav-nft-description": "Način prikaza bilo čega jedinstvenog u obliku imovine temeljene na Ethereumu",
+ "nav-open-research-description": "Jedna od primarnih prednosti Ethereuma aktivna je istraživačka zajednica",
+ "nav-open-research-label": "Otvori istraživanje",
+ "nav-overview-description": "Sve o obuci za Ethereum",
+ "nav-participate-overview-description": "Pregled kako sudjelovati",
"nav-primary": "Primarni",
- "nft-page": "Nezamjenjivi tokeni (NFT-ovi)",
+ "nav-private-description": "Resursi za programere za Ethereum kod privatnih poduzeća",
+ "nav-quizzes-description": "Saznajte koliko dobro razumijete Ethereum i kriptovalute",
+ "nav-quizzes-label": "Provjerite svoje znanje",
+ "nav-refi-description": "Alternativni ekonomski sustav građen na principima regeneracije",
+ "nav-research-description": "Postupci poboljšanja Ethereuma",
+ "nav-research-label": "Istraživanje i razvoj",
+ "nav-roadmap-description": "Put do skalabilnijeg, sigurnijeg i održivijeg Ethereuma",
+ "nav-roadmap-future-description": "Učvršćivanje Ethereuma kao čvrste i decentralizirane mreže",
+ "nav-roadmap-future-label": "Osiguranje za budućnost",
+ "nav-roadmap-label": "Plan razvoja",
+ "nav-roadmap-scaling-description": "Ažuriranja mreže kako bi se dodatno smanjili troškovi i ubrzale transakcije",
+ "nav-roadmap-security-description": "Otpornost Ethereuma na sve vrste napada u budućnosti",
+ "nav-roadmap-security-label": "Poboljšana sigurnost",
+ "nav-roadmap-ux-description": "Upotreba Ethereuma mora biti pojednostavljena",
+ "nav-run-a-node-description": "Kako postati potpuno neovisan i pri tome zaštititi mreže",
+ "nav-security-description": "Upoznajte najbolje prakse u radu s kriptovalutama",
+ "nav-smart-contracts-description": "Temeljni gradbeni blokovi Ethereumovog ekosustava",
+ "nav-stablecoins-description": "Stabilne kovanice Ethereumovi su tokeni osmišljeni za zadržavanje fiksne vrijednosti",
+ "nav-stake-description": "Zaradite nagrade za zaštitu Ethereuma",
+ "nav-stake-label": "Ulaganje",
+ "nav-staking-home-description": "Pregled različitih mogućnosti ulaganja",
+ "nav-staking-pool-description": "Udružujte se s drugima i ulažite i zarađujte nagrade sa svakom vrijednosti ETH",
+ "nav-staking-pool-label": "Skupljeni staking",
+ "nav-staking-saas-label": "Ulaganje s uslugom",
+ "nav-staking-solo-label": "Samostalan staking",
+ "nav-start-building-description": "Korisne informacije za početnike",
+ "nav-translation-program-description": "Suradnja u prevođenju web-mjesta ethereum.org na sve jezike",
+ "nav-tutorials-description": "Odabrani popis praktičnih vodiča zajednice",
+ "nav-use-cases-description": "Otkrijte različite ideje kako se koristiti Ethereumom",
+ "nav-what-is-ether-description": "Valuta Ethereum aplikacija",
+ "nav-what-is-ethereum-description": "Što Ethereum čini posebnim",
+ "nav-what-is-web3-label": "Što je Veb3?",
+ "nav-what-is-web3-description": "Alternativa centraliziranim monopolima koji diktiraju pravila",
+ "nav-whitepaper-description": "Originalna tehnička dokumentacija Ethereuma autora Vitalika Buterina iz 2014.",
+ "nav-zkp-description": "Način kako potvrditi valjanost potvrde bez njezina otkrivanja",
+ "nft-page": "NFT-ovi - Nezamjenjivi tokeni",
"nfts": "NFT - nezamjenjivi tokeni",
"no": "Ne",
"on-this-page": "Na ovoj stranici",
@@ -154,6 +249,8 @@
"page-developers-aria-label": "Programerski izbornik",
"page-index-meta-title": "Početna",
"page-last-updated": "Posljednje ažuriranje stranice",
+ "participate": "Sudjelovanje",
+ "participate-menu": "Izbornik sudjelovanja",
"pbs": "Razdvojenost predlagača i graditelja",
"pools": "Skupljeni staking",
"privacy-policy": "Pravila privatnosti",
@@ -164,8 +261,10 @@
"refresh": "Osvježite stranicu.",
"return-home": "vrati doma",
"roadmap": "Plan razvoja Ethereuma",
+ "research": "Istraživanje",
+ "research-menu": "Izbornik istraživanja",
"resources": "Resursi prevođenja",
- "regenerative-finance": "Regenerativne financije (ReFi)",
+ "regenerative-finance": "ReFi - Regenerativne financije",
"run-a-node": "Raditi node-a",
"rollup-component-website": "Web stranica",
"rollup-component-developer-docs": "Dokumenti za programere",
@@ -190,11 +289,10 @@
"site-title": "ethereum.org",
"skip-to-main-content": "Preskoči na glavni sadržaj",
"smart-contracts": "Pametni ugovori",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Stabilne kovanice",
"stake-eth": "Ulog ETH",
"staking": "Ulaganje",
"start-here": "Počnite ovdje",
- "style-guide": "Style guide",
"solo": "Samostalan staking",
"support": "Podrška",
"terms-of-use": "Uvjeti korištenja",
@@ -211,16 +309,17 @@
"try-using-search": "Pokušajte pomoću pretraživanja pronaći ono što tražite ili",
"tutorials": "Praktični vodiči",
"up": "Gore",
+ "use": "Upotreba",
"use-ethereum": "Upotrijebi Ethereum",
"use-ethereum-menu": "Upotrijebi Ethereumov izbornik",
- "user-experience": "User experience",
+ "use-menu": "Izbornik upotrebe",
"verkle-trees": "Verkle stabla",
"wallets": "Novčanici",
"we-couldnt-find-that-page": "Nismo mogli pronaći tu stranicu",
"web3": "Što je Veb3?",
"web3-title": "Web3",
"website-last-updated": "Posljednje ažuriranje stranice",
- "what-is-ether": "Što je ether (ETH)?",
+ "what-is-ether": "Što je Ether (ETH)?",
"what-is-ethereum": "Što je Ethereum?",
"withdrawals": "Povlačenje uloga",
"yes": "Da",
diff --git a/src/intl/hr/page-dapps.json b/src/intl/hr/page-dapps.json
index 7242dad24ef..c5d73bf910b 100644
--- a/src/intl/hr/page-dapps.json
+++ b/src/intl/hr/page-dapps.json
@@ -70,7 +70,6 @@
"page-dapps-dapp-description-sablier": "Prosljeđujte novac u stvarnom vremenu.",
"page-dapps-dapp-description-superrare": "Digitalna umjetnička djela kupujte izravno od umjetnika ili na sekundarnim tržištima.",
"page-dapps-dapp-description-token-sets": "Kripto strategije ulaganja koje se automatski uravnotežuju.",
- "page-dapps-dapp-description-tornado-cash": "Šaljite anonimne transakcije na Ethereum.",
"page-dapps-dapp-description-uniswap": "Zamijenite tokene jednostavno ili osigurajte tokene za % nagrada.",
"page-dapps-dark-forest-logo-alt": "Dark Forest logo",
"page-dapps-decentraland-logo-alt": "Decentraland logo",
@@ -170,7 +169,6 @@
"page-dapps-technology-description": "To su aplikacije koje su usredotočene na decentraliziranje razvojnih alata, uključivanje kriptoekonomskih sustava u postojeću tehnologiju i stvaranje tržišta za razvojni rad s otvorenim kodom.",
"page-dapps-technology-title": "Decentralizirana tehnologija",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Pronađi novčanik",
"page-dapps-wallet-callout-description": "Novčanici su također dapps-i. Pronađite jedan na temelju značajki koje vam odgovaraju.",
diff --git a/src/intl/hr/page-languages.json b/src/intl/hr/page-languages.json
index 4aedc61a77d..1553b89cec2 100644
--- a/src/intl/hr/page-languages.json
+++ b/src/intl/hr/page-languages.json
@@ -6,13 +6,24 @@
"page-languages-meta-title": "ethereum.org prijevodi",
"page-languages-p1": "Ethereum je globalni projekt i presudno je da ethereum.org bude dostupan svima, bez obzira na nacionalnost ili jezik. Naša zajednica naporno radi na tome da ova vizija postane stvarnost.",
"page-languages-translations-available": "ethereum.org dostupan je na sljedećim jezicima",
+ "page-languages-resources-paragraph": "Osim prevođenja sadržaja na ethereum.org, također održavamo i",
+ "page-languages-resources-link": "popis odabranih materijala o Ethereumu na brojnim jezicima",
"page-languages-want-more-header": "Želite li vidjeti ethereum.org na drugom jeziku?",
"page-languages-want-more-link": "Prevoditeljski program",
"page-languages-want-more-paragraph": "prevoditelji ethereum.org-a uvijek prevode stranice na što više jezika. Da biste vidjeli na čemu trenutno rade ili da biste se prijavili da im se pridružite, pročitajte o našoj",
+ "page-languages-filter-label": "Filtriraj popis",
+ "page-languages-filter-placeholder": "Počnite pisati da biste filtrirali",
+ "page-languages-browser-default": "Zadano preglednikom",
+ "page-languages-translated": "prevedeno",
+ "page-languages-words": "riječi",
+ "page-languages-recruit-community": "Pomozite nam prevesti web-mjesto ethereum.org.",
+ "langauge-am": "Ahmarski",
"language-ar": "arapski",
"language-az": "Azerbajdžanski",
+ "langauge-be": "Bjeloruski",
"language-bg": "Bugarski",
"language-bn": "bengalski",
+ "language-bs": "Bosanski",
"language-ca": "Katalonski",
"language-cs": "češki",
"language-da": "Danski",
@@ -24,21 +35,30 @@
"language-fi": "Finski",
"language-fr": "Francuski",
"language-gl": "Galicijski",
+ "language-gu": "Gudžaratski",
+ "language-he": "Hebrejski",
"language-hi": "Hindski",
"language-hr": "Hrvatski",
"language-hu": "Mađarski",
+ "language-hy-am": "Armenski",
"language-id": "Indonezijski",
"language-ig": "Igbo",
"language-it": "Talijanski",
"language-ja": "Japanski",
"language-ka": "Gruzijski",
+ "language-kk": "Kazaški",
+ "language-km": "Khmerski",
+ "language-kn": "Kannada",
"language-ko": "Korejski",
"language-lt": "Litavski",
"language-ml": "Malajalamski",
"language-mr": "Marati",
"language-ms": "Malajski",
"language-nb": "Norveški",
+ "language-ne-np": "Nepali",
"language-nl": "Nizozemski",
+ "language-pcm": "Nigerijski pidžin",
+ "language-fil": "Filipinski",
"language-pl": "Poljski",
"language-pt": "Portugalski",
"language-pt-br": "Portugalski (Brazil)",
@@ -49,9 +69,13 @@
"language-sl": "Slovenski",
"language-sr": "Srpski",
"language-sw": "Svahili",
+ "language-ta": "Tamilski",
"language-th": "Tajlandski",
+ "language-tk": "Turkmenski",
"language-tr": "Turski",
"language-uk": "Ukrajinski",
+ "language-ur": "Urdu",
+ "language-uz": "Uzbečki",
"language-vi": "Vijetnamski",
"language-zh": "Kineski (pojednostavljen)",
"language-zh-tw": "Kineski (tradicionalni)"
diff --git a/src/intl/hr/page-stablecoins.json b/src/intl/hr/page-stablecoins.json
index 18aae6e6213..5d7613bb0e7 100644
--- a/src/intl/hr/page-stablecoins.json
+++ b/src/intl/hr/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Izvor",
"page-stablecoins-bitcoin-pizza": "Čuvena Bitcoin pizza",
"page-stablecoins-bitcoin-pizza-body": "2010. godine netko je kupio 2 pizze za 10.000 bitcoina. U to su vrijeme vrijedile ~ 41 USD. Na današnjem tržištu to su stotine milijuna dolara. U povijesti Ethereuma postoji mnogo sličnih žalosnih transakcija. Stabilne kovanice rješavaju ovaj problem, tako da možete uživati u svojoj pizzi i zadržati svoj ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Nadzorna ploča i obrazovanje",
"page-stablecoins-coin-price-change": "Promjena cijene kovanica (posljednjih 30 dana)",
"page-stablecoins-crypto-backed": "Podržano kriptom",
"page-stablecoins-crypto-backed-con-1": "Manje stabilni od stabilnih fiat-kovanica.",
diff --git a/src/intl/hu/common.json b/src/intl/hu/common.json
index c7470004b58..0a72019d6bd 100644
--- a/src/intl/hu/common.json
+++ b/src/intl/hu/common.json
@@ -5,16 +5,18 @@
"adding-developer-tools": "Fejlesztői eszközök hozzáadása",
"adding-exchanges": "Tőzsdék hozzáadása",
"adding-glossary-terms": "Új fogalmak hozzáadása",
- "adding-layer-2s": "Adding Layer 2s",
- "adding-products": "Adding Products",
+ "adding-layer-2s": "2. réteg hozzáadása",
"adding-staking-products": "Letétbe helyezési lehetőségek hozzáadása",
"adding-wallets": "Tárcák hozzáadása",
"account-abstraction": "Számlaabsztrakció",
"acknowledgements": "Köszönetnyilvánítások",
- "aria-toggle-search-button": "Keresés bekapcsolása gomb",
+ "aria-toggle-search-button": "Keresőgomb bekapcsolása",
"aria-toggle-menu-button": "Menü bekapcsolása gomb",
- "beacon-chain": "Beacon Chain",
+ "beacon-chain": "Beacon lánc",
"bridges": "Blokkláncösszekötők",
+ "bug-bounty": "Hibavadászat",
+ "build": "Fejlesztés",
+ "build-menu": "Fejlesztés menü",
"clear": "Törlés",
"close": "Bezárás",
"community": "Közösség",
@@ -31,14 +33,15 @@
"copied": "Lemásolva",
"copy": "Másolás",
"danksharding": "Dank-féle párhuzamos futtatás (Danksharding)",
- "dao-page": "Decentralizált autonóm szervezetek (DAO-k)",
+ "dao-page": "DAO-k - Decentralizált autonóm szervezetek",
"dark-mode": "Sötét",
"data-provided-by": "Adatforrás:",
- "decentralized-applications-dapps": "Decentralizált alkalmazások (dapps)",
+ "decentralized-applications-dapps": "Dappok - Decentralizált alkalmazások",
"decentralized-identity": "Decentralizált identitás",
"decentralized-social-networks": "Decentralizált közösségi hálózatok",
- "decentralized-science": "Nem központosított kutatás (DeSci)",
- "defi-page": "Decentralizált pénzügy (DeFi)",
+ "decentralized-science": "DeSci - Decentralizált tudomány",
+ "description": "Navigációs elem leírása",
+ "defi-page": "DeFi - Decentralizált pénzügy",
"design": "Dizájn",
"design-principles": "Dizájnelvek",
"devcon": "Devcon",
@@ -76,7 +79,7 @@
"ethereum-bug-bounty": "Ethereum bugvadász program",
"consensus-when-shipping": "Mikor lesz kész?",
"ethereum-upgrades": "Az Ethereum fejlesztései",
- "ethereum-brand-assets": "Ethereum márkanév",
+ "ethereum-brand-assets": "Ethereum márkaeszközök",
"ethereum-online": "Online közösségek",
"ethereum-events": "Az Ethereum eseményei",
"ethereum-foundation": "Ethereum Alapítvány",
@@ -96,7 +99,7 @@
"feedback-card-prompt-tutorial": "Hasznosnak találta az útmutatót?",
"feedback-widget-thank-you-title": "Köszönjük a visszajelzést!",
"feedback-widget-thank-you-subtitle": "Tedd jobbá ezt az oldalt egy pár kérdés megválaszolásával.",
- "feedback-widget-thank-you-subtitle-ext": "Ha segítségre van szüksége, akkor a Discordunkon veheti fel a kapcsolatot közösségünkkel.",
+ "feedback-widget-thank-you-subtitle-ext": "Ha segítségre van szüksége, akkor a Discordunkon veheti fel a kapcsolatot közösségünkkel.",
"feedback-widget-thank-you-timing": "2–3 perc",
"feedback-widget-thank-you-cta": "Rövid kérdőív megnyitása",
"find-wallet": "Tárca keresése",
@@ -134,19 +137,123 @@
"learn-more": "Bővebben",
"less": "Kevesebb",
"light-mode": "Világos",
- "listing-policy-disclaimer": "Az oldalon szereplő egyik termék sincs hivatalosan jóváhagyva, csak információs célokat szolgálnak. Ha szeretnél egy terméket hozzáadni, vagy visszajelzést küldeni az irányelvről, akkor nyiss egy Github ticketet.",
+ "listing-policy-disclaimer": "Az oldalon szereplő egyik termék sincs hivatalosan jóváhagyva, csak információs célokat szolgálnak. Ha szeretne egy terméket hozzáadni, vagy visszajelzést küldeni az irányelvről, akkor nyisson egy issue-t Githubon.",
"loading": "Betöltés...",
"loading-error": "Betöltési hiba.",
"loading-error-refresh": "Hiba, kérjük frissítsen.",
"loading-error-try-again-later": "Nem sikerült az adatok betöltése. Kérjük, próbálja meg később.",
"logo": "logo",
- "mainnet-ethereum": "Mainnet Ethereum",
+ "mainnet-ethereum": "Ethereum Főhálózat",
"merge": "Egyesítés",
"more": "Több",
- "nav-developers": "Fejlesztők",
+ "nav-about-description": "Nyilvános, nyílt forráskódú projekt az Ethereum közössége számára",
+ "nav-advanced-description": "Ismerkedjen meg komplexebb témákkal is",
+ "nav-advanced-label": "Haladó",
+ "nav-basics-description": "Ismerje meg az Ethereum alapjait",
+ "nav-basics-label": "Alapok",
+ "nav-bridges-description": "A web3 az elsődleges L1 blokkláncok és L2 skálázási megoldások ökoszisztémájává fejlődött",
+ "nav-builders-home-description": "Az Ethereum-fejlesztők kézikönyve – fejlesztőktől fejlesztőknek",
+ "nav-builders-home-label": "A fejlesztők otthona",
+ "nav-contribute-description": "Ha segíteni szeretne, itt talál útmutatást",
+ "nav-contribute-label": "Hozzájárulás az ethereum.org oldalhoz",
+ "nav-dao-description": "Tagtulajdonú közösségek központi hatóság nélkül",
+ "nav-dapps-description": "Fedezze fel az appok gazdag ökoszisztémáját az Ethereum segítségével",
+ "nav-defi-description": "Egy globális és nyitott alternatívája a hagyományos pénzügyi piacnak",
+ "nav-desci-description": "Egy globális és nyitott alternatívája a jelenlegi tudományos rendszernek",
+ "nav-desoc-description": "Blokkláncalapú platformok közösségi kapcsolódás és tartalomkészítés céljából",
"nav-developers-docs": "Fejlesztői dokumentumok",
+ "nav-developers": "Fejlesztők",
+ "nav-did-description": "Egyedi decentralizált azonosítók kiadása és birtoklása",
+ "nav-docs-description": "Dokumentumok, amelyek segítenek megérteni és fejleszteni az Ethereumot",
+ "nav-docs-design-description": "Egyedülálló web3-tervezési kihívások leírása, bevált gyakorlatok és felhasználói kutatási információk",
+ "nav-docs-design-label": "UX/UI-tervezési alapok",
+ "nav-docs-foundation-description": "Alapvető tudnivalók az Ethereumon való fejlesztésről",
+ "nav-docs-foundation-label": "Alapvető témák",
+ "nav-docs-overview-description": "A fejlesztői dokumentumok otthona",
+ "nav-docs-stack-description": "Ismerje meg az Ethereum stack összes részletét",
+ "nav-eip-description": "Szabványok, amelyek új funkciókat vagy folyamatokat határoznak meg",
+ "nav-eip-label": "EIP-k - Ethereum fejlesztési javaslatok",
+ "nav-emerging-description": "Ismerje meg az Ethereum egyéb, újabb felhasználási eseteit",
+ "nav-emerging-label": "Új alkalmazási területek",
+ "nav-enterprise-description": "Üzleti alkalmazások az Ethereumhoz",
+ "nav-ethereum-org-description": "Ez egy közösség által vezérelt webhely – csatlakozzon hozzánk és járuljon hozzá Ön is",
+ "nav-ethereum-wallets-description": "Egy app, amellyel kapcsolatba léphet Ethereum-fiókjával",
+ "nav-events-description": "Decentralizáció és szabad részvétel bárki számára",
+ "nav-events-irl-description": "Minden hónapban jelentős eseményeket szervez az Ethereum mind a személyes, mind az online térben",
+ "nav-events-label": "Közösségek és események",
+ "nav-events-online-description": "Ethereum-rajongók százezrei segítenek egymásnak ezekben az online közösségekben",
+ "nav-find-wallet-description": "Tárcák segítségével használhatja a kriptovalutákat",
+ "nav-find-wallet-label": "Válassza ki a tárcáját",
+ "nav-gas-fees-description": "Hogyan számítják ki az ETH tranzakciós illetékeit",
+ "nav-gas-fees-label": "Gázdíjak",
+ "nav-get-eth-description": "Az Ethereum-alkalmazások használatához etherre (ETH) van szükség",
+ "nav-get-started-description": "Az első lépések az Ethereum használatában",
+ "nav-governance-description": "Az Ethereum-protokoll frissítésének folyamata",
+ "nav-governance-label": "Irányítás",
+ "nav-grants-description": "A közösségünk által összeállított lista a támogatási programokat nyújtó projektekről",
+ "nav-guide-create-account-description": "Bárki nyithat Ethereum-számlát, bármikor és ingyenesen, egy tárca appal",
+ "nav-guide-create-account-label": "Hogyan lehet Ethereum számlát létrehozni",
+ "nav-guide-revoke-access-description": "Maradjon biztonságban, amikor okosszerződésekkel és alkalmazásokkal kerül kapcsolatba az Ethereum-ökoszisztémában",
+ "nav-guide-revoke-access-label": "Az okosszerződéses hozzáférés visszavonása",
+ "nav-guide-use-wallet-description": "Ismerje meg, hogyan működnek a tárca alapvető funkciói",
+ "nav-guide-use-wallet-label": "Hogyan használja a tárcát",
+ "nav-guides-description": "Részletes gyakorlati útmutatók, amelyek segítenek az indulásban",
+ "nav-guides-label": "Útmutatók",
+ "nav-history-description": "Az összes fontos elágazás és frissítés idővonala",
+ "nav-history-label": "Az Ethereum technikai története",
+ "nav-layer-2-description": "Olcsóbb és gyorsabb tranzakciók az Ethereumon",
+ "nav-learn-by-coding-description": "Eszközök, amelyek segítenek kísérletezni az Ethereummal",
+ "nav-local-env-description": "Az Ethereum fejlesztői stack kiválasztása és beállítása",
+ "nav-mainnet-description": "Vállalatiblokklánc-alkalmazások fejleszthetők az Ethereum nyilvános fő hálózatán",
+ "nav-nft-description": "Egy módszer arra, hogy egyedi dolgokat Ethereum-alapú javakként jelenítsünk meg",
+ "nav-open-research-description": "Az Ethereum egyik legnagyobb erőssége az aktív kutatói közösség",
+ "nav-open-research-label": "Nyílt kutatás",
+ "nav-overview-description": "Minden tudnivaló az Ethereum-oktatásról",
+ "nav-overview-label": "Áttekintés",
+ "nav-participate-overview-description": "A részvétel áttekintése",
"nav-primary": "Elsődleges",
- "nft-page": "Nem felcserélhető tokenek (NFT-k)",
+ "nav-private-description": "Fejlesztői anyagok a privát vállalati Ethereumhoz",
+ "nav-quizzes-description": "Tudja meg, mennyire érti az Ethereumot és a kriptovalutákat",
+ "nav-quizzes-label": "Tesztelje tudását",
+ "nav-refi-description": "Egy alternatív gazdasági rendszer, amely regeneratív elvekre épít",
+ "nav-research-description": "Az Ethereum fejlesztésére használt eljárások",
+ "nav-research-label": "Kutatás és fejlesztés",
+ "nav-roadmap-description": "Az út, amely az Ethereum jobb skálázhatóságához, biztonságához és fenntarthatóságához vezet",
+ "nav-roadmap-future-description": "Az Ethereum megerősítése, hogy még robusztusabb és decentralizáltabb hálózattá váljon",
+ "nav-roadmap-future-label": "Időtállóság",
+ "nav-roadmap-label": "Útiterv",
+ "nav-roadmap-scaling-description": "Hálózati frissítések a tranzakciós költségek csökkentése és a sebesség növelése érdekében",
+ "nav-roadmap-scaling-label": "Olcsóbb tranzakciók",
+ "nav-roadmap-security-description": "Annak biztosítása, hogy az Ethereum a jövőben is ellenálljon mindenféle támadásnak",
+ "nav-roadmap-security-label": "Fokozott biztonság",
+ "nav-roadmap-ux-description": "Az Ethereum használatát egyszerűsíteni kell",
+ "nav-roadmap-ux-label": "Jobb felhasználói élmény",
+ "nav-run-a-node-description": "Váljon teljesen függetlenné, miközben segít biztonságosabbá tenni a hálózatot",
+ "nav-security-description": "Ismerje meg a kriptovaluták használatának bevált gyakorlatait",
+ "nav-smart-contracts-description": "Az Ethereum-ökoszisztéma alapvető építőkövei",
+ "nav-stablecoins-description": "A stabil érmék olyan Ethereum-tokenek, amelyeket úgy terveztek, hogy az értékül állandó maradjon",
+ "nav-stake-description": "Szerezzen jutalmat az Ethereum biztosításáért",
+ "nav-stake-label": "Letétbe helyezés",
+ "nav-staking-home-description": "A különböző letétbe helyezési lehetőségek áttekintése",
+ "nav-staking-home-label": "Otthoni letétbe helyezés",
+ "nav-staking-pool-description": "Helyezzen letétbe bármennyi ETH-t, és szerezzen jutalmakat másokkal együtt",
+ "nav-staking-pool-label": "Készletezett letétbe helyezés",
+ "nav-staking-saas-description": "Az Ön validátorkliensét harmadik fél működteti csomópontok kezelésével",
+ "nav-staking-saas-label": "Letétbe helyezés szolgáltatással",
+ "nav-staking-solo-description": "Működtessen az otthonából hardvert és támogassa személyesen az Ethereum hálózatának biztonságát és decentralizálását",
+ "nav-staking-solo-label": "Egyéni letétbe helyezés",
+ "nav-start-building-description": "Hasznos információk az újoncok számára",
+ "nav-translation-program-description": "Közös együttműködés, hogy az ethereum.org weboldalt minden nyelvre lefordítsuk",
+ "nav-tutorials-description": "A közösségi útmutatók válogatott listája",
+ "nav-use-cases-description": "Különböző ötletek az Ethereum használatához",
+ "nav-use-cases-label": "Felhasználási módok",
+ "nav-what-is-ether-description": "Az Ethereum-appok valutája",
+ "nav-what-is-ethereum-description": "Tudja meg, mi teszi az Ethereumot olyan különlegessé",
+ "nav-what-is-web3-label": "Mi az a Web3?",
+ "nav-what-is-web3-description": "A szabályokat meghatározó központosított monopóliumok alternatívája",
+ "nav-whitepaper-description": "Az eredeti Ethereum fehérkönyv, melyet Vitalik Buterin írt 2014-ben",
+ "nav-zkp-description": "Egy módszer egy állítás érvényességének igazolására úgy, hogy magát az állítást nem fedjük fel",
+ "nft-page": "NFT-k - Nem felcserélhető tokenek",
"nfts": "NFT-k",
"no": "Nem",
"on-this-page": "Ezen az oldalon",
@@ -154,6 +261,8 @@
"page-developers-aria-label": "Fejlesztői Menü",
"page-index-meta-title": "Kezdőlap",
"page-last-updated": "Oldal legutoljára frissítve",
+ "participate": "Részvétel",
+ "participate-menu": "Részvétel menü",
"pbs": "Javaslattevő-építő szétválasztása",
"pools": "Készletezett letétbe helyezés",
"privacy-policy": "Adatvédelmi szabályzat",
@@ -164,13 +273,15 @@
"refresh": "Kérjük, frissítsd az oldalt.",
"return-home": "vissza a kezdőlapra",
"roadmap": "Ethereum-ütemterv",
+ "research": "Kutatás",
+ "research-menu": "Kutatás menü",
"resources": "Fordítási erőforrások",
- "regenerative-finance": "Regeneratív pénzügyek (ReFi)",
+ "regenerative-finance": "ReFi - Regeneratív pénzügyek",
"run-a-node": "Csomópont futtatása",
"rollup-component-website": "Honlap",
"rollup-component-developer-docs": "Fejlesztői dokumentumok",
"rollup-component-technology-and-risk-summary": "Technológiai és kockázati összegzés",
- "scaling": "Méretezés",
+ "scaling": "Skálázás",
"saas": "Letétbe helyezés mint szolgáltatás",
"search": "Keresés",
"search-ethereum-org": "Keresés az ethereum.org oldalon",
@@ -211,8 +322,10 @@
"try-using-search": "Használja a keresőt, hogy megtalálja, amit keres vagy",
"tutorials": "Oktatóanyagok",
"up": "Fel",
+ "use": "Használat",
"use-ethereum": "Az Ethereum használata",
"use-ethereum-menu": "Az Ethereum menü használata",
+ "use-menu": "Használat menü",
"user-experience": "Felhasználói tapasztalat",
"verkle-trees": "Verkle-fák",
"wallets": "Tárcák",
diff --git a/src/intl/hu/glossary.json b/src/intl/hu/glossary.json
new file mode 100644
index 00000000000..2f28d06c97b
--- /dev/null
+++ b/src/intl/hu/glossary.json
@@ -0,0 +1,344 @@
+{
+ "51%-attack-term": "51%-os támadás",
+ "51%-attack-definition": "Egy olyan támadás a decentralizált hálózaton, ahol a csoport irányítást szerez a csomópontok többsége felett. Ezáltal képesek meghamisítani a blokkláncot azáltal, hogy visszafordítanak tranzakciókat és többször elköltik ugyanazt az ethert és más tokeneket.",
+ "account-term": "Számla",
+ "account-definition": "Egy olyan objektum, ami tartalmaz egy címet, egyenleget, egy nonce-t, valamint opcionális tárhelyet és kódot. Egy számla lehet szerződésszámla vagy egy külső tulajdonú számla (EOA).
Bővebben az Ethereum számlákról.",
+ "address-term": "Cím",
+ "address-definition": "Általánosságben egy külső tulajdonú számlát (EOA) vagy egy szerződésszámlát képvisel, ami képes fogadni (cél cím) vagy küldeni (forrás cím) tranzakciókat a blokkláncon. Specifikusabban egy elliptikus görbe digitális aláírás algoritmust használó (ECDSA)publikus kulcsKeccak hash-ének 160 bite.",
+ "abi-term": "Alkalmazás bináris interfész (ABI)",
+ "abi-definition": "A szerződésekkel való interakció sztenderd módja az Ethereum ökoszisztémában, a blokkláncon kívüli és a szerződések közötti kapcsolat esetében is. Bővebben az ABI-ról.",
+ "api-term": "Alkalmazás programozási felület (API)",
+ "api-definition": "Az Alkalmazás programozási felület (API) definíciók kötege arról, hogyan lehet használni egy szoftverrészt. Az API az alkalmazás és a webszerver között helyezkedik el, s az ezek közötti adatátadást teszi lehetővé.",
+ "asic-term": "ASIC",
+ "asic-definition": "Alkalmazásspecifikus intergált körök. Ez általában egy integrált körre vonatkozik, mely személyre szabottan készült a kriptovaluta bányászatához.",
+ "assert-term": "asset",
+ "assert-definition": "A Solidity programozási nyelvben az assert(false) a „0xfe” érvénytelen operációs kódra lesz átfordítva, ami felhasználja az összes maradék gázt és visszafordítja a változtatásokat. Amikor egy assert() parancs hibára fut, akkor valami nagyon rossz és váratlan történik, és a fejlesztőknek meg kell javítaniuk a kódot. Az assert() parancsot arra kell használni a programban, hogy sohe ne történhessenek meg bizonyos események. Bővebben az okosszerződésbiztonságról.",
+ "attestation-term": "Tanúsítás",
+ "attestation-definition": "Egy entitás állítása arról, hogy valami igaz. Az Ethereum kontextusában a konszenzusvalidátorok egy állítást tesznek arról, hogy mi a lánc státusza. Előre meghatározott időben minden egyes validátor felel azért, hogy tanúsításokat adjon, ami hivatalosan igazolja, hogy ő mit lát a láncon, beleértve a legutóbbi befejezett ellenőrzési pontot és a lánc aktuális elejét. Bővebben a tanúsításokról.",
+ "base-fee-term": "Alapdíj",
+ "base-fee-definition": "Minden blokknak vagy egy alapvető ára, az alapdíj. Ez az a minimális gázdíj, amit a felhasználó azért fizet, hogy a tranzakciója bekerülhessen a következő blokkba. Bővebben a gázról és a díjakról.",
+ "beacon-chain-term": "Beacon lánc",
+ "beacon-chain-definition": "A Beacon lánc az a blokklánc volt, ami bevezette a proof-of-stake (letéti igazolás) mechanizmusát és a validátorokat az Ethereumra. Egyszerre futott a proof-of-work (munkaigazolás) mechnizmuson alapuló Ethereum főhálózattal 2020. decembertől addig, amíg a két lánc össze nem olvadst 2022. szeptemberben, ezzel kialakítva a mai Ethereumot. Bővebben a Beacon láncról.",
+ "big-endian-term": "Nagy a végén (Big-endian)",
+ "big-endian-definition": "Pozíciós számábrázolás, ahol a legfontosabb számjegy az első a memóriában. Ennek ellentéte a kicsi a végén (little-endian), ahol a legkevésbé fontos számjegy az első.",
+ "block-term": "Blokk",
+ "block-definition": "A blokk az információ összekötegelt egysgése, amely a tranzakciók listáját és konszenzussal kapcsolatos információkat tartalmaz. A blokkokat a proof-of-stake (letéti igazolás) alapú validátorok javasolják, majd megosztják azt a teljes közvetítő nélküli (peer-to-peer) hálózattal, ahol könnyen ellenőrizhetik azt független csomópontok (node). A konszenzusszabályok irányítják, hogy egy blokk tartalma mitől lesz érvényes, s az érvénytelen blokkokat kizárják a hálózatból. Ezen blokkok sorrendje és a bennük lévő tranzakciók az események meghatározott láncát alkotják, mely a végén a hálózat jelenlegi státuszát mutatja. Bővebben a blokkokról.",
+ "block-explorer-term": "Block explorer",
+ "block-explorer-definition": "Egy interfész, ami lehetővé teszi a felhasználóknak, hogy információt szerezzenek a blokkláncból és a blokkláncról. Ezek lehetnek egyéni tranzakciók, bizonyos címekre vonatkozó tevékenységek és a hálózatra vonatkozó adatok.",
+ "block-header-term": "Blokkfejléc",
+ "block-header-definition": "A blokkfejléc a blokkról szóló metaadatok gyűjteménye és a végrehajtási csomagba bekerült tranzakciók összegzése.",
+ "block-propagation-term": "Blokkelőterjesztés",
+ "block-propagation-definition": "Az a folyamat, amikor egy kialakított blokkot elküldenek a hálózat összes többi csomópontjának.",
+ "block-proposer-term": "Blokkelőterjesztő",
+ "block-proposer-definition": "Egy adott validátor, akit kiválasztottak a blokk előterjesztésére egy meghatározott slotban.",
+ "block-reward-term": "Blokkjutalom",
+ "block-reward-definition": "Egy adott mennyiségű ether, melyet a blokk előterjesztője kap egy új, érvényes blokkért.",
+ "block-status-term": "Blokkstátusz/állapot",
+ "block-status-definition": "A blokk lehetséges státuszai vagy állapotai. Ezek lehetnek:
javasolt: a blokkot előterjesztette egy validátor
betervezett: a validátorok éppen előterjesztik az adatot
kihagyott/átugrott: az előterjesztő nem javasolt blokkot a rendelkezésre álló időben
",
+ "block-time-term": "Blokk idő",
+ "block-time-definition": "Az az időintervallum, ami a blokklánchoz adódó blokkok között van.",
+ "block-validation-term": "Blokkvalidáció",
+ "block-validation-definition": "Az az ellenőrzési folyamat, hogy az új blokk érvényes tranzakciókat és aláírásokat tartalmaz, a legmérvadóbb historikus láncra épül, s követi az összes konszenzusszabályt. Az érvényes blokkokat a hozzáillesztik a lánchoz és így küldik szét a hálózaton. Az érvényteleneket kizárják.",
+ "blockchain-term": "Blokklánc",
+ "blockchain-definition": "Blokkok sorozata, ahol minden egyed blokk az azt megelőzőhöz kapcsolódik egészen a genezis blokkig azáltal, hogy meghivatkozza az előző blokk hash-ét. A blokklánc integritását kriptogazdaságilag biztosítják a proof-of-stake-en (letéti igazolás) alapuló konszenzusmechanizmus által. Mi az a blokklánc?",
+ "bootnode-term": "Betöltő csomópont (Bootnode)",
+ "bootnode-definition": "Az a csomópont, amelyet egy csomópont futtatásánál arra használnak, hogy felfedezze a többi csomópontot a hálózatban. Ezen csomópontoknak a végpontjai rögzítve vannak az Ethereum forráskódjában.",
+ "bytecode-term": "Bájtkód",
+ "bytecode-definition": "Egy absztrakt parancskészlet, melyet arra terveztek, hogy egy szoftverfordító vagy egy virtuális gép hatékonyan végre tudja azt hajtani. Az ember által olvasható forráskódokhoz képest a bájtkód számokkal fejeződik ki.",
+ "byzantium-fork-term": "Byzantium elágazás",
+ "byzantium-fork-definition": "A két végleges elágazás (hard fork) egyike, amely a Metropolis fejlesztési szintre vonatkozott. Beletartozott az EIP-649 Metropolis nehézségi bomba (Difficulty Bomb) késleltetés és blokkjutalom csökkentés, amikor a jégkorszakot elhalasztották 1 évvel és a blokkjutalom 5 etherről 3-ra változott.",
+ "casper-ffg-term": "Casper FFG",
+ "casper-ffg-definition": "A Casper-FFG egy proof-of-stake (letéti igazolás) konszenzusprotokol, melyet együtt használnak az LMD-GHOST elágazásválasztási algoritmussal, hogy a konszenzuskliensek megegyezésre jussanak a Beacon lánc elejét illetően.",
+ "checkpoint-term": "Ellenőrzési pont",
+ "checkpoint-definition": "A Beacon lánc egy olyan ütem szerint működik, mely slotokra (12 másodperc) és korszakokra/epoch-okra (32 slot) van felosztva. Minden korszak első slotja egy ellenőrzési pont. Amikor a validátorok túlnyomó többsége tanúsítja a két ellenőrzési pont közötti kapcsolatot, akkor ezek érvényesíthetőek, és amikor egy újabb ellenőrzési pont lesz érvényesítve ezek után, akkor ezeket véglegesíteni lehet.",
+ "compiling-term": "Átfordítás",
+ "compiling-definition": "Egy magas szintű nyelvben (mint amilyen a Solidity) írt kód átkonvertálása egy alacsonyabb szintű nyelvre (mint amilyen az EVM bájtkód). Bővebben az okosszerződések átfordításáról",
+ "committee-term": "Bizottság",
+ "committee-definition": "A validátorok legalább 128 tagot számláló csoportja, amely a blokkvalidálást végzi egy-egy slotban. Az egyik validátor lesz az az aggregátor, aki a bizottság összes validátorának aláírását, akik pozitív módon tanúsították a blokkot, össze kell gyűjtse. Ne tévesszük össze a szinkronizálási bizottsággal.",
+ "computational-infeasibility-term": "Számítási megvalósíthatatlanság",
+ "computational-infeasibility-definition": "Egy folyamat számításilag nem lehetséges, ha olyan hosszú ideig (például évmilliárdokig) kellene annak futtatnia, akit esetleg érdekelhet ennek elvégzése.",
+ "consensus-term": "Konszenzus",
+ "consensus-definition": "Amikor a hálózaton lévő csomópontok túlnyomó többsége ugyanazokat a blokkokat tárolja a lokálisan validált, legjobb blokkláncként. Ne tévesszük össze a konszenzusszabályokkal.",
+ "consensus-client-term": "Konszenzuskliens",
+ "consensus-client-definition": "A konszenzuskliensek (mint amilyen a Prysm, Teku, Nimbus, Lighthouse, Lodestar) futtatják az Ethereum proof-of-stake (letéti igazolás alapú) konszenzusalgoritmusát, melynek révén a hálózat képes megegyezésre jutni a Beacon lánc elejét illetően. A konszenzuskliensek nem vesznek részt a tranzakciók validálásában/elterjesztésében vagy a státuszváltások végrehajtásában. Ezt a végrehajtási kliensek végzik.",
+ "consensus-layer-term": "Konszenzusréteg",
+ "consensus-layer-definition": "Az Ethereum konszenzusrétege a konszenzuskliensek hálózata.",
+ "consensus-rules-term": "Konszenzusszabályok",
+ "consensus-rules-definition": "A blokkvalidációs szabályok, melyeket a teljes csomópontok követnek, hogy konszenzusban maradjanak a többi csomóponttal. Ne tévesszük össze magával a konszenzussal.",
+ "cfi-term": "Bevezetését megfontolták (CFI)",
+ "cfi-definition": "Egy olyan központi Ethereum fejlesztési javaslat (EIP), amely még nem elérhető a főhálózaton, de a kliensfejlesztők általában pozitívan állnak hozzá az adott elképzeléshez. Ha teljesíti a főhálózatra való bekerülés összes kritériumát, akkor talán egy hálózatfrissítéssel (nem feltétlen a következővel) elérhetővé válik.",
+ "constantinople-fork-term": "Constantinople elágazás",
+ "constantinople-fork-definition": "A Metropolis szakasz második része, melyet eredetileg 2018-tól terveztek. Ebben egy olyan megoldásra terveztek áttérni, ami egy hibrid proof-of-work (munkaigazolás)/proof-of-stake (letéti igazolás) konszenzusalgoritmus, több más változással együtt.",
+ "contract-account-term": "Szerződéses számla",
+ "contract-account-definition": "Egy számla, mely kódot tartalmaz, mely lefut, amikor kap egy tranzakciót egy másik számlától (külső tulajdonú számla (EOA) vagy szerződéses).",
+ "contract-creation-transaction-term": "Szerződéslétrehozó tranzakció",
+ "contract-creation-transaction-definition": "Egy speciális tranzakció, ami egy szerződés létrehozókódját tartalmazza. A fogadó nullára van állítva és a szerződés telepítésre kerül egy olyan címre, amit a felhasználó címe és egy nonce ad ki. Arra használják, hogy regisztráljanak egy szerződést és rögzítsék azt az Ethereum blokkláncon.",
+ "cryptoeconomics-term": "Kriptogazdaságtan",
+ "cryptoeconomics-definition": "A kriptovaluták gazdaságtana.",
+ "doge-d-term": "Đ",
+ "doge-d-definition": "Đ (egy D egy vonással) betű a régi angol, középangol, izlandi és feröeri nyelvek része, ahol a nagy betűs „Eth”-t jelent. Olyan szavakban használják, mint ĐEV (fejlesztés) vagy Đapp (decentralizált alkalmazás), ahol a Đ az északi “eth” betű. Emellett a Dogecoin kriptovaluta szimbólumának is használták. A használata a régi Ethereum szakirodalomban jellemző, de ma már kevésbé elterjedt.",
+ "dag-term": "DAG",
+ "dag-definition": "A DAG az irányított aciklikus gráf (Directed Acyclic Graph) rövidítése. Ez egy olyan adatstruktúra, amely csomópontokból és az azok közötti kapcsolatokból áll össze. Az egybeolvadás (Merge) előtt az Ethereum egy ilyet használt a proof-of-work algoritmusban, az Ethash-t, de ez többé már nem szükséges a proof-of-stake mechanizmusnál.",
+ "dapp-term": "Dapp",
+ "dapp-definition": "Decentralizált alkalmazás. Minimum egy okosszerződésből és egy webes felhasználói interfészből áll. Általában egy webes alkalmazás, ami egy nyílt, decentralizált, közvetítő nélküli (peer-to-peer) infrastruktúraszolgáltatásra épül. Emellett számos dapp tartalmaz decentralizált tárhelyet és/vagy üzenetküldési protokollt és platformot.Bevezetés a dappokba",
+ "data-availability-term": "Adatelérhetőség",
+ "data-availability-definition": "A státusz tulajdonsága, hogy a hálózathoz kapcsolódó bármelyik csomópont le tudja tölteni a státusz bármelyik specifikus részét.",
+ "decentralization-term": "Decentralizáció",
+ "decentralization-definition": "Az a koncepció, hogy a folyamatosk irányítását és végrehajtását ne egy központi entitás végezze.",
+ "dao-term": "Decentralizált autonóm szervezetek (DAO-k)",
+ "dao-definition": "Egy vállalat vagy más szervezet, ami hierarchikus irányítás nélkül működik. A DAO utalhat a „The DAO” nevű szerződésre is, melyet 2016 április 30-án indítottak, és 2016 júniusában meghackeltek; ez végül erősen motiválta a végleges elágazást (hard fork) DAO kódnéven az 1.192.000. blokkban, mely visszaállította a meghackelt DAO szerződést és az Ethereum és az Ethereum Classic szétválását okozta két rivális rendszerré. Bővebben a decentralizált autonóm szervezetekről (DAO-k)",
+ "dex-term": "Decentralizált tőzsde (DEX)",
+ "dex-definition": "Egy fajta decentralizált alkalmazás (dapp), amellyel tokeneket lehet átváltani a hálózaton lévő társakkal. A használatukhoz szükség van etherre (a tranzakciós díjak kifizetésére), de nincsenek kitéve a földrajzi megszorításoknak, mint a centralizált tőzsdék – bárki használhatja őket.",
+ "deposit-contract-term": "Letéti szerződés",
+ "deposit-contract-definition": "Az Ethereumon való letétbe helyezés alapja. Ez egy olyan okosszerződés az Ethereumon, ami ETH letétet fogad el és kezeli a validátorok egyenlegeit. A validátort nem lehet addig aktiválni, amíg ebbe a szerződésbe nem kötötte le a kellő ETH összeget. A szerződésnek ETH és bemenő adatok kellenek. Utóbbi a validátor publikus kulcsa és a kivétel publikus kulcsa, melyet a validátor privát kulcsa ír alá. Ezekre szükség van ahhoz, hogy egy validátort beazonosítson és jóváhagyjon egy proof-of-stake hálózat.",
+ "defi-term": "DeFi",
+ "defi-definition": "A decentralizált pénzügyek (DeFi) a dappok széles kategóriája, melyek célkitűzése blokklánc alapú pénzügyi szolgáltatások biztosítása köztes szereplők nélkül, így bárki részt vehet benne, aki internetkapcsolattal rendelkezik. Bővebben a decentralizált pénzügyekről (DeFi)",
+ "difficulty-term": "Nehézség",
+ "difficulty-definition": "Egy hálózati szintű beállítás a proof-of-work hálózatoknál, mely azt irányítja, hogy átlagosan mennyi számítás szükséges egy érvényes nonce megtalálásához. A nehézséget a kezdő nullák száma mutatja, melyekre a blokk-hash-ben van szükség, hogy az érvényes legyen. Ezt a koncepciót kivezették, amikor az Ethereum átállt a proof-of-stake mechanizmusra.",
+ "difficulty-bomb-term": "Nehézség bomba",
+ "difficulty-bomb-definition": "A proof-of-worknehézség tervezett exponenciális megnövelése, hogy ezzel motiválják a proof-of-stake-re történő átállást, és csökkentsék az elágazás valószínűségét. A nehézség bombát a beolvadás (Merge) érvénytelenítette.",
+ "digital-signatures-term": "Digitális aláírás",
+ "digital-signatures-definition": "Egy rövid adatsor, melyet egy felhasználó hoz létre egy dokumentumhoz egy privát kulcs használatával úgy, hogy bárki a hozzátartozó publikus kulccsal, az aláírással és a dokumentummal hitelesíteni tudja, hogy (1) a dokumentumot „aláírta” a bizonyos privát kulcs tulajdonosa, és (2) a dokumentum nem változott miután aláírták.",
+ "discovery-term": "Felfedezés",
+ "discovery-definition": "Az a folyamat, mellyel az Ethereum csomópontok megtalálják a többi csomópontot, hogy azokkal kapcsolódjanak.",
+ "distributed-hash-table-term": "Megosztott hash-tábla (DHT)",
+ "distributed-hash-table-definition": "Adatstruktúra, mely (kulcs, érték) párokat használ, az Ethereum csomópontok ezzel azonosítják be a társaikat, akikkel kapcsolódnak és hogy milyen protokollon kommunikáljanak.",
+ "double-spend-term": "Dupla költés",
+ "double-spend-definition": "Szándékos blokkláncelágazás, amikor egy felhasználó kellően nagy mennyiségű bányászati erővel/letéttel rendelkezik, egy olyan tranzakciót küld, mellyel a láncon kívülre mozgat valamennyi valutát (például fiat pénzbe teszi vagy láncon kívüli vásárlást végez), majd átrendezi a blokkláncot, hogy eltávolítsa a tranzakciót. Egy sikeres duplaköltés után a támadónek a láncon és a láncon kívül is megmarad ugyanaz az eszköze.",
+ "ecdsa-term": "Elliptikus görbe digitális aláírás algoritmus (ECDSA)",
+ "ecdsa-definition": "Egy kriptográfiai algoritmus, melyet az Ethereum arra használ, hogy a pénzügyi eszközöket csak azok tulajdonosai tudják elkölteni. Ez a publikus és privát kulcsok előállításának preferált módja. A számlacím létrehozáshoz és a tranzakció ellenőrzéshez szükséges.",
+ "encryption-term": "Titkosítás",
+ "encryption-definition": "A titkosítás az elektronikus adat átalakítása egy olyan formába, mely nem olvasható senkinek, kivéve annak, aki rendelkezik a megfelelő visszafejtő kulccsal.",
+ "entropy-term": "Entrópia",
+ "entropy-definition": "A kriptográfia kontextusában az előrejelezhetőség hiánya vagy véletlenszerűség. Amikor titkos információkat generálunk, mint a privát kulcsok, az algoritmusok általában egy magas entrópiaforrásra támaszkodnak, hogy biztosítsák a kimenet megjósolhatatlanságát.",
+ "epoch-term": "Korszak",
+ "epoch-definition": "Egy 32 slot-ból álló periódus, melyben minden slot 12 másodperc, összességében 6,4 perc. A validátorbizottságokat megváltoztatják minden korszakban biztonsági okokból. Minden korszakban lehetőség van arra, hogy a lánc véglegesedjen. Minden korszak elejént a validátorokhoz új felelősségeket rendelnek. Bővebben a proof-of-stake-ről",
+ "equivocation-term": "Kétértelműség",
+ "equivocation-definition": "A validátor két egymásnak ellentmondó üzenetet küld. Egyszerű példa rá, amikor a tranzakció küldője két tranzakciót küld ugyanazzal a nonce-szal. Vagy amikor a blockelőterjesztője két blokkot javasol ugyanakkor a blokkméretre (vagy ugyanarra a slotra).",
+ "eth1-term": "Eth1",
+ "eth1-definition": "Az „Eth1” kifejezés az Ethereum főhálózatára vonatkozott, a proof-of-work blokkláncra. Ezt ma már végrehajtási rétegnek nevezik. Tudjon meg többet errről a változásról.",
+ "eth2-term": "Eth2",
+ "eth2-definition": "Az „Eth2” kifejezés az Ethereum protokoll több frissítésére vonatkozott, beleértve a proof-of-stake mechanizmusra való átállást is. Ezt ma már konszenzusrétegnek nevezik. Tudjon meg többet errről a változásról.",
+ "eip-term": "Ethereum fejlesztési javaslat (EIP)",
+ "eip-definition": "Tervezési dokumentum, amely információkat nyújt az Ethereum közösség számára, és ismerteti a javasolt új funkciókat, annak folyamatait vagy környezetét (lásd ERC). Bevezetés az EIP-ekbe",
+ "ens-term": "Ethereum Name Service (ENS)",
+ "ens-definition": "Az ENS jegyzék egy központi szerződés, mely a domain nevek alapján megadja a tulajdonosokat és a megoldókat, ahogy EIP-137-ben le van írva. Tudjon meg többet az ens.domains oldalon",
+ "execution-client-term": "Végrehajtási kliens",
+ "execution-client-definition": "A végrehajtási kliensek (korábban Eth1 kliensek), mint amilyen a Besu, Erigon, Go-Ethereum (Geth), Nethermind, a tranzakciók feldolgozását és elterjesztését végzik, s kezelik az Ethereum státuszát. Lefuttatják az összes tranzakcióra a számítást az Ethereum virtális gépet használva, hogy biztosítsák a protokoll szabályainak követését.",
+ "execution-layer-term": "Végrehajtási réteg",
+ "execution-layer-definition": "Az Ethereum végrehajtási rétege a végrehajtási kliensek hálózata.",
+ "eoa-term": "Külső tulajdonú számlák (EOA)",
+ "eoa-definition": "A külső tulajdonú számlák (EOA) olyan számlák, amelyeket privát kulcsokkal kontrollálnak, melyeket általában egy kulcsmondatból generálnak. Az okosszerződésekkel ellentében a külső tulajdonú számlákhoz nem tartozik semmilyen programkód. Ezeket általában a tárcák segítségével kezelik.",
+ "erc-term": "Ethereum Request for Comments (ERC)",
+ "erc-definition": "Néhány EIP-hez tartozó címke, melyek specifikus Ethereum használati szabványokat definiálnak.",
+ "ethash-term": "Ethash",
+ "ethash-definition": "Egy proof-of-work algoritmus, amelyet az Ethereumon használtak a proof-of-stake mechanizmusra való áttérés előtt. Tudjon meg többet",
+ "ether-term": "Ether",
+ "ether-definition": "Az Ethereum ökoszisztéma natív kriptovalutája, mely a tranzakciók végrehajtásához szükséges gázdíjak kifizetésére szolgál. Írható még a következő módokon: ETH, Ξ szimbólum, a görög Xi jele. Bővebben az etherről.",
+ "events-term": "Események",
+ "events-definition": "Az EVM naplózási lehetőségekhez szükséges. A dappok felismerik az eseményeket és JavaScript callback-ek elindítására használják azokat a felhasználói interfészen. Bővebben az eseményekről és a naplózásról",
+ "evm-term": "Ethereum virtuális gép (EVM)",
+ "evm-definition": "Egy stack-alapú virtuális gép, ami bájtkódot hajt végre. Az Ethereumon a végrehajtási modell adja meg, hogy a rendszerstátusz hogyan változik, figyelembe véve a bájtkód utasítások sorozatát és egy kis tuple környezeti adatot. Ezt a virtuális státuszgép formális modelljén keresztül specifikálják. Bővebben az Ethereum virtuális gépről.",
+ "evm-assembly-language-term": "EVM assembly nyelv",
+ "evm-assembly-language-definition": "Az EVM bájtkód emberek számára is olvasható változata.",
+ "fallback-function-term": "Fallback függvény",
+ "fallback-function-definition": "Egy alapfüggvény, mely adat vagy deklarált függvény név hiánya esetén hívódik meg.",
+ "faucet-term": "Faucet (csap)",
+ "faucet-definition": "Egy okosszerződés által működtetett szolgáltatás, mely javakat bocsájt ki ingyenes teszt ether formájában, melyet a tesztneten lehet használni.",
+ "finality-term": "Véglegesség",
+ "finality-definition": "A véglegesség egy biztosíték arra, hogy a tranzakciók kötege egy adott idő előtt nem fognak megváltozni és nem lehet azokat visszafordítani. Bővebben a proof-of-stake véglegességről.",
+ "finney-term": "Finney",
+ "finney-definition": "Az ether denominációja. 1 finney = 1015wei. 103 finney = 1 ether.",
+ "fork-term": "Elágazás",
+ "fork-definition": "Egy protokoll változtatás, mely egy alternatív lánc létrejöttét vonja magával, vagy egy átmeneti eltérés két potenciális blokkútvonal között.",
+ "fork-choice-algorithm-term": "Elágazásválasztási algoritmus",
+ "fork-choice-algorithm-definition": "Az az algoritmus, ami beazonosítja a blokklánc elejét. A végrehajtási rétegen a lánc feje az, amelyikhez a legnagyobb nehézség tartozik. Ez azt jelenti, hogy a lánc valódi feje az, amelyiket a legnagyobb munkával bányászták ki. A konszenzusrétegen az algoritmus a validátorok tanúsításainak összességét vizsgálja (LMD_GHOST).",
+ "fraud-proof-term": "Fraud proof (csalási bizonyítás)",
+ "fraud-proof-definition": "Egy biztonsági modell egy bizonyos második blokkláncréteg (L2) megoldáshoz, ahol a sebesség meggyorsítása érdekében a tranzakciókat összecsomagolják kötegekbe és beküldik az Ethereumra egyetlen tranzakcióban. Ezekről azt feltételezik, hogy érvényesek, de meg lehet azokat kérdőjelezni, ha csalás történt. Ez a módszer növeli a tranzakciók mennyiségét, miközben fenntartja a biztonságot. Néhány rollupérvényességi bizonyítékokat használ. Bővebben az optimista rollupokról.",
+ "frontier-term": "Frontier",
+ "frontier-definition": "Az Ethereum kezdeti teszt fejlesztési fázisa, mely 2015 júliusától 2016 márciusáig tartott.",
+ "gas-term": "Üzemanyag",
+ "gas-definition": "Egy virtuális üzemanyag, melyet az Ethereumon használnak az okosszerződések végrehajtására. Az EVM egy kalkulációs mechanizmust használ, hogy mérje a gázfogyasztást és behatárolja a számítási kapacitás felhasználását (tekintse meg a Turing teljes szócikket). Bővebben a gázról és a díjakról.",
+ "gas-limit-term": "Gázhatár",
+ "gas-limit-definition": "A gáz maximális mennyisége, melyet egy tranzakció vagy egy blokk elfogyaszthat.",
+ "gas-price-term": "Gázár",
+ "gas-price-definition": "Etherben kifejezett ára az egységnyi gáznak, melyet a tranzakcióban határoznak meg.",
+ "genesis-block-term": "Genezisblokk",
+ "genesis-block-definition": "Egy blokklánc első blokkja, amit egy adott hálózat és a kriptovalutája elindítására használnak.",
+ "geth-term": "Geth",
+ "geth-definition": "Go Ethereum. Az Ethereum protokoll egyik legfontosabb implementációja, melyet Go nyelven írtak. Tekintse meg a geth.ethereum.org oldalt további információért",
+ "gwei-term": "Gwei",
+ "gwei-definition": "A gigawei rövidítése, ami az ether denominációja, melyet általában a gázárak meghatározására használnak. 1 gwei = 109wei. 109 gwei = 1 ether.",
+ "hard-fork-term": "Végleges elágazás (hard fork)",
+ "hard-fork-definition": "A blokkláncban bekövetkező állandó eltérést, más néven hard-forking változás. Akkor történhet, amikor a nem frissített csomópontok nem tudnak blokkot validálni, melyeket a frissített csomópontok készítenek, melyek már újabb konszenzusszabályokat követnek. Ne tévesszük össze az elágazás (fork), soft fork, szoftver fork vagy Git fork fogalmakkal.",
+ "hash-term": "Hash",
+ "hash-definition": "A változó mérteű bemeneti adat fix méretű ujjlenyomata, melyet egy hash függvény hoz létre. (Tekintse meg akeccak-256 bejegyzést).",
+ "hash-rate-term": "Hash arány",
+ "hash-rate-definition": "A hash-kalkulációk száma másodpercenként azon számítógépek által, melyek bányászó szoftvert futtatnak.",
+ "homestead-term": "Homestead",
+ "homestead-definition": "Az Ethereum második fejlesztési fázisa, mely 2016 márciusában indult el az 1.150.000. számú blokknál.",
+ "index-term": "Index",
+ "index-definition": "Egy hálózati struktúra, mely optimalizálja az információlekérést a blokkláncegészéből azáltal, hogy egy hatékony utat ad mutat az információ tárhelyére.",
+ "ide-term": "Integrált fejlesztői környezet (IDE)",
+ "ide-definition": "Egy felhasználói interfész, mely általában kombinálja a kódszerkesztőt, átfordítót, kódfuttatást és hibakeresést. Bővebben az integrált fejlesztői környezetekről.",
+ "immutable-deployed-code-problem-term": "Nem megváltoztatható kód problémája",
+ "immutable-deployed-code-problem-definition": "Amint egy szerződés (vagy egy könyvtár) kódja telepítve lett, az megváltoztathatatlan. A bevett szoftverfejlesztői gyakorlat arra támaszkodik, hogy ki lehet javítani a hibákat és lehet új jellemzőket adni, ezért az okosszerződésfejlesztőknek ez kihívást jelent. Bővebben az okosszerződések telepítéséről.",
+ "internal-transaction-term": "Belső tranzakció",
+ "internal-transaction-definition": "Egy tranzakció egy szerződéses számláról egy másik szerződéses számlára vagy egy EOA-ra (lásd üzenet).",
+ "issuance-term": "Kibocsátás",
+ "issuance-definition": "Az új ether kibocsátása (minting) a blokkjavaslatok jutalmához, tanúsításért és a visszaélés bejelentésért.",
+ "kdf-term": "Kulcsszármaztatási függvény (KDF)",
+ "kdf-definition": "Más néven \"jelszó nyújtó algoritmus\", melyet a keystore formátumok használnak, hogy védekezzenek a brute-force, dictionary és a szivárvány tábla támadásokkal szemben a jelszó titkosításoknál a jelszó ismételt hashelésével.",
+ "keystore-term": "Kulcstároló",
+ "keystore-definition": "Minden számláa privát kulcs/cím párja benne van egy Ethereum kliens kulcsfile-jában. Ezek JSON szöveges file-ok, melyek tartalmazzák a számla titkosított privát kulcsát, melyet csak a számlalétrehozásnál megadott jelszóval lehet visszafejteni.",
+ "keccak-256-term": "Keccak-256",
+ "keccak-256-definition": "Kriptográfiai hash-függvény, melyet az Ethereum használ. Keccak-256-öt SHA-3 formában szabványosították.",
+ "layer-2-term": "2. réteg",
+ "layer-2-definition": "Egy fejlesztési terület, mely arra fókuszál, hogy az Ethereum protokoll tetejére egy új réteget hozzon létre. Ezek a fejlesztések elhoznák a gyorsabb tranzakciókat, olcsóbb tranzakciós díjakat és a tranzakciók adatvédelmét. Bővebben az L2-ről.",
+ "library-term": "Könyvtár",
+ "library-definition": "Egy különleges szerződéstípus, melynek nincs fizetési és fallback funkciója, illetve adattára se. Ezért nem is tud ethert kapni vagy tartani, vagy bármilyen adatot tárolni. A könyvtár egy korábban telepített kód, amit meghívnak a szerződések számításokért csak olvasási (read-only) funkcióban. Bővebben az okosszerződéskönyvtárakról.",
+ "light-client-term": "Könnyű kliens",
+ "light-client-definition": "Egy olyan Ethereum kliens, mely nem tárolja a blokkláncn lokális másolatát, s nem validál blokkokat és tranzakciókat. Egy tárca funkcióját adja, s képes létrehozni és szétküldeni tranzakciókat.",
+ "lmd-ghost-term": "LMD-GHOST",
+ "lmd-ghost-definition": "Az elágazásválasztási algoritmus, melyet az Ethereum konszenzuskliensei használnak arra, hogy beazonosítsák a lánc fejét. Az LMD-GHOST annak a rövidítése, hogy „Latest Message Driven Greediest Heaviest Observed SubTree”, ami azt jelenti, hogy a lánc feje vagy eleje az a blokk, amely az összes közül a legtöbb összeadódó tanúsítással rendelkezik.",
+ "mainnet-term": "Mainnet",
+ "mainnet-definition": "A főhálózat (main network) rövidítése, ami a fő nyilvános Ethereum blokklánc.",
+ "merkle-patricia-tree-term": "Merkle Patricia fa (MPT)",
+ "merkle-patricia-tree-definition": "Egy adatstruktúra az Ethereumban, mellyel hatékonyan lehet kulcs-érték párokat tárolni.",
+ "message-term": "Üzenet",
+ "message-definition": "Egy belső tranzakció, mely sosincs sorba rendezve és csak az EVM-en belül kerül elküldésre.",
+ "message-call-term": "Üzenethívás",
+ "message-call-definition": "Egy üzenet átadása egyik számlától a másiknak. Ha a célszámla az Ethereum virtuális gép (EVM) kódjához kapcsolódik, akkor az elindul annak az objektumnak a státuszával és reagál az üzenetre.",
+ "mining-term": "Bányászat",
+ "mining-definition": "A blokkfejléc ismételt hash-elési folyamata, mely növeli a nonce értékét addig, amíg az eredmény egy tetszőleges számot ad bináris nullákkal kezdve. Így kerülnek be az új blokkok a proof-of-work blokkláncba. Ez volt az Ethereum korábbi működése, mielőtt áttért a proof-of-stake mechanizmusra.",
+ "miner-term": "Bányász",
+ "miner-definition": "Egy hálózati csomópont, amely érvényes proof-of-work-öt (munkaigazolás) talál egy új blokkra azáltal, hogy ismételten hash-el (nézze meg az Ethash bejegyzést). A bányászok már nem részei az Ethereumnak, a helyüket validátorok vették át, amikor az Ethereum áttért a proof-of-stake mechanizmusra.",
+ "mint-term": "Kibocsátás (mint)",
+ "mint-definition": "A kibocsátás az új tokenek létrehozási és bevezetési folyamata, így azok használhatóvá válnak. Ez egy decentralizált mechanizmus az új token kiadásra bármilyen központi hivatal nélkül.",
+ "network-term": "Hálózat",
+ "network-definition": "Az Ethereum hálózat, ami egy olyan közvetítőmentes vagy társközi (peer-to-peer) hálózat, mely tranzakciókat és blokkokat terjeszt az összes Ethereum csomópont (hálózati résztvevő) számára. Bővebben a hálózatokról.",
+ "network-hashrate-term": "Hálózati hash-ráta",
+ "network-hashrate-definition": "A teljes bányászati hálózat által létrehozott hash-ráta. Az Ethereumon a bányászatot (proof-of-work, munkaigazolás) leváltotta a proof-of-stake (letéti igazolás) rendszere.",
+ "nft-term": "Nem helyettesíthető token (NFT)",
+ "nft-definition": "Ez egy token-szabvány, melyet az ERC-721 javaslat vezetett be. Az NFT-k követhetőek és lehet velük kereskedni, ugyanakkor minden egyes token egyedi és megkülönböztethető; nem lehet azokat felcserélni, mint az ETH és más ERC-20-as tokenek esetében. Az NFT-k digitális vagy fizikai eszközök feletti tulajdonjogot képviselnek. Bővebben a nem helyettesíthető tokenekről (NFT).",
+ "node-term": "Csomópont (node)",
+ "node-definition": "Egy szoftverkliens, mely részt vesz a hálózatban. Bővebben a csomópontokról és a kliensekről.",
+ "nonce-term": "Nonce",
+ "nonce-definition": "A kriptográfiában egy olyan érték, melyet csak egyszer lehet használni. Egy számla nonce az egy tranzakciószámláló minden számlánál, mellyel meg lehet akadályozni az újrajátszási támadásokat.",
+ "ommer-term": "Ommer (uncle) blokk",
+ "ommer-definition": "Amikor egy proof-of-work (munkaigazolás) mechanizmus bányásza talált egy érvényes blokkot, egy másik bányász talán beküldött egy ezzel versenyző blokkot, amelyet először tettek hozzá a blokklánc elejéhez. Ez az érvényes, de elévült blokk bekerülhet az újabb blokkokba ommer-ként (a szülőblokk testvére) és részleges blokkjutalmat lehet érte kapni. Ez a kifejezés a semleges megfogalmazása a szülőblokk testvérére vonatkozóan, de néha nagybácsinak (uncle) is nevezik. Ez addig volt érvényes az Ethereumon, amíg az egy proof-of-work hálózat volt, de a proof-of-stake rendszerben már nincsenek jelen, mert minden slotban egy adott blokkjavaslattevő van.",
+ "optimistic-rollup-term": "Optimistic típusú összevont tranzakciók",
+ "optimistic-rollup-definition": "Tranzakciók összegzése (rollup), mely csalási bizonyítékokat használ, hogy megnövekedett második blokkláncréteg (L2) tranzakcióátvitelt nyújtson, s eközben a főhálózat (L1) által biztosított biztonságot élvezi. A Plasmához képes, mely egy hasonló L2 megoldás, az optimista rollup összetettebb tranzakciótípusokat is képes kezelni, bármit, ami az Ethereum virtuális gép (EVM) számára lehetséges. A zero-knowledge rollup-okhoz képest van egy késleltetési problémájuk, mivel a tranzakciókat meg lehet kérdőjelezni a családi bizonyítékkal. Bővebben az optimsta rollupokról.",
+ "oracle-term": "Oracle",
+ "oracle-definition": "Az oracle egy híd a blokklánc és a kinti világ között. Láncon belüli API-okként működnek, melyektől információt lehet lekérni és az okosszerződésekben használni azokat. Bővebben az oracle-ökrőlblokkláncról ugyanolyan másolattal rendelkeznek.",
+ "peer-to-peer-network-term": "Közvetítőmentes (peer-to-peer) hálózat",
+ "peer-to-peer-network-definition": "Számítógépek hálózata (társak), melyek együttesen képesek funkciók vagy függvények végrehajtására központi, szerveralapú szolgáltatások nélkül is.",
+ "plasma-term": "Plasma",
+ "plasma-definition": "Egy láncon kívüli skálázási megoldás, mely csalási bizonyítékokat használ, ahogy az optimista rollupok. A plasma egyszerű tranzakciókat tud végrehajtani, mint a tokenek küldése vagy átváltása. Bővebben a plasmáról.",
+ "private-key-term": "Privát kulcs",
+ "private-key-definition": "Egy titkos szám, mely lehetővé teszi az Ethereum felhasználóknak, hogy bizonyítsák a tulajdonjogukat egy számlához vagy szerződéshez egy digitális aláírással (lásd publikus kulcs, cím, ECDSA).",
+ "private-chain-term": "Privát lánc",
+ "private-chain-definition": "Egy teljesen privát blokklánc, melyhez engedélyezett hozzáférés kell, s nem használhatja azt bárki nyilvánosan.",
+ "pos-term": "Proof-of-stake (PoS)",
+ "pos-definition": "Egy olyan módszer, mellyel egy kriptovaluta blokkláncprotokoll képes elérni a konszenzust. A PoS arra kéri a felhasználókat, hogy rendelkezzenek a kriptovaluta egy bizonyos mennyiségével (ez a letétjük a hálózatban) ahhoz, hogy részt vehessenek a tranzakciók validálásában. Bővebben a proof-of-stake mechanizmusról.",
+ "pow-term": "Proof-of-work (PoW)",
+ "pow-definition": "Egy adatrész (a bizonyíték), melynek megtalálásához jelentős számítási kapacitás szükséges. Bővebben a proof-of-work mechanizmusról.",
+ "public-key-term": "Nyilvános kulcs",
+ "public-key-definition": "Egy a privát kulcsból egy egyirányú függvénnyel származtatott szám, amelyet nyilvánosan meg lehet osztani, és bárki felhasználhatja az ehhez tartozó privát kulccsal készült digitális aláírások hitelesítéséhez.",
+ "receipt-term": "Visszaigazolás",
+ "receipt-definition": "Egy Ethereum kliens által visszküldött adat, mely egy adott tranzakció eredményét reprezentálja, beleértve a tranzakció hash-t, a blokk számát, a felhasznált gáz mennyiségét, és egy okosszerződés telepítésénél a szerződés címét.",
+ "re-entrancy-attack-term": "Újrabelépési támadás",
+ "re-entrancy-attack-definition": "Egy olyan támadás, melynek során a támadó szerződés meghívja az áldozatszerződés egy függvényét úgy, hogy a végrehajtás közben az áldozat meg fogja hívni a támadószerződést megint, rekurzív módon. Ezzel például ki lehet szivárogtatni a pénzeszközöket az áldozatszerződésből, mert az átugorja azt a lépést, amikor az egyenleget frissítené vagy számolni tudná a kivett összeget. Bővebben az újrabelépésről.",
+ "reward-term": "Jutalom",
+ "reward-definition": "Az új blokkban jelenlévő ether mennyiség, melyet a hálózat ad jutalomként a bányásznak, aki megtalálta a proof-of-work megoldást.",
+ "rlp-term": "Rekurzív hosszúságú prefixum (RLP)",
+ "rlp-definition": "Egy Ethereum fejlesztők által megtervezett kódolási szabvány tetszőlegesen komplex és tetszőlegesen hosszú objektumok (adatstruktúrák) kódolására és sorosítására.",
+ "rollups-term": "Összegzők",
+ "rollups-definition": "Egy második blokkláncréteg (L2) típusú skálázási megoldás, ami összekötegel számtalan tranzakciót és beküldi azt az Ethereum főhálózatra egyetlen tranzakcióként. Ezáltal csökkenthető a gázdíj és növelhető a tranzakció átviteli mennyiség. Léteznek optimista és zero-knowledge (nullaismeret-alapú) rollupok, melyek különböző biztonsági módszereket használnak arra, hogy ezek a skálázási előnyök eléhetőek legyenek. Bővebben a rollupokról.",
+ "rpc-term": "Remote procedure call (RPC)",
+ "rpc-definition": "A Remote procedure call (RPC) egy olyan protokoll, melyet egy program használ arra, hogy szolgáltatást kérjen a hálózatban lévő másik számítógépen tárolt programtól anélkül, hogy meg kellene értenie a hálózat részleteit.",
+ "sha-term": "Biztonságos hash-algoritmus (Secure Hash Algorithm, SHA)",
+ "sha-definition": "A kriptográfiai hash-függvények egy családja, melyet a Sztenderdek és Technológiák nemzetiközi intézménye (National Institute of Standards and Technology, NIST) adott ki.",
+ "serialization-term": "Sorosítás",
+ "serialization-definition": "Az a folyamat, mely egy adatstruktúrát bájtok sorozatává alakít át.",
+ "shard-term": "Shard / shard lánc",
+ "shard-definition": "A shard láncok egy teljes blokklánc elkülönült szekciói, melyekért a validátorok egy alcsoportja felel. Ez megnövekedett átviteli kapacitást tudna adni az Ethereumnak és fejlesztené az L2 megoldások adatelérhetőségét, mint amilyenek az optimista rollupok és a ZK-rollupok. Bővebben a dankshardingról.",
+ "sidechain-term": "Sidechain (melléklánc)",
+ "sidechain-definition": "Egy skálázási megoldás, amely egy elkülönült láncot használ eltérő, gyakran gyorsabb Konszenzusszabályokkal. A mellékláncokat híddal lehet hozzákapcsolni a főhálózathoz. A rollupok is használnak mellékláncokat, de ezek együttesen működnek a főhálózattal. Bővebben a mellékláncokról.",
+ "signing-term": "Aláírás",
+ "signing-definition": "Kriptográfiailag igazolják, hogy egy tranzakciót jóváhagyott egy specifikus privát kulcs tulajdonosa.",
+ "singleton-term": "Singleton (egyke)",
+ "singleton-definition": "Egy számítógépprogramozási fogalom, mely egy olyan objektumot jelent, amelynek csak egy példánya létezhet.",
+ "slasher-term": "Slasher (büntető)",
+ "slasher-definition": "A slasher egy olyan entitás, amelyik átnézi a tanúsításokat és súlyost büntetés magával vonó hibákat keres. A büntetéseket szétküldik a hálózaton, s a következő blokkelőterjesztő hozzáteszi a bizonyítékot a blokkhoz. A blokkot javasló ezután jutalmat kap, hogy megbüntette a rosszhiszemű validátort.",
+ "slot-term": "Slot",
+ "slot-definition": "Egy időtartam (12 másodperc), melynek során új blokkot tud előterjeszteni a validátor a proof-of-stake (letéti igazolás) rendszerben. A slot lehet üres is. 32 slot tesz ki egy korszakot (epoch). Bővebben a proof-of-stake mechanizmusról.",
+ "smart-contract-term": "Smart contract",
+ "smart-contract-definition": "Egy program, ami az Ethereum számítási infrastruktúráján kerül végrehajtásra. Bevezetés az okosszerződésekbe.",
+ "snark-term": "SNARK",
+ "snark-definition": "A SNARK (succinct non-interactive argument of knowledge) egy fajta zero-knowledge (nullaismeret-alapú) bizonyíték. Bővebben a zero-knowledge rollupokról.",
+ "soft-fork-term": "Ideiglenes elágazás (soft fork)",
+ "soft-fork-definition": "Eltérés a blokkláncban, ami akkor történik, amikor a konszenzusszabályok megváltoznak. A végleges elágazáshoz (hard fork) képest ez visszafelé kompatibilis; a frissített csomópontok képesek validálni a blokkokat, melyeket a nem frissített csomópontok készítenek, ha azok követik az konszenzusszabályokat.",
+ "solidity-term": "Solidity",
+ "solidity-definition": "Egy procedurális (imperatív) programozási nyelv, melynek szintaxa hasonló a JavaScript, C++ vagy Java nyelvekhez. Ez a legnépszerűbb és legtöbbet használt nyelv az Ethereum okosszerződésekre. Dr. Gavin Wood hozta létre. Bővebben a Solidity-ről.",
+ "solidity-inline-assembly-term": "Solidity inline assembly",
+ "solidity-inline-assembly-definition": "EVM assembly nyelv egy Solidity programban. Könnyebb bizonyos műveleteket megírni, mivel a Solidity támogatja az inline assembly-t.",
+ "stablecoin-term": "Stabil érme",
+ "stablecoin-definition": "Egy ERC-20-as token, melynek értéke egy másik eszköz értékéhez van kötve. Néhány stabil érmét fiat vagy hagyományos valuták támogatnak, mint amilyen a dollár, nemesfémek, mint az arany, és más kriptovaluták, mint a Bitcoin.",
+ "staking-term": "Letétbe helyezés",
+ "staking-definition": "Egy bizonyos mennyiségű ether lekötése (letét), hogy a felhsználó validátor legyen és biztosítsa a hálózatot. A validátor ellenőrzi a tranzakciókat és blokkokat javasol a proof-of-stake (letéti igazolás) konszenzusmodellje szerint. A letétbe helyezés egy gazdasági ösztönző, hogy a hálózat legjobb érdeke szerint működjön a felhasználó. A validátor feladatainak elvégzéséért jutalmat kap, de elmulasztásáért veszít az ETH egyenlegéből. Bővebben az Ethereum letétbe helyezésről.",
+ "staking-pool-term": "Staking pool",
+ "staking-pool-definition": "Több Ethereum letétbe helyező ETH egyenlegét kombinálja, hogy elérje a 32 ETH összeget, ami a validátor kulcsok aktiválásához szükséges. A csomópont működtetője ezeket a kulcsokat használja, hogy részt vegyen a konszenzusban, a blokkjutalmakat pedig elosztják a hozzájárulást adó letétesek között. A letéti alapok vagy a letétbe helyezés delegálása nem natív az Ethereum protokoll számára, de a közösség sokféle megoldást létrehozott már. Bővebben a letéti alapokról.",
+ "stark-term": "STARK",
+ "stark-definition": "A STARK (scalable transparent argument of knowledge) egy fajta zero-knowledge (nullaismeret-alapú) bizonyíték. Bővebben a zero-knowledge rollupokról.",
+ "state-term": "Állapot",
+ "state-definition": "Az összes egyenleg és adat pillanatképe a blokklánc egy időpillanatában, mely általában egy adott blokk állapotára utal.",
+ "state-channels-term": "Állapotcsatornák",
+ "state-channels-definition": "Egy L2 megoldás, ahol a csatornát a résztvevők között állítják fel, s így szabadon és olcsón tudnak tranzakciókat végezni. Csak egy tranzakciót küldd a főhálózatnak, hogy felállította és lezárta a csatornát. Ez magas tranzakció átvitelre képes, de azon alapszik, hogy a résztvevők számát előre kell tudni és a pénzeszközöket le kell zárni. Bővebben a státuszcsatornákról.",
+ "supermajority-term": "Túlnyomó többség",
+ "supermajority-definition": "A túlnyomó többség a teljes letétbe helyezett ether 2/3-ot (66%) meghaladó mennyisége, mely az Ethereumot biztosítja. A blokkok véglegesedéséhez a túlnyomó többség szavazatára van szükség a Beacon láncon.",
+ "syncing-term": "Szinkronizálás",
+ "syncing-definition": "Az a folyamat, amikor letöltik a blokklánc utolsó verziójának összes adatát egy csomópontra.",
+ "sync-committee-term": "Szinkronizálási bizottság",
+ "sync-committee-definition": "A szinkronizálási bizottság a validátorok véletlenszerűen kiválasztott csoportja, mely kb. minden 27 órában frissül. A céljuk az, hogy az érvényes blokkfejlécekhez hozzátegyék az aláírásukat. A szinkronizálási bizottság lehetővé teszi, hogy a könnyű kliensek követni tudják a blokklánc fejét anélkül, hogy hozzáférnének a teljes validátorszetthez.",
+ "szabo-term": "Szabo",
+ "szabo-definition": "Az ether denominációja. 1 szabo = 1012wei. 106 szabo = 1 ether.",
+ "terminal-total-difficulty-term": "Végső teljes nehézség (TTD)",
+ "terminal-total-difficulty-definition": "A teljes nehézség az Ethash bányászati nehézség összege az összes blokkra a blokklánc egy adott pontjáig. A végső teljes nehézség ennek egy kijelölt értéke volt, mely elindította a végrehajtási klienseknél, hogy kikapcsolják a bányászó és blokkpletykáló funkcióikat, így a hálózat át tud térni a proof-of-stake mechanizmusra.",
+ "testnet-term": "Teszthálózat",
+ "testnet-definition": "Egy olyan hálózat, melyen az Ethereum főhálózatának viselkedését lehet szimulálni.",
+ "token-term": "Token",
+ "token-definition": "Egy virtuális eszköz, mellyel kereskedni lehet, s az Ethereum blokkláncon okosszerződésekben van meghatározva.",
+ "transaction-term": "Tranzakció",
+ "transaction-definition": "Egy elköteleződés az Ethereum blokkláncon, melyet egy küldő számla írt alá, és egy meghatározott címre irányul. A tranzakció tartalmaz metaadatokat, mint amilyen a gázhatár az adott tranzakcióra. Bővebben a tranzakciókról.",
+ "transaction-fee-term": "Tranzakciós díj",
+ "transaction-fee-definition": "Az Ethereum hálózat használatért fizetendő díj. Például, amikor pénzeszközöket küld valaki atárcájából, vagy egy decentralizált alkalmazással (dapp) való interakciót végez, mint tokenek átváltása vagy egy gyűjthető tárgy megvétele. Ez olyan, akár egy szolgáltatási díj. Ez a díj változik a hálózat leterheltsége szerint. Ennek az az oka, hogy a validátorok, akik a tranzakciókat feldolgozzák, előreveszik a magasabb díjjal rendelkező tételeket, ezért a leterheltség megnöveli az árakat.
Technikailag a tranzakciós díj ahhoz kapcsolódik, hogy az adott művelethez mennyi gázra van szükség.
A tranzakciós díjak csökkentése jelenleg az egyik célkitűzés. Tekintse meg az L2 bejegyzést.",
+ "trustlessness-term": "Bizalomigénytől mentes",
+ "trustlessness-definition": "A hálózat azon képessége, hogy tranzakciókat úgy tud közvetíteni, hogy a résztvevő feleknek nem kell megbízniuk egy harmadik félben.",
+ "turing-complete-term": "Turing-teljes",
+ "turing-complete-definition": "Az angol matematikus és számítástechnikus, Alan Turing, után elnevezett fogalom – az adatmanipulációs szabályok rendszere (például egy számítógép utasításai, egy programozási nyelv vagy egy sejtautomata) „Turing-teljesnek” vagy számítási szempontból univerzálisnak mondható, ha bármely Turing-gép szimulálására felhasználható.",
+ "validator-term": "Validátor",
+ "validator-definition": "Egy csomópont a proof-of-stake rendszerben, melynek feladata az adattárolás, tranzakciók feldolgozása és új blokkok hozzáadása a blokklánchoz. A validátorszoftver aktiválásához letétbe kell helyezni 32 ETH-t. Bővebben a letétbe helyezésről az Ethereumon.",
+ "validator-lifecycle-term": "Validátoréletciklus",
+ "validator-lifecycle-definition": "A státuszok sorozata, melyek a validátorra vonatkoznak. Ezek lehetnek:
a letétet elhelyezte: a validátor a 32 ETH-t elhelyezte a letéti szerződésebe
függőben: a validátor az aktiválási sorban vár, hogy a hálózat validátorai beszavazzák
aktív: tanúsítást végez és blokkokat javasol
megbüntetve: a validátor nem megfelelő viselkedése miatt súlyos büntetésben és kizárásban részesül
kilépő: a validátort megjelölték, hogy kilép a hálózatból, önként vagy kizárás miatt.
",
+ "validity-proof-term": "Érvényességi bizonyíték",
+ "validity-proof-definition": "Egy biztonsági modell egy bizonyos második blokkláncréteg (L2) megoldáshoz, ahol a sebesség meggyorsítása érdekében a tranzakciókat összecsomagolják kötegekbe és beküldik az Ethereumra egyetlen tranzakcióban. A tranzakciószámítást a láncon kívül végzik és a főláncnak egy érvényességi bizonyítékot adnak. Ez a módszer növeli a tranzakciók mennyiségét, miközben fenntartja a biztonságot. Néhány rollupcsalási bizonyítékot használ. Bővebben a zero-knowledge rollupokról.",
+ "validium-term": "Validium",
+ "validium-definition": "Egy láncon kívüli megoldás, amely érvényességi bizonyítékokat használ, hogy növelje a tranzakció átvitelt. A zero-knowledge rollupokhoz képes a validium adatai nincsenek a főhálózaton (L1) tárolva. Bővebben a validiumokról.",
+ "vyper-term": "Vyper",
+ "vyper-definition": "Egy magasz szintű programozési nyelv, melynek szintaxisa a Pythonhoz hasonlít. A cél vele az, hogy közelebb kerüljön egy tisztán függvény alapú/funkcionális nyelvhez. Vitalik Buterin hozta létre. Bővebben a Vyperről.",
+ "wallet-term": "Tárca",
+ "wallet-definition": "Egy szoftver, amely privát kulcsokat tárol. Arra használják, hogy elérjék és irányítsák az Ethereum számlákat, valamint interakciót végezzenek okosszerződésekkel. A kulcsokat nem kell a tárcában tárolni, a biztonság érdekében érdemes inkább offline tartani (például memóriakártyán vagy papírra felírva). A neve ellenére a tárca nem tárol pénzt vagy tokeneket. Bővebben az Ethereum tárcákról.",
+ "web3-term": "Web3",
+ "web3-definition": "A web harmadik változata. Először Dr. Gavin Wood javasolta a web3 kifejezést, mely új célt és fókuszt tűz ki a webes alkalmazásoknak – a központilag birtokolt és menedzselt alkalmazások helyett decentralizált protokollokra épülők legyenek Bővebben a web3-ról.",
+ "wei-term": "Wei",
+ "wei-definition": "Az ether legkisebb denominációja. 1018 wei = 1 ether.",
+ "zero-address-term": "Zérócím",
+ "zero-address-definition": "Egy Ethereum cím, mely cska nullából áll, s gyakran használják arra, hogy tokeneket vonjanak ki a körforgásból. A különbség van aközött, hogy egy tokent hivatalosan kivontak egy okosszerződés indexéből a burn() metódussal, vagy elküldték erre a címre.",
+ "zk-proof-term": "Zero-knowledge (nullaismeret-alapú) bizonyíték",
+ "zk-proof-definition": "A zero-knowledge bizonyíték egy kriptográfiai módszer, mellyel egy egyén képes bizonyítani, hogy egy állítás igaz anélkül, hogy bármilye információt szolgáltatna. Bővebben a zero-knowledge rollupokról.",
+ "zk-rollup-term": "Nulla tudás alapú összevont tranzakció",
+ "zk-rollup-definition": "Tranzakciók összegzése (rollup), mely érvényességi bizonyítékokat használ, hogy megnövelje az L2 tranzakcióátvitelt, miközben a főhálózat (L1) által kínált biztonságot megtartja. Habár nem tudnak összetett tranzakciótípusokat kezelni, mint az optimista rollupok, de nincs bennük késleltetési probléma, mert a tranzakciók bizonyítottan érvényesek a beküldés pillanatában. Bővebben a zero-knowledge rollupokról."
+}
diff --git a/src/intl/hu/page-about.json b/src/intl/hu/page-about.json
index e5d0586e04e..1a93297472c 100644
--- a/src/intl/hu/page-about.json
+++ b/src/intl/hu/page-about.json
@@ -22,5 +22,15 @@
"page-about-p-6": "A bevezetésre váró feladataink.",
"page-about-p-7": "Befejezett feladatok.",
"page-about-p-8": "Fejlesztési javaslatod van az ethereum.org-al kapcsolatban? Szívesen együttműködnénk!",
- "page-what-is-ethereum-energy-consumption-chart-legend": "Éves energiafogyasztás TWh/évben"
+ "page-what-is-ethereum-energy-consumption-chart-legend": "Éves energiafogyasztás TWh/évben",
+ "page-upgrades-post-merge-banner-governance-ood": "Az oldalon található tartalmak egy része a beolvadás után már nem naprakész. Ha szeretne segíteni, kérjük, küldjön egy bejelentést (PR-t).",
+ "energy-consumption-chart-global-data-centers-label": "Globális adatközpontok",
+ "energy-consumption-chart-airbnb-label": "AirBnB",
+ "energy-consumption-gold-mining-cbeci-label": "Aranybányászat",
+ "energy-consumption-chart-btc-pow-label": "BTC PoW",
+ "energy-consumption-chart-netflix-label": "Netflix",
+ "energy-consumption-chart-eth-pow-label": "ETH PoW",
+ "energy-consumption-chart-gaming-us-label": "Számítógépes játék (USA)",
+ "energy-consumption-chart-paypal-label": "PayPal",
+ "energy-consumption-chart-eth-pos-label": "ETH PoS"
}
diff --git a/src/intl/hu/page-assets.json b/src/intl/hu/page-assets.json
index 3b7b2f2e72f..3c65e513d10 100644
--- a/src/intl/hu/page-assets.json
+++ b/src/intl/hu/page-assets.json
@@ -1,36 +1,61 @@
{
"page-assets-bazaar": "Ethereum bazár",
+ "page-assets-beacon-chain": "Beacon Chain",
"page-assets-blocks": "Építőkockák",
+ "page-assets-dao": "DAO",
+ "page-assets-defi": "DeFi",
+ "page-assets-merge": "Az egyesítés",
"page-assets-doge": "Doge dappokat használ",
"page-assets-download-artist": "Szerző:",
"page-assets-download-download": "Letöltés",
"page-assets-enterprise": "Vállalati Ethereum",
"page-assets-eth": "Ether (ETH)",
- "page-assets-eth-diamond-color": "ETH gyémánt (szín)",
- "page-assets-eth-diamond-glyph": "ETH gyémánt (karakter)",
- "page-assets-eth-diamond-gray": "ETH gyémánt (szürke)",
- "page-assets-eth-diamond-purple": "ETH gyémánt (lila)",
- "page-assets-eth-diamond-white": "ETH gyémánt (fehér)",
- "page-assets-eth-glyph-video-dark": "ETH karakter videó (sötét)",
- "page-assets-eth-glyph-video-light": "ETH karakter videó (világos)",
- "page-assets-eth-logo-landscape-gray": "ETH logo táj (szürke)",
- "page-assets-eth-logo-landscape-purple": "ETH logo táj (lila)",
- "page-assets-eth-logo-landscape-white": "ETH logo táj (fehér)",
- "page-assets-eth-logo-portrait-gray": "ETH logo portré (szürke)",
- "page-assets-eth-logo-portrait-purple": "ETH logo portré (lila)",
- "page-assets-eth-logo-portrait-white": "ETH logo portré (fehér)",
- "page-assets-eth-wordmark-gray": "ETH szójel (szürke)",
- "page-assets-eth-wordmark-purple": "ETH szójel (lila)",
- "page-assets-eth-wordmark-white": "ETH szójel (fehér)",
+ "page-assets-eth-diamond-color": "ETH-gyémánt (színes)",
+ "page-assets-eth-diamond-glyph": "ETH-gyémánt (karakter)",
+ "page-assets-eth-diamond-gray": "ETH-gyémánt (szürke)",
+ "page-assets-eth-diamond-purple": "ETH-gyémánt (lila)",
+ "page-assets-eth-diamond-white": "ETH-gyémánt (fehér)",
+ "page-assets-eth-diamond-colored": "ETH-gyémánt (színezett)",
+ "page-assets-eth-diamond-colored-svg": "ETH-gyémánt (színezett, SVG)",
+ "page-assets-eth-glyph-video-dark": "ETH-karakter, videó (sötét)",
+ "page-assets-eth-glyph-video-light": "ETH-karakter, videó (világos)",
+ "page-assets-eth-logo-landscape-gray": "ETH-logó, fekvő (szürke)",
+ "page-assets-eth-logo-landscape-purple": "ETH-logó, fekvő (lila)",
+ "page-assets-eth-logo-landscape-white": "ETH-logó, fekvő (fehér)",
+ "page-assets-eth-logo-portrait-gray": "ETH-logó, álló (szürke)",
+ "page-assets-eth-logo-portrait-purple": "ETH-logó, álló (lila)",
+ "page-assets-eth-logo-portrait-white": "ETH-logó, álló (fehér)",
+ "page-assets-eth-wordmark-gray": "ETH-szójel (szürke)",
+ "page-assets-eth-wordmark-purple": "ETH-szójel (lila)",
+ "page-assets-eth-wordmark-white": "ETH-szójel (fehér)",
"page-assets-ethereum-brand-assets": "Ethereum márkanév",
- "page-assets-h1": "ethereum.org eszközök",
- "page-assets-hero": "ethereum.org hős ",
- "page-assets-hero-particles": "ETH részecske kép",
+ "page-assets-finance": "Pénzügy",
+ "page-assets-future": "Jövő",
+ "page-assets-h1": "ethereum.org anyagok",
+ "page-assets-hero": "ethereum.org-hős",
+ "page-assets-hero-panda": "ethereum.org hős a Merge pandával",
+ "page-assets-merge-panda": "Merge panda",
+ "page-assets-merge-panda-svg": "Merge panda SVG",
+ "page-assets-hero-particles": "ETH-részecskék, kép",
"page-assets-historical-artwork": "Történelmi műalkotás",
"page-assets-illustrations": "Illusztrációk",
- "page-assets-meta-desc": "Fedezd fel és töltsd le az Ethereum és ethereum.org márkaneveket, ábrákat és médiátartalmakat.",
- "page-assets-meta-title": "Ethereum márkanév",
+ "page-assets-impact": "Hatás",
+ "page-assets-infrastructure": "Infrastruktúra",
+ "page-assets-leslie-the-rhino": "Leslie, a rinocérosz",
+ "page-assets-meta-desc": "Fedezze fel és töltse le az Ethereumhoz és ethereum.org-hoz tartozó márkaneveket, illusztrációkat és médiatartalmakat.",
+ "page-assets-meta-title": "Ethereum márkaeszközök",
+ "page-assets-mainnet": "Mainnet",
"page-assets-page-assets-solid-background": "Telt háttér",
"page-assets-page-assets-transparent-background": "Átlátszó háttér",
- "page-assets-robot": "Robot tárca"
+ "page-assets-robot": "Robot tárca",
+ "page-assets-sharding": "Sharding",
+ "page-assets-hackathon": "Hackathon",
+ "page-assets-learn-hero-name": "Futurisztikus egyetem",
+ "page-assets-community-hero-name": "Közösségi találkozó",
+ "page-assets-quizzes-hero-name": "Végtelen játszótér",
+ "page-assets-developers-hero-name": "Építjük a jövőt",
+ "page-assets-garden-name": "Az Ethereumi kert",
+ "page-assets-roadmap-hero-name": "A jövőbe vezető utak",
+ "page-assets-layer-2-hero-name": "Az Ethereum építése",
+ "page-assets-guides-hero-name": "Ethereum-laboratórium"
}
diff --git a/src/intl/hu/page-bug-bounty.json b/src/intl/hu/page-bug-bounty.json
index de7cfceea4b..19716f69c30 100644
--- a/src/intl/hu/page-bug-bounty.json
+++ b/src/intl/hu/page-bug-bounty.json
@@ -1,95 +1,136 @@
{
- "page-upgrades-bug-bounty-annotated-specs": "kommentált specifikáció",
- "page-upgrades-bug-bounty-annotations": "Hasznos lehet megnézni a következő annotációkat:",
- "page-upgrades-bug-bounty-client-bugs": "Eth2 kliens bugok",
- "page-upgrades-bug-bounty-client-bugs-desc": "A kliensek fogják futtatni a Beacon Chaint, amint a fejlesztés megtörténik. A klienseknek egy specifikációban meghatározott logikai halmazt kell követniük és biztonságosnak kell lenniük potenciális támadásokkal szemben. A bugokat, amiket szeretnénk megtalálni a protokoll implementációhoz kapcsolódnak.",
- "page-upgrades-bug-bounty-client-bugs-desc-2": "Kizárólag a Lighthouse, Nimbus, Teku és a Prysm bugjai vannak figyelembe véve ennél a vadászatnál. Több klienst is hozzá fogunk adni, amint teljesítik az auditokat és gyártásra készen állnak.",
- "page-upgrades-bug-bounty-clients": "A vadászatban szereplő kliensek",
- "page-upgrades-bug-bounty-clients-type-1": "specifikáció nem-megfelelési problémák.",
- "page-upgrades-bug-bounty-clients-type-2": "váratlan összeomlások vagy szolgáltatásmegtagadási (DOS) sérülékenységek.",
- "page-upgrades-bug-bounty-clients-type-3": "bármilyen probléma, ami javíthatatlan konszenzus törést okoz a hálózat többi része számára.",
- "page-upgrades-bug-bounty-docking": "dokkolás",
- "page-upgrades-bug-bounty-email-us": "Küldj e-mailt nekünk:",
+ "page-upgrades-bug-bounty-annotated-specs": "jegyzettel ellátott specifikáció",
+ "page-upgrades-bug-bounty-annotations": "Hasznos lehet megnézni a következő jegyzeteket:",
+ "page-upgrades-bug-bounty-client-bugs": "Klienshibák",
+ "page-upgrades-bug-bounty-client-bugs-desc": "A kliensek futtatják az Ethereum-hálózatot, követniük kell a specifikációban meghatározott logikát, és biztonságban kell lenniük a potenciális támadásokkal szemben. Az általunk keresett hibák a protokollimplementációhoz kapcsolódnak.",
+ "page-upgrades-bug-bounty-client-bugs-desc-2": "Jelenleg a végrehajtási réteg kliensei (Besu, Erigon, Geth és Nethermind) és a konszenzus réteg kliensei (Lighthouse, Lodestar, Nimbus, Teku és Prysm) szerepelnek a Bug Bounty Programban. További kliensek is bekerülhetnek a programba, amint befejezik az ellenőrzéseket és készen állnak a használatra. Jelenleg a c-kzg-4844 és a go-kzg-4844 is szerepel a hibavadászprogramban.",
+ "page-upgrades-bug-bounty-clients": "A vadászatban részt vevő kliensek",
+ "page-upgrades-bug-bounty-clients-type-1": "A specifikációnak nem felel meg a működés",
+ "page-upgrades-bug-bounty-clients-type-2": "Váratlan összeomlások, távoli kódfuttatással (RCE) vagy szolgáltatásmegtagadással (DOS) kapcsolatos sérülékenységek",
+ "page-upgrades-bug-bounty-clients-type-3": "Bármilyen probléma, amely javíthatatlan konszenzustörést okoz a hálózat többi részével szemben",
+ "page-upgrades-bug-bounty-misc-bugs": "Solidity-hibák",
+ "page-upgrades-bug-bounty-misc-bugs-desc": "A hatókör tartalmával kapcsolatos további részletekért tekintse meg a Solidity SECURITY.MD állományt.",
+ "page-upgrades-bug-bounty-misc-bugs-desc-2": "A Solidity nem tartalmaz biztonsági garanciákat a nem megbízható bemeneti adatok fordításával kapcsolatban, továbbá nem jár jutalom azért, ha a solc fordító rossz szándékkal generált adatok miatt leáll.",
+ "page-upgrades-bug-bounty-deposit-bugs": "A letéti szerződés hibái",
+ "page-upgrades-bug-bounty-deposit-bugs-desc": "A Beacon lánc letéti szerződésének specifikációi és forráskódja része a hibavadászprogramnak.",
+ "page-upgrades-bug-bounty-docking": "beolvadás",
+ "page-upgrades-bug-bounty-email-us": "Küldjön e-mailt:",
"page-upgrades-bug-bounty-help-links": "Hasznos linkek",
- "page-upgrades-bug-bounty-hunting": "Bug vadászat szabályok",
- "page-upgrades-bug-bounty-hunting-desc": "A bug vadászat program egy kísérleti és diszkrecionális jutalomprogram aktív Ethereum közösségünk számára, hogy ösztönözze és megjutalmazza azokat, akik segítenek a platform fejlesztésében. Nem egy verseny. Tudnod kell, hogy bármikor lemondhatjuk a programot, és a díjazást az Ethereum Alapítvány bug vadászati panele határozza meg. Továbbá nem adhatunk jutalmakat olyan egyéneknek, akik szankciós listákon szerepelnek, vagy szankciós listákon lévő országokban élnek (pl. Észak-Korea, Irán stb.). Az adózásért teljes mértékben te vagy felelős. Minden díjra a vonatkozó törvények vonatkoznak. Végül a tesztelés nem sérthet semmilyen törvényt, és nem sérthet olyan adatokat, amelyek nincsenek a birtokodban.",
- "page-upgrades-bug-bounty-hunting-leaderboard": "Bug vadászat ranglista",
- "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Találj Eth2 bugokat és kerülj fel ranglétrára",
- "page-upgrades-bug-bounty-hunting-li-1": "Azok a problémák, amelyeket már más felhasználó beküldött vagy ismertek a specifikáció és kliens karbantartóknak, nem számítanak be a vadászat díjazásába.",
- "page-upgrades-bug-bounty-hunting-li-2": "Sérülékenységek nyilvános közzététele alkalmatlanná teszi azt a vadászatban.",
- "page-upgrades-bug-bounty-hunting-li-3": "Az Ethereum Alapítvány kutatói és az Eth2 kliens csapatok alkalmazottai nem vehetnek részt a díjazásban.",
- "page-upgrades-bug-bounty-hunting-li-4": "Az Ethereum vadászati program a díjak meghatározásánál több változót is figyelembe vesz. A jogosultság, a pontszám és a díjjal kapcsolatos feltételek meghatározása az Ethereum Alapítvány bug vadászati testületének kizárólagos és végső döntése.",
- "page-upgrades-bug-bounty-leaderboard": "Teljes ranglista megtekintése",
- "page-upgrades-bug-bounty-leaderboard-points": "pontok",
- "page-upgrades-bug-bounty-ledger-desc": "A Beacon Chain specifikáció részletezi a design indoklását és az Ethereum javasolt változásait a Beacon Chain fejlesztésen keresztül.",
- "page-upgrades-bug-bounty-ledger-title": "A Beacon Chain specifikáció bugjai",
- "page-upgrades-bug-bounty-meta-description": "Áttekintés az Eth2 bug vadászati programról: információ a bekapcsolódásról és a díjazásról.",
- "page-upgrades-bug-bounty-meta-title": "Eth2 bug vadászati program",
- "page-upgrades-bug-bounty-not-included": "Nem tartalmazza",
- "page-upgrades-bug-bounty-not-included-desc": "A shard láncok és a dokkolási fejlesztések még aktív fejlesztés alatt állnak és emiatt nem tartalmazza őket ez a vadászati program.",
- "page-upgrades-bug-bounty-owasp": "OWASP módszer megtekintése",
- "page-upgrades-bug-bounty-points": "Továbbá az EF pontokat ad a következők alapján:",
- "page-upgrades-bug-bounty-points-error": "Hiba betöltés közben... kérjük frissítsd az oldalt.",
- "page-upgrades-bug-bounty-points-exchange": "Pont beváltás",
- "page-upgrades-bug-bounty-points-loading": "Adatok betöltése...",
- "page-upgrades-bug-bounty-points-payout-desc": " Az Ethereum Alapítvány ETH-ben vagy DAI-ban fizeti ki az USD értékét.",
- "page-upgrades-bug-bounty-points-point": "1 pont",
- "page-upgrades-bug-bounty-points-rights-desc": "Az Ethereum Alapítvány fenntartja az előzetes bejelentés nélkül történő változatás jogát.",
- "page-upgrades-bug-bounty-points-usd": "2 USD",
+ "page-upgrades-bug-bounty-hunting": "A hibavadászat szabályai",
+ "page-upgrades-bug-bounty-hunting-desc": "A hibavadászprogram egy kísérleti és önkéntes alapú jutalomprogram az aktív Ethereum-közösségünk számára, hogy ösztönözze és megjutalmazza azokat, akik segítenek a platform fejlesztésében. Ez nem egy verseny. Tudnia kell, hogy bármikor lemondhatjuk a programot, és a díjazásról az Ethereum Alapítvány hibavadászati testülete dönt. Továbbá nem adhatunk jutalmakat olyan egyéneknek, akik szankciós listákon szerepelnek, vagy szankciós listákon lévő országokban élnek (pl. Észak-Korea, Irán stb.). A helyi jogszabályok megkövetelik, hogy ellenőrizzük az Ön kilétét. Az adózásért teljes mértékben Ön felel. Minden díj a vonatkozó jogszabályok hatálya alá tartozik. Végül a tesztelés nem sérthet semmilyen jogszabályt, nem veszélyeztethet más tulajdonát képező adatokat, és csak helyben működő teszthálózatokon végezhető.",
+ "page-upgrades-bug-bounty-hunting-leaderboard": "A konszenzusréteg hibavadászranglistája",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard": "A végrehajtási réteg hibavadászranglistája",
+ "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Találjon hibát a konszenzusrétegben, és kerüljön fel a ranglistára",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Találjon hibát a végrehajtási rétegben, és kerüljön fel a ranglistára",
+ "page-upgrades-bug-bounty-hunting-li-1": "Nem jogosít vadászjutalomra a POC nélküli probléma, vagy az, amelyet egy másik felhasználó már benyújtott, vagy amelyet a specifikáció- és klienskarbantartók már ismernek.",
+ "page-upgrades-bug-bounty-hunting-li-2": "Egy sebezhetőség után nem jár jutalom, ha azt nyilvánosan közzéteszik.",
+ "page-upgrades-bug-bounty-hunting-li-3": "Az Ethereum Alapítvány munkavállalói és szerződött felei, illetve a hibavadász program hatókörébe tartozó klienscsapatok kizárólag pontokat gyűjthetnek a program keretein belül, de pénzügyi jutalomban nem részesülhetnek.",
+ "page-upgrades-bug-bounty-hunting-li-4": "Az Ethereum hibavadászprogram a jutalmak meghatározásánál több tényezőt is figyelembe vesz. A jogosultságról, a pontszámról és a díjjal kapcsolatos feltételekről az Ethereum Alapítvány hibavadászati testülete saját hatáskörben hoz végleges döntést.",
+ "page-upgrades-bug-bounty-leaderboard": "A teljes ranglista megtekintése",
+ "page-upgrades-bug-bounty-leaderboard-list": "Hibavadászranglista",
+ "page-upgrades-bug-bounty-leaderboard-points": "pontszám",
+ "page-upgrades-bug-bounty-ledger-desc": "Az Ethereum-specifikáció részletesen leírja a végrehajtási és a konszenzusréteg tervezése során figyelembe vett szempontokat.",
+ "page-upgrades-bug-bounty-ledger-title": "Specifikációs hibák",
+ "page-upgrades-bug-bounty-meta-description": "Az Ethereum hibavadászprogramjának áttekintése: részvételi feltételek és jutalominformáció.",
+ "page-upgrades-bug-bounty-meta-title": "Ethereum hibavadászprogram",
+ "page-upgrades-bug-bounty-not-included": "Hatókörön kívüli",
+ "page-upgrades-bug-bounty-not-included-desc": "Csak a hatókörön belüli besorolásban szereplő célok vesznek részt a hibavadászprogramban. Ez azt jelenti, hogy például az infrastruktúra – a weblapok, DNS-címek, emailek stb. – nem része a hibavadászatnak. Az ERC20-szerződéshez kapcsolódó hibák általában véve nem vesznek részt a hibavadászatban. Mindazonáltal ilyen esetekben segíthetünk kapcsolatba lépni az érintett felekkel, például a szerzőkkel vagy tőzsdékkel. Az ENS-t az ENS Alapítvány kezeli, és a hibavadászat hatókörén kívül esik. Szintén kívül esnek azok a gyenge pontok, amelyeknél a felhasználónak nyilvánossá kellene tenni egy API-t, mint amilyen a JSON-RPC vagy a Beacon API.",
+ "page-upgrades-bug-bounty-owasp": "Az OWASP-módszer megtekintése",
+ "page-upgrades-bug-bounty-points": "Az Ethereum Alapítvány (EF) a következők alapján is jutalmaz:",
+ "page-upgrades-bug-bounty-points-error": "Hiba történt az adatok betöltése közben… frissítse az oldalt.",
+ "page-upgrades-bug-bounty-points-exchange": "Pontok beváltása",
+ "page-upgrades-bug-bounty-points-loading": "Adatok betöltése…",
+ "page-upgrades-bug-bounty-points-payout-desc": "Az Ethereum Alapítvány ETH-ben vagy DAI-ban fizeti ki az USD-értéket.",
+ "page-upgrades-bug-bounty-points-point": "1 pont",
+ "page-upgrades-bug-bounty-points-rights-desc": "Az Ethereum Alapítvány fenntartja az előzetes bejelentés nélküli változtatás jogát.",
+ "page-upgrades-bug-bounty-points-usd": "2 USD",
"page-upgrades-bug-bounty-quality": "A leírás minősége",
- "page-upgrades-bug-bounty-quality-desc": ": Magasabb jutalom jár a tiszta, jól megfogalmazott beadványokért.",
- "page-upgrades-bug-bounty-quality-fix": "A javítás minősége, ha tartalmazza: Magasabb díj jár az olyan beadványokért, melyek világosan leírják a probléma javítását.",
+ "page-upgrades-bug-bounty-quality-desc": ": magasabb jutalom jár az egyértelmű, jól megfogalmazott beadványokért.",
+ "page-upgrades-bug-bounty-quality-fix": "A javítás minősége, ha tartalmazza: magasabb díj jár az olyan beadványokért, amelyek világosan leírják a probléma javításának módját.",
"page-upgrades-bug-bounty-quality-repro": "Reprodukálhatóság minősége",
- "page-upgrades-bug-bounty-quality-repro-desc": ": Kérjük adj meg teszt kódot, scripteket és részletes instrukciókat. Minél egyszerűbb előteremtenünk és hitelesítenünk a sérülékenységet, annál nagyobb a díj.",
- "page-upgrades-bug-bounty-questions": "Kérdések?",
- "page-upgrades-bug-bounty-rules": "Szabályok elolvasása",
- "page-upgrades-bug-bounty-slogan": "Eth2 bug vadászatok",
- "page-upgrades-bug-bounty-specs": "Teljes specifikáció elolvasása",
- "page-upgrades-bug-bounty-specs-docs": "Specifikáció dokumentumok",
- "page-upgrades-bug-bounty-submit": "Bug beküldése",
- "page-upgrades-bug-bounty-submit-desc": "Minden egyes megtalált bugért pontokat kapsz. A pontok mennyisége függ a bug súlyosságától. Az Ethereum Alapítvány (EF) meghatározza a súlyosságot az OWASP módszer alkalmazásával.",
- "page-upgrades-bug-bounty-subtitle": "Nyerj akár 50 000 USD-t és egy helyet a ranglétrán Eth2 protokoll és kliens bugok megtalálásával.",
- "page-upgrades-bug-bounty-title": "Nyitott a beadványokra",
+ "page-upgrades-bug-bounty-quality-repro-desc": ": a jutalomjogosultsághoz az elképzelés működését igazolni is kell (Proof of Concept, POC). Kérjük, adja meg a tesztkódot, szkripteket és részletes instrukciókat is. Minél egyszerűbb reprodukálnunk és ellenőriznünk a sérülékenységet, annál nagyobb a jutalom.",
+ "page-upgrades-bug-bounty-questions": "Kérdése van?",
+ "page-upgrades-bug-bounty-rules": "Szabályok áttekintése",
+ "page-upgrades-bug-bounty-slogan": "Hibavadászprogram",
+ "page-upgrades-bug-bounty-specs": "Konszenzusréteg specifikációk",
+ "page-upgrades-bug-bounty-execution-specs": "Végrehajtási réteg specifikációk",
+ "page-upgrades-bug-bounty-specs-docs": "Specifikációdokumentumok",
+ "page-upgrades-bug-bounty-submit": "Hiba beküldése",
+ "page-upgrades-bug-bounty-submit-desc": "Minden megtalált és érvényes hibáért jutalmat kap. A kapott jutalom összege a hiba súlyosságától függ. A hibák súlyosságát az OWASP kockázatminősítési modellel összhangban, az Ethereum-hálózatra gyakorolt hatás és bekövetkezés valószínűsége alapján számítjuk ki.",
+ "page-upgrades-bug-bounty-subtitle": "Keressen akár 250 000 USD-t, és kerüljön fel a ranglistára – találjon olyan hibát a protokollban, a kliensben vagy a Solidityben, amely hatással van az Ethereum-hálózatra.",
+ "page-upgrades-bug-bounty-title": "Fogadjuk a beadványokat",
"page-upgrades-bug-bounty-title-1": "Beacon Chain",
- "page-upgrades-bug-bounty-title-2": "Fork választás",
+ "page-upgrades-bug-bounty-title-2": "Elágazásválasztás",
"page-upgrades-bug-bounty-title-3": "Solidity letéti szerződés",
- "page-upgrades-bug-bounty-title-4": "Peer-to-peer hálózatok",
- "page-upgrades-bug-bounty-type-1": "biztonságot/véglegesítést megtörő bugok.",
- "page-upgrades-bug-bounty-type-2": "szolgáltatásmegtagadás (DOS) vektorok",
- "page-upgrades-bug-bounty-type-3": "inkonzisztencia a feltételezésekben, például olyan szituációk, ahol helyesen cselekvő validátorok kerülnek megvágásra.",
- "page-upgrades-bug-bounty-type-4": "számítási vagy paraméter inkonzisztenciák.",
- "page-upgrades-bug-bounty-types": "Bug típusok",
- "page-upgrades-bug-bounty-validity": "Érvényes bugok",
- "page-upgrades-bug-bounty-validity-desc": "Ez a bug vadászati program az Eth2 Beacon Chain core specifikációban és a Prysm, Lighthouse, valamint Teku kliens implementációkban található bugokra fókuszál.",
+ "page-upgrades-bug-bounty-title-4": "Közvetítőmentes (peer-to-peer) hálózatok",
+ "page-upgrades-bug-bounty-type-1": "Biztonságot/véglegességet megtörő hibák",
+ "page-upgrades-bug-bounty-type-2": "Szolgáltatásmegtagadási (DOS) vektorok",
+ "page-upgrades-bug-bounty-type-3": "Inkonzisztencia a feltételezésekben, például olyan szituációk, ahol a becsületesen eljáró validátorok letétjét megvághatja a rendszer",
+ "page-upgrades-bug-bounty-type-4": "Számítási vagy paraméterinkonzisztenciák",
+ "page-upgrades-bug-bounty-types": "Hibatípusok",
+ "page-upgrades-bug-bounty-validity": "Hatáskörön belül",
+ "page-upgrades-bug-bounty-validity-desc": "A hibavadászprogramunk teljesen felöleli a folyamatot: a protokollok (például a blokklánckonszenzus-modell, az átutalási és p2p-protokollok, proof-of-stake stb.) stabilitásától és a protokoll/megvalósítás megfelelőségétől kezdve a hálózatbiztonságig és a konszenzusintegritásig. A klasszikus kliensbiztonság és a kriptográfiai primitívek (blokktitkosítók) biztonsága egyaránt része a programnak. Kétség esetén kérdéseit a bounty@ethereum.org címre várjuk.",
"page-upgrades-bug-bounty-card-critical": "Kritikus",
- "page-upgrades-bug-bounty-card-critical-risk": "Kritikus kockázatú bug beadása",
+ "page-upgrades-bug-bounty-card-critical-risk": "Kritikus kockázatú hiba beadása",
"page-upgrades-bug-bounty-card-h2": "Közepes",
"page-upgrades-bug-bounty-card-high": "Magas",
- "page-upgrades-bug-bounty-card-high-risk": "Magas kockázatú bug beadása",
- "page-upgrades-bug-bounty-card-label-1": "1000 pontig",
- "page-upgrades-bug-bounty-card-label-2": "2000 DAI-ig",
- "page-upgrades-bug-bounty-card-label-3": "5000 pontig",
- "page-upgrades-bug-bounty-card-label-4": "10 000 DAI-ig",
- "page-upgrades-bug-bounty-card-label-5": "10 000 pontig",
- "page-upgrades-bug-bounty-card-label-6": "20 000 DAI-ig",
- "page-upgrades-bug-bounty-card-label-7": "25 000 pontig",
- "page-upgrades-bug-bounty-card-label-8": "50 000 DAI-ig",
- "page-upgrades-bug-bounty-card-li-1": "Kisebb hatás, közepes valószínűség",
- "page-upgrades-bug-bounty-card-li-2": "Közepes behatás, alacsony valószínűség",
- "page-upgrades-bug-bounty-card-li-3": "Magas hatás, alacsony valószínűség",
+ "page-upgrades-bug-bounty-card-high-risk": "Magas kockázatú hiba beadása",
+ "page-upgrades-bug-bounty-card-label-1": "legfeljebb 1000 pont",
+ "page-upgrades-bug-bounty-card-label-2": "legfeljebb 2000 USD",
+ "page-upgrades-bug-bounty-card-label-3": "legfeljebb 5000 pont",
+ "page-upgrades-bug-bounty-card-label-4": "legfeljebb 10 000 USD",
+ "page-upgrades-bug-bounty-card-label-5": "legfeljebb 10 000 pont",
+ "page-upgrades-bug-bounty-card-label-6": "legfeljebb 50 000 USD",
+ "page-upgrades-bug-bounty-card-label-7": "legfeljebb 25 000 pont",
+ "page-upgrades-bug-bounty-card-label-8": "legfeljebb 250 000 USD",
+ "page-upgrades-bug-bounty-card-li-1": "Kicsi hatás, közepes valószínűség",
+ "page-upgrades-bug-bounty-card-li-2": "Közepes hatás, alacsony valószínűség",
+ "page-upgrades-bug-bounty-card-li-3": "Nagy hatás, alacsony valószínűség",
"page-upgrades-bug-bounty-card-li-4": "Közepes hatás, közepes valószínűség",
- "page-upgrades-bug-bounty-card-li-5": "Alacsony hatás, magas valószínűség",
- "page-upgrades-bug-bounty-card-li-6": "Magas hatás, közepes valószínűség",
+ "page-upgrades-bug-bounty-card-li-5": "Kicsi hatás, magas valószínűség",
+ "page-upgrades-bug-bounty-card-li-6": "Nagy hatás, közepes valószínűség",
"page-upgrades-bug-bounty-card-li-7": "Közepes hatás, magas valószínűség",
- "page-upgrades-bug-bounty-card-li-8": "Magas hatás, magas valószínűség",
+ "page-upgrades-bug-bounty-card-li-8": "Nagy hatás, magas valószínűség",
"page-upgrades-bug-bounty-card-low": "Alacsony",
- "page-upgrades-bug-bounty-card-low-risk": "Alacsony kockázatú bug beadása",
- "page-upgrades-bug-bounty-card-medium-risk": "Közepes kockázatú bug beadása",
+ "page-upgrades-bug-bounty-card-low-risk": "Alacsony kockázatú hiba beadása",
+ "page-upgrades-bug-bounty-card-medium-risk": "Közepes kockázatú hiba beadása",
"page-upgrades-bug-bounty-card-subheader": "Súlyosság",
"page-upgrades-bug-bounty-card-subheader-2": "Példa",
- "page-upgrades-bug-bounty-card-text": "Egy támadó néha egy csomópontot olyan állapotba hozhat, ami miatt a validátor által elvégzett minden száz igazolásból egy kiesik",
- "page-upgrades-bug-bounty-card-text-1": " Egy támadó sikeresen végrehajthat \"eclipse\" támadásokat olyan csomópontokon, melyek 4 vezető nulla bájtos peer-idvel rendelkeznek",
- "page-upgrades-bug-bounty-card-text-2": "Van egy konszenzus bug két kliens között, de nehéz vagy nem praktikus a támadó számára beindítani a támadást.",
- "page-upgrades-bug-bounty-card-text-3": " Van egy konszenzus bug két kliens között és a támadó számára triviális beindítani a támadást.",
- "page-upgrades-question-title": "Gyakran ismételt kérdések"
+ "page-upgrades-bug-bounty-card-text": "A támadó néha olyan állapotba tud hozni egy csomópontot, amely miatt a csomópont egy validátor által kiadott minden 100 tanúsításból egyet kihagy.",
+ "page-upgrades-bug-bounty-card-text-1": "A támadó sikeres „eclipse” vagy elszigetelési támadásokat tud végrehajtani olyan csomópontokon, amelyek peer-azonosítójának elején négy nulla áll",
+ "page-upgrades-bug-bounty-card-text-2": "A támadó sikeresen particionálni tudja a hálózat nagy részeit, és egy támadó számára triviális dolog kiváltani a sebezhetőséget.",
+ "page-upgrades-bug-bounty-card-text-3": "A támadó képes sikeres távoli kódvégrehajtást folytatni egy többségi kliensen, és egy támadó számára triviális dolog kiváltani a sebezhetőséget.",
+ "page-upgrades-question-title": "Gyakran ismételt kérdések",
+ "bug-bounty-faq-q1-title": "Hogy néz ki egy jó sebezhetőségi beadvány?",
+ "bug-bounty-faq-q1-contentPreview": "Tekintsen meg egy valódi példát a minőségi sebezhetőségi beadványra.",
+ "bug-bounty-faq-q1-content-1": "Leírás: Távoli szolgáltatásmegtabadás a nem validáló blokkokat felhasználva",
+ "bug-bounty-faq-q1-content-2": "Támadási szcenárió: Egy támadó olyan blokkokat tud küldeni, amelyeket nagy számítási kapacitást igényelnek (a maximális gasLimit-et), de nem rendelkeznek proof-of-work-kel. Ha a támadó állandóan küldi ezeket, akkor az áldozatul eső csomópontot 100% CPU használatra kényszeríti.",
+ "bug-bounty-faq-q1-content-3": "Hatás: A támadó visszaél a CPU használatta a távoli csomópontokon, mely valószínleg teljes szolgálatmegtagadást (DoS) eredményez.",
+ "bug-bounty-faq-q1-content-4": "Komponensek: Go kliens v0.6.8 verzió",
+ "bug-bounty-faq-q1-content-5": "Reprodukálás: Küldjön egy blokkot a Go csomópontnak, amely sok tranzakciót tartalmaz, de nincs érvényes proof-of-work.",
+ "bug-bounty-faq-q1-content-6": "Részletek: A blokkok a Process(Block, dontReact) módszerrel validálnak. Ez a módszer komoly CPU-intenzív feladatokat végez, mint a tranzakciók végrehajtása (sm.ApplyDiff), és utána igazolja a proof-of-work-öt (sm.ValidateBlock()). Ez lehetővé teszi a támadónak, hogy magas számítási kapacitású blokkokat küldjön (a maximális gasLimit-et), de ne legyen proof-of-work. Ha a támadó állandóan küldi ezeket a blokkokat, akkor az áldozatul eső csomópontot 100% CPU használatra kényszeríti.",
+ "bug-bounty-faq-q1-content-7": "Megoldás: Az ellenőrzések sorrendje legyen fordítva.",
+ "bug-bounty-faq-q2-title": "A hibavadászprogram egy adott időszakra szól?",
+ "bug-bounty-faq-q2-contentPreview": "Nem.",
+ "bug-bounty-faq-q2-content-1": "Jelenleg nincs a programnak egy végidőpontja. A legfrissebb hírekért tekintse meg az Ethereum Alapítvány blogot.",
+ "bug-bounty-faq-q3-title": "Hogyan fizetik ki a jutalmakat?",
+ "bug-bounty-faq-q3-contentPreview": "A jutalmakat ETH-ben vagy DAI-ban fizetik ki.",
+ "bug-bounty-faq-q3-content-1": "A jutalmakat ETH-ben vagy DAI-ban fizetik ki, miután a beadványt validálták, általában néhány nap múlva. A helyi szabályozások miatt Önnek igazolnia kell a személyazonosságát. Emellett szükség van az ETH címre is.",
+ "bug-bounty-faq-q4-title": "Eladományozhatom a jutalmamat?",
+ "bug-bounty-faq-q4-contentPreview": "Igen!",
+ "bug-bounty-faq-q4-content-1": "Odaadhatjuk a jutalmát egy Ön által választott, megalapozott jótékonysági szervezetnek.",
+ "bug-bounty-faq-q5-title": "Jelentettem egy problémát / sebezhetőséget, de nem kaptam rá választ.",
+ "bug-bounty-faq-q5-contentPreview": "Kérjük, hogy adjon néhány napot, hogy válaszoljunk a beadványára.",
+ "bug-bounty-faq-q5-content-1": "Az a célunk, hogy minél gyorsabban válaszoljunk a beadványokra. Kérjük, hogy lépjen velünk kapcsolatba a bounty@ethereum.org emailcímen, ha egy vagy töb nap alatt nem érkezik válasz.",
+ "bug-bounty-faq-q6-title": "Anonim szeretnék maradni / Nem szeretném, hogy a nevem a ranglistán megjelenjen.",
+ "bug-bounty-faq-q6-contentPreview": "Megteheti, de emaitt talán nem lesz jogosult a díjakra.",
+ "bug-bounty-faq-q6-content-1": "Az anonim módon vagy álnéven beadott kérvények rendben vannak, de az ETH/DAI jutalmakat nem lehet ily módon megszerezni. Ezekhez szükség van a valódi névre és a személyazonosság igazolására. A jutalom eladományozásához ugyanakkor nem kell igazolni semmit.",
+ "bug-bounty-faq-q6-content-2": "Kérjük, hogy jelezze, ha a nevét / becenevét nem szeretné látni a ranglistán.",
+ "bug-bounty-faq-q7-title": "Mit jelentenek a ranglistán szereplő pontok?",
+ "bug-bounty-faq-q7-contentPreview": "Minden megtalált sebezhetőség / probléma egy adott pontszámot kap",
+ "bug-bounty-faq-q7-content-1": "Minden megtalált sebezhetőség / probléma egy adott pontszámot kap. A hibavadászok a ranglistán a teljes pontszámukkal vannak besorolva.",
+ "bug-bounty-faq-q8-title": "Rendelkeznek PGP kulccsal?",
+ "bug-bounty-faq-q8-contentPreview": "Igen, a további információkért nyissa le.",
+ "bug-bounty-faq-q8-content-1": "Kérjük, használja a AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A kódot",
+ "bug-bounty-faq-q8-PGP-key": "PGP kulcs"
}
diff --git a/src/intl/hu/page-dapps.json b/src/intl/hu/page-dapps.json
index cd08bb7311c..4badb5cb861 100644
--- a/src/intl/hu/page-dapps.json
+++ b/src/intl/hu/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "Készítsen, adjon el és vásároljon tokenizált gyűjthető tárgyakat.",
"page-dapps-dapp-description-rubic": "Láncok közötti technológiai aggregátor a felhasználók és a dappok számára.",
"page-dapps-dapp-description-sablier": "Streameljen pénzt valós időben.",
- "page-dapps-dapp-description-skiff": "Teljeskörűen titkosított levelezés, naptár, dokumentumok és fájlok, amelyek által szabadon kommunikálhat.",
"page-dapps-dapp-description-spatial": "Hozza létre saját avatárját és 3D világait",
"page-dapps-dapp-description-spruce": "Nyílt forráskódú megoldás, mellyel a személyazonosság és az adatok a felhasználónál maradnak, mivel egyedül hozzá tartoznak.",
"page-dapps-dapp-description-status": "Lehetővé teszi az információk szabad áramlását, biztosítja a bizalmas és biztonságos beszélgetéseket, és elősegíti az egyének szuverenitását.",
"page-dapps-dapp-description-superrare": "Vásároljon digitális műtárgyakat közvetlenül a művészektől vagy másodlagos piacokról.",
"page-dapps-dapp-description-synthetix": "A Synthetix egy szintetikus eszközöket létrehozó és azokkal kereskedő protokoll",
"page-dapps-dapp-description-token-sets": "Kripto befektetési stratégiák, melyek automatikusan kiegyensúlyozódnak.",
- "page-dapps-dapp-description-tornado-cash": "Küldjön névtelen tranzakciókat az Ethereumon.",
"page-dapps-dapp-description-uniswap": "Cseréljen tokeneket egyszerűen, vagy biztosítson tokeneket egy bizonyos kamatért cserébe.",
"page-dapps-dapp-description-xmtp": "Blokkláncszámlák közötti üzenetküldés, amelyben közvetlen üzenetek, figyelmeztetések, bejelentések és más jellegű közlések is lehetségesek.",
"page-dapps-dapp-description-yearn": "A Yearn Finance egy hozamokat aggregáló projekt, mely lehetővé teszi, hogy egyének, DAO-k és más protokollok letétbe helyezzék digitális eszközeiket és arra hozamot kapjanak.",
@@ -248,7 +246,6 @@
"page-dapps-set-up-a-wallet-button": "Tárca keresése",
"page-dapps-set-up-a-wallet-description": "A tárcával „jelentkezhet be” a dappba",
"page-dapps-set-up-a-wallet-title": "Tárca létrehozása",
- "page-dapps-skiff-logo-alt": "Skiff logó",
"page-dapps-social-button": "Közösségi",
"page-dapps-social-description": "Ezek olyan alkalmazások, amelyek lényege a decentralizált közösségi hálózatok létrehozása decentralizált személyazonossági technológiát használva, ahol a felhasználók birtokában van a személyazonosságuk és a közösségi gráfjuk is.",
"page-dapps-social-title": "Közösségi",
@@ -260,7 +257,6 @@
"page-dapps-technology-description": "Ezek olyan alkalmazások, amelyek a fejlesztői eszközök decentralizálására, a kriptogazdasági rendszerek beépítésére a meglévő technológiára és a nyílt forráskódú fejlesztési munkák piactereinek létrehozására összpontosítanak.",
"page-dapps-technology-title": "Decentralizált technológia",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Tárca keresése",
"page-dapps-wallet-callout-description": "A tárcák is dappok. Találjon egyet az Ön számára megfelelő funkciók alapján.",
diff --git a/src/intl/hu/page-index.json b/src/intl/hu/page-index.json
index e816555fc01..bc039ebaa1d 100644
--- a/src/intl/hu/page-index.json
+++ b/src/intl/hu/page-index.json
@@ -27,7 +27,7 @@
"page-index-what-is-ethereum-image-alt": "Egy bazárba kukucskáló ember képe, amely az Ethereumot reprezentálja.",
"page-index-defi": "Igazságosabb pénzügyi rendszer",
"page-index-defi-description": "Ma emberek milliárdjai nem tudnak bankszámlát nyitni, mások fizetéseit blokkolják. Az Ethereum decentralizált pénzügyi (DeFi) rendszere soha nem áll meg vagy diszkriminál. Csupán internetkapcsolattal pénzt küldhet, fogadhat, kölcsönözhet, kamatoztathat és akár továbbíthat is bárhol a világon.",
- "page-index-defi-button": "Fedezze fel a DeFit",
+ "page-index-defi-button": "Fedezze fel a DeFi-t",
"page-index-defi-image-alt": "ETH-szimbólumot kínáló kezek illusztrációja.",
"page-index-internet": "Nyílt internet",
"page-index-internet-description": "Manapság úgy férhetünk hozzá az „ingyenes” internetszolgáltatásokhoz, ha átadjuk a személyes adataink feletti ellenőrzést. Az Ethereum-szolgáltatások alapértelmezés szerint szabadon használhatók – csak egy pénztárca szükséges hozzá. Ez ingyenes és könnyen beállítható, Ön irányíthatja, és személyes adatok nélkül működik.",
@@ -54,8 +54,8 @@
"page-index-network-stats-total-eth-staked-explainer": "A jelenleg letétbe helyezett és a hálózatot biztosító ETH teljes mennyisége.",
"page-index-network-stats-tx-day-description": "A mai tranzakciók",
"page-index-network-stats-tx-day-explainer": "A hálózaton sikeresen feldolgozott tranzakciók száma az elmúlt 24 órában.",
- "page-index-network-stats-value-defi-description": "A DeFiben zárolt érték (USD)",
- "page-index-network-stats-value-defi-explainer": "A decentralizált pénzügyi (DeFi-) alkalmazásokban, az Ethereum digitális gazdaságban található pénzmennyiség.",
+ "page-index-network-stats-value-defi-description": "A DeFi-ban zárolt érték (USD)",
+ "page-index-network-stats-value-defi-explainer": "A decentralizált pénzügyi (DeFi) alkalmazásokban, az Ethereum digitális gazdaságban található pénzmennyiség.",
"page-index-network-stats-nodes-description": "Csomópontok",
"page-index-network-stats-nodes-explainer": "Az Ethereumot több ezer önkéntes működteti szerte a világon, csomópontok formájában.",
"page-index-touts-header": "Fedezze fel az ethereum.org oldalt",
diff --git a/src/intl/hu/page-languages.json b/src/intl/hu/page-languages.json
index 88baeb222d1..359ffb33584 100644
--- a/src/intl/hu/page-languages.json
+++ b/src/intl/hu/page-languages.json
@@ -1,17 +1,22 @@
{
"page-languages-h1": "Nyelvi támogatás",
- "page-languages-interested": "Szeretnél közreműködni?",
- "page-languages-learn-more": "Tudj meg többet a Fordítási Programunkról",
- "page-languages-meta-desc": "Források az ethereum.org összes támogatott nyelvéről és a fordítóként való bekapcsolódásról.",
+ "page-languages-interested": "Szeretne közreműködni?",
+ "page-languages-learn-more": "Tudjon meg többet a fordítási programunkról",
+ "page-languages-meta-desc": "Információk az ethereum.org támogatott nyelveiről és a fordítóként való bekapcsolódásról.",
"page-languages-meta-title": "ethereum.org Nyelvi Fordítások",
"page-languages-p1": "Az Ethereum egy globális projekt, kritikus fontosságú, hogy az ethereum.org mindenki számára elérhető legyen, nemzetiségétől és nyelvtől függetlenül. Közösségünk keményen dolgozott az elképzelés megvalósításán.",
- "page-languages-translations-available": "az ethereum.org a következő nyelveken érhető el",
+ "page-languages-translations-available": "Az ethereum.org a következő nyelveken érhető el",
"page-languages-resources-paragraph": "Az ethereum.org tartalmának fordítása mellett",
- "page-languages-resources-link": "egy több nyelven is elérhető válogatott listát készítettünk a válogatott Ethereum-anyagokból",
- "page-languages-want-more-header": "Szeretnéd az ethereum.org oldalt egy másik nyelven olvasni?",
+ "page-languages-resources-link": "egy több nyelven is elérhető válogatott listát készítettünk az Ethereum-anyagokból",
+ "page-languages-want-more-header": "Szeretné az ethereum.org oldalt egy másik nyelven olvasni?",
"page-languages-want-more-link": "Fordítási Program",
- "page-languages-want-more-paragraph": "az ethereum.org fordítók mindig a lehető legtöbb nyelvre igyekeznek lefordítani az oldalakat. Hogy megnézd mivel foglalkoznak jelenleg, vagy csatlakozz munkájukhoz, olvasd el az",
- "page-languages-filter-placeholder": "Szűrő",
+ "page-languages-want-more-paragraph": "Az ethereum.org fordítók mindig a lehető legtöbb nyelvre igyekeznek lefordítani az oldalakat. Nézze meg mivel foglalkoznak jelenleg, vagy csatlakozzon munkájukhoz:",
+ "page-languages-filter-label": "Szűrőlista",
+ "page-languages-filter-placeholder": "Szűrendő típus",
+ "page-languages-browser-default": "Böngésző alapértelmezett beállítása",
+ "page-languages-translated": "lefordítva",
+ "page-languages-words": "szó",
+ "page-languages-recruit-community": "Segítsen lefordítani az ethereum.org webhelyet.",
"langauge-am": "Amhara",
"language-ar": "Arab",
"language-az": "Azerbajdzsáni",
diff --git a/src/intl/hu/page-stablecoins.json b/src/intl/hu/page-stablecoins.json
index 184548303f9..e4bc450e6aa 100644
--- a/src/intl/hu/page-stablecoins.json
+++ b/src/intl/hu/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Forrás",
"page-stablecoins-bitcoin-pizza": "A hírhedt Bitcoin pizza",
"page-stablecoins-bitcoin-pizza-body": "2010-ben valaki vett 2 pizzát 10,000 bitcoinért. Akkoriban ezek körülbelül 41 USD-t értek. Ez a mai piacon több millió dollár. Sok hasonló sajnálatos tranzakció történt az Ethereum történetében is. A stabil érmék megoldják ezt a problémát, szóval megeheti jóétvággyal a pizzáját és megtarthatjaaz ETH-ét is.",
+ "page-stablecoins-category-dashboard-and-education": "Irányítópult és Oktatás",
"page-stablecoins-coin-price-change": "Érme árfolyamváltozás (utolsó 30 nap)",
"page-stablecoins-crypto-backed": "Kriptofedezetű",
"page-stablecoins-crypto-backed-con-1": "Kevésbé stabil, mint a fiatfedezetű stabil érmék.",
diff --git a/src/intl/hy-am/common.json b/src/intl/hy-am/common.json
index da82564ef3b..1636546e29b 100644
--- a/src/intl/hy-am/common.json
+++ b/src/intl/hy-am/common.json
@@ -1,17 +1,28 @@
{
- "account-abstraction": "Հաշվի աբստրակցիա",
"about-ethereum-org": "ethereum.org-ի մասին",
"about-us": "Մեր մասին",
+ "adding-desci-projects": "Desci նախագծերի ավելացում",
+ "adding-developer-tools": "Developer-ի գործիքների ավելացում",
+ "adding-exchanges": "Փոխանակումների ավելացում",
+ "adding-glossary-terms": "Բառարանի տերմինների ավելացում",
+ "adding-staking-products": "Staking պրոդուկտների ավելացում",
+ "adding-wallets": "Դրամապանակների ավելացում",
+ "account-abstraction": "Հաշվի աբստրակցիա",
+ "acknowledgements": "Երախտագիտություն",
"aria-toggle-search-button": "Միացնել որոնման կոճակը",
"aria-toggle-menu-button": "Միացնել որոնման կոճակը",
"beacon-chain": "Beacon Chain\n",
"bridges": "Բլոկչեյն կամուրջներ",
+ "build": "Կառուցում",
+ "build-menu": "Կառուցման ընտրացանկ",
"clear": "Պարզ",
"close": "Փակ",
"community": "Համայնք",
"community-hub": "Համայնքային հաբ",
"community-menu": "Համայնքի ընտրացանկ",
"contact": "Կոնտակտ",
+ "content-buckets": "Բովանդակության խմբեր",
+ "content-resources": "Բովանդակության ռեսուրսներ",
"content-standardization": "Բովանդակության ստանդարտացում",
"contributing": "Աջակցել",
"contributors": "Աջակցողներ",
@@ -20,14 +31,17 @@
"copied": "Պատճենվել է",
"copy": "Պատճենել",
"danksharding": "Danksharding",
- "dao-page": "Ապակենտրոնացված ինքնավար կազմակերպություններ (DAO)",
+ "dao-page": "DAO - Ապակենտրոնացված ինքնավար կազմակերպություններ",
"dark-mode": "Մութ",
"data-provided-by": "Տվյալների աղբյուր:",
- "decentralized-applications-dapps": "Ապակենտրոնացված հավելվածներ (dapps)",
+ "decentralized-applications-dapps": "Dapps - Ապակենտրոնացված հավելվածներ",
"decentralized-identity": "Ապակենտրոնացված ինքնություն",
"decentralized-social-networks": "Ապակենտրոնացված սոցիալական ցանցեր",
- "decentralized-science": "Ապակենտրոնացված գիտություն (DeSci)",
- "defi-page": "Ապակենտրոնացված ֆինանսներ (DeFi)",
+ "decentralized-science": "DeSci - Ապակենտրոնացված գիտություն",
+ "description": "Նավիգացիոն տարրի Նկարագրություն",
+ "defi-page": "DeFi - Ապակենտրոնացված ֆինանսներ",
+ "design": "Դիզայն",
+ "design-principles": "Դիզայնի սկզբունքներ",
"devcon": "Devcon",
"developers": "Ծրագրավորողներ",
"developers-home": "Ծրագրավորողների գլխավոր էջ",
@@ -51,7 +65,6 @@
"documentation": "Փաստաթղթեր",
"down": "Ներքև",
"ecosystem": "Էկոհամակարգ",
- "edit-page": "Edit page",
"ef-blog": "Ethereum հիմնադրամի բլոգ",
"eips": "Ethereum բարելավման առաջարկներ",
"energy-consumption": "Ethereum էներգիայի սպառումը",
@@ -59,11 +72,9 @@
"enterprise-menu": "Ձեռնարկությունների մենյու",
"esp": "Էկոհամակարգերի աջակցության ծրագիր",
"eth-current-price": "Ընթացիկ ETH գինը (ԱՄՆ դոլար)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Էթերիում bug bounty ծրագիր",
"consensus-when-shipping": "Ե՞րբ է առաքվում:",
"ethereum-upgrades": "Էթերիումի բարելավումներ",
- "ethereum-brand-assets": "Ethereum brand assets",
"ethereum-online": "Առցանց համայնքներ",
"ethereum-events": "Էթերիումի իրադարձություններ",
"ethereum-foundation": "Էթերիում հիմնադրամ",
@@ -83,7 +94,7 @@
"feedback-card-prompt-tutorial": "Օգտակա՞ր էր այս ձեռնարկը:",
"feedback-widget-thank-you-title": "Շնորհակալություն արձագանքի համար:",
"feedback-widget-thank-you-subtitle": "Դարձրեք այս էջն էլ ավելի լավը՝ պատասխանելով մի քանի հարցերի:",
- "feedback-widget-thank-you-subtitle-ext": "Եթե օգնության կարիք ունեք, կարող եք դիմել համայնքին մեր Discord-ով:",
+ "feedback-widget-thank-you-subtitle-ext": "Եթե օգնության կարիք ունեք, կարող եք կապ հաստատել համայնքի հետ մեր Discord-ով։",
"feedback-widget-thank-you-timing": "2–3 րոպե",
"feedback-widget-thank-you-cta": "Բացեք կարճ հարցում",
"find-wallet": "Գտնել դրամապանակ",
@@ -94,11 +105,10 @@
"grants": "Դրամաշնորհներ",
"grant-programs": "Էկոհամակարգի դրամաշնորհային ծրագրեր",
"guides": "Էքսկուրսավարներ",
- "guides-hub": "Էքսկուրսավարների հանգույց",
+ "guides-hub": "«Ինչպես» ուղեցույցներ",
"history-of-ethereum": "Էթերիումի պատմություն",
"home": "Գլխավոր",
"how-ethereum-works": "Ինչպես է աշխատում Էթերիումը",
- "how-to-register-an-ethereum-account": "Ինչպես «գրանցել» Էթերիում հաշիվ",
"how-to-revoke-token-access": "Ինչպես չեղարկել խելացի պայմանագրի հասանելիությունը ձեր կրիպտո ֆոնդերին",
"how-to-swap-tokens": "Ինչպես փոխանակել նշանները",
"how-to-use-a-bridge": "Ինչպես կամրջել նշանները 2-րդ շերտին",
@@ -115,7 +125,6 @@
"last-edit": "Վերջին խմբագրումը",
"layer-2": "Շերտ 2",
"learn": "Սովորեք",
- "learn-by-coding": "Learn by coding",
"learn-hub": "Սովորել Հաբ",
"learn-menu": "Սովորել մենյու",
"learn-more": "Իմացեք ավելին",
@@ -128,11 +137,103 @@
"loading-error-try-again-later": "Չհաջողվեց բեռնել տվյալները: Փորձեք ավելի ուշ:",
"logo": "լոգոն",
"mainnet-ethereum": "Mainnet Էթերիում",
+ "merge": "Միացնել",
"more": "Ավելի շատ",
- "nav-developers": "Ծրագրավորողներ",
+ "nav-about-description": "Հանրային, բաց կոդով նախագիծ՝ Ethereum համայնքի համար",
+ "nav-advanced-description": "Սովորեք ավելի բարդ թեմաները",
+ "nav-advanced-label": "Ընդլայնված",
+ "nav-basics-description": "Հասկացեք Ethereum-ի հիմունքները",
+ "nav-basics-label": "Հիմունքներ",
+ "nav-bridges-description": "Web3-ը վերածվել է առաջնային L1 բլոկչեյնների և L2 մասշտաբային լուծումների էկոհամակարգի",
+ "nav-builders-home-description": "Ethereum-ի կառուցման ուղեցույց՝ մշակողներից, մշակողների համար",
+ "nav-builders-home-label": "Գլխավոր կառուցում",
+ "nav-contribute-description": "Եթե ցանկանում եք օգնել, սա ձեզ կառաջնորդի",
+ "nav-contribute-label": "Աջակցում ethereum.org-ին",
+ "nav-dao-description": "Անդամներին պատկանող համայնքներ՝ առանց կենտրոնացված լիազորությունների",
+ "nav-dapps-description": "Բացահայտեք Ethereum-ի միջոցով հավելվածների հարուստ էկոհամակարգը",
+ "nav-defi-description": "Համաշխարհային, բաց այլընտրանք ավանդական ֆինանսական շուկայի համար",
+ "nav-desci-description": "Գոյություն ունեցող գիտական համակարգի գլոբալ, բաց այլընտրանք",
+ "nav-desoc-description": "Բլոկչեյնի վրա հիմնված սոցիալական ներգրավվածության և բովանդակության ստեղծման հարթակներ",
"nav-developers-docs": "Մշակողների փաստաթղթեր",
+ "nav-developers": "Ծրագրավորողներ",
+ "nav-did-description": "Թողարկեք և տիրապետեք ձեր եզակի ապակենտրոնացված նույնացուցիչներին",
+ "nav-docs-description": "Փաստաթղթեր, որոնք կօգնեն ձեզ հասկանալ և կառուցել Ethereum-ի հետ աշխատանքը",
+ "nav-docs-design-description": "Web3 դիզայնի եզակի մարտահրավերների, լավագույն փորձի և օգտատերերի հետազոտության պատկերացումների նկարագրությունը",
+ "nav-docs-design-label": "UX/UI դիզայնի հիմունքներ",
+ "nav-docs-foundation-description": "Ethereum-ի զարգացման հիմնական սկզբունքները",
+ "nav-docs-overview-description": "Ձեր «Գլխավոր»-ը մշակողի փաստաթղթերի համար",
+ "nav-docs-stack-description": "Հասկացեք Ethereum Stack-ի բոլոր մանրամասները",
+ "nav-eip-description": "Ստանդարտներ, որոնք սահմանում են նոր գործառույթներ կամ գործընթացներ",
+ "nav-eip-label": "EIPs - Ethereum-ի բարելավման առաջարկներ",
+ "nav-emerging-description": "Ծանոթացեք Ethereum-ի այլ նոր օգտագործման դեպքերին",
+ "nav-enterprise-description": "Բիզնես հավելվածներ Ethereum-ի համար",
+ "nav-ethereum-org-description": "Այս կայքը հիմնված է համայնքի վրա, միացե՛ք մեզ և նույնպես նպաստե՛ք",
+ "nav-ethereum-wallets-description": "Հավելված՝ ձեր Ethereum հաշվի հետ փոխազդելու համար",
+ "nav-events-description": "Ապակենտրոնացում և մասնակցության ազատություն ցանկացածի համար",
+ "nav-events-irl-description": "Ամեն ամիս տեղի են ունենում Ethereum-ի խոշոր միջոցառումներ անմիջական մասնակցությամբ և առցանց",
+ "nav-events-label": "Համայնքներ և միջոցառումներ",
+ "nav-events-online-description": "Այս առցանց համայնքներում ապրում են հարյուր հազարավոր Ethereum էնտուզիաստներ",
+ "nav-find-wallet-description": "Դրամապանակները թույլ են տալիս օգտագործել կրիպտոարժույթ",
+ "nav-find-wallet-label": "Ընտրեք ձեր դրամապանակը",
+ "nav-gas-fees-description": "Ինչպե՞ս են հաշվարկվում ETH գործարքների պահումները",
+ "nav-get-eth-description": "Ethereum հավելվածներն օգտագործելու համար անհրաժեշտ է ether (ETH)",
+ "nav-get-started-description": "Ethereum-ի օգտագործման ձեր առաջին քայլերը",
+ "nav-governance-description": "Ethereum արձանագրության թարմացման հետ կապված գործընթաց",
+ "nav-grants-description": "Մեր համայնքի կողմից պատրաստված դրամաշնորհային ֆինանսավորման ծրագրեր տրամադրող ծրագրերի ցանկ",
+ "nav-guide-create-account-description": "Յուրաքանչյուրը կարող է ցանկացած պահի ստեղծել Ethereum հաշիվ՝ անվճար դրամապանակի հավելվածի միջոցով",
+ "nav-guide-revoke-access-description": "Ապահով մնացեք Ethereum էկոհամակարգում խելացի պայմանագրերի և ծրագրերի հետ գործակցելիս",
+ "nav-guide-revoke-access-label": "Ինչպես չեղարկել խելացի պայմանագրի մուտքը",
+ "nav-guide-use-wallet-description": "Իմացեք, թե ինչպես կառավարել դրամապանակի բոլոր հիմնական գործառույթները",
+ "nav-guide-use-wallet-label": "Ինչպես օգտվել դրամապանակից",
+ "nav-guides-description": "Գործնական քայլ առ քայլ ուղեցույցներ, որոնք կօգնեն Ձեզ սկսել",
+ "nav-guides-label": "«Ինչպես» ուղեցույցներ",
+ "nav-history-description": "Բոլոր հիմնական ֆորկերի և թարմացումների ժամանակացույց",
+ "nav-history-label": "Ethereum-ի տեխնիկական պատմությունը",
+ "nav-layer-2-description": "Ավելի էժան և արագ գործարքներ Ethereum-ի համար",
+ "nav-learn-by-coding-description": "Գործիքներ, որոնք կօգնեն ձեզ փորձարկել Ethereum-ը",
+ "nav-local-env-description": "Ընտրեք և կազմաձևեք ձեր Ethereum Development Stack-ը",
+ "nav-mainnet-description": "Ձեռնարկությունների բլոկչեյն ծրագրերը կարող են ստեղծվել հանրային հիմնական Ethereum Mainnet-ում:",
+ "nav-nft-description": "Ethereum-ի վրա հիմնված ակտիվի տեսքով եզակի բան ներկայացնելու միջոց",
+ "nav-open-research-description": "Ethereum-ի առաջնային ուժեղ կողմերից մեկը նրա ակտիվ հետազոտական համայնքն է",
+ "nav-open-research-label": "Բաց հետազոտություն",
+ "nav-overview-description": "Ethereum-ում կրթության հետ կապված ամեն ինչ",
+ "nav-participate-overview-description": "Ակնարկ, թե ինչպես մասնակցել",
"nav-primary": "Առաջնային",
- "nft-page": "Չփոխարինելի նշաններ (NFT)",
+ "nav-quizzes-description": "Պարզեք, թե որքան լավ եք տիրապետում Ethereum-ին և կրիպտոարժույթներին",
+ "nav-quizzes-label": "Ստուգեք Ձեր գիտելիքները",
+ "nav-refi-description": "Այլընտրանքային տնտեսական համակարգ՝ հիմնված վերականգնողական սկզբունքների վրա",
+ "nav-research-description": "Ethereum-ի բարելավման համար օգտագործվող գործընթացները",
+ "nav-research-label": "Հետազոտություն և զարգացում",
+ "nav-roadmap-description": "Ethereum-ի ավելի մեծ մասշտաբայնության, անվտանգության և կայունության ուղին",
+ "nav-roadmap-future-description": "Ethereum-ի ամրապնդումը՝ որպես հուսալի և ապակենտրոնացված ցանց",
+ "nav-roadmap-future-label": "Ապագայի պաշտպանություն",
+ "nav-roadmap-label": "Ճանապարհային քարտեզ",
+ "nav-roadmap-scaling-description": "Ցանցի թարմացումներ՝ գործարքների ծախսերն ու արագությունը հետագայում նվազեցնելու համար",
+ "nav-roadmap-security-description": "Համոզվելով, որ Ethereum-ը մնում է կայուն բոլոր տեսակի հարձակումներին ապագայում",
+ "nav-roadmap-security-label": "Բարելավված անվտանգություն",
+ "nav-roadmap-ux-description": "Ethereum-ի օգտագործումը պետք է հեշտացվի",
+ "nav-run-a-node-description": "Դարձեք լիովին ինքնիշխան՝ օգնելով պաշտպանել ցանցը",
+ "nav-security-description": "Իմացեք կրիպտոարժույթի օգտագործման լավագույն փորձը",
+ "nav-smart-contracts-description": "Ethereum էկոհամակարգի հիմնարար հիմքերը",
+ "nav-stablecoins-description": "Stablecoin-ները Ethereum նշաններ են, որոնք նախատեսված են ֆիքսված արժեքի վրա մնալու համար",
+ "nav-stake-description": "Ստացեք պարգևներ՝ Ethereum-ի պաշտպանությունը ապահովելու համար",
+ "nav-stake-label": "Խաղադրույք",
+ "nav-staking-home-description": "Խաղադրույքի տարբեր տարբերակների ակնարկ",
+ "nav-staking-pool-description": "Խաղադրույք կատարեք և ստացեք պարգևներ ցանկացած քանակությամբ ETH-ի հետ՝ միանալով ուրիշներին",
+ "nav-staking-pool-label": "Միավորված խաղադրույք",
+ "nav-staking-saas-label": "Խաղադրույք՝ ծառայության միջոցով",
+ "nav-staking-solo-label": "Միայնակ խաղադրույք",
+ "nav-start-building-description": "Օգտակար տեղեկություններ սկսնակների համար",
+ "nav-translation-program-description": "Թարգմանչական համագործակցություն ethereum.org-ի հետ բոլոր լեզուներով",
+ "nav-tutorials-description": "Համայնքի ուղեցույցների համադրված ցուցակ",
+ "nav-use-cases-description": "Բացահայտեք Ethereum-ի օգտագործման տարբեր գաղափարները",
+ "nav-what-is-ether-description": "Ethereum հավելվածների արժույթը",
+ "nav-what-is-ethereum-description": "Հասկացեք, թե ինչն է առանձնահատուկ դարձնում Ethereum-ը",
+ "nav-what-is-web3-label": "Ինչ է Web3-ը:",
+ "nav-what-is-web3-description": "Կանոններ թելադրող կենտրոնացված մենաշնորհների այլընտրանք",
+ "nav-whitepaper-description": "Ethereum-ի բնօրինակ տեխնիկական փաստաթուղթը, որը գրվել է Վիտալիկ Բուտերինի կողմից 2014 թվականին",
+ "nav-zkp-description": "Հայտարարության վավերականությունն ապացուցելու միջոց՝ առանց բուն հայտարարությունը բացահայտելու",
+ "nft-page": "NFT - Չփոխարինելի նշաններ",
"nfts": "NFT-ներ",
"no": "Ոչ",
"on-this-page": "Այս էջում",
@@ -140,6 +241,7 @@
"page-developers-aria-label": "Մշակողների մենյու",
"page-index-meta-title": "Գլխավոր",
"page-last-updated": "Էջը վերջին անգամ թարմացվել է",
+ "participate-menu": "Մասնակցության ընտրացանկ",
"pbs": "Առաջարկող-շինարար տարանջատում",
"pools": "Միավորված խաղադրույք",
"privacy-policy": "Գաղտնիության քաղաքականություն",
@@ -150,13 +252,12 @@
"refresh": "Խնդրում ենք թարմացնել էջը։",
"return-home": "Վերադառնալ տուն",
"roadmap": "Ethereum ճանապարհային քարտեզ",
+ "research": "Հետազոտություն",
+ "research-menu": "Հետազոտության ցանկ",
"resources": "Թարգմանչական ռեսուրսներ",
- "regenerative-finance": "Ռեգեներատիվ ֆինանսներ (ՌեՖի)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
+ "regenerative-finance": "ՌեՖի - Ռեգեներատիվ ֆինանսներ",
"rollup-component-developer-docs": "Մշակողի փաստաթղթեր",
"rollup-component-technology-and-risk-summary": "Տեխնոլոգիաների և ռիսկերի ամփոփում",
- "scaling": "Scaling",
"saas": "Խաղադրույքը որպես ծառայություն",
"search": "Որոնում",
"search-ethereum-org": "Որոնեք ethereum.org",
@@ -167,19 +268,14 @@
"single-slot-finality": "Մեկ բնիկ վերջնականություն",
"statelessness": "Քաղաքացիություն չունեցողություն",
"see-contributors": "Տես մասնակիցները",
- "set-up-local-env": "Set up local environment",
- "sharding": "Sharding",
"show-all": "Ցույց տալ ամբողջը",
"show-less": "Ցույց տալ ավելի քիչ",
"site-description": "Ethereum՝ գլոբալ, ապակենտրոնացված հարթակ փողերի կիրառման և նոր տեսակի հավելվածներ ստեղծելու համար։ Ethereum-ի շնորհիվ դուք կարողեք գրել կոդ, որը կարող է կառավարել գումարներ, և ստեղծել հավելվածներ հասանելի ամբողջ աշխարհում։",
- "site-title": "ethereum.org",
"skip-to-main-content": "Անցեք հիմնական բովանդակությանը",
- "smart-contracts": "Smart contracts",
"stablecoins": "Ստեյբլքոիներ",
"stake-eth": "Էթեր (ETH) ավանդ դրեք",
"staking": "Ցուցադրում",
"start-here": "Սկսիր այստեղ",
- "style-guide": "Style guide",
"solo": "Միայնակ խաղադրույք",
"terms-of-use": "Օգտվելու կանոններ",
"translation-banner-body-new": "Դուք դիտում եք այս էջը անգլերեն, քանի որ մենք դեռ չենք թարգմանել այն: Օգնեք մեզ թարգմանել այս բովանդակությունը:",
@@ -191,20 +287,21 @@
"translation-banner-no-bugs-title": "Այստեղ սխալներ չկան:",
"translation-banner-no-bugs-content": "Այս էջը չի թարգմանվում: Մենք միտումնավոր թողել ենք այս էջը անգլերենով:",
"translation-banner-no-bugs-dont-show-again": "Այլևս ցույց մի տուր",
+ "translation-program": "Թարգմանչական ծրագիր",
"try-using-search": "Փորձեք օգտագործել որոնումը` գտնելու այն, ինչ փնտրում եք կամ",
"tutorials": "Ձեռնարկներ",
"up": "Վերև",
+ "use": "Օգտագործում",
"use-ethereum": "Օգտագործեք Էթերիում",
"use-ethereum-menu": "Օգտագործեք Ethereum ընտրացանկը",
- "user-experience": "User experience",
+ "use-menu": "Օգտագործման ցանկ",
"verkle-trees": "Վերկլի ծառեր",
"wallets": "Դրամապանակներ",
"we-couldnt-find-that-page": "Մենք չկարողացանք գտնել այդ էջը",
"web3": "Ինչ է Web3-ը:",
- "web3-title": "Web3",
"website-last-updated": "Կայքը վերջին անգամ թարմացվել է",
"what-is-ether": "Ի՞նչ է Էթերը (ETH):",
- "what-is-ethereum": "Ի՞նչ է Ethereum-ը",
+ "what-is-ethereum": "Ի՞նչ է Էթերիումը",
"withdrawals": "Գումարի դուրսբերումներ",
"yes": "Այո՛",
"zero-knowledge-proofs": "Զրոյական գիտելիքի ապացույցներ"
diff --git a/src/intl/hy-am/page-dapps.json b/src/intl/hy-am/page-dapps.json
index fdbcd7ef442..1b2b5ba40fd 100644
--- a/src/intl/hy-am/page-dapps.json
+++ b/src/intl/hy-am/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Կատարեք գումարի արագ փոխանցում:",
"page-dapps-dapp-description-superrare": "Գնեք թվային արվեստի գործեր արտիստներից կամ երկրորդական շուկայից:",
"page-dapps-dapp-description-token-sets": "Կրիպտոներդրումների ռազմավարություններ, որոնք ավտոմատ կերպով վերաբալանսավորվում են:",
- "page-dapps-dapp-description-tornado-cash": "Կատարեք անանուն փոխանցումներ Էթերիումում:",
"page-dapps-dapp-description-uniswap": "Փոխանակեք տոկեններ կամ տրամադրեք Ձեր տոկենները տոկոսային վճարների դիմաց:",
"page-dapps-dapp-description-dexguru": "Առանց արտաքին վերահսկման առևտրային տերմինալ ԱպՖի (DeFi) թրեյդերների համար",
"page-dapps-dapp-description-synthetix": "<>-ը ածանցյալ ակտիվներ թողարկելու և դրանց առք ու վաճառքը կարգավորող պրոտոկոլ է:",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Սրանք հավելվածներ են, որոնք կենտրոնանում են ծրագրավորման գործիքները ապակենտրոնացնելու վրա, առկա տեխնոլոգիայի մեջ ներդնելով կրիպտոտնտեսական համակարգեր և նոր շուկաներ ստեղծելով բաց հասանելիության ծրագրավորման աշխատանքի համար:",
"page-dapps-technology-title": "Ապակենտրոնացված տեխնոլոգիա",
"page-dapps-token-sets-logo-alt": "<>-ի պատկերանշանը",
- "page-dapps-tornado-cash-logo-alt": "<>-ի պատկերանշանը",
"page-dapps-uniswap-logo-alt": "<>-ի պատկերանշանը",
"page-dapps-wallet-callout-button": "Գտնել դրամապանակ",
"page-dapps-wallet-callout-description": "Դրամապանակները նույնպես ապ-հավելվածներ են: Գտեք Ձեր դրամապանակը ըստ Ձեր նախընտրած հատկությունների:",
diff --git a/src/intl/hy-am/page-languages.json b/src/intl/hy-am/page-languages.json
new file mode 100644
index 00000000000..8bbe075c318
--- /dev/null
+++ b/src/intl/hy-am/page-languages.json
@@ -0,0 +1,8 @@
+{
+ "page-languages-filter-label": "Զտիչների ցուցակ",
+ "page-languages-filter-placeholder": "Մուտքագրեք՝ զտման համար",
+ "page-languages-browser-default": "Հիմնական զննարկիչ",
+ "page-languages-translated": "թարգմանված",
+ "page-languages-words": "բառեր",
+ "page-languages-recruit-community": "Օգնեք մեզ թարգմանել ethereum.org-ը:"
+}
diff --git a/src/intl/hy-am/page-stablecoins.json b/src/intl/hy-am/page-stablecoins.json
index 28f04ab5754..f942f68d548 100644
--- a/src/intl/hy-am/page-stablecoins.json
+++ b/src/intl/hy-am/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Աղբյուրը",
"page-stablecoins-bitcoin-pizza": "Տխրահռչակ Բիթքոին պիցցան",
"page-stablecoins-bitcoin-pizza-body": "2010-ին, ինչ-որ մեկը 10.000 Բիթքոինով 2 հատ պիցցա է գնել: Այդ ժամանակ դրանք արժեցել են մոտավորապես 41 դոլլար: Այժմյան շուկայում դրանց ընդհանուր արժողությունը միլլիոնավոր դոլլարներ է: Նմանատիպ շատ ափսոսալի փոխանցումներ եղել են նաև Էթերիումի պատմության մեջ: Ստեյբլքոիները լուծում են այդ խնդիրը, Ձեզ թույլ տալով վայելել Ձեր պիցցան առանց Էթեր (ETH) վճարելու:",
+ "page-stablecoins-category-dashboard-and-education": "Վարկանշան & Կրթություն",
"page-stablecoins-coin-price-change": "Արժույթների գնային փոփոխություններ (վերջին 30 օրերին)",
"page-stablecoins-crypto-backed": "Կրիպտոարժույթով ապահովագրված",
"page-stablecoins-crypto-backed-con-1": "Ավելի քիչ կայուն քան ֆիատային արժույթով ապահովագրված ստեյբլքոիները:",
diff --git a/src/intl/id/common.json b/src/intl/id/common.json
index 44654ca12da..45af554f267 100644
--- a/src/intl/id/common.json
+++ b/src/intl/id/common.json
@@ -1,17 +1,30 @@
{
- "account-abstraction": "Abstraksi akun",
"about-ethereum-org": "Tentang ethereum.org",
"about-us": "Tentang kami",
+ "adding-desci-projects": "Menambahkan Proyek Desci",
+ "adding-developer-tools": "Menambahkan Perangkat Pengembang",
+ "adding-exchanges": "Menambahkan Bursa",
+ "adding-glossary-terms": "Menambahkan Istilah Glosarium",
+ "adding-products": "Menambahkan Produk",
+ "adding-staking-products": "Menambahkan Produk Penaruhan",
+ "adding-wallets": "Menambahkan Dompet",
+ "account-abstraction": "Abstraksi akun",
+ "acknowledgements": "Penghargaan",
"aria-toggle-search-button": "Tombol pencarian toggle",
"aria-toggle-menu-button": "Tombol menu toggle",
"beacon-chain": "Rantai Suar",
"bridges": "Jembatan blockchain",
+ "bug-bounty": "Hadiah bounty",
+ "build": "Bangun",
+ "build-menu": "Bangun menu",
"clear": "Menghapus",
"close": "Tutup",
"community": "Komunitas",
"community-hub": "Hub komunitas",
"community-menu": "Menu Komunitas",
"contact": "Kontak",
+ "content-buckets": "Kategori Konten",
+ "content-resources": "Sumber Daya Konten",
"content-standardization": "Standardisasi konten",
"contributing": "Berkontribusi",
"contributors": "Kontributor",
@@ -20,14 +33,17 @@
"copied": "Disalin",
"copy": "Salin",
"danksharding": "Danksharding",
- "dao-page": "Organisasi otonom terdesentralisasi (DAO)",
+ "dao-page": "DAO - Organisasi otonom terdesentralisasi",
"dark-mode": "Gelap",
"data-provided-by": "Sumber data:",
- "decentralized-applications-dapps": "Decentralized applications (dapp)",
+ "decentralized-applications-dapps": "Dapp - Decentralized applications",
"decentralized-identity": "Identitas terdesentralisasi",
"decentralized-social-networks": "Jaringan sosial terdesentralisasi",
- "decentralized-science": "Sains terdesentralisasi (DeSci)",
- "defi-page": "Keuangan terdesentralisasi (DeFi)",
+ "decentralized-science": "DeSci - Sains terdesentralisasi",
+ "description": "Deskripsi untuk item navigasi",
+ "defi-page": "DeFi - Keuangan terdesentralisasi",
+ "design": "Desain",
+ "design-principles": "Prinsip Desain",
"devcon": "Devcon",
"developers": "Pengembang",
"developers-home": "Beranda Pengembang",
@@ -63,15 +79,15 @@
"ethereum-bug-bounty": "Program bug hadiah bounty Ethereum",
"consensus-when-shipping": "Kapan pengirimannya?",
"ethereum-upgrades": "Peningkatan Ethereum",
- "ethereum-brand-assets": "Aset Merek Ethereum",
+ "ethereum-brand-assets": "Aset merek Ethereum",
"ethereum-online": "Komunitas daring",
"ethereum-events": "Aksi Ethereum",
"ethereum-foundation": "Yayasan Ethereum",
"ethereum-foundation-logo": "Logo Yayasan Ethereum",
"ethereum-glossary": "Glosarium Ethereum",
- "ethereum-governance": "Tata Kelola Ethereum",
+ "ethereum-governance": "Pemerintahan Ethereum",
"ethereum-logo": "Logo Ethereum",
- "ethereum-roadmap": "Rencana pengembangan Ethereum",
+ "ethereum-roadmap": "Peta Perjalanan Ethereum",
"ethereum-protocol": "Protokol Ethereum",
"ethereum-security": "Keamanan dan pencegahan penipuan Ethereum",
"ethereum-support": "Dukungan Ethereum",
@@ -83,7 +99,7 @@
"feedback-card-prompt-tutorial": "Apakah tutorial ini membantu?",
"feedback-widget-thank-you-title": "Terima kasih atas umpan baliknya!",
"feedback-widget-thank-you-subtitle": "Jadikan halaman ini lebih baik lagi dengan menjawab beberapa pertanyaan.",
- "feedback-widget-thank-you-subtitle-ext": "Jika butuh bantuan, Anda bisa menghubungi komunitas di Discord kami.",
+ "feedback-widget-thank-you-subtitle-ext": "Jika butuh bantuan, Anda dapat menghubungi komunitas di Discord kami.",
"feedback-widget-thank-you-timing": "2–3 menit",
"feedback-widget-thank-you-cta": "Buka survei singkat",
"find-wallet": "Temukan dompet",
@@ -94,11 +110,11 @@
"grants": "Hibah",
"grant-programs": "Program Hibah Ekosistem",
"guides": "Panduan",
- "guides-hub": "Hub panduan",
+ "guides-hub": "Panduan Langkah demi Langkah",
"history-of-ethereum": "Riwayat Ethereum",
"home": "Beranda",
"how-ethereum-works": "Cara kerja Ethereum",
- "how-to-register-an-ethereum-account": "Cara \"mendaftarkan\" akun Ethereum",
+ "how-to-create-an-ethereum-account": "Cara \"membuat\" akun Ethereum",
"how-to-revoke-token-access": "Cara mencabut akses kontrak pintar ke dana kripto Anda",
"how-to-swap-tokens": "Cara menukar token",
"how-to-use-a-bridge": "Cara bridge token ke lapisan ke-2",
@@ -128,11 +144,117 @@
"loading-error-try-again-later": "Tidak dapat memuat data. Coba lagi nanti.",
"logo": "logo",
"mainnet-ethereum": "Ethereum Jaringan Utama",
+ "merge": "Gabungkan",
"more": "Lebih Banyak",
- "nav-developers": "Pengembang",
+ "nav-about-description": "Proyek publik sumber terbuka untuk komunitas Ethereum",
+ "nav-advanced-description": "Pelajari topik yang lebih kompleks",
+ "nav-advanced-label": "Tingkat Lanjut",
+ "nav-basics-description": "Pahami dasar-dasar Ethereum",
+ "nav-basics-label": "Dasar-dasar",
+ "nav-bridges-description": "Web3 telah berevolusi menjadi ekosistem blockchain L1 utama dan solusi penskalaan L2",
+ "nav-builders-home-description": "Panduan pembangun untuk Ethereum—oleh pembangun, untuk pembangun",
+ "nav-builders-home-label": "Beranda pembangun",
+ "nav-contribute-description": "Jika Anda ingin membantu, ini akan memandu Anda",
+ "nav-contribute-label": "Berkontribusi pada ethereum.org",
+ "nav-dao-description": "Komunitas milik anggota tanpa otoritas terpusat",
+ "nav-dapps-description": "Jelajahi eskosistem aplikasi yang kaya menggunakan Ethereum",
+ "nav-defi-description": "Alternatif global dan terbuka untuk pasar keuangan tradisional",
+ "nav-desci-description": "Alternatif global dan terbuka untuk sistem ilmiah saat ini",
+ "nav-desoc-description": "Platform berbasis blockchain untuk interaksi sosial dan pembuatan konten",
"nav-developers-docs": "Dokumen pengembang",
+ "nav-developers": "Pengembang",
+ "nav-did-description": "Terbitkan dan miliki tanda pengenal terdesentralisasi yang unik",
+ "nav-docs-description": "Dokumen untuk membantu Anda memahami dan membangun dengan Ethereum",
+ "nav-docs-design-description": "Deskripsi tantangan desain web3 yang unik, praktik terbaik, dan wawasan penelitian pengguna",
+ "nav-docs-design-label": "Dasar-dasar desain UX/UI",
+ "nav-docs-foundation-description": "Dasar-dasar inti yang perlu dikembangkan di Ethereum",
+ "nav-docs-foundation-label": "Topik dasar",
+ "nav-docs-overview-description": "Beranda Anda untuk dokumen pengembang",
+ "nav-docs-stack-description": "Pahami semua detail tentang tumpukan Ethereum",
+ "nav-docs-stack-label": "Tumpukan Ethereum",
+ "nav-eip-description": "Standar yang menentukan fitur atau proses baru",
+ "nav-eip-label": "EIP - Proposal peningkatan Ethereum",
+ "nav-emerging-description": "Kenali kasus penggunaan baru lainnya untuk Ethereum",
+ "nav-emerging-label": "Kasus penggunaan yang muncul",
+ "nav-enterprise-description": "Aplikasi bisnis untuk Ethereum",
+ "nav-ethereum-org-description": "Situs web ini digerakkan oleh komunitas—bergabunglah dengan kami dan berkontribusi juga",
+ "nav-ethereum-wallets-description": "Aplikasi untk berinteraksi dengan akun Ethereum Anda",
+ "nav-events-description": "Desentralisasi dan kebebasan untuk berpartisipasi bagi siapa saja",
+ "nav-events-irl-description": "Setiap bulan ada aksi besar Ethereum yang berlangsung secara langsung dan online",
+ "nav-events-label": "Komunitas dan aksi",
+ "nav-events-online-description": "Ratusan ribu penggemar Ethereum berkumpul dalam komunitas online ini",
+ "nav-find-wallet-description": "Dompet memungkinkan Anda untuk menggunakan kripto",
+ "nav-find-wallet-label": "Pilih dompet Anda",
+ "nav-gas-fees-description": "Bagaimana cara menghitung biaya transaksi ETH",
+ "nav-gas-fees-label": "Biaya gas",
+ "nav-get-eth-description": "Anda membutuhkan ether (ETH) untuk menggunakan aplikasi Ethereum",
+ "nav-get-started-description": "Langkah pertama Anda untuk menggunakan Ethereum",
+ "nav-governance-description": "Proses yang dilibatkan dalam peningkatan protokol Ethereum",
+ "nav-governance-label": "Tata Kelola",
+ "nav-grants-description": "Daftar yang dipilih oleh komunitas kami mengenai proyek yang menyediakan program pendanaan hibah",
+ "nav-guide-create-account-description": "Siapa pun bisa membuat akun Ethereum kapan saja, secara gratis dengan aplikasi dompet",
+ "nav-guide-create-account-label": "Cara membuat akun Ethereum",
+ "nav-guide-revoke-access-description": "Tetap aman saat berinteraksi dengan kontrak pintar dan aplikasi di ekosistem Ethereum",
+ "nav-guide-revoke-access-label": "Cara mencabut akses kontrak pintar",
+ "nav-guide-use-wallet-description": "Pelajari cara mengoperasikan semua fungsi dasar dompet",
+ "nav-guide-use-wallet-label": "Cara menggunakan dompet",
+ "nav-guides-description": "Panduan langkah demi langkah praktis untuk membantu Anda memulai",
+ "nav-guides-label": "Cara memandu",
+ "nav-history-description": "Linimasa semua garpu dan pembaruan besar",
+ "nav-history-label": "Riwayat teknis Ethereum",
+ "nav-layer-2-description": "Transaksi yang lebih murah dan lebih cepat untuk Ethereum",
+ "nav-learn-by-coding-description": "Alat yang membantu Anda bereksperimen dengan Ethereum",
+ "nav-local-env-description": "Pilih dan siapkan tumpukan pengembangan Ethereum Anda",
+ "nav-mainnet-description": "Aplikasi blockchain perusahaan dapat dibuat di Jaringan Utama Ethereum publik",
+ "nav-nft-description": "Cara untuk mewakili apa pun yang unik sebagai aset berbasis Ethereum",
+ "nav-open-research-description": "Salah satu kekuatan utama Ethereum adalah komunitas penelitiannya yang aktif",
+ "nav-open-research-label": "Buka penelitian",
+ "nav-overview-description": "Semua hal tentang pendidikan Ethereum",
+ "nav-overview-label": "Gambaran umum",
+ "nav-participate-overview-description": "Gambaran umum tentang cara berpartisipasi",
"nav-primary": "Utama",
- "nft-page": "Token yang tidak dapat dipertukarkan (NFT)",
+ "nav-private-description": "Sumber daya pengembang untuk Ethereum perusahaan privat",
+ "nav-quizzes-description": "Cari tahu seberapa baik Anda memahami Ethereum dan mata uang kripto",
+ "nav-quizzes-label": "Uji pengetahuan Anda",
+ "nav-refi-description": "Sistem ekonomi alternatif dibuat berdasarkan prinsip-prinsip regeneratif",
+ "nav-research-description": "Proses yang digunakan untuk meningkatkan kualitas Ethereum",
+ "nav-research-label": "Penelitian dan pengembangan",
+ "nav-roadmap-description": "Jalan menuju peningkatan skalabilitas, keamanan, dan keberlanjutan Ethereum",
+ "nav-roadmap-future-description": "Memperkuat Ethereum sebagai jaringan yang kuat dan terdesentralisasi",
+ "nav-roadmap-future-label": "Proofing masa depan",
+ "nav-roadmap-label": "Rencana kerja",
+ "nav-roadmap-scaling-description": "Pembaruan jaringan untuk lebih mengurangi biaya dan kecepatan transaksi",
+ "nav-roadmap-scaling-label": "Transaksi yang lebih murah",
+ "nav-roadmap-security-description": "Memastikan Ethereum tetap tangguh terhadap segala jenis serangan di masa mendatang",
+ "nav-roadmap-security-label": "Peningkatan keamanan",
+ "nav-roadmap-ux-description": "Penggunaan Ethereum perlu disederhanakan",
+ "nav-roadmap-ux-label": "Pengalaman pengguna yang lebih baik",
+ "nav-run-a-node-description": "Menjadi berdaulat sepenuhnya sembari membantu mengamankan jaringan",
+ "nav-security-description": "Pelajari praktik terbaik saat menggunakan mata uang kripto",
+ "nav-smart-contracts-description": "Dasar-dasar blok pembangun ekosistem Ethereum",
+ "nav-stablecoins-description": "Stablecoin adalah token Ethereum yang dirancang agar tetap pada nilai tetap",
+ "nav-stake-description": "Dapatkan imbalan untuk mengamankan Ethereum",
+ "nav-stake-label": "Taruhan",
+ "nav-staking-home-description": "Gambaran umum berbagai opsi untuk penaruhan",
+ "nav-staking-home-label": "Penaruhan di beranda",
+ "nav-staking-pool-description": "Pasang taruhan dan dapatkan imbalan sejumlah ETH dengan bergabung dengan yang lain",
+ "nav-staking-pool-label": "Penaruhan pool",
+ "nav-staking-saas-description": "Operator simpul pihak ketiga menangani operasi dari klien validator Anda",
+ "nav-staking-saas-label": "Penaruhan dengan layanan",
+ "nav-staking-solo-description": "Jalankan perangkat keras di beranda dan secara pribadi berkontribusi pada keamanan dan desentralisasi jaringan Ethereum",
+ "nav-staking-solo-label": "Penaruhan solo",
+ "nav-start-building-description": "Informasi yang berguna bagi pendatang baru",
+ "nav-translation-program-description": "Upaya kolaboratif untuk menerjemahkan ethereum.org ke semua bahasa",
+ "nav-tutorials-description": "Daftar pilihan tutorial komunitas",
+ "nav-use-cases-description": "Temukan berbagai ide untuk penggunaan Ethereum",
+ "nav-use-cases-label": "Kasus penggunaan",
+ "nav-what-is-ether-description": "Mata uang aplikasi Ethereum",
+ "nav-what-is-ethereum-description": "Pahami apa yang membuat Ethereum spesial",
+ "nav-what-is-web3-label": "Apa itu Web3?",
+ "nav-what-is-web3-description": "Alternatif terhadap monopoli terpusat yang mendikte aturan",
+ "nav-whitepaper-description": "Laporan Ethereum asli yang ditulis oleh Vitalik Buterin pada tahun 2014",
+ "nav-zkp-description": "Cara untuk membuktikan keabsahan suatu pernyataan tanpa mengungkapkan pernyataan itu sendiri",
+ "nft-page": "NFT - Token yang tidak dapat dipertukarkan",
"nfts": "NFT",
"no": "Tidak",
"on-this-page": "Pada halaman ini",
@@ -140,6 +262,8 @@
"page-developers-aria-label": "Menu Developer",
"page-index-meta-title": "Beranda",
"page-last-updated": "Halaman terakhir kali diperbaharui",
+ "participate": "Partisipasi",
+ "participate-menu": "Menu partisipasi",
"pbs": "Pemisahan pengusul-pembuat",
"pools": "Penaruhan pool",
"privacy-policy": "Kebijakan privasi",
@@ -150,8 +274,10 @@
"refresh": "Silahkan muat ulang halaman.",
"return-home": "kembali ke beranda",
"roadmap": "Peta Perjalanan Ethereum",
+ "research": "Penelitian",
+ "research-menu": "Menu penelitian",
"resources": "Sumber terjemahan",
- "regenerative-finance": "Keuangan regeneratif (ReFi)",
+ "regenerative-finance": "ReFi - Keuangan regeneratif",
"run-a-node": "Menjalankan sebuah node",
"rollup-component-website": "Situs web",
"rollup-component-developer-docs": "Dokumen pengembang",
@@ -164,6 +290,7 @@
"search-box-blank-state-text": "Cari saja!",
"search-eth-address": "Ini terlihat seperti alamat Ethereum. Kami tidak memberikan data khusus untuk alamat. Coba cari di penjelajah blok seperti",
"search-no-results": "Tidak ada hasil untuk pencarian Anda",
+ "security": "Keamanan",
"single-slot-finality": "Finalitas slot tunggal",
"statelessness": "Tanpa kewarganegaraan",
"see-contributors": "Lihat kontributor",
@@ -181,6 +308,7 @@
"start-here": "Mulai di sini",
"style-guide": "Panduan gaya penulisan",
"solo": "Penaruhan solo",
+ "support": "Bantuan",
"terms-of-use": "Ketentuan Penggunaan",
"translation-banner-body-new": "Anda melihat halaman ini dalam bahasa Inggris karena kami belum menerjemahkannya. Bantu kami menerjemahkan konten ini.",
"translation-banner-body-update": "Terdapat versi baru halaman ini namun sementara ini hanya dalam bahasa Inggris. Bantu kami menerjemahkan versi terkini.",
@@ -191,11 +319,14 @@
"translation-banner-no-bugs-title": "Tidak ada bug di sini!",
"translation-banner-no-bugs-content": "Halaman ini tidak diterjemahkan. Untuk saat ini kami sengaja membiarkan halaman ini dalam bahasa Inggris.",
"translation-banner-no-bugs-dont-show-again": "Jangan tampilkan lagi",
+ "translation-program": "Program Penerjemahan",
"try-using-search": "Coba gunakan pencarian untuk menemukan apa yang Anda cari atau",
"tutorials": "Tutorial",
"up": "Naik",
+ "use": "Gunakan",
"use-ethereum": "Gunakan Ethereum",
"use-ethereum-menu": "Gunakan menu Ethereum",
+ "use-menu": "Gunakan menu",
"user-experience": "Pengalaman Pengguna",
"verkle-trees": "Pohon Verkle",
"wallets": "Dompet",
@@ -203,7 +334,7 @@
"web3": "Apa itu Web3?",
"web3-title": "Web3",
"website-last-updated": "Situs web terakhir kali diperbarui",
- "what-is-ether": "Apa itu ether (ETH)?",
+ "what-is-ether": "Apa itu Ether (ETH)?",
"what-is-ethereum": "Apa itu Ethereum?",
"withdrawals": "Penarikan penaruhan",
"yes": "Ya",
diff --git a/src/intl/id/page-dapps.json b/src/intl/id/page-dapps.json
index f56d60ae6da..fdae9b05cd9 100644
--- a/src/intl/id/page-dapps.json
+++ b/src/intl/id/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Alirkan uang secara dalam waktu nyata.",
"page-dapps-dapp-description-superrare": "Beli karya seni digital langsung dari artis atau di pasar sekunder.",
"page-dapps-dapp-description-token-sets": "Strategi investasi kripto yang menyeimbangkan kembali secara otomatis.",
- "page-dapps-dapp-description-tornado-cash": "Kirim transaksi anonim di Ethereum.",
"page-dapps-dapp-description-uniswap": "Tukar token secara mudah atau berikan token untuk imbalan %.",
"page-dapps-dapp-description-dexguru": "Terminal perdagangan non-kustodian untuk trader DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix adalah sebuah protokol untuk menerbitkan dan memperdagangkan aset sintetis",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Inilah aplikasi yang berfokus pada desentralisasi peralatan pengembang, menggabungkan sistem ekonomi kripto ke dalam teknologi yang tersedia, dan menciptakan pasar untuk pekerjaan pengembangan secara sumber terbuka.",
"page-dapps-technology-title": "Teknologi yang terdesentralisasi",
"page-dapps-token-sets-logo-alt": "Logo Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo Uniswap",
"page-dapps-wallet-callout-button": "Temukan dompet",
"page-dapps-wallet-callout-description": "Dompet juga merupakan dapp. Temukan dapp berdasarkan fitur yang sesuai untuk Anda.",
diff --git a/src/intl/id/page-developers-index.json b/src/intl/id/page-developers-index.json
index a9eb6098f7b..519f6c22d13 100644
--- a/src/intl/id/page-developers-index.json
+++ b/src/intl/id/page-developers-index.json
@@ -58,7 +58,7 @@
"page-developers-networks-desc": "Gambaran umum Jaringan Utama dan jaringan pengujian",
"page-developers-networks-link": "Jaringan",
"page-developers-node-clients-desc": "Bagaimana cara blok dan transaksi diverifikasi di jaringan",
- "page-developers-node-clients-link": "Node dan klien",
+ "page-developers-node-clients-link": "Simpul dan Klien",
"page-developers-oracle-desc": "Memasukkan data off-chain ke dalam kontrak pintar Anda",
"page-developers-oracles-link": "Oracle",
"page-developers-play-code": "Bermain dengan kode",
diff --git a/src/intl/id/page-gas.json b/src/intl/id/page-gas.json
new file mode 100644
index 00000000000..74ec5ebbda0
--- /dev/null
+++ b/src/intl/id/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Biaya gas pada Ethereum: Bagaimana cara kerjanya?",
+ "page-gas-meta-description": "Pelajari tentang gas di Ethereum: bagaimana cara kerjanya dan cara mengurangi biaya gas yang dibayar",
+ "page-gas-hero-title": "Biaya gas",
+ "page-gas-hero-header": "Biaya jaringan",
+ "page-gas-hero-button-1-content": "Apa itu gas?",
+ "page-gas-hero-subtitle-1": "Biaya jaringan di Ethereum disebut gas.",
+ "page-gas-hero-subtitle-2": "Gas adalah bahan bakar yang menggerakkan Ethereum.",
+ "page-gas-summary-title": "Ringkasan",
+ "page-gas-summary-item-1": "Setiap transaksi di Ethereum memerlukan suatu bentuk pembayaran dalam jumlah kecil untuk prosesnya",
+ "page-gas-summary-item-2": "Berbagai biaya ini dikenal sebagai biaya ‘gas'",
+ "page-gas-summary-item-3": "Biaya gas berubah sesuai dengan kepadatan jaringan",
+ "page-gas-what-are-gas-fees-header": "Apa itu biaya gas?",
+ "page-gas-what-are-gas-fees-text-1": "Bayangkan Ethereum sebagai jaringan komputer besar yang menjadi tempat orang melakukan tugas seperti mengirim pesan atau menjalankan program. Seperti halnya di dunia nyata, berbagai tugas tersebut membutuhkan energi agar dapat diselesaikan.",
+ "page-gas-what-are-gas-fees-text-2": "Pada Ethereum, setiap tindakan komputasional memiliki harga \"gas\" yang telah ditetapkan. Biaya gas Anda adalah jumlah biaya dari berbagai tindakan dalam transaksi Anda. Saat Anda mengirim transaksi atau menjalankan kontrak pintar, Anda membayar biaya gas untuk memprosesnya.",
+ "page-gas-how-do-i-pay-less-gas-header": "Bagaimana cara mengurangi biaya gas yang dibayar?",
+ "page-gas-how-do-i-pay-less-gas-text": "Meskipun biaya lebih tinggi terkadang tak dapat dihindari di Ethereum, ada beberapa strategi yang dapat digunakan untuk mengurangi biaya:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Atur waktu transaksi Anda",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Seperti halnya bepergian di luar jam sibuk akan lebih sepi dan terjangkau biayanya, Ethereum juga umumnya lebih murah ketika wilayah Amerika Utara sedang dalam waktu tidur.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Tunggu hingga biaya gas turun",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Harga gas naik dan turun setiap dua belas detik berdasarkan seberapa tinggi tingkat aktivitas di Ethereum. Saat harga gas sedang tinggi, menunggu beberapa menit lagi sebelum melakukan transaksi dapat menurunkan biaya yang dibayarkan secara signifikan.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Menggunakan lapisan ke-2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Rantai Lapisan-2 dikembangkan berdasarkan Ethereum sehingga menawarkan biaya lebih rendah dan menangani lebih banyak transaksi. Rantai tersebut adalah pilihan penghematan biaya yang baik untuk transaksi yang tidak harus dilakukan pada jaringan utama Ethereum.",
+ "page-gas-try-layer-2": "Coba lapisan ke-2",
+ "page-gas-what-causes-high-gas-fees-header": "Apa yang menyebabkan tingginya biaya gas?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Setiap kali jumlah komputasi (gas) di Ethereum melebihi ambang tertentu, biaya gas mulai meningkat. Makin jauh ambang ini dilampaui, makin cepat pula peningkatan biaya gas.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Peningkatan biaya dapat disebabkan oleh hal-hal seperti dapps atau NFT yang populer, peningkatan perdagangan di DEX secara berkala, atau lonjakan tinggi aktivitas pengguna pada jam sibuk.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Pengembang di Ethereum seharusnya memperhatikan hal ini dengan mengoptimalkan penggunaan kontrak pintarnya sebelum menyebarkannya. Jika kontrak pintar dengan penulisan yang buruk digunakan oleh banyak orang, kontrak tersebut akan menghabiskan lebih banyak gas dan dapat mengakibatkan kepadatan jaringan tanpa disengaja.",
+ "page-gas-want-to-dive-deeper": "Ingin mengetahui lebih mendalam?",
+ "page-gas-check-out-the-developer-docs": "Lihat dokumentasi pengembang.",
+ "page-gas-attack-of-the-cryptokitties-header": "Serangan Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "Pada bulan November 2017, proyek CryptoKitties yang populer diluncurkan. Lonjakan popularitasnya yang cepat menyebabkan kepadatan jaringan yang signifikan dan biaya gas yang luar biasa tinggi. Tantangan yang ditimbulkan oleh CryptoKitties mendorong kebutuhan yang mendesak untuk menemukan solusi peningkatan skala Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Mengapa kita membutuhkan gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas adalah elemen kritis dalam menjaga keamanan Ethereum dan memproses transaksi. Gas membantu dalam banyak hal:",
+ "page-gas-benefits-1-description": "Gas menjaga ketahanan Ethereum dari serangan Sybil dengan mencegah para penjahat memadati jaringan dengan aktivitas yang curang.",
+ "page-gas-benefits-2-description": "Karena komputasi membutuhkan gas, tindakan mengirim spam ke Ethereum dengan transaksi bernilai tinggi, baik secara tidak sengaja maupun dengan maksud jahat, tidak mendapat insentif finansial.",
+ "page-gas-benefits-3-description": "Batas keras untuk jumlah komputasi yang boleh dilakukan dalam satu kesempatan akan mencegah meluapnya kapasitas Ethereum sehingga membantu memastikan ketersediaan jaringan untuk diakses.",
+ "page-gas-how-is-gas-calculated-header": "Bagaimana gas dihitung?",
+ "page-gas-advanced": "Tingkat Lanjut",
+ "page-gas-how-is-gas-calculated-text-1": "Jumlah biaya gas yang Anda bayar terdiri dari beberapa bagian:",
+ "page-gas-how-is-gas-calculated-item-1": "Biaya dasar: biaya yang ditetapkan oleh jaringan yang harus dibayarkan untuk sebuah transaksi",
+ "page-gas-how-is-gas-calculated-item-2": "Biaya prioritas: tip opsional untuk memberikan insentif pada operator simpul agar memasukkan transaksi Anda",
+ "page-gas-how-is-gas-calculated-item-3": "Unit gas yang digunakan*: Ingat pernyataan sebelumnya bahwa gas menunjukkan komputasi? Tindakan yang lebih kompleks, seperti berinteraksi dengan kontrak pintar, menggunakan lebih banyak gas daripada tindakan yang sederhana, seperti mengirimkan transaksi.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* Lihat Gambar 1 untuk melihat seberapa banyak gas yang digunakan oleh berbagai jenis transaksi",
+ "page-gas-how-is-gas-calculated-text-2": "Rumus untuk menghitung biaya gas adalah unit gas yang digunakan * (biaya dasar + biaya prioritas). Sebagian besar dompet akan menghitung penggunaan gas dan menampilkannya dengan cara yang lebih mudah dipahami.",
+ "page-gas-table-figure": "Gambar 1: Penggunaan gas berdasarkan jenis transaksi",
+ "page-gas-table-header-1": "Jenis transaksi",
+ "page-gas-table-header-2": "Unit gas yang digunakan",
+ "page-gas-table-item-1-transaction-type": "Mengirim ETH",
+ "page-gas-table-item-2-transaction-type": "Mengirim token ERC-20",
+ "page-gas-table-item-3-transaction-type": "Transfer dan NFT",
+ "page-gas-table-item-4-transaction-type": "Menukarkan di Uniswap",
+ "page-gas-faq-header": "Pertanyaan umum",
+ "page-gas-faq-question-1-q": "Siapa yang menerima pembayaran biaya gas dalam transaksi saya?",
+ "page-gas-faq-question-1-a-1": "Sebagian besar biaya gas—biaya dasar— dimusnahkan oleh protokol (dibakar). Biaya prioritas, jika disertakan dalam transaksi Anda, akan diberikan ke validator yang mengajukan transaksi Anda.",
+ "page-gas-faq-question-1-a-2": "Anda dapat membaca deskripsi terperinci tentang proses ini di dokumentasi pengembang gas.",
+ "page-gas-faq-question-2-q": "Apakah saya perlu membayar gas di ETH?",
+ "page-gas-faq-question-2-a-1": "Ya. Semua biaya gas di Ethereum harus dibayar menggunakan mata uang asli ETH.",
+ "page-gas-faq-question-2-a-2": "Selengkapnya tentang ETH",
+ "page-gas-faq-question-3-q": "Apa itu gwei?",
+ "page-gas-faq-question-3-a-1": "Pada sebagian besar dompet atau pelacak gas, harga gas akan menggunakan denominasi ‘gwei’.",
+ "page-gas-faq-question-3-a-2": "Gwei hanyalah sebuah unit ETH yang lebih kecil, seperti halnya pecahan sen pada dolar, dengan perbedaan bahwa 1 ETH sama dengan 1 miliar gwei. Gwei berguna jika menyangkut jumlah ETH yang sangat kecil.",
+ "page-gas-use-layer-2": "Menggunakan lapisan ke-2"
+}
diff --git a/src/intl/id/page-get-eth.json b/src/intl/id/page-get-eth.json
index af36abbac4a..cd2c84cb861 100644
--- a/src/intl/id/page-get-eth.json
+++ b/src/intl/id/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Bursa adalah bisnis yang memungkinkan Anda membeli kripto menggunakan mata uang tradisional. Mereka memiliki wewenang atas ETH yang Anda beli sampai Anda mengirimkannya ke dompet yang Anda kendalikan.",
"page-get-eth-checkout-dapps-btn": "Cari tahu dapp",
"page-get-eth-community-safety": "Postingan komunitas terkait keamanan",
- "page-get-eth-description": "Ethereum dan ETH tidak dikendalikan oleh pemerintah atau perusahaan mana pun - mereka terdesentralisasi. Ini berarti ETH terbuka untuk digunakan semua orang.",
+ "page-get-eth-description": "Ethereum tidak dikendalikan oleh satu organisasi tunggal - tetapi terdesentralisasi.",
"page-get-eth-dex": "Pertukaran Terdesentralisasi (DEX)",
- "page-get-eth-dex-desc": "Jika Anda menginginkan kontrol lebih, beli ETH peer-to-peer. Dengan DEX, Anda dapat berdagang tanpa memberikan kendali atas dana Anda ke perusahaan terpusat.",
+ "page-get-eth-dex-desc": "Jika menginginkan kendali lebih, beli ETH dengan menggunakan kontrak pintar. Dengan DEX, Anda dapat melakukan perdagangan aset digital tanpa perlu memberikan kendali atas dana Anda kepada perusahaan yang terpusat.",
+ "page-get-eth-peers": "Terima ETH dari rekan sejawat Anda",
+ "page-get-eth-peers-desc": "Setelah memiliki akun Ethereum, Anda hanya perlu membagikan alamat Anda untuk mulai mengirim dan menerima ETH (dan token lainnya) secara peer-to-peer.",
+ "page-get-eth-staking": "Imbalan penaruhan",
+ "page-get-eth-staking-desc": "Jika sudah memiliki ETH, Anda dapat memperolehnya lagi dengan menjalankan simpul validator. Anda dibayar dalam ETH untuk melakukan pekerjaan verifikasi ini.",
+ "page-get-eth-earn": "Dapatkan ETH",
+ "page-get-eth-earn-desc": "Anda dapat memperoleh ETH dengan bekerja untuk DAO atau perusahaan yang membayar dengan kripto, memenangkan hadiah, menemukan bug perangkat lunak, dan lainnya.",
+ "page-get-eth-daos-link-desc": "Pelajari tentang DAO",
+ "page-get-eth-cex-link-desc": "Lihat daftar bursa",
+ "page-get-eth-staking-link-desc": "Pelajari selengkapnya tentang staking",
"page-get-eth-dexs": "Pertukaran Terdesentralisasi (DEX)",
"page-get-eth-dexs-desc": "Bursa terdesentralisasi adalah pasar terbuka untuk ETH dan token lainnya. Mereka menghubungkan pembeli dan penjual secara langsung.",
"page-get-eth-dexs-desc-2": "Alih-alih menggunakan pihak ketiga yang terpercaya untuk mengamankan dana dalam transaksi, mereka menggunakan kode. ETH penjual hanya akan ditransfer ketika pembayaran dijamin. Jenis kode ini dikenal sebagai kontrak pintar.",
- "page-get-eth-dexs-desc-3": "Ini berarti lebih sedikit batasan geografis dibandingkan dengan alternatif terpusat. Jika seseorang menjual apa yang Anda inginkan dan menerima metode pembayaran yang dapat Anda berikan, Anda siap melakukannya. DEX memungkinkan Anda membeli ETH dengan token lain, PayPal, atau bahkan pengiriman tunai secara langsung.",
+ "page-get-eth-dexs-desc-3": "Hal ini berarti terdapat lebih sedikit pembatasan geografis dibandingkan dengan alternatif terpusat. Jika seseorang menjual barang yang Anda inginkan dan menerima metode pembayaran yang dapat Anda berikan, proses dapat dilanjutkan.",
"page-get-eth-do-not-copy": "Contoh: Jangan disalin",
"page-get-eth-exchanges-disclaimer": "Kami mengumpulkan informasi ini secara manual. Jika Anda menemukan sesuatu yang salah, beri tahu kami di",
- "page-get-eth-exchanges-empty-state-text": "Masukkan negara tempat tinggal Anda untuk melihat daftar dompet dan bursa yang dapat Anda gunakan untuk membeli ETH",
+ "page-get-eth-exchanges-empty-state-text": "Masukkan negara tempat tinggal Anda untuk melihat daftar bursa yang mungkin dapat Anda gunakan",
"page-get-eth-exchanges-except": "Kecuali",
"page-get-eth-exchanges-header": "Di negara mana kamu tinggal?",
"page-get-eth-exchanges-header-exchanges": "Bursa",
"page-get-eth-exchanges-header-wallets": "Dompet",
- "page-get-eth-exchanges-intro": "Bursa dan dompet memiliki batasan di mana mereka dapat menjual kripto.",
+ "page-get-eth-exchanges-intro": "Bursa perdagangan membatasi tempat yang boleh menjual kripto. Ini adalah daftar indikasi layanan yang dianggap beroperasi di setiap negara. Penyertaan sesuatu di sini tidak berarti mendukungnya - Anda seharusnya menelitinya sendiri!",
"page-get-eth-exchanges-no-exchanges": "Maaf, kami tidak tahu bursa apa pun yang memungkinkan Anda membeli ETH dari negara ini. Jika Anda tahu, beri tahu kami di",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Maaf, kami tidak tahu bursa atau dompet apa pun yang memungkinkan Anda membeli ETH dari negara ini. Jika Anda tahu, beri tahu kami di",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Maaf, kami tidak tahu bursa apa pun yang memungkinkan Anda membeli ETH dari negara ini. Jika Anda tahu, beri tahu kami di",
"page-get-eth-exchanges-no-wallets": "Maaf, kami tidak tahu dompet apa pun yang memungkinkan Anda membeli ETH dari negara ini. Jika Anda tahu, beri tahu kami di",
"page-get-eth-exchanges-search": "Ketik di mana Anda tinggal...",
"page-get-eth-exchanges-success-exchange": "Hal ini dapat memakan waktu beberapa hari untuk mendaftar di bursa karena pemeriksaan hukum mereka.",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Dapatkan gambar tokoh ETH",
"page-get-eth-keep-it-safe": "Menjaga ETH Anda tetap aman",
"page-get-eth-meta-description": "Cara membeli ETH berdasarkan tempat tinggal Anda dan saran tentang bagaimana cara merawatnya.",
- "page-get-eth-meta-title": "Cara membeli ETH",
+ "page-get-eth-meta-title": "Cara mendapatkan ETH",
"page-get-eth-need-wallet": "Anda akan membutuhkan dompet untuk menggunakan DEX.",
"page-get-eth-new-to-eth": "Baru mengenal ETH? Berikut ini ringkasan untuk membantu Anda memulai.",
"page-get-eth-other-cryptos": "Beli dengan koin kripto yang lain",
- "page-get-eth-protect-eth-desc": "Jika Anda berencana membeli banyak ETH, Anda mungkin ingin menyimpannya di dompet yang Anda kendalikan, bukan di bursa. Itu karena bursa kemungkinan besar menjadi target peretas. Jika seorang peretas mendapatkan akses, Anda bisa kehilangan dana. Selain itu, hanya Anda yang memiliki kendali atas dompet Anda.",
- "page-get-eth-protect-eth-in-wallet": "Lindungi ETH Anda di dalam dompet",
+ "page-get-eth-protect-eth-desc": "Salah satu fitur utama Ethereum adalah Anda memegang kendali atas aset sendiri dengan mengelola akun sendiri. Hal ini berarti Anda tidak perlu mempercayakan aset Anda ke pihak ketiga sehingga Anda terlindung dari kustodian yang bertindak tidak jujur, menghadapi kebangkrutan, atau mengalami peretasan. Namun, hal tersebut juga berarti bahwa Anda bertanggung jawab atas keamanan Anda sendiri.",
+ "page-get-eth-protect-eth-in-wallet": "Simpan ETH dalam dompet Anda sendiri",
"page-get-eth-search-by-country": "Cari berdasarkan negara",
- "page-get-eth-security": "Tetapi ini juga berarti Anda harus memperhatikan keamanan dana Anda dengan serius. Dengan ETH, Anda tidak mempercayai bank untuk menjaga uang Anda, percayakan pada diri Anda sendiri.",
+ "page-get-eth-security": "Hal ini berarti Anda harus serius memperhatikan keamanan dana Anda. Dengan ETH, Anda tidak mempercayakan aset Anda untuk dijaga oleh bank atau perusahaan, melainkan mengambil tanggung jawab untuk diri sendiri.",
"page-get-eth-smart-contract-link": "Lebih lanjut tentang kontrak pintar",
"page-get-eth-swapping": "Tukar token Anda dengan ETH orang lain. Dan sebaliknya.",
"page-get-eth-try-dex": "Coba DEX",
"page-get-eth-use-your-eth": "Gunakan ETH Anda",
"page-get-eth-use-your-eth-dapps": "Karena sekarang Anda telah memiliki beberapa ETH, lihat beberapa aplikasi Ethereum (dapp). Ada dapp untuk keuangan, media sosial, aktivitas game, dan banyak kategori lainnya.",
"page-get-eth-wallet-instructions": "Ikuti instruksi dompet",
- "page-get-eth-wallet-instructions-lost": "Jika Anda kehilangan akses ke dompet, Anda akan kehilangan akses ke dana Anda. Dompet harus memberi instruksi kepada Anda untuk melindungi dari hal ini. Pastikan untuk mengikutinya dengan hati-hati – dalam banyak kasus, tidak ada yang dapat membantu Anda jika kehilangan akses ke dompet Anda.",
+ "page-get-eth-wallet-instructions-lost": "Jika akses ke akun Anda hilang, akses ke dana juga akan hilang. Dompet Anda seharusnya memberikan instruksi tentang cara melindungi diri dari hal ini. Pastikan untuk mengikuti petunjuk tersebut dengan hati-hati – dalam kebanyakan kasus, tidak ada yang dapat membantu jika Anda kehilangan akses ke akun Anda.",
"page-get-eth-wallets": "Dompet",
"page-get-eth-wallets-link": "Selengkapnya tentang dompet",
"page-get-eth-wallets-purchasing": "Beberapa dompet memungkinkan Anda membeli kripto dengan kartu debit/kredit, transfer bank, atau bahkan Apple Pay. Pembatasan geografis berlaku.",
- "page-get-eth-warning": "DEX ini bukan diperuntukan untuk pemula karena Anda memerlukan beberapa ETH untuk menggunakannya.",
+ "page-get-eth-warning": "DEX bukan untuk pemula karena diperlukan sejumlah ETH untuk menggunakannya. Ini hanya contoh, bukan produk yang didukung. Lakukan penelitian Anda sendiri!",
"page-get-eth-what-are-DEX's": "Apa itu DEX?",
"page-get-eth-whats-eth-link": "Apa itu ETH?",
- "page-get-eth-where-to-buy-desc": "Anda dapat membeli ETH dari bursa atau dari dompet secara langsung.",
+ "page-get-eth-where-to-buy-desc": "Anda dapat menghasilkan ETH, menerimanya dari rekan Anda, atau membelinya melalui bursa dan aplikasi.",
"page-get-eth-where-to-buy-desc-2": "Periksa layanan mana yang dapat Anda gunakan berdasarkan tempat tinggal Anda.",
- "page-get-eth-where-to-buy-title": "Dimana membeli ETH",
+ "page-get-eth-where-to-buy-title": "Tempat untuk mendapatkan ETH",
"page-get-eth-your-address": "Alamat ETH Anda",
"page-get-eth-your-address-desc": "Saat Anda mengunduh dompet, itu akan membuat alamat ETH publik untuk Anda. Berikut ini contoh tampilan alamatnya:",
"page-get-eth-your-address-desc-3": "Anggap ini seperti alamat email Anda, tetapi bukan surat, alamat ini dapat menerima ETH. Jika Anda ingin menukar ETH dari bursa ke dompet, gunakan alamat Anda sebagai tujuan. Pastikan untuk selalu memeriksa ulang sebelum Anda mengirim!",
diff --git a/src/intl/id/page-languages.json b/src/intl/id/page-languages.json
index 5cb812e7932..677324df678 100644
--- a/src/intl/id/page-languages.json
+++ b/src/intl/id/page-languages.json
@@ -12,10 +12,13 @@
"page-languages-want-more-link": "Program Penerjemahan",
"page-languages-want-more-paragraph": "Penerjemah ethereum.org selalu menerjemahkan halaman ke dalam sebanyak mungkin bahasa. Untuk melihat apa yang mereka kerjakan sekarang atau untuk mendaftar bergabung dengan mereka, baca tentang",
"page-languages-filter-placeholder": "Filter",
+ "langauge-am": "Amharik",
"language-ar": "Bahasa Arab",
"language-az": "Bahasa Azerbaijan",
+ "langauge-be": "Belarus",
"language-bg": "Bahasa Bulgaria",
"language-bn": "Bahasa Bengali",
+ "language-bs": "Bosnia",
"language-ca": "Bahasa Katalan",
"language-cs": "Bahasa Ceko",
"language-da": "Bahasa Denmark",
@@ -32,6 +35,7 @@
"language-hi": "Bahasa Hindi",
"language-hr": "Bahasa Kroasia",
"language-hu": "Bahasa Hongaria",
+ "language-hy-am": "Armenia",
"language-id": "Bahasa Indonesia",
"language-ig": "Bahasa Igbo",
"language-it": "Bahasa Italia",
@@ -39,12 +43,14 @@
"language-ka": "Bahasa Georgia",
"language-kk": "Bahasa Kazakh",
"language-km": "Bahasa Khmer",
+ "language-kn": "Kannada",
"language-ko": "Bahasa Korea",
"language-lt": "Bahasa Lithuania",
"language-ml": "Bahasa Malayalam",
"language-mr": "Bahasa Marathi",
"language-ms": "Bahasa Malaysia",
"language-nb": "Bahasa Norwegia",
+ "language-ne-np": "Nepali",
"language-nl": "Bahasa Belanda",
"language-pcm": "Bahasa Pidgin Nigeria",
"language-fil": "Bahasa Filipina",
@@ -58,8 +64,9 @@
"language-sl": "Bahasa Slovenia",
"language-sr": "Bahasa Serbia",
"language-sw": "Bahasa Swahili",
- "language-th": "Bahasa Thailand",
"language-ta": "Bahasa Tamil",
+ "language-th": "Bahasa Thailand",
+ "language-tk": "Turkmen",
"language-tr": "Bahasa Turki",
"language-uk": "Bahasa Ukraina",
"language-ur": "Bahasa Urdu",
diff --git a/src/intl/id/page-layer-2.json b/src/intl/id/page-layer-2.json
index 27093293e39..eb0e912ddda 100644
--- a/src/intl/id/page-layer-2.json
+++ b/src/intl/id/page-layer-2.json
@@ -123,6 +123,7 @@
"zksync-description": "zkSync adalah platform Rollup zk yang berfokus pada pengguna dari Matter Labs. Ini adalah solusi penskalaan untuk Ethereum, sudah berjalan di Jaringan Utama Ethereum. Ini mendukung pembayaran, pertukaran token, dan penciptaan NFT.",
"zkspace-description": "Platform ZKSpace terdiri dari tiga bagian utama: bursa AMM DEX lapisan ke-2 yang menggunakan teknologi Rollup ZK bernama ZKSwap, layanan pembayaran bernama ZKSquare, dan pasar NFT bernama ZKSea.",
"aztec-description": "Jaringan Aztec adalah Rollup zk pribadi pertama di Ethereum, memungkinkan aplikasi terdesentralisasi untuk mengakses privasi dan skala.",
+ "starknet-description": "Starknet adalah Rollup Validitas Lapisan ke-2. Starknet menyediakan keluaran proses yang tinggi, biaya gas yang rendah, dan menjaga tingkat keamanan Lapisan ke-1 Ethereum.",
"layer-2-note": "Catatan:",
"layer-2-ecosystem-portal": "Portal Ekosistem",
"layer-2-token-lists": "Daftar Token",
diff --git a/src/intl/id/page-stablecoins.json b/src/intl/id/page-stablecoins.json
index 762e00e1461..6f87068d9a2 100644
--- a/src/intl/id/page-stablecoins.json
+++ b/src/intl/id/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Sumber",
"page-stablecoins-bitcoin-pizza": "Pizza Bitcoin yang terkenal jahat",
"page-stablecoins-bitcoin-pizza-body": "Pada tahun 2010, seseorang membeli 2 pizza seharga 10.000 bitcoin. Pada saat itu, nilainya ~$41 USD. Di pasar saat ini, itu bernilai jutaan dolar. Ada banyak transaksi penuh penyesalan dalam sejarah Ethereum. Stablecoin memecahkan masalah ini, sehingga Anda dapat menikmati pizza Anda dan mempertahankan ETH Anda.",
+ "page-stablecoins-category-dashboard-and-education": "Dasbor & Pendidikan",
"page-stablecoins-coin-price-change": "Perubahan harga koin (30 hari terakhir)",
"page-stablecoins-crypto-backed": "Kripto didukung",
"page-stablecoins-crypto-backed-con-1": "Kurang stabil dibandingkan stablecoin yang didukung oleh fiat.",
diff --git a/src/intl/id/page-wallets-find-wallet.json b/src/intl/id/page-wallets-find-wallet.json
index 220c5319da8..69962dd1771 100644
--- a/src/intl/id/page-wallets-find-wallet.json
+++ b/src/intl/id/page-wallets-find-wallet.json
@@ -50,10 +50,10 @@
"page-find-wallet-features": "Fitur",
"page-find-wallet-security": "Keamanan",
"page-find-wallet-smart-contract": "Kontrak pintar",
- "page-find-wallet-check-out": "Lihat juga",
+ "page-find-wallet-check-out": "Lihat",
"page-find-wallet-info-updated-on": "info diperbarui pada",
"page-find-wallet-showing-all-wallets": "Tampilkan semua dompet",
- "page-find-wallet-showing": "Menampilkan ",
+ "page-find-wallet-showing": "Menampilkan",
"page-find-wallet-wallets": "dompet",
"page-find-wallet-iOS": "iOS",
"page-find-wallet-android": "Android",
@@ -81,7 +81,7 @@
"page-find-wallet-feature-filters": "Fitur filter",
"page-find-wallet-footnote-1": "Dompet yang tercantum di halaman ini bukan dukungan resmi, dan disediakan hanya untuk tujuan informasi.",
"page-find-wallet-footnote-2": "Deskripsi mereka telah disediakan oleh proyek dompet itu sendiri.",
- "page-find-wallet-footnote-3": "Kami menambahkan produk ke halaman ini berdasarkan kriteria kami kebijakan daftar. Jika Anda ingin kami menambahkan dompet, kirim issue di GitHub.",
+ "page-find-wallet-footnote-3": "Kami menambahkan produk ke halaman ini berdasarkan kriteria dalam kebijakan pendaftaran kami. Jika Anda menginginkan penambahan dompet dari kami, ajukan persoalan ini di GitHub.",
"page-find-wallet-mobile": "Seluler",
"page-find-wallet-mobile-desc": "Dompet dengan aplikasi seluler",
"page-find-wallet-desktop": "Desktop",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Dompet dengan ekstensi browser",
"page-find-wallet-device": "Perangkat",
"page-find-choose-to-compare": "Pilih untuk membandingkan",
- "page-find-wallet-choose-features": "Pilih fitur"
+ "page-find-wallet-choose-features": "Pilih fitur",
+ "page-find-wallet-reset-filters": "Atur ulang filter"
}
diff --git a/src/intl/ig/common.json b/src/intl/ig/common.json
index c19527c0a13..6035c22eeb4 100644
--- a/src/intl/ig/common.json
+++ b/src/intl/ig/common.json
@@ -1,33 +1,48 @@
{
- "account-abstraction": "Abstraction akaụntụ",
"about-ethereum-org": "Banyere ethereum.org",
"about-us": "Maka anyị",
+ "adding-desci-projects": "Ntinye-arumaru nke desci",
+ "adding-developer-tools": "Na-agbakwunye Ngwaọrụ Onye mmepụta",
+ "adding-exchanges": "Itinye Mgbanwe ego",
+ "adding-glossary-terms": "Ntinye atumatu okowa-okwu",
+ "adding-staking-products": "Itinye ngwa-ahia ntinye ego",
+ "adding-wallets": "Itinye Akpa ego intaneti",
+ "account-abstraction": "Abstraction akaụntụ",
+ "acknowledgements": "Nkwenye",
"aria-toggle-search-button": "Gbanwee bọtịnụ ọchụchọ",
"aria-toggle-menu-button": "Gbanwee bọtịnụ ndeputa",
"beacon-chain": "Beacon Chain",
"bridges": "Njikọ blockchain",
+ "bug-bounty": "Nchọpụta njehie",
+ "build": "Mepúta",
+ "build-menu": "Mepụta menu",
"clear": "Hichapụ",
"close": "Mechie",
- "community": "Ndi otu nwere otu mmasi",
+ "community": "Obodo",
"community-hub": "Obodo nzukọ",
"community-menu": "Ndetu obodo",
"contact": "Ihe mkpoturu",
+ "content-buckets": "Ihe ntughe: Bọket Ọdịnaya",
+ "content-resources": "Ego Ọdịnaya",
"content-standardization": "Nhazi ọdịnaya",
"contributing": "Itu utu",
"contributors": "Ndị ntinye aka",
"contributors-thanks": "Onye ọ bụla nyere aka na peeji a - daalụ!",
- "cookie-policy": "Nkwuputa nke Cookie na aru oru",
+ "cookie-policy": "Amụma kuki",
"copied": "Akọpịala",
"copy": "Kọpịa",
"danksharding": "Danksharding",
- "dao-page": "Otu zoro ezo n'enweghi nchikwa (DAOs)",
+ "dao-page": "DAOs - Otu zoro ezo n'enweghi nchikwa",
"dark-mode": "Ojii",
"data-provided-by": "Ebe data:",
- "decentralized-applications-dapps": "Ngwa komputa na aru oru na sistemu komputa (dapps)",
+ "decentralized-applications-dapps": "Dapps - Ngwa komputa na aru oru na sistemu komputa",
"decentralized-identity": "Njirimara ọtụtụ ndị na achị",
"decentralized-social-networks": "Netwọk mmekọrịta ọtụtụ ndị na achi",
- "decentralized-science": "Sayensị ọtụtụ ndị na achị (DeSci)",
- "defi-page": "Ego n'enweghi nchikwa (DeFi)",
+ "decentralized-science": "DeSci - Sayensị ọtụtụ ndị na achị",
+ "description": "Nkọwa nke ihe nav",
+ "defi-page": "DeFi - Ego n'enweghi nchikwa",
+ "design": "Mmepụta",
+ "design-principles": "Usoro mmepụta ihe",
"devcon": "Devcon",
"developers": "Ndị mmeputa",
"developers-home": "Isi ulo oru ndi Mmeputa",
@@ -63,7 +78,6 @@
"ethereum-bug-bounty": "Mmemme mmachi nsogbu nwere ike ịmalite na Ethereum",
"consensus-when-shipping": "Kedu mgbe ọ na-ebupu?",
"ethereum-upgrades": "Nkwalite Ethereum",
- "ethereum-brand-assets": "Ihe Njirimara Ethereum",
"ethereum-online": "Obodo dị n'ịntanetị",
"ethereum-events": "Ihe omume Ethereum",
"ethereum-foundation": "Ebe mbido nke Ethereum",
@@ -75,7 +89,7 @@
"ethereum-protocol": "Usoro nhazi Ethereum",
"ethereum-security": "Nchekwa Ethereum na mgbochi ọhị",
"ethereum-support": "Nkwado Ethereum",
- "ethereum-wallets": "Akpaego Ethereum",
+ "ethereum-wallets": "Akpa ego Ethereum",
"ethereum-whitepaper": "Akwukwo akuko",
"feedback-widget-prompt": "Ibe a ọ na enye aka?",
"feedback-card-prompt-page": "Ibe a ọ nyere aka?",
@@ -83,22 +97,22 @@
"feedback-card-prompt-tutorial": "Nkuzi a ọ nyere aka?",
"feedback-widget-thank-you-title": "Daalụ maka nzaghachi gị!",
"feedback-widget-thank-you-subtitle": "Make this page even better by answering a few questions.",
- "feedback-widget-thank-you-subtitle-ext": "Ọ bụrụ na ịchọrọ enyemaka, ị nwere ike ịgakwuru ndị obodo na Discord anyị.",
+ "feedback-widget-thank-you-subtitle-ext": "Ọ bụrụ na ịchọrọ enyemaka, ị nwere ike ịkpọtụrụ ndị obodo anyị na Discord.",
"feedback-widget-thank-you-timing": "Nkeji 2–3 ",
"feedback-widget-thank-you-cta": "Mepee nyocha dị mkpirikpi",
- "find-wallet": "Chọta obere akpa ego",
+ "find-wallet": "Chọta akpa ego ịntanetị",
"future-proofing": "Ihe akaebe ga eme n'ọdịnihu",
"get-eth": "Nweta ETH",
"get-involved": "Tinye aka",
- "get-started": "Bido oru",
+ "get-started": "Bido",
"grants": "Enyemaka",
"grant-programs": "Mmemme Nkwado Usoro gburugburu",
"guides": "Nduzi",
- "guides-hub": "Nduzi njikọ",
+ "guides-hub": "Otu esi eduzi",
"history-of-ethereum": "Akụkọ ihe mere eme nke Ethereum",
"home": "Ụnọ",
"how-ethereum-works": "Otu Ethereum si arụ ọrụ",
- "how-to-register-an-ethereum-account": "Otu esi 'debanye aha' akwụkwọ akaụntụ Ethereum",
+ "how-to-create-an-ethereum-account": "Etu e si 'emepe' akaụntụ Ethereum",
"how-to-revoke-token-access": "Otu esi akagbu ohere nweta smart contract na ego crypto gi",
"how-to-swap-tokens": "Uzo esi agbanwe tokens",
"how-to-use-a-bridge": "Uzo esi ejikọta tokens na layer 2",
@@ -115,7 +129,7 @@
"last-edit": "Ndezi ikpeazụ",
"layer-2": "Layer 2",
"learn": "Mụta",
- "learn-by-coding": "Muta ihe site na eji koodu",
+ "learn-by-coding": "Muta ihe site na iji ndokwa",
"learn-hub": "Ebe mmụta",
"learn-menu": "Mutakwuo",
"learn-more": "Mutakwuo",
@@ -127,12 +141,107 @@
"loading-error-refresh": "Njehie, biko megharia.",
"loading-error-try-again-later": "Enwenwughi ike ibudata data. Nwaa oge ọzọ.",
"logo": "akara",
- "mainnet-ethereum": "Ethereum Bloockchainu na enyefe ego",
+ "mainnet-ethereum": "Isi netwọk Ethereum",
+ "merge": "Jikota",
"more": "Ọzọ",
- "nav-developers": "Ndị mmeputa",
+ "nav-about-description": "Ihe ọha, nke mmadu niile nwere ike inwete maka otu igwe mmadụ nwere mmasị na Ethereum",
+ "nav-advanced-description": "Mụta isiokwu ndị siri ike karị",
+ "nav-advanced-label": "Emelitere",
+ "nav-basics-description": "Ghọta ihe ndị bụ isi na Ethereum",
+ "nav-basics-label": "Ihe ndị di mkpa",
+ "nav-bridges-description": "Web3 agbanwela banye na akụkụ nile mejụpụtara isi L1 blockchains na usoro mmúba nke L2",
+ "nav-builders-home-description": "Akwụkwọ ntuziaka onye nkwadoeziokwu nke Ethereum—site n'aka ndị nkwadoeziokwu, maka ndị nkwadoeziokwu",
+ "nav-builders-home-label": "Weebusaiti mmepe peeji nke onye nkwadoeziokwu",
+ "nav-contribute-description": "Ọ bụrụ na ị chọrọ inye aka, nke a ga-eduzi gị",
+ "nav-contribute-label": "Na-enye aka na ethereum.org",
+ "nav-dao-description": "Obodo onye otu nwere na-enweghị ikike etiti",
+ "nav-dapps-description": "Nyochaa usoro okike bara ụba nke ngwa site na iji Ethereum",
+ "nav-defi-description": "Nhọrọ uzọ izụ ahịa ego nkịtị ọzọ nke zuru ụwa ọnụ",
+ "nav-desci-description": "Nhọrọ uzọ ọzọ nke usoro sayensị dị ugbu a nke zuru ụwa ọnụ",
+ "nav-desoc-description": "Nyiwe dabeere na blockchain maka mmekọrịta mmadụ na ibe ya na imepụta ọdịnaya",
"nav-developers-docs": "Akwụkwọ ndị na-emepụta",
+ "nav-developers": "Ndị mmeputa",
+ "nav-did-description": "Nye ma nwekwa ihe njirimara gị nke di ebe obula",
+ "nav-docs-description": "Akwụkwọ iji nyere gị aka ịghọta ma wuo ya na Ethereum",
+ "nav-docs-design-description": "Nkọwa nke ịma aka imewe web3 pụrụ iche, omume kacha mma na nghọta nyocha onye ọrụ",
+ "nav-docs-design-label": "Ihe imewe UX/UI bu isi",
+ "nav-docs-foundation-description": "Isi ihe ndị dị mkpa iji tolite na Ethereum",
+ "nav-docs-overview-description": "Ụlọ weebusaiti mmepe peeji maka onye mmepụta",
+ "nav-docs-stack-description": "Ghọta nkọwa niile nke Ethereum stack",
+ "nav-eip-description": "Ụkpụrụ na-akọwapụta njiarú ma ọ bụ usoro ọhụrụ",
+ "nav-eip-label": "EIPs - Atumatu Imeziwanye Ethereum",
+ "nav-emerging-description": "Mata mmekọrịta ọhụrụ ndị ọzọ mere na Ethereum",
+ "nav-emerging-label": "Okwu ojiji na-apụta",
+ "nav-enterprise-description": "Ngwa azụmahịa maka Ethereum",
+ "nav-ethereum-org-description": "Ebe nrụọrụ weebụ a bụ nke ndị otu nwere mmasị kwadoro—sonyere anyị ma tinye aka",
+ "nav-ethereum-wallets-description": "Aapụ yana na akaụntụ Ethereum gị ga emekọrịta",
+ "nav-events-description": "Ebe njikọ na ikike isonye maka onye ọ bụla",
+ "nav-events-irl-description": "Kwa ọnwa ọbụla, a na-enwe nnukwu ihe omume nke Ethereum ana-eme n'ihu n'ihu nakwa n'ịntanetị",
+ "nav-events-label": "Otu igwe mmadụ nwere mmasị na 'ihe omume gasị",
+ "nav-events-online-description": "Ọtụtụ narị puku ndi nna ihe gbasara Ethereum na-anụ ọkụ n'obi na otu igwe ndị a nwere mmasị n'ịntanetị",
+ "nav-find-wallet-description": "Akpaego na-enye gị ohere ka e jiri crypto",
+ "nav-find-wallet-label": "Họrọ akpaego gị",
+ "nav-gas-fees-description": "Kedu ka e si agbakọ ụgwọ nzipụ ego ETH",
+ "nav-get-eth-description": "Ọ dị mkpa na ị ga-enwe ether (ETH) iji jiri ngwa Ethereum",
+ "nav-get-started-description": "Nzọụkwụ nke mbụ gị iji jiri Ethereum",
+ "nav-governance-description": "Usoro a na-etinye aka na nkwalite usoro Ethereum",
+ "nav-governance-label": "Ọchịchị",
+ "nav-grants-description": "Ndepụta nke ndị otu igwe anyị nakọtara na arụmọrụ na ihe omume na-enye nkwado ego",
+ "nav-guide-create-account-description": "Onye ọ bụla nwere ike ịmepụta akaụntụ Ethereum n'oge ọ bụla, n'efu na ngwa akpa ego intaneti",
+ "nav-guide-create-account-label": "Otu e si emepe akaụntụ Ethereum",
+ "nav-guide-revoke-access-description": "Nọgide na nchekwa mgbe ị na-emekọrịta na nkwekọrịta smart na gburugburu ebe obibi Ethereum",
+ "nav-guide-revoke-access-label": "Otu e si akagbu ohere nweta ihe nhazi na-eme n'akpaaka",
+ "nav-guide-use-wallet-description": "Mụta ka e si eji ihe njiarú niile dị mkpa na akpaego",
+ "nav-guide-use-wallet-label": "Otu esi eji obere akpa intanet",
+ "nav-guides-description": "Ntụziaka nzọụkwụ ga-enyere gị aka ibido",
+ "nav-guides-label": "Otu e si eduzi",
+ "nav-history-description": "Usoro ihe omume nke isidi iche iche na mmelite niile",
+ "nav-history-label": "Akụkọ ihe mere eme nke teknụzụ Ethereum",
+ "nav-layer-2-description": "Nzipụ ego dị ọnụ ala nakwa nke na-aga ngwa ngwa maka Ethereum",
+ "nav-learn-by-coding-description": "Ngwaọrụ ndị na-enyere gị aka ịnwale Ethereum",
+ "nav-local-env-description": "Họrọ ma hazie nzulite Ethereum stack gị",
+ "nav-mainnet-description": "Enwere ike iwulite ngwa azụmahịa blockchain na Ethereum Mainnet nke ọha",
+ "nav-nft-description": "Ụzọ e ji egosipụta ihe ọbụla pụrụ iche dị ka akụ nke Ethereum",
+ "nav-open-research-description": "Otu n'ime isi ike nke Ethereum di mkpa bụ obodo nyocha ya na-arụ ọrụ",
+ "nav-open-research-label": "Nchọpụta mepere emepe",
+ "nav-overview-description": "Ihe niile gbasara agụmakwụkwọ Ethereum",
+ "nav-participate-overview-description": "Nchịkọta zuru ezu banyere otu esi esonye",
"nav-primary": "Isi mbido",
- "nft-page": "Non-fungible tokin (NFTs)",
+ "nav-quizzes-description": "Chọpụta etu i siri mara Ethereum na cryptocurrencies",
+ "nav-quizzes-label": "Nwalee ihe ọmụma gị",
+ "nav-refi-description": "Usoro akụ̀ na ụba ọzọ e wuru n'elu ụkpụrụ ndị na-eweghachi ihe",
+ "nav-research-description": "Usoro eji emeziwanye Ethereum",
+ "nav-research-label": "Nnyocha na mmepe",
+ "nav-roadmap-description": "Ụzọ maka mgbanwe, nchekwa na nkwado maka Ethereum",
+ "nav-roadmap-future-description": "Na-eme ka Ethereum dị ka netwọk siri ike na nke adighi otu ebe",
+ "nav-roadmap-future-label": "Ihe akaebe ga eme n'ọdịnihu",
+ "nav-roadmap-label": "Atụmatụ",
+ "nav-roadmap-scaling-description": "Mmelite netwọk iji belata ọnụ ahịa azụmahịa yana ọsọ ọsọ",
+ "nav-roadmap-security-description": "Ijide n'aka na Ethereum ga-anọgide na-eguzogide ụdị mwakpo niile n'ọdịnihu",
+ "nav-roadmap-security-label": "Nchekwa emelitere",
+ "nav-roadmap-ux-description": "Iji Ethereum kwesịrị ka ọ dị mfe",
+ "nav-run-a-node-description": "Bụrụ onye ọchịchị zuru oke ka ị na-enyere aka chekwa netwọkụ ahụ",
+ "nav-security-description": "Mụta omume kacha mma mgbe ị na-eji cryptocurrency",
+ "nav-smart-contracts-description": "Ihe ndị bụ isi ụlọ nke gburugburu ebe obibi Ethereum",
+ "nav-stablecoins-description": "Stablecoins bụ akara ngosi Ethereum emebere ka ọ nọrọ na ọnụ ahịa a kapịrị ọnụ",
+ "nav-stake-description": "Nweta ụgwọ ọrụ maka ịchekwa Ethereum",
+ "nav-stake-label": "Ego Etinyere",
+ "nav-staking-home-description": "Nchịkọta nke nhọrọ dị iche iche maka ntinye ego",
+ "nav-staking-pool-description": "Tinye ego ma nweta ụgwọ ọrụ site na iji onu ego ọ bụla nke ETH site na isonyere ndị ọzọ",
+ "nav-staking-pool-label": "Ntinye jikotara",
+ "nav-staking-saas-label": "Iji ọrụ tinye ego",
+ "nav-staking-solo-label": "Solo staking",
+ "nav-start-building-description": "Ozi bara uru maka ndị bịara ọhụrụ\n",
+ "nav-translation-program-description": "Mgbalị imekọ ihe ọnụ iji tụgharịa asụsụ ethereum.org na asụsụ niile",
+ "nav-tutorials-description": "Ndepụta nke nkuzi obodo",
+ "nav-use-cases-description": "Chọpụta echiche dị iche iche maka iji Ethereum",
+ "nav-what-is-ether-description": "Ego nke ngwa Ethereum",
+ "nav-what-is-ethereum-description": "Ghọta ihe mere Ethereum ji bụrụ ihe pụrụ iche",
+ "nav-what-is-web3-label": "Gịnị bụ Web3?",
+ "nav-what-is-web3-description": "Nhọrọ ọzọ nye ndị azumahia etiti na-achịkwa iwu",
+ "nav-whitepaper-description": "Akwụkwọ ntuala Ethereum mbụ nke Vitalik Buterin dere na 2014",
+ "nav-zkp-description": "Ụzọ iji gosipụta izi ezi nke nkwupụta n'ekpugheghị nkwupụta ahụ n'onwe ya",
+ "nft-page": "NFTs - Non-fungible tokin",
"nfts": "NFTs",
"no": "Mba",
"on-this-page": "Na peeji a",
@@ -140,6 +249,7 @@
"page-developers-aria-label": "Ndepụta nhọrọ mmemme ndi Mmeputa",
"page-index-meta-title": "Ụnọ",
"page-last-updated": "Emelitere peeji ikpeazụ",
+ "participate-menu": "Menu nsonye",
"pbs": "Ịkpa oke onye na-ewu ụlọ",
"pools": "Ntinye jikotara",
"privacy-policy": "Iwu ihe nzuzo",
@@ -150,10 +260,10 @@
"refresh": "Biko megharịa peeji ahụ.",
"return-home": "laghachi azu n'ụlọ",
"roadmap": "Mapụ nke ụzọ Ethereum",
+ "research": "Nyochaa",
+ "research-menu": "Menu nnyocha",
"resources": "Akụrụngwa ntụgharị asụsụ",
- "regenerative-finance": "Ego n'enweghi nchikwa (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
+ "regenerative-finance": "ReFi - Ego n'enweghi nchikwa",
"rollup-component-developer-docs": "Akwụkwọ onye nrụpụta",
"rollup-component-technology-and-risk-summary": "Teknụzụ na nchịkọta ihe egwu",
"scaling": "Nbawanye ikike",
@@ -164,24 +274,22 @@
"search-box-blank-state-text": "Chọrọ gawa!",
"search-eth-address": "Nke a dị ka adreesị Ethereum. Anyị anaghị enye data kpọmkwem maka adreesị. Gbalịa ịchọ ya na blọk ihe nchọgharị dị ka",
"search-no-results": "Enweghị nsonaazụ maka ọchụchọ gị",
+ "security": "Nche",
"single-slot-finality": "Otu ohere nkwụsị",
"statelessness": "Na enweghị obodo",
"see-contributors": "Lee ndị nkwado",
"set-up-local-env": "Hazie gburugburu ebeulo",
- "sharding": "Sharding",
"show-all": "Gosi Ihe Niine",
"show-less": "Gosi obere",
"site-description": "Ethereum bu ụzọ zuru ụwa nile, nke akwadopụtàrà maka ego na ụdịrị ngwa kòmpụtà ọhụrụ. Na Ethereum, ị nwere ike ide koodù na-achịkwa ego, ma ruo ngwa kòmpụtà ndị enwere ike inweta ebe ọ bụla n’ ụwa.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Mafee na isi ọdịnaya",
"smart-contracts": "Nkwekọrịta azụmahịa na emere onwe ya",
- "stablecoins": "Crptocurrency na anochite anya ego ndi ozo",
+ "stablecoins": "Stebụlkọịn",
"stake-eth": "Kekọrịta ETH",
"staking": "Ntinye ego",
"start-here": "Bido ebe a",
- "style-guide": "Style guide",
"solo": "Solo staking",
- "terms-of-use": "Iwu nkwekorita maka Ojiji",
+ "terms-of-use": "Usoro nke ojiji",
"translation-banner-body-new": "I na elele peeji a na asusu Bekee maka na anyi atugharibeghi ya. Nyere anyi aka tugharia asusu odinaya a.",
"translation-banner-body-update": "Enwere udi ohuru nke peeji a mana o no naani na asusu Bekee ugbu a. Nyere anyi aka tugharia nke kachasi ohuru.",
"translation-banner-button-see-english": "Lee Bekee",
@@ -191,20 +299,21 @@
"translation-banner-no-bugs-title": "Enweghị mperi ebe a!",
"translation-banner-no-bugs-content": "A naghị atụgharị asụsụ ibe akwụkwọ a. Anyị kpachapụrụ anya hapụ ibe akwụkwọ a n'asụsụ Bekee ka ọ dị.",
"translation-banner-no-bugs-dont-show-again": "Egosila ọzọ",
+ "translation-program": "Mmemme Ntụgharị Asụsụ",
"try-using-search": "Gbaa mbọ iji nchọpụta chọpụta ihe ị na-achọ ma ọ bụ",
- "tutorials": "Ihe omumu na aka onye nkuzi",
- "up": "N'elu",
+ "tutorials": "Ihe omumu",
+ "up": "Elu",
+ "use": "Jiri",
"use-ethereum": "Jiri Ethereum",
"use-ethereum-menu": "Jiri ndeputa Ethereum",
- "user-experience": "User experience",
+ "use-menu": "Jiri menu",
"verkle-trees": "Verkle trees",
"wallets": "Akpa ego",
"we-couldnt-find-that-page": "Anyị enweghị ike ịhụ ibe ahụ",
"web3": "Gịnị bụ Web3?",
- "web3-title": "Web3",
"website-last-updated": "Emelitere webụsaịtị ikpeazụ",
- "what-is-ether": "Gịnị bu ether (ETH)?",
- "what-is-ethereum": "Gịnị bu Ethereum?",
+ "what-is-ether": "Gini bu ether (ETH)?",
+ "what-is-ethereum": "Gini bu Ethereum?",
"withdrawals": "Mwepụ ego etinyere",
"yes": "Ee",
"zero-knowledge-proofs": "Ihe akaebe ihe ọmụma efu"
diff --git a/src/intl/ig/page-dapps.json b/src/intl/ig/page-dapps.json
index 97c872ecb9d..fc83e41da4a 100644
--- a/src/intl/ig/page-dapps.json
+++ b/src/intl/ig/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Kirie ego n'ịntanetị mgbe o kwesiri.",
"page-dapps-dapp-description-superrare": "Si n'aka onye ọrụ nka zụta ọrụ nka dijitalụ\n maọbụ n'aha onye ọzọ na-ere ha n'ahịa.",
"page-dapps-dapp-description-token-sets": "Atụmatụ itinye ego nke kripto nke na-emezigharị na-akaghị ya aka.",
- "page-dapps-dapp-description-tornado-cash": "Zipu azụmahịa na-amaghị aha ya n'Ethereum.",
"page-dapps-dapp-description-uniswap": "Gbanwee kokin maọbụ weta tokin maka pasenti nkwụghachi ụgwọ.",
"page-dapps-dapp-description-dexguru": "Ngwụcha azumahia na-enweghi onye ndú maka ndị ahia DeFi",
"page-dapps-dapp-description-synthetix": "Sintetiks bụ usoro e ji enye ma na-ere ngwaahịa sintetiks",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Ndị a bụ ngwa na-elekwasị anya n'ime ka ngwaọrụ onye mmeputa ghara inwe onye ise nduzi, na-etinye usoro akụ na ụba crypto na teknụzụ dị ugbua, ma na emepụtakwa ebe azụmaahịa maka ọrụ mpepe a ma ebe ha si.",
"page-dapps-technology-title": "Teknụzụ na-enweghị onye isi nduzi",
"page-dapps-token-sets-logo-alt": "Akara ngosi Tokin Seti",
- "page-dapps-tornado-cash-logo-alt": "Akara ngosi kaashị Tornado",
"page-dapps-uniswap-logo-alt": "Akara ngosi Uniswap",
"page-dapps-wallet-callout-button": "Chọta obere akpa ego",
"page-dapps-wallet-callout-description": "Akpa ego ịntanetị bụkwa dapps. Chọta otu dabere na ngwaọrụ masịrị gị.",
diff --git a/src/intl/ig/page-index.json b/src/intl/ig/page-index.json
index 36dcdc23b69..39c4d691005 100644
--- a/src/intl/ig/page-index.json
+++ b/src/intl/ig/page-index.json
@@ -77,7 +77,7 @@
"page-index-nft-button": "Ihe ndị ọzọ na NFT",
"page-index-nft-alt": "A na-egosipụta akara Eth site na hologram.",
"community-events-content-heading": "Sonye na otu ethereum.org",
- "community-events-content-1": "Sonye ihe dị ka ndị puku iri anọ na ọrụ nkwekọrịta anyị.",
+ "community-events-content-1": "Sonye ihe dị ka ndị puku iri anọ na ọrụ nkwekọrịta anyị.",
"community-events-content-2": "Sonye nzuko obodo anyị kwa ọnwa maka mmelite na-akpali akpali na mmepe Ethereum.org yana ozi gbasara gburugburu ebe obibi kacha mkpa. Nweta ohere ịjụ ajụjụ, kesaa echiche, na inye azịza - ọ bụ oge zuru oke iji sonye na obodo Ethereum na-eto eto.",
"community-events-next-event": "Mgbakọ ọzọ",
"community-events-no-events-planned": "O nweghị mmemme akwadoro",
diff --git a/src/intl/ig/page-languages.json b/src/intl/ig/page-languages.json
index b7213226ea9..d7d3cae614b 100644
--- a/src/intl/ig/page-languages.json
+++ b/src/intl/ig/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Chọrọ ịhụ ethereum.org n'asụsụ dị iche iche?",
"page-languages-want-more-link": "Mmemme Ntụgharị Asụsụ",
"page-languages-want-more-paragraph": "ndị ntụgharị ethereum.org na-asụgharị ibe mgbe niile n'asụsụ dị ka o kwere mee. Iji hụ ihe ha na-arụ ugbu a ma ọ bụ debanye aha iji sonyere ha, gụọ gbasara anyị",
- "page-languages-filter-placeholder": "Yọchaa",
+ "page-languages-filter-label": "Nzacha ndepụta",
+ "page-languages-filter-placeholder": "Pịnye iji zachaa",
+ "page-languages-browser-default": "Ka ihe nchọgharị kwesiri idi",
+ "page-languages-translated": "sụgharịrị",
+ "page-languages-words": "okwu",
+ "page-languages-recruit-community": "Nyere anyị aka ịsụgharị ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Arabic",
"language-az": "Azerbaijani",
+ "langauge-be": "Belarusian",
"language-bg": "Bulgarian",
"language-bn": "Bengali",
+ "language-bs": "Bosnian",
"language-ca": "Catalan",
"language-cs": "Czech",
"language-da": "Asụsụ Danish",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Croatian",
"language-hu": "Hungarian",
+ "language-hy-am": "Armenian",
"language-id": "Indonesian",
"language-ig": "Igbo",
"language-it": "Italian",
@@ -39,12 +48,14 @@
"language-ka": "Georgian",
"language-kk": "Kazakh",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Korean",
"language-lt": "Lithuanian",
"language-ml": "Malayalam",
"language-mr": "Asụsụ Marathi",
"language-ms": "Malay",
"language-nb": "Norwegian",
+ "language-ne-np": "Nepali",
"language-nl": "Dutch",
"language-pcm": "Pidgin Naijiria",
"language-fil": "Filipino",
@@ -58,8 +69,9 @@
"language-sl": "Slovenian",
"language-sr": "Serbian",
"language-sw": "Asụsụ Swahili",
- "language-th": "Asụsụ Thai",
"language-ta": "Asụsụ Tamil",
+ "language-th": "Asụsụ Thai",
+ "language-tk": "Turkmen",
"language-tr": "Turkish",
"language-uk": "Ukrainian",
"language-ur": "Asụsụ Urdu",
diff --git a/src/intl/ig/page-stablecoins.json b/src/intl/ig/page-stablecoins.json
index ec34bf7d392..95e3c5803f0 100644
--- a/src/intl/ig/page-stablecoins.json
+++ b/src/intl/ig/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Isi mmalite",
"page-stablecoins-bitcoin-pizza": "Bitcoin pizza a ma ama",
"page-stablecoins-bitcoin-pizza-body": "Na 2010, mmadụ ji Bitcoin 10,000 zụta pizza 2. N'oge ọnụ ahịa ndị bụ ~$ 41USD. N'ahịa taa, nke ahụ bụ nde kwuru nde dollar. E nwere ọtụtụ azụmahịa dị etu a na-enye mwute n'akụkọ Ethereum. Stebụlkọịn doziri nsogbu a, yabụ i nwere ike ịta Pizza gị ma jigide ETH gị.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard na Education",
"page-stablecoins-coin-price-change": "Mgbanwe ọnụahịa mkpụrụ ego (ụbọchị 30 gara aga)",
"page-stablecoins-crypto-backed": "Nke crypto kwadoro",
"page-stablecoins-crypto-backed-con-1": "Ka stebụlkọịn nke fịyatị kwadoro ghara ịkwụsị ike.",
diff --git a/src/intl/it/common.json b/src/intl/it/common.json
index 75d193fe02a..8248fde5c45 100644
--- a/src/intl/it/common.json
+++ b/src/intl/it/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "Astrazione account",
"about-ethereum-org": "Informazioni su ethereum.org",
"about-us": "Chi siamo",
+ "adding-desci-projects": "Aggiungere progetti DeSci",
+ "adding-developer-tools": "Aggiungere strumenti per sviluppatori",
+ "adding-exchanges": "Aggiungere borse",
+ "adding-glossary-terms": "Aggiungere termini dal glossario",
+ "adding-layer-2s": "Aggiungere Livelli 2",
+ "adding-products": "Aggiungere prodotti",
+ "adding-staking-products": "Aggiungere prodotti di staking",
+ "adding-wallets": "Aggiungere portafogli",
+ "account-abstraction": "Astrazione account",
+ "acknowledgements": "Riconoscimenti",
"aria-toggle-search-button": "Attiva/Disattiva pulsante di ricerca",
"aria-toggle-menu-button": "Attiva/Disattiva pulsante menu",
"beacon-chain": "La Beacon Chain",
"bridges": "Ponti della blockchain",
+ "bug-bounty": "Bug bounty",
+ "build": "Build",
+ "build-menu": "Menu build",
"clear": "Cancella",
"close": "Chiudi",
"community": "Community",
"community-hub": "Hub della community",
"community-menu": "Menu Community",
"contact": "Contatti",
+ "content-buckets": "Categorie di contenuti",
+ "content-resources": "Risorse di contenuto",
"content-standardization": "Standardizzazione dei contenuti",
"contributing": "Contributi",
"contributors": "Hanno contribuito",
@@ -20,14 +34,17 @@
"copied": "Copiato",
"copy": "Copia",
"danksharding": "Danksharding",
- "dao-page": "Organizzazioni autonome decentralizzate (DAO)",
+ "dao-page": "DAO - Organizzazioni autonome decentralizzate",
"dark-mode": "Scuro",
"data-provided-by": "Origine dei dati:",
- "decentralized-applications-dapps": "Applicazioni decentralizzate (dapps)",
+ "decentralized-applications-dapps": "Dapps - Applicazioni decentralizzate",
"decentralized-identity": "Identità decentralizzata",
"decentralized-social-networks": "Social network decentralizzati",
- "decentralized-science": "Scienza Decentralizzata (DeSci)",
- "defi-page": "Finanza decentralizzata (DeFi)",
+ "decentralized-science": "DeSci - Scienza Decentralizzata",
+ "description": "Descrizione dell’elemento di navigazione",
+ "defi-page": "DeFi - Finanza decentralizzata",
+ "design": "Progettazione",
+ "design-principles": "Principi di progettazione",
"devcon": "Devcon",
"developers": "Sviluppatori",
"developers-home": "Home degli sviluppatori",
@@ -51,7 +68,7 @@
"documentation": "Documentazione",
"down": "Giù",
"ecosystem": "Ecosistema",
- "edit-page": "Modifica la pagina",
+ "edit-page": "Modifica pagina",
"ef-blog": "Blog della Ethereum Foundation",
"eips": "Proposte di Miglioramento di Ethereum",
"energy-consumption": "Consumo energetico di Ethereum",
@@ -86,7 +103,7 @@
"feedback-widget-thank-you-subtitle-ext": "Se ti serve aiuto, puoi contattare la community sul nostro Discord.",
"feedback-widget-thank-you-timing": "2-3 minuti",
"feedback-widget-thank-you-cta": "Apri un breve sondaggio",
- "find-wallet": "Trova portafoglio",
+ "find-wallet": "Trova un portafoglio",
"future-proofing": "A prova di futuro",
"get-eth": "Ottieni ETH",
"get-involved": "Partecipa",
@@ -94,11 +111,11 @@
"grants": "Sovvenzioni",
"grant-programs": "Programma di supporto dell'ecosistema",
"guides": "Guide",
- "guides-hub": "Hub delle guide",
+ "guides-hub": "Guide esplicative",
"history-of-ethereum": "Storia di Ethereum",
"home": "Home page",
"how-ethereum-works": "Come funziona Ethereum",
- "how-to-register-an-ethereum-account": "Come \"registrare\" un conto di Ethereum",
+ "how-to-create-an-ethereum-account": "Come \"creare\" un conto di Ethereum",
"how-to-revoke-token-access": "Come revocare l'accesso dei contratti intelligenti ai tuoi fondi di criptovalute",
"how-to-swap-tokens": "Come scambiare token",
"how-to-use-a-bridge": "Come collegare i token al livello 2",
@@ -128,11 +145,117 @@
"loading-error-try-again-later": "Impossibile caricare i dati. Riprovare più tardi.",
"logo": "logo",
"mainnet-ethereum": "Rete principale Ethereum",
+ "merge": "Fusione",
"more": "Altro",
- "nav-developers": "Sviluppatori",
+ "nav-about-description": "Un progetto open source aperto al pubblico per la comunità Ethereum",
+ "nav-advanced-description": "Approfondisci gli argomenti più complessi",
+ "nav-advanced-label": "Avanzate",
+ "nav-basics-description": "Comprendi i fondamenti di Ethereum",
+ "nav-basics-label": "Nozioni di base",
+ "nav-bridges-description": "Web3 si è evoluto in un ecosistema di blockchain L1 primarie e di soluzioni di ridimensionamento L2",
+ "nav-builders-home-description": "Un manuale su Ethereum, scritto da sviluppatori per sviluppatori",
+ "nav-builders-home-label": "Pagina principale del costruttore",
+ "nav-contribute-description": "Se vuoi dare un contributo, questa guida di spiegherà come fare",
+ "nav-contribute-label": "Contribuire a ethereum.org",
+ "nav-dao-description": "Community posseduta dai membri, senza un’autorità centralizzata",
+ "nav-dapps-description": "Esplora un ricco ecosistema di app che utilizzano Ethereum",
+ "nav-defi-description": "Un'alternativa globale e aperta al sistema finanziario tradizionale",
+ "nav-desci-description": "Un'alternativa globale e aperta al sistema scientifico corrente",
+ "nav-desoc-description": "Piattaforme basate sulla blockchain per l'interazione sociale e la creazione di contenuti",
"nav-developers-docs": "Documentazione per sviluppatori",
+ "nav-developers": "Sviluppatori",
+ "nav-did-description": "Emettere e possedere i propri identificativi unici decentralizzati",
+ "nav-docs-description": "Documenti per aiutarti a capire e compilare con Ethereum",
+ "nav-docs-design-description": "Descrizione delle sfide specifiche della progettazione web3, delle best practice e delle informazioni di ricerca sugli utenti",
+ "nav-docs-design-label": "Fondamenti di progettazione UX/UI",
+ "nav-docs-foundation-description": "Fondamenti principali per sviluppare su Ethereum",
+ "nav-docs-foundation-label": "Argomenti fondamentali",
+ "nav-docs-overview-description": "Il punto di riferimento per i documenti per gli sviluppatori",
+ "nav-docs-stack-description": "Capire tutti i dettagli dello stack di Ethereum",
+ "nav-docs-stack-label": "Stack di Ethereum",
+ "nav-eip-description": "Standard che specificano nuove funzionalità o processi",
+ "nav-eip-label": "EIP - Proposte di miglioramento di Ethereum",
+ "nav-emerging-description": "Conoscere altri casi d'uso più recenti di Ethereum",
+ "nav-emerging-label": "Casi d'uso emergenti",
+ "nav-enterprise-description": "Applicazioni commerciali di Ethereum",
+ "nav-ethereum-org-description": "Questo sito web è alimentato dalla community: unisciti e contribuisci anche tu",
+ "nav-ethereum-wallets-description": "Un'app per interagire con il proprio conto di Ethereum",
+ "nav-events-description": "Decentralizzazione e libertà di partecipazione per chiunque",
+ "nav-events-irl-description": "Ogni mese ci sono importanti eventi Ethereum di persona e online",
+ "nav-events-label": "Community ed eventi",
+ "nav-events-online-description": "Centinaia di migliaia di appassionati di Ethereum partecipano a queste community online",
+ "nav-find-wallet-description": "I portafogli consentono di utilizzare le criptovalute",
+ "nav-find-wallet-label": "Scegliere il proprio portafoglio",
+ "nav-gas-fees-description": "Come vengono calcolate le commissioni di transazione in ETH",
+ "nav-gas-fees-label": "Commissioni sul gas",
+ "nav-get-eth-description": "Servono ether (ETH) per utilizzare le applicazioni di Ethereum",
+ "nav-get-started-description": "Primi passi per utilizzare Ethereum",
+ "nav-governance-description": "Processo di aggiornamento del protocollo Ethereum",
+ "nav-governance-label": "Governance",
+ "nav-grants-description": "Un elenco curato dalla nostra community sui progetti che forniscono programmi di finanziamento con sovvenzioni",
+ "nav-guide-create-account-description": "Chiunque può creare un conto di Ethereum in qualsiasi momento, gratuitamente con un app portafoglio",
+ "nav-guide-create-account-label": "Come creare un conto di Ethereum",
+ "nav-guide-revoke-access-description": "Sicurezza nell'interazione con i contratti intelligenti e le applicazioni dell'ecosistema Ethereum",
+ "nav-guide-revoke-access-label": "Come revocare l'accesso ai contratti intelligenti",
+ "nav-guide-use-wallet-description": "Impara come gestire tutte le funzioni di base di un portafoglio",
+ "nav-guide-use-wallet-label": "Come utilizzare un portafoglio",
+ "nav-guides-description": "Guide pratiche per muovere i primi passi",
+ "nav-guides-label": "Guide esplicative",
+ "nav-history-description": "Un viaggio nel tempo per illustrare tutte le principali diramazioni e gli aggiornamenti",
+ "nav-history-label": "La storia tecnica di Ethereum",
+ "nav-layer-2-description": "Transazioni più economiche e veloci per Ethereum",
+ "nav-learn-by-coding-description": "Strumenti che ti aiutano a sperimentare con Ethereum",
+ "nav-local-env-description": "Scegliere e impostare il proprio stack di sviluppo Ethereum",
+ "nav-mainnet-description": "Le applicazioni aziendali della blockchain possono essere costruite sulla Rete pubblica di Ethereum",
+ "nav-nft-description": "Un modo per rappresentare qualsiasi cosa unica come un asset basato su Ethereum",
+ "nav-open-research-description": "Uno dei principali punti di forza di Ethereum è la sua attiva comunità di ricerca",
+ "nav-open-research-label": "Ricerca aperta",
+ "nav-overview-description": "Tutto ciò che riguarda la formazione su Ethereum",
+ "nav-overview-label": "Panoramica",
+ "nav-participate-overview-description": "Panoramica sulle modalità di partecipazione",
"nav-primary": "Principale",
- "nft-page": "Token non fungibili (NFT)",
+ "nav-private-description": "Risorse per sviluppatori per la rete Ethereum privata per le imprese",
+ "nav-quizzes-description": "Scopri quanto ne sai su Ethereum e le criptovalute",
+ "nav-quizzes-label": "Metti alla prova le tue conoscenze",
+ "nav-refi-description": "Un sistema economico alternativo costruito su principi rigenerativi",
+ "nav-research-description": "Processi usati per migliorare Ethereum",
+ "nav-research-label": "Ricerca e sviluppo",
+ "nav-roadmap-description": "Il percorso verso una maggiore scalabilità, sicurezza e sostenibilità per Ethereum",
+ "nav-roadmap-future-description": "Consolidare Ethereum come rete robusta e decentralizzata",
+ "nav-roadmap-future-label": "A prova di futuro",
+ "nav-roadmap-label": "Roadmap",
+ "nav-roadmap-scaling-description": "Aggiornamenti della rete per ridurre ulteriormente i costi e la velocità delle transazioni",
+ "nav-roadmap-scaling-label": "Transazioni più economiche",
+ "nav-roadmap-security-description": "Assicurarsi che Ethereum resti resiliente a tutti i tipi di attacchi in futuro",
+ "nav-roadmap-security-label": "Sicurezza migliorata",
+ "nav-roadmap-ux-description": "Occorre semplificare l'utilizzo di Ethereum",
+ "nav-roadmap-ux-label": "Migliore esperienza utente",
+ "nav-run-a-node-description": "Diventa completamente sovrano, aiutando a proteggere la rete",
+ "nav-security-description": "Imparare le best practice sull'uso delle criptovalute",
+ "nav-smart-contracts-description": "Gli elementi fondamentali dell'ecosistema Ethereum",
+ "nav-stablecoins-description": "Le stablecoin sono token Ethereum progettate per rimanere a un valore fisso",
+ "nav-stake-description": "Ottieni ricompense per proteggere Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "Panoramica sulle diverse opzioni di staking",
+ "nav-staking-home-label": "Home dello staking",
+ "nav-staking-pool-description": "Fai staking e guadagna ricompense di qualsiasi importo di ETH unendoti ad altri",
+ "nav-staking-pool-label": "Staking in pool",
+ "nav-staking-saas-description": "Gli operatori di nodi di terze parti gestiscono l'operazione del tuo client del validatore",
+ "nav-staking-saas-label": "Staking con un servizio",
+ "nav-staking-solo-description": "Opera hardware domestico e aggiungi personalmente alla sicurezza e decentralizzazione della rete di Ethereum",
+ "nav-staking-solo-label": "Staking in solo",
+ "nav-start-building-description": "Informazioni utili per i novellini",
+ "nav-translation-program-description": "Uno sforzo collaborativo per tradurre ethereum.org in tutte le lingue",
+ "nav-tutorials-description": "Elenco curato di tutorial della community",
+ "nav-use-cases-description": "Scoprire diverse idee per l'utilizzo di Ethereum",
+ "nav-use-cases-label": "Casi d'uso",
+ "nav-what-is-ether-description": "La valuta delle app Ethereum",
+ "nav-what-is-ethereum-description": "Capire cosa rende speciale Ethereum",
+ "nav-what-is-web3-label": "Cos'è il Web3?",
+ "nav-what-is-web3-description": "Un'alternativa ai monopoli centralizzati che dettano le regole",
+ "nav-whitepaper-description": "Il whitepaper originale di Ethereum scritto da Vitalik Buterin nel 2014",
+ "nav-zkp-description": "Un modo per provare la validità di una dichiarazione senza rivelarla",
+ "nft-page": "NFT - Token non fungibili",
"nfts": "NFT",
"no": "No",
"on-this-page": "Su questa pagina",
@@ -140,6 +263,8 @@
"page-developers-aria-label": "Menu Sviluppatori",
"page-index-meta-title": "Home page",
"page-last-updated": "Ultimo aggiornamento pagina",
+ "participate": "Partecipa",
+ "participate-menu": "Menu partecipa",
"pbs": "Separazione proponente-sviluppatore",
"pools": "Staking in pool",
"privacy-policy": "Politica sulla privacy",
@@ -150,13 +275,15 @@
"refresh": "Ricarica la pagina.",
"return-home": "torna alla home",
"roadmap": "Roadmap di Ethereum",
+ "research": "Ricerca",
+ "research-menu": "Menu ricerca",
"resources": "Risorse di traduzione",
- "regenerative-finance": "Finanza Rigenerativa (ReFi)",
- "run-a-node": "Esegui un nodo",
+ "regenerative-finance": "ReFi - Finanza Rigenerativa",
+ "run-a-node": "Gestire un nodo",
"rollup-component-website": "Sito Web",
"rollup-component-developer-docs": "Documentazione per sviluppatori",
"rollup-component-technology-and-risk-summary": "Riepilogo su tecnologia e rischi",
- "scaling": "Scalabilità",
+ "scaling": "Ridimensionamento",
"saas": "Staking come servizio",
"search": "Ricerca",
"search-ethereum-org": "Cerca su ethereum.org",
@@ -164,10 +291,11 @@
"search-box-blank-state-text": "Pronti, partenza, cerca!",
"search-eth-address": "Questo sembrerebbe un indirizzo Ethereum. Non forniamo dati specifici per gli indirizzi. Prova a cercarlo su un esploratore di blocchi come",
"search-no-results": "Nessun risultato per questa ricerca",
+ "security": "Sicurezza",
"single-slot-finality": "Finalità del singolo slot",
"statelessness": "Assenza di stato",
"see-contributors": "Visualizza chi ha contribuito",
- "set-up-local-env": "Configura l'ambiente locale",
+ "set-up-local-env": "Configurare l'ambiente locale",
"sharding": "Sharding",
"show-all": "Mostra tutto",
"show-less": "Mostra meno",
@@ -181,6 +309,7 @@
"start-here": "Inizia da qui",
"style-guide": "Guida di stile",
"solo": "Staking in solo",
+ "support": "Supporto",
"terms-of-use": "Condizioni d'uso",
"translation-banner-body-new": "Stai visualizzando questa pagina in inglese perché non l'abbiamo ancora tradotta. Aiutaci a tradurre il contenuto.",
"translation-banner-body-update": "C'è una nuova versione di questa pagina, ma al momento è solo in inglese. Aiutaci a tradurre l'ultima versione.",
@@ -191,11 +320,14 @@
"translation-banner-no-bugs-title": "Nessun bug qui!",
"translation-banner-no-bugs-content": "Questa pagina non è stata tradotta. Per il momento, è stata intenzionalmente lasciata in inglese.",
"translation-banner-no-bugs-dont-show-again": "Non mostrare più",
+ "translation-program": "Programma di Traduzione",
"try-using-search": "Prova a utilizzare la ricerca per trovare ciò che stai cercando, o",
"tutorials": "Tutorial",
"up": "Su",
+ "use": "Usa",
"use-ethereum": "Usare Ethereum",
"use-ethereum-menu": "Usa menu Ethereum",
+ "use-menu": "Usa menu",
"user-experience": "Esperienza utente",
"verkle-trees": "Alberi di Verkle",
"wallets": "Portafogli",
@@ -203,7 +335,7 @@
"web3": "Cos'è il Web3?",
"web3-title": "Web3",
"website-last-updated": "Ultimo aggiornamento sito web",
- "what-is-ether": "Cos'è Ether (ETH)?",
+ "what-is-ether": "Cos'è ether (ETH)?",
"what-is-ethereum": "Cos'è Ethereum?",
"withdrawals": "Prelievi di staking",
"yes": "Sì",
diff --git a/src/intl/it/page-dapps.json b/src/intl/it/page-dapps.json
index 1ea13ab561b..4a7b3dea13e 100644
--- a/src/intl/it/page-dapps.json
+++ b/src/intl/it/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Trasmetti denaro in tempo reale.",
"page-dapps-dapp-description-superrare": "Acquista opere d'arte digitali direttamente dagli artisti, o nei mercati secondari.",
"page-dapps-dapp-description-token-sets": "Strategie di investimento in criptovalute, che si riequilibrano automaticamente.",
- "page-dapps-dapp-description-tornado-cash": "Invia transazioni anonime su Ethereum.",
"page-dapps-dapp-description-uniswap": "Scambia semplicemente token o fornisci token per ricompense in percentuale.",
"page-dapps-dapp-description-dexguru": "Un terminale di trading privo di custodia, per i trader della DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix è un protocollo per l'emissione e il trading di risorse sintetiche",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Si tratta di applicazioni incentrate sulla decentralizzazione degli strumenti per sviluppatori, incorporando sistemi criptoeconomici nella tecnologia esistente e creando mercati per il lavoro di sviluppo open source.",
"page-dapps-technology-title": "Tecnologia decentralizzata",
"page-dapps-token-sets-logo-alt": "Logo di Token Set",
- "page-dapps-tornado-cash-logo-alt": "Logo di Tornado Cash",
"page-dapps-uniswap-logo-alt": "Logo di Uniswap",
"page-dapps-wallet-callout-button": "Trova portafoglio",
"page-dapps-wallet-callout-description": "Anche i portafogli sono dapp. Trovane uno a seconda delle funzionalità adatte a te.",
diff --git a/src/intl/it/page-gas.json b/src/intl/it/page-gas.json
new file mode 100644
index 00000000000..01663f98856
--- /dev/null
+++ b/src/intl/it/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Commissioni sul gas di Ethereum: come funzionano?",
+ "page-gas-meta-description": "Approfondisci il gas su Ethereum: come funziona e come pagare meno in commissioni sul gas",
+ "page-gas-hero-title": "Commissioni sul gas",
+ "page-gas-hero-header": "Commissioni di rete",
+ "page-gas-hero-button-1-content": "Cos'è il gas?",
+ "page-gas-hero-subtitle-1": "Le commissioni della rete su Ethereum sono dette gas.",
+ "page-gas-hero-subtitle-2": "Il gas è il carburante che alimenta Ethereum.",
+ "page-gas-summary-title": "Riepilogo",
+ "page-gas-summary-item-1": "Ogni transazione su Ethereum richiede una piccola forma di pagamento per l'elaborazione",
+ "page-gas-summary-item-2": "Queste commissioni sono note come commissioni sul 'gas'",
+ "page-gas-summary-item-3": "Le commissioni sul gas cambiano a seconda della congestione di rete",
+ "page-gas-what-are-gas-fees-header": "Cosa sono le commissioni sul gas?",
+ "page-gas-what-are-gas-fees-text-1": "Pensa a Ethereum come a una grande rete di computer, in cui le persone possono svolgere mansioni, come inviare messaggi, o eseguire programmi. Proprio come nel mondo reale, queste mansioni richiedono energia per essere compiute.",
+ "page-gas-what-are-gas-fees-text-2": "Su Ethereum, ogni azione di calcolo ha un dato prezzo del \"gas\". Le tue commissioni sul gas sono il costo totale delle azioni nella tua transazione. Quando invii una transazione, o esegui un contratto intelligente, paghi in commissioni sul gas per elaborarla.",
+ "page-gas-how-do-i-pay-less-gas-header": "Come faccio a pagare meno gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "Sebbene talvolta le commissioni più alte su Ethereum siano inevitabili, esistono delle strategie che puoi utilizzare per ridurre il costo:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Esegui transazioni tempestive",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Proprio come viaggiare durante le ore di fuori picco è meno affollato e più economico, Ethereum è generalmente più economico da utilizzare quando il Nordamerica sta dormendo.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Attendi il calo del costo del gas",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "I prezzi del gas aumentano e diminuiscono ogni dodici secondi a seconda di quanto Ethereum è congestionato. Quando i prezzi del gas sono elevati, attendere alcuni minuti prima di effettuare una transazione potrebbe comportare un significativo calo in ciò che paghi.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Usa il livello 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Le catene di livello 2 sono basate su Ethereum, e offrono così commissioni inferiori e la gestione di più transazioni. Sono una buona scelta per risparmiare sulle commissioni per le transazioni che non devono sulla rete principale di Ethereum.",
+ "page-gas-try-layer-2": "Prova il livello 2",
+ "page-gas-what-causes-high-gas-fees-header": "Cosa causa le commissioni sul gas elevate?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Ogni volta che la quantità di calcolo (gas) su Ethereum supera una certa soglia, le commissioni sul gas iniziano a salire. Più il gas supera questa soglia, più rapidamente aumentano le commissioni sul gas.",
+ "page-gas-what-causes-high-gas-fees-text-2": "L’aumento delle commissioni maggiori potrebbe esser causato ad esempio da dapp popolari o NFT, scambi incrementati periodicamente sulle DEX, o una notevole attività degli utenti negli orari di punta.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Gli sviluppatori su Ethereum dovrebbero occuparsi dell'ottimizzazione dell'utilizzo dei propri contratti intelligenti, prima della loro distribuzione. Se molte persone utilizzano un contratto intelligente scritto male, consumerà più gas e potrebbe causare involontariamente la congestione della rete.",
+ "page-gas-want-to-dive-deeper": "Desideri approfondire?",
+ "page-gas-check-out-the-developer-docs": "Consulta le documentazioni per sviluppatori.",
+ "page-gas-attack-of-the-cryptokitties-header": "Attacco dei Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "A Novembre 2017 è stato lanciato il popolare progetto CryptoKitties. Il suo rapido picco di popolarità ha causato una significativa congestione della rete, e commissioni sul gas estremamente elevate. Le difficoltà poste da CryptoKitties hanno fatto emergere con maggiore urgenza la necessità di trovare soluzioni di ridimensionamento di Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Perché necessitiamo del gas?",
+ "page-gas-why-do-we-need-gas-text": "Il gas è un elemento critico per mantenere sicuro Ethereum ed elaborare le transazioni. Il gas aiuta in molti modi:",
+ "page-gas-benefits-1-description": "il gas consente a Ethereum di resistere agli attacchi Sybil, impedendo agli utenti malevoli di sopraffare la rete con attività fraudolente.",
+ "page-gas-benefits-2-description": "Poiché il calcolo costa del gas vi è un disincentivo finanziario a riempire Ethereum di transazioni costose, per errore o intenzionalmente.",
+ "page-gas-benefits-3-description": "Un limite rigido sulla quantità di calcolo eseguibile in una sola volta impedisce che Ethereum sia sopraffatto, contribuendo a garantire che la rete sia sempre accessibile.",
+ "page-gas-how-is-gas-calculated-header": "Com'è calcolato il gas?",
+ "page-gas-advanced": "Avanzate",
+ "page-gas-how-is-gas-calculated-text-1": "La commissione sul gas totale che paghi si compone di alcune parti:",
+ "page-gas-how-is-gas-calculated-item-1": "Commissione di base: una commissione impostata dalla rete che deve essere pagata per una transazione",
+ "page-gas-how-is-gas-calculated-item-2": "Commissione prioritaria: una mancia facoltativa per incentivare gli operatori del nodo a includere la tua transazione",
+ "page-gas-how-is-gas-calculated-item-3": "Unità di gas utilizzate*: ricordi che abbiamo detto che il gas rappresenta il calcolo? Azioni più complesse, come interagire con un contratto intelligente, consumano più gas di quelle semplici, come inviare una transazione.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* Vedi la Figura 1 per visualizzare quanto gas è utilizzato da diversi tipi di transazioni",
+ "page-gas-how-is-gas-calculated-text-2": "La formula per calcolare una commissione sul gas è unità di gas utilizzate * (commissione di base + commissione prioritaria). Gran parte dei portafogli calcolerà l'utilizzo del gas visualizzandolo in un modo più semplice.",
+ "page-gas-table-figure": "Figura 1: Gas utilizzato per tipo di transazione",
+ "page-gas-table-header-1": "Tipo di transazione",
+ "page-gas-table-header-2": "Unità di gas utilizzate",
+ "page-gas-table-item-1-transaction-type": "Inviare ETH",
+ "page-gas-table-item-2-transaction-type": "Inviare token ERC-20",
+ "page-gas-table-item-3-transaction-type": "Trasferimento e NFT",
+ "page-gas-table-item-4-transaction-type": "Scambio su Uniswap",
+ "page-gas-faq-header": "Domande frequenti",
+ "page-gas-faq-question-1-q": "Chi riceve la commissione sul gas nella mia transazione?",
+ "page-gas-faq-question-1-a-1": "Gran parte della commissione sul gas, la commissione di base, viene distrutta dal protocollo (bruciata). La commissione prioritaria, se inclusa nella tua transazione, sarà data al validatore che ha proposto la tua transazione.",
+ "page-gas-faq-question-1-a-2": "Puoi leggere una descrizione dettagliata del procedimento nella documentazione sul gas per sviluppatori.",
+ "page-gas-faq-question-2-q": "Devo pagare il gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Sì. Tutte le commissioni sul gas di Ethereum devono essere pagate nella valuta nativa ETH.",
+ "page-gas-faq-question-2-a-2": "Scopri di più su ETH",
+ "page-gas-faq-question-3-q": "Cos'è gwei?",
+ "page-gas-faq-question-3-a-1": "In gran parte dei portafogli o tracciatori di gas, vedrai i prezzi del gas denominati in 'gwei'.",
+ "page-gas-faq-question-3-a-2": "Gwei è semplicemente un'unità più piccola di ETH, proprio come i centesimi per gli euro, con la differenza che 1 ETH equivale a 1 miliardo di gwei. Gwei è utile quando si parla di importi molto ridotti di ETH.",
+ "page-gas-use-layer-2": "Usa il livello 2"
+}
diff --git a/src/intl/it/page-get-eth.json b/src/intl/it/page-get-eth.json
index a6b24466734..b779ee16d06 100644
--- a/src/intl/it/page-get-eth.json
+++ b/src/intl/it/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Le borse sono aziende che consentono di acquistare criptovalute usando valute tradizionali. Hanno la custodia su tutti gli ETH che acquisti fino a quando li invii a un portafoglio che controlli.",
"page-get-eth-checkout-dapps-btn": "Scopri le dapp",
"page-get-eth-community-safety": "Post della community sulla sicurezza",
- "page-get-eth-description": "Ethereum ed ETH non sono controllati da nessun governo o azienda, sono decentralizzati. Significa che gli ETH possono essere utilizzati da tutti.",
+ "page-get-eth-description": "Ethereum non è controllato da nessuna singola organizzazione - è decentralizzato.",
"page-get-eth-dex": "Borse decentralizzate (DEX)",
- "page-get-eth-dex-desc": "Se vuoi più controllo, compra ETH peer-to-peer. Con una DEX puoi acquistare e vendere senza dare a un'azienda centralizzata il controllo dei tuoi fondi.",
+ "page-get-eth-dex-desc": "Se desideri avere più controllo, compra ETH usando contratti intelligenti. Con DEX puoi scambiare risorse digitali senza mai dare il controllo dei tuoi fondi a un'azienda centralizzata.",
+ "page-get-eth-peers": "Ricevi ETH dai tuoi pari",
+ "page-get-eth-peers-desc": "Da quando avrai un conto di Ethereum, tutto quello che ti servirà è condividere il tuo indirizzo per cominciare a inviare e ricevere ETH (e altri token) tra pari.",
+ "page-get-eth-staking": "Ricompense di staking",
+ "page-get-eth-staking-desc": "Se possiedi già abbastanza ETH, puoi guadagnarne ulteriori gestendo un nodo validatore. Verrai pagato per fare questo lavoro di verifica in ETH.",
+ "page-get-eth-earn": "Ottieni ETH",
+ "page-get-eth-earn-desc": "Puoi ottenere ETH lavorando per DAO o aziende che pagano in criptovalute, vincendo ricompense, trovando bug del software e altro.",
+ "page-get-eth-daos-link-desc": "Scopri di più sulle DAO",
+ "page-get-eth-cex-link-desc": "Visualizza un elenco di borse",
+ "page-get-eth-staking-link-desc": "Maggior informazioni sullo staking",
"page-get-eth-dexs": "Borse decentralizzate (DEX)",
"page-get-eth-dexs-desc": "Le borse decentralizzate sono piazze aperte in cui scambiare ETH e altri token. Collegano direttamente acquirenti e venditori.",
"page-get-eth-dexs-desc-2": "Invece di sfruttare una terza parte attendibile per salvaguardare i fondi nella transazione, utilizzano il codice. L'ETH del venditore sarà trasferito solo quando il pagamento è garantito. Questo tipo di codice è noto come contratto intelligente.",
- "page-get-eth-dexs-desc-3": "Tutto questo significa che ci sono meno restrizioni geografiche rispetto alle alternative centralizzate. Se qualcuno vende ciò che cerchi e accetta un metodo di pagamento fornisci, puoi procedere. Con le DEX puoi acquistare ETH con altri token, Paypal o anche contanti di persona.",
+ "page-get-eth-dexs-desc-3": "Questo significa che ci sono minori restrizioni geografiche che con alternative centralizzate. Se qualcuno sta vendendo quello che desideri e accetta i metodi di pagamento che fornisci, sei pronto per andare avanti.",
"page-get-eth-do-not-copy": "Esempio: Non copiare",
"page-get-eth-exchanges-disclaimer": "Abbiamo raccolto questa informazione manualmente. Se trovi qualcosa di sbagliato, faccelo sapere:",
- "page-get-eth-exchanges-empty-state-text": "Inserisci il tuo paese di residenza per vedere una lista di portafogli e borse che puoi usare per acquistare ETH",
+ "page-get-eth-exchanges-empty-state-text": "Inserisci il tuo paese di residenza per vedere un elenco di borse che potresti essere in grado di utilizzare",
"page-get-eth-exchanges-except": "Eccetto",
"page-get-eth-exchanges-header": "In che paese vivi?",
"page-get-eth-exchanges-header-exchanges": "Borse",
"page-get-eth-exchanges-header-wallets": "Portafogli",
- "page-get-eth-exchanges-intro": "Borse e portafogli hanno restrizioni sul luogo di vendita delle criptovalute.",
+ "page-get-eth-exchanges-intro": "Le borse hanno delle restrizioni riguardo al luogo dove si possono vendere le criptovalute. Questo è un elenco indicativo di servizi concepiti per operare in ogni paese. L'inclusione in questo elenco non è necessariamente un'approvazione - Bisogna fare delle ricerche in proprio!",
"page-get-eth-exchanges-no-exchanges": "Siamo spiacenti, non conosciamo borse che ti permettano di acquistare ETH da questo paese. Se tu le conosci, faccelo sapere:",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Siamo spiacenti, non conosciamo borse o portafogli che ti permettano di acquistare ETH da questo paese. Se tu li conosci, faccelo sapere:",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Siamo spiacenti, non conosciamo borse che ti permettano di acquistare ETH da questo paese. Se tu le conosci, faccelo sapere:",
"page-get-eth-exchanges-no-wallets": "Siamo spiacenti, non conosciamo portafogli che ti permettano di acquistare ETH da questo paese. Se tu li conosci, faccelo sapere:",
"page-get-eth-exchanges-search": "Digita dove vivi...",
"page-get-eth-exchanges-success-exchange": "La registrazione a una borsa può richiedere diversi giorni a causa dei controlli legali da eseguire.",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Ottieni l'immagine dell'eroe di ETH",
"page-get-eth-keep-it-safe": "Proteggere i tuoi ETH",
"page-get-eth-meta-description": "Come acquistare ETH a seconda di dove vivi e consigli su come prendersene cura.",
- "page-get-eth-meta-title": "Come acquistare ETH",
+ "page-get-eth-meta-title": "Come ottenere ETH",
"page-get-eth-need-wallet": "Ti servirà un portafoglio per usare una DEX.",
"page-get-eth-new-to-eth": "Alle prime armi con ETH? Ecco una panoramica per muovere i primi passi.",
"page-get-eth-other-cryptos": "Acquista con altre criptovalute",
- "page-get-eth-protect-eth-desc": "Se prevedi di acquistare molti ETH, potresti volerli conservare in un portafoglio che controlli, anziché in una borsa. Questo perché una borsa potrebbe esser bersaglio di hacker. Se un hacker ottiene l'accesso, potresti perdere i tuoi fondi. Al contrario, solo tu puoi controllare il tuo portafoglio.",
- "page-get-eth-protect-eth-in-wallet": "Proteggi i tuoi ETH in un portafoglio",
+ "page-get-eth-protect-eth-desc": "Una delle caratteristiche principali di Ethereum è che si mantiene il controllo delle proprie risorse gestendo il proprio conto. Questo significa che non occorre affidare le proprie risorse a terze parti, e si è protetti dal fatto che un custode possa comportarsi in modo disonesto, fallire o venire hackerato. Tuttavia, comporta anche che bisogna assumersi la responsabilità per la propria sicurezza.",
+ "page-get-eth-protect-eth-in-wallet": "Tieni i tuoi ETH nel tuo portafoglio",
"page-get-eth-search-by-country": "Cerca per paese",
- "page-get-eth-security": "Ma questo significa anche che devi prendere sul serio la sicurezza dei tuoi fondi. Con ETH, non ti affidi a una banca perché controlli il tuo denaro, ti affidi a te stesso.",
+ "page-get-eth-security": "Questo significa che devi prendere sul serio la sicurezza dei tuoi fondi. Con ETH, non ti affidi a una banca o a un'azienda perché controlli le tue risorse, ti assumi la responsabilità per te stesso.",
"page-get-eth-smart-contract-link": "Di più sui contratti intelligenti",
"page-get-eth-swapping": "Scambia i tuoi token per gli ETH di altre persone. E viceversa.",
"page-get-eth-try-dex": "Prova una DEX",
"page-get-eth-use-your-eth": "Usa i tuoi ETH",
"page-get-eth-use-your-eth-dapps": "Ora che possiedi alcuni ETH, dai un'occhiata ad alcune applicazioni di Ethereum (dapp). Esistono dapp per la finanza, social media, videogiochi e molte di altre categorie.",
"page-get-eth-wallet-instructions": "Segui le istruzioni del portafoglio",
- "page-get-eth-wallet-instructions-lost": "Se perdi l'accesso al tuo portafoglio, perderai l'accesso ai tuoi fondi. Il tuo portafoglio dovrebbe darti le istruzioni per evitarlo. Assicurati di seguirle attentamente; in gran parte dei casi, nessuno può aiutarti se perdi l'accesso al tuo portafoglio.",
+ "page-get-eth-wallet-instructions-lost": "Se perdi l'accesso al tuo conto, perderai l'accesso ai tuoi fondi. Il tuo portafoglio dovrebbe darti le istruzioni per evitarlo. Assicurati di seguirle attentamente; in gran parte dei casi, nessuno può aiutarti se perdi l'accesso al tuo conto.",
"page-get-eth-wallets": "Portafogli",
"page-get-eth-wallets-link": "Di più sui portafogli",
"page-get-eth-wallets-purchasing": "Alcuni portafogli, ti consentono di acquistare criptovalute con una carta di debito/credito, bonifico bancario o persino Apple Pay. Si applicano le limitazioni geografiche.",
- "page-get-eth-warning": "Queste DEX non sono per principianti, poiché avrai bisogno di ETH per usarle.",
+ "page-get-eth-warning": "Queste DEX non sono per principianti, in quanto avrai bisogno di diversi ETH per usarle. Questi sono solo esempi, non prodotti approvati. Fai le tue ricerche!",
"page-get-eth-what-are-DEX's": "Cosa sono le DEX?",
"page-get-eth-whats-eth-link": "Cos'è l'ETH?",
- "page-get-eth-where-to-buy-desc": "Puoi acquistare ETH direttamente dalle borse o dai portafogli.",
+ "page-get-eth-where-to-buy-desc": "Puoi guadagnare ETH, riceverli dai tuoi pari o comprarli da borse e app.",
"page-get-eth-where-to-buy-desc-2": "Controlla quali servizi puoi usare in base al luogo in cui vivi.",
- "page-get-eth-where-to-buy-title": "Dove acquistare ETH",
+ "page-get-eth-where-to-buy-title": "Dove ottenere ETH",
"page-get-eth-your-address": "Il tuo indirizzo ETH",
"page-get-eth-your-address-desc": "Quando scarichi un portafoglio, ti verrà creato un indirizzo ETH pubblico, che si presenta così:",
"page-get-eth-your-address-desc-3": "Puoi considerarlo come un indirizzo email, su cui invece delle email riceverai ETH. Se vuoi trasferire ETH da una borsa al tuo portafoglio, usa questo indirizzo come destinazione. Controlla sempre due volte prima di confermare l'invio!",
diff --git a/src/intl/it/page-languages.json b/src/intl/it/page-languages.json
index 81c2c3ed1cf..0b72b87afba 100644
--- a/src/intl/it/page-languages.json
+++ b/src/intl/it/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Vuoi vedere ethereum.org in un'altra lingua?",
"page-languages-want-more-link": "Programma di Traduzione",
"page-languages-want-more-paragraph": "I traduttori di ethereum.org traducono continuamente le pagine in quante più lingue possibile. Per vedere a cosa stanno lavorando al momento o per iscriversi per unirsi a loro, leggi del nostro",
- "page-languages-filter-placeholder": "Filtro",
+ "page-languages-filter-label": "Elenco dei filtri",
+ "page-languages-filter-placeholder": "Digita per filtrare",
+ "page-languages-browser-default": "Impostazione predefinita Browser",
+ "page-languages-translated": "parole",
+ "page-languages-words": "tradotte",
+ "page-languages-recruit-community": "Aiutaci a tradurre ethereum.org.",
+ "langauge-am": "Amarico",
"language-ar": "Arabo",
"language-az": "Azero",
+ "langauge-be": "Bielorusso",
"language-bg": "Bulgaro",
"language-bn": "Bengali",
+ "language-bs": "Bosniaco",
"language-ca": "Catalano",
"language-cs": "Ceco",
"language-da": "Danese",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Croato",
"language-hu": "Ungherese",
+ "language-hy-am": "Armeno",
"language-id": "Indonesiano",
"language-ig": "Igbo",
"language-it": "Italiano",
@@ -39,12 +48,14 @@
"language-ka": "Georgiano",
"language-kk": "Kazako",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Coreano",
"language-lt": "Lituano",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malese",
"language-nb": "Norvegese",
+ "language-ne-np": "Nepalese",
"language-nl": "Olandese",
"language-pcm": "Pidgin nigeriano",
"language-fil": "Filippino",
@@ -58,8 +69,9 @@
"language-sl": "Sloveno",
"language-sr": "Serbo",
"language-sw": "Swahili",
- "language-th": "Thailandese",
"language-ta": "Tamil",
+ "language-th": "Thailandese",
+ "language-tk": "Turkmeno",
"language-tr": "Turco",
"language-uk": "Ucraino",
"language-ur": "Urdu",
diff --git a/src/intl/it/page-stablecoins.json b/src/intl/it/page-stablecoins.json
index f3ec5e69734..aae500f8acf 100644
--- a/src/intl/it/page-stablecoins.json
+++ b/src/intl/it/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Fonte",
"page-stablecoins-bitcoin-pizza": "La famigerata Pizza Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Nel 2010, qualcuno acquistò 2 pizze per 10.000 bitcoin. Al tempo, il valore era pari a circa $37 EUR. Nel mercato odierno, equivarrebbero a milioni di dollari. Esistono simili transazioni non proprio vantaggiose, nella storia di Ethereum. Le Stablecoin risolvono tale problema, così che possa goderti la tua pizza, senza perdere i tuoi ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Educazione",
"page-stablecoins-coin-price-change": "Variazione del prezzo della moneta (ultimi 30 giorni)",
"page-stablecoins-crypto-backed": "Sostenuti da criptovalute",
"page-stablecoins-crypto-backed-con-1": "Meno stabili delle Stablecoin sostenute da valute legali.",
diff --git a/src/intl/it/page-wallets-find-wallet.json b/src/intl/it/page-wallets-find-wallet.json
index 29796ae0a2c..c269f61cd81 100644
--- a/src/intl/it/page-wallets-find-wallet.json
+++ b/src/intl/it/page-wallets-find-wallet.json
@@ -81,7 +81,7 @@
"page-find-wallet-feature-filters": "Filtri di funzionalità",
"page-find-wallet-footnote-1": "I portafogli elencati su questa pagina non sono sponsorizzazioni ufficiali e sono messi a disposizione per soli scopi informativi.",
"page-find-wallet-footnote-2": "Le loro descrizioni sono state fornite dagli stessi progetti dei portafogli.",
- "page-find-wallet-footnote-3": "Aggiungiamo prodotti a questa pagina secondo i criteri nella nostra politica di elencazione. Se vorresti che aggiungessimo un portafoglio, apri un ticket su GitHub.",
+ "page-find-wallet-footnote-3": "Aggiungiamo prodotti a questa pagina secondo i criteri nella nostra politica di elencazione. Se vorresti che aggiungessimo un portafoglio, apri un ticket su GitHub.",
"page-find-wallet-mobile": "Mobile",
"page-find-wallet-mobile-desc": "Portafogli con app mobili",
"page-find-wallet-desktop": "Desktop",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Portafogli con estensioni per browser",
"page-find-wallet-device": "Dispositivo",
"page-find-choose-to-compare": "Seleziona per confrontare",
- "page-find-wallet-choose-features": "Seleziona le funzionalità"
+ "page-find-wallet-choose-features": "Seleziona le funzionalità",
+ "page-find-wallet-reset-filters": "Ripristina filtri"
}
diff --git a/src/intl/it/page-wallets.json b/src/intl/it/page-wallets.json
index c96fcf0ec5d..6a74e6c55e7 100644
--- a/src/intl/it/page-wallets.json
+++ b/src/intl/it/page-wallets.json
@@ -62,6 +62,6 @@
"page-wallets-your-ethereum-account-desc": "Il tuo portafoglio è la tua finestra al tuo conto Ethereum: il tuo saldo, lo storico delle transazioni e altro. Ma puoi cambiare fornitore dele portafoglio in qualsiasi momento.",
"page-wallets-your-login": "Il tuo login per le applicazioni Ethereum",
"page-wallets-your-login-desc": "Il tuo portafoglio ti consente di collegarti alle applicazioni usando il tuo conto Ethereum. È come un login che puoi utilizzare in molte applicazioni.",
- "additional-reading-how-to-create-an-ethereum-account": "Come creare un conto Ethereum",
+ "additional-reading-how-to-create-an-ethereum-account": "Come creare un conto di Ethereum",
"additional-reading-how-to-use-a-wallet": "Come utilizzare un portafoglio"
}
diff --git a/src/intl/ja/common.json b/src/intl/ja/common.json
index 3028892cb6d..e0e478f950c 100644
--- a/src/intl/ja/common.json
+++ b/src/intl/ja/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "アカウント抽象化",
"about-ethereum-org": "Ethereum.orgについて",
"about-us": "私たちについて",
+ "adding-desci-projects": "Desciプロジェクトの追加",
+ "adding-developer-tools": "デベロッパー向けツールの追加",
+ "adding-exchanges": "取引所の追加",
+ "adding-glossary-terms": "用語集への用語の追加",
+ "adding-layer-2s": "レイヤー2の追加",
+ "adding-products": "イーサリアムプロダクトの追加",
+ "adding-staking-products": "ステーキングプロダクトの追加",
+ "adding-wallets": "ウォレットの追加",
+ "account-abstraction": "アカウント抽象化",
+ "acknowledgements": "謝辞",
"aria-toggle-search-button": "検索ボタンの切り替え",
"aria-toggle-menu-button": "メニューボタンの切り替え",
"beacon-chain": "ビーコンチェーン",
"bridges": "ブロックチェーンブリッジ",
+ "bug-bounty": "バグ報奨金",
+ "build": "ビルド",
+ "build-menu": "ビルドメニュー",
"clear": "クリア",
"close": "閉じる",
"community": "コミュニティ",
"community-hub": "コミュニティハブ",
"community-menu": "コミュニティメニュー",
"contact": "お問い合わせ",
+ "content-buckets": "コンテンツバケット",
+ "content-resources": "コンテンツリソース",
"content-standardization": "コンテンツの標準化",
"contributing": "貢献",
"contributors": "貢献者",
@@ -20,17 +34,20 @@
"copied": "コピー済み",
"copy": "コピー",
"danksharding": "ダークシャーディング",
- "dao-page": "分散型自律組織(DAO)",
+ "dao-page": "DAO - 分散型自律組織",
"dark-mode": "ダーク",
"data-provided-by": "データソース:",
- "decentralized-applications-dapps": "分散型アプリケーション(dapps)",
+ "decentralized-applications-dapps": "Dapps - 分散型アプリケーション",
"decentralized-identity": "分散型アイデンティティ",
"decentralized-social-networks": "分散型ソーシャルネットワーク",
- "decentralized-science": "分散型サイエンス(DeSci)",
- "defi-page": "分散型金融(DeFi)",
+ "decentralized-science": "DeSci - 分散型サイエンス",
+ "description": "ナビゲーションアイテムの説明",
+ "defi-page": "DeFi - 分散型金融",
+ "design": "デザイン",
+ "design-principles": "デザイン原則",
"devcon": "Devcon",
"developers": "デベロッパー",
- "developers-home": "デベロッパーのホーム",
+ "developers-home": "開発者のホーム",
"docs": "ドキュメント",
"docsearch-to-select": "選択する",
"docsearch-to-navigate": "移動する",
@@ -51,7 +68,7 @@
"documentation": "ドキュメント",
"down": "下へ",
"ecosystem": "エコシステム",
- "edit-page": "ページ編集",
+ "edit-page": "ページを編集する",
"ef-blog": "イーサリアム・ファウンデーションブログ",
"eips": "イーサリアム改善の提案",
"energy-consumption": "イーサリアムのエネルギー消費",
@@ -63,7 +80,7 @@
"ethereum-bug-bounty": "イーサリアムバグ報奨金プログラム",
"consensus-when-shipping": "導入のタイミング",
"ethereum-upgrades": "イーサリアムのアップグレード",
- "ethereum-brand-assets": "イーサリアムブランドアセット",
+ "ethereum-brand-assets": "イーサリアムブランド資産",
"ethereum-online": "オンラインコミュニティ",
"ethereum-events": "イーサリアムイベント",
"ethereum-foundation": "イーサリアム・ファウンデーション",
@@ -94,11 +111,11 @@
"grants": "助成制度",
"grant-programs": "エコシステム助成プログラム",
"guides": "ガイド",
- "guides-hub": "ガイドハブ",
+ "guides-hub": "ハウツーガイド",
"history-of-ethereum": "イーサリアムの歴史",
"home": "ホーム",
"how-ethereum-works": "イーサリアムの仕組み",
- "how-to-register-an-ethereum-account": "イーサリアムアカウントの「登録」方法",
+ "how-to-create-an-ethereum-account": "イーサリアムアカウントの「開設」方法",
"how-to-revoke-token-access": "暗号資金へのスマートコントラクトのアクセスを無効にする方法",
"how-to-swap-tokens": "トークンの交換方法",
"how-to-use-a-bridge": "トークンをレイヤー2にブリッジする方法",
@@ -119,7 +136,7 @@
"learn-hub": "学習ハブ",
"learn-menu": "学習メニュー",
"learn-more": "もっと詳しく",
- "less": "より少なく",
+ "less": "少なく表示",
"light-mode": "ライト",
"listing-policy-disclaimer": "このページに掲載されている全てのプロダクトは、公式に推奨するものではなく、情報提供のみを目的としています。プロダクトの追加やポリシーに関するフィードバックをご希望の場合は、GitHubで問題を提起してください。",
"loading": "読み込み中",
@@ -128,11 +145,117 @@
"loading-error-try-again-later": "データをロードできません。後でもう一度お試しください。",
"logo": "ロゴ",
"mainnet-ethereum": "メインネット イーサリアム",
- "more": "もっと見る",
- "nav-developers": "デベロッパー",
+ "merge": "マージ",
+ "more": "さらに表示",
+ "nav-about-description": "イーサリアムコミュニティのためのパブリックオープンソースプロジェクト",
+ "nav-advanced-description": "さらに複雑なトピックについて学ぶ",
+ "nav-advanced-label": "上級者向け",
+ "nav-basics-description": "イーサリアムの基盤を理解する",
+ "nav-basics-label": "基本",
+ "nav-bridges-description": "Web3は、主要なL1ブロックチェーンとL2スケーリングソリューションのエコシステムに進化しました",
+ "nav-builders-home-description": "ビルダーによるビルダーのためのイーサリアムのビルダーマニュアル",
+ "nav-builders-home-label": "ビルダーのホーム",
+ "nav-contribute-description": "お手伝いいただける場合は、ここからその方法を確認できます",
+ "nav-contribute-label": "ethereum.orgに貢献する",
+ "nav-dao-description": "中央集権的な制御がない、メンバー所有のコミュニティ",
+ "nav-dapps-description": "イーサリアムを利用したエコシステムの豊富なアプリケーションを探索する",
+ "nav-defi-description": "従来の金融市場に代わる、グローバルで開かれた市場",
+ "nav-desci-description": "現在の科学的システムに代わる、グローバルで開かれたシステム",
+ "nav-desoc-description": "ソーシャル・インタラクションとコンテンツ作成のためのブロックチェーンベースのプラットフォーム",
"nav-developers-docs": "デベロッパー向け文書",
+ "nav-developers": "デベロッパー",
+ "nav-did-description": "独自の分散型識別子を発行し、所有する",
+ "nav-docs-description": "イーサリアムを理解し、イーサリアムを使ってビルドを行うためのヘルプドキュメント",
+ "nav-docs-design-description": "独自のWeb3デザインの課題、最善の方法、ユーザー検索のインサイトの説明",
+ "nav-docs-design-label": "UX/UIデザインの基礎",
+ "nav-docs-foundation-description": "イーサリアムで開発を行うための基本的な要点",
+ "nav-docs-foundation-label": "基礎的なトピック",
+ "nav-docs-overview-description": "デベロッパー向けドキュメントのホーム",
+ "nav-docs-stack-description": "イーサリアムスタックの全詳細を理解する",
+ "nav-docs-stack-label": "イーサリアムスタック",
+ "nav-eip-description": "新機能やプロセスを特定する基準",
+ "nav-eip-label": "EIP - イーサリアム改善提案",
+ "nav-emerging-description": "イーサリアムの他の新しいユースケースを知る",
+ "nav-emerging-label": "新たなユースケース",
+ "nav-enterprise-description": "イーサリアムのビジネスアプリケーション",
+ "nav-ethereum-org-description": "このウェブサイトはコミュニティが主導しています。ぜひ参加して貢献しましょう",
+ "nav-ethereum-wallets-description": "イーサリアムアカウントを使用してアプリで対話する",
+ "nav-events-description": "分散化、そして誰でも参加できる自由",
+ "nav-events-irl-description": "毎月、主要なイーサリアムイベントが対面およびオンラインで開催されています",
+ "nav-events-label": "コミュニティおよびイベント",
+ "nav-events-online-description": "数十万人のイーサリアム愛好家がこれらのオンラインコミュニティで集結します",
+ "nav-find-wallet-description": "ウォレットにより、暗号通貨が利用できるようになります",
+ "nav-find-wallet-label": "ウォレットを選ぶ",
+ "nav-gas-fees-description": "ETHトランザクションフィーはどのように計算されるか",
+ "nav-gas-fees-label": "ガス代",
+ "nav-get-eth-description": "イーサリアムアプリケーションを使用するにはEther (ETH)が必要です",
+ "nav-get-started-description": "イーサリアムの使用に向けた第1ステップ",
+ "nav-governance-description": "イーサリアムプロトコルのアップグレードに関連するプロセス",
+ "nav-governance-label": "ガバナンス",
+ "nav-grants-description": "コミュニティによって精選された、助成金プログラムを提供するプロジェクトリスト",
+ "nav-guide-create-account-description": "ウォレットアプリを使用すれば誰でもいつでも無料でEthereumアカウントを作成できます",
+ "nav-guide-create-account-label": "イーサリアムアカウントの開設方法",
+ "nav-guide-revoke-access-description": "Ethereumエコシステム内のスマートコントラクトやアプリケーションとのやり取り時には安全に注意してください",
+ "nav-guide-revoke-access-label": "スマートコントラクトのアクセスを取り消す方法",
+ "nav-guide-use-wallet-description": "ウォレットの基本機能をそれぞれ操作する方法を学ぶ",
+ "nav-guide-use-wallet-label": "ウォレットの使用方法",
+ "nav-guides-description": "使用開始準備のための段階的な実践ガイド",
+ "nav-guides-label": "ハウツーガイド",
+ "nav-history-description": "すべての主要なフォークとアップデートのタイムライン",
+ "nav-history-label": "イーサリアムの技術的な歴史",
+ "nav-layer-2-description": "より安く、より速いイーサリアムの取引",
+ "nav-learn-by-coding-description": "イーサリアムを試してみるのに役立つツール",
+ "nav-local-env-description": "イーサリアムの開発スタックを選択してセットアップする",
+ "nav-mainnet-description": "エンタープライズブロックチェーンアプリケーションは、パブリックのイーサリアムメインネット上で構築することができます",
+ "nav-nft-description": "イーサリアムベースのアセットとして、何か唯一無二なものを表現する方法",
+ "nav-open-research-description": "イーサリアムの主な強みの一つは、その活発な研究コミュニティです",
+ "nav-open-research-label": "オープンリサーチ",
+ "nav-overview-description": "イーサリアム教育に関して",
+ "nav-overview-label": "概要",
+ "nav-participate-overview-description": "参加方法の概要",
"nav-primary": "プライマリ",
- "nft-page": "非代替性トークン(NFT)",
+ "nav-private-description": "プライベードなエンタープライズ向けイーサリアムのデベロッパーリソース",
+ "nav-quizzes-description": "イーサリアムと仮想通貨の理解度をチェック",
+ "nav-quizzes-label": "あなたの理解度をテストする",
+ "nav-refi-description": "再生原理に基づく代替経済システム",
+ "nav-research-description": "イーサリアムをより良くするためのプロセス",
+ "nav-research-label": "研究・開発",
+ "nav-roadmap-description": "イーサリアムのスケーラビリティ、セキュリティ、サステナビリティを改善する工程",
+ "nav-roadmap-future-description": "イーサリアムを堅牢で分散型のネットワークとして確立させる",
+ "nav-roadmap-future-label": "未来のプルーフィング",
+ "nav-roadmap-label": "ロードマップ",
+ "nav-roadmap-scaling-description": "トランザクションコストをさらに削減し、処理速度を向上させるためのネットワーク更新",
+ "nav-roadmap-scaling-label": "より安価なトランザクション",
+ "nav-roadmap-security-description": "将来に向けてイーサリアムがあらゆる種類の攻撃に対して強靱であるようにする",
+ "nav-roadmap-security-label": "改善されたセキュリティ",
+ "nav-roadmap-ux-description": "イーサリアムの利用方法を簡素化する必要がある",
+ "nav-roadmap-ux-label": "ユーザーエクスペリエンスの向上",
+ "nav-run-a-node-description": "自分で完全にコントロールしつつ、ネットワークのセキュリティ向上に貢献する",
+ "nav-security-description": "暗号通貨を使用するときの最善の方法について学ぶ",
+ "nav-smart-contracts-description": "イーサリアムエコシステムの基本的な構築ブロック",
+ "nav-stablecoins-description": "ステーブルコインは、一定価値に保たれるように設計されたイーサリアムトークンです",
+ "nav-stake-description": "イーサリアムを保護して報酬を獲得",
+ "nav-stake-label": "ステーク",
+ "nav-staking-home-description": "ステーキングの異なるオプションの概要",
+ "nav-staking-home-label": "ステーキングホーム",
+ "nav-staking-pool-description": "他者と協力してETHをステーキングし、報酬を獲得する",
+ "nav-staking-pool-label": "ステーキングプール",
+ "nav-staking-saas-description": "サードパーティーのノードオペレータが、バリデータクライアントの運用を実施",
+ "nav-staking-saas-label": "サービスを利用してステーキングする",
+ "nav-staking-solo-description": "家庭用ハードウェアを稼働させ、イーサリアムネットワークのセキュリティと分散化に個人で貢献",
+ "nav-staking-solo-label": "ソロステーキング",
+ "nav-start-building-description": "初心者向けの有用な情報",
+ "nav-translation-program-description": "ethereum.orgをすべての言語に翻訳するための共同作業",
+ "nav-tutorials-description": "コミュニティチュートリアルの精選されたリスト",
+ "nav-use-cases-description": "イーサリアム利用のさまざまなアイデアを発見",
+ "nav-use-cases-label": "ユースケース",
+ "nav-what-is-ether-description": "イーサリアムアプリの通貨",
+ "nav-what-is-ethereum-description": "何がイーサリアムを特別なものにするのかを理解する",
+ "nav-what-is-web3-label": "Web3とは",
+ "nav-what-is-web3-description": "中央集権的な独占企業がルールを決定することに対する代替案",
+ "nav-whitepaper-description": "2014年にヴィタリック・ブテリンによって書かれたオリジナルのイーサリアムのホワイトペーパー",
+ "nav-zkp-description": "証明したい主張そのものを明らかにすることなく、主張の妥当性を証明する方法",
+ "nft-page": "NFT - 非代替性トークン",
"nfts": "NFT",
"no": "いいえ",
"on-this-page": "このページ",
@@ -140,6 +263,8 @@
"page-developers-aria-label": "開発者向けメニュー",
"page-index-meta-title": "ホーム",
"page-last-updated": "ページの最終更新日時",
+ "participate": "EIPへの参加",
+ "participate-menu": "参加メニュー",
"pbs": "プロポーザー/ビルダーセパレーション(PBS)",
"pools": "ステーキングプール",
"privacy-policy": "プライバシーポリシー",
@@ -150,8 +275,10 @@
"refresh": "ページを更新してください。",
"return-home": "ホームへ戻る",
"roadmap": "イーサリアムロードマップ",
+ "research": "リサーチ",
+ "research-menu": "リサーチメニュー",
"resources": "翻訳のリソース",
- "regenerative-finance": "再生金融(ReFi)",
+ "regenerative-finance": "ReFi - 再生金融",
"run-a-node": "ノードの運用",
"rollup-component-website": "ウェブサイト",
"rollup-component-developer-docs": "デベロッパー向け文書",
@@ -164,6 +291,7 @@
"search-box-blank-state-text": "検索!",
"search-eth-address": "これはイーサリアムのアドレスのようですが、アドレスに固有のデータは提供していません。etherscanのようなブロックエクスプローラーで検索してみてください。",
"search-no-results": "検索結果はありません。",
+ "security": "セキュリティ",
"single-slot-finality": "シングルスロット・ファイナリティ",
"statelessness": "ステートレス",
"see-contributors": "貢献者を表示",
@@ -172,7 +300,6 @@
"show-all": "すべて表示",
"show-less": "少なく表示",
"site-description": "イーサリアムは、お金と新しい種類のアプリケーションのためのグローバルな分散型プラットフォームです。 イーサリアムでは、お金を制御するコードを書くことができ、世界中のどこにいてもアクセス可能なアプリケーションを構築できます。",
- "site-title": "ethereum.org",
"skip-to-main-content": "メインコンテンツへスキップ",
"smart-contracts": "スマートコントラクト",
"stablecoins": "ステーブルコイン",
@@ -181,6 +308,7 @@
"start-here": "ここからスタート",
"style-guide": "スタイルガイド",
"solo": "ソロステーキング",
+ "support": "サポート",
"terms-of-use": "利用規約",
"translation-banner-body-new": "このページはまだ翻訳されていないため、英語で表示されています。このコンテンツの翻訳にご協力ください。",
"translation-banner-body-update": "このページの新しいバージョンがありますが、現在は英語のみです。最新バージョンの翻訳にご協力ください。",
@@ -191,11 +319,14 @@
"translation-banner-no-bugs-title": "ここにバグはありません!",
"translation-banner-no-bugs-content": "このページは翻訳されていないため、このページは英語で表示されています。",
"translation-banner-no-bugs-dont-show-again": "次回から表示しない",
+ "translation-program": "翻訳プログラム",
"try-using-search": "検索からお探しのものを検索してみてください。",
"tutorials": "チュートリアル",
"up": "上へ",
+ "use": "利用する",
"use-ethereum": "イーサリアムを使う",
"use-ethereum-menu": "イーサリアムのメニューを使用",
+ "use-menu": "利用メニュー",
"user-experience": "ユーザーエクスペリエンス",
"verkle-trees": "バークルツリー",
"wallets": "ウォレット",
diff --git a/src/intl/ja/page-dapps.json b/src/intl/ja/page-dapps.json
index 4e215a75af2..1bf4e09eda4 100644
--- a/src/intl/ja/page-dapps.json
+++ b/src/intl/ja/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "リアルタイムでお金をストリーミングします。",
"page-dapps-dapp-description-superrare": "アーティストまたは二次市場から直接デジタルアート作品を購入。",
"page-dapps-dapp-description-token-sets": "自動的にバランスを取る暗号投資戦略。",
- "page-dapps-dapp-description-tornado-cash": "イーサリアムで匿名のトランザクションを送信します。",
"page-dapps-dapp-description-uniswap": "トークンを交換するか、トークンを%の報酬で提供します。",
"page-dapps-dapp-description-dexguru": "DeFiトレーダー向けノンカストディアル取引ターミナル",
"page-dapps-dapp-description-synthetix": "Synthetixは、合成資産を発行・取引するためのプロトコル",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "これらのアプリケーションは、デベロッパーツールを分散化させ、暗号資産経済システムを既存の技術に統合し、オープンソース開発作業のための市場を作成します。",
"page-dapps-technology-title": "分散型テクノロジー",
"page-dapps-token-sets-logo-alt": "Token Setsロゴ",
- "page-dapps-tornado-cash-logo-alt": "Tornado cashロゴ",
"page-dapps-uniswap-logo-alt": "Uniswapロゴ",
"page-dapps-wallet-callout-button": "ウォレットを探す",
"page-dapps-wallet-callout-description": "ウォレットもdappsです。 自分に合った特徴に基づいて探してください。",
diff --git a/src/intl/ja/page-languages.json b/src/intl/ja/page-languages.json
index c2b3b685eb7..8819f7244d4 100644
--- a/src/intl/ja/page-languages.json
+++ b/src/intl/ja/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "ethereum.orgを他の言語で表示したいですか?",
"page-languages-want-more-link": "翻訳プログラム",
"page-languages-want-more-paragraph": "ethereum.orgの翻訳者は、常に可能なかぎり多くの言語の翻訳版を作成しています。翻訳作業の現在の進行状況や確認したい場合や、翻訳プロジェクトにサインアップしたい場合は、ethereum.orgの〜をお読みください",
- "page-languages-filter-placeholder": "フィルター",
+ "page-languages-filter-label": "フィルターリスト",
+ "page-languages-filter-placeholder": "フィルタータイプ",
+ "page-languages-browser-default": "ブラウザのデフォルト",
+ "page-languages-translated": "翻訳済",
+ "page-languages-words": "単語",
+ "page-languages-recruit-community": "ethereum.orgの翻訳にご協力ください。",
+ "langauge-am": "アムハラ語",
"language-ar": "アラビア語",
"language-az": "アゼルバイジャン語",
+ "langauge-be": "ベラルーシ語",
"language-bg": "ブルガリア語",
"language-bn": "ベンガル語",
+ "language-bs": "ボスニア語",
"language-ca": "カタロニア語",
"language-cs": "チェコ語",
"language-da": "デンマーク語",
@@ -32,6 +40,7 @@
"language-hi": "ヒンディー語",
"language-hr": "クロアチア語",
"language-hu": "ハンガリー語",
+ "language-hy-am": "アルメニア語",
"language-id": "インドネシア語",
"language-ig": "イボ語",
"language-it": "イタリア語",
@@ -39,12 +48,14 @@
"language-ka": "グルジア語",
"language-kk": "カザフ語",
"language-km": "クメール語",
+ "language-kn": "カンナダ語",
"language-ko": "韓国語",
"language-lt": "リトアニア語",
"language-ml": "マラヤーラム語",
"language-mr": "マラーティー語",
"language-ms": "マレー語",
"language-nb": "ノルウェー語",
+ "language-ne-np": "ネパール語",
"language-nl": "オランダ語",
"language-pcm": "ピジン語(ナイジェリア)",
"language-fil": "フィリピン語",
@@ -58,8 +69,9 @@
"language-sl": "スロベニア語",
"language-sr": "セルビア語",
"language-sw": "スワヒリ語",
- "language-th": "タイ語",
"language-ta": "タミル語",
+ "language-th": "タイ語",
+ "language-tk": "トルクメン語",
"language-tr": "トルコ語",
"language-uk": "ウクライナ語",
"language-ur": "ウルドゥー語",
diff --git a/src/intl/ja/page-stablecoins.json b/src/intl/ja/page-stablecoins.json
index dab0107e5b3..62c0d27f2f8 100644
--- a/src/intl/ja/page-stablecoins.json
+++ b/src/intl/ja/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "情報源",
"page-stablecoins-bitcoin-pizza": "悪名高いBitcoinピザ",
"page-stablecoins-bitcoin-pizza-body": "2010年、誰かが10,000ビットコインで2枚のピザを購入しました。当時、これらは~41ドルの価値がありました。今日の市場では数百万ドルです。Ethereumの歴史の中には、似たような残念なトランザクションが多くあります。ステーブルコインはこの問題を解決してくれるので、あなたはピザを楽しみながらETHを保持することができるのです。",
+ "page-stablecoins-category-dashboard-and-education": "ダッシュボード&教育",
"page-stablecoins-coin-price-change": "コインの価格変更(直近30日間)",
"page-stablecoins-crypto-backed": "暗号資産の裏付け",
"page-stablecoins-crypto-backed-con-1": "不換紙幣担保型のステーブルコインよりも低い安定性。",
diff --git a/src/intl/ja/page-upgrades-index.json b/src/intl/ja/page-upgrades-index.json
index c6c0245380a..083fb958f05 100644
--- a/src/intl/ja/page-upgrades-index.json
+++ b/src/intl/ja/page-upgrades-index.json
@@ -10,7 +10,7 @@
"consensus-client-teku-logo-alt": "Tekuロゴ",
"page-upgrades-answer-1": "ビーコンチェーンは、マージでイーサリアムメインネットをアップグレードするためのツールとして使用されました。",
"page-upgrades-answer-2": "マージはこれまでにない大規模なアップグレードとなり、プルーフ・オブ・ワークからプルーフ・オブ・ステークをベースとした新しいコンセンサスレイヤーへの移行が行われました。",
- "page-upgrades-answer-4": "ビーコンチェーンは、今日のプルーフ・オブ・ステークをベースとしたイーサリアムを開発するために使用されました。ビーコンチェーンは、イーサリアムメインネットとは別個に実行されたため、実環境での使用前に、デベロッパー達は分離した別環境で合意メカニズムを確認できました。",
+ "page-upgrades-answer-4": "ビーコンチェーンは、今日のプルーフ・オブ・ステークをベースとしたイーサリアムを開発するために使用されました。ビーコンチェーンは、実環境での使用前にデベロッパー達が分離した別環境で合意メカニズムを確認することができるように、イーサリアムメインネットとは別に実行されました。",
"page-upgrade-article-author-status": "ステータス",
"page-upgrade-article-author-ethmerge": "Ethmerge",
"page-upgrade-article-author-alchemy": "Alchemy",
@@ -18,10 +18,10 @@
"page-upgrade-article-author-delphi-digital": "Delphi Digital",
"page-upgrade-article-author-eip-4844": "Vitalik Buterin、Dankrad Feist、Diederik Loerakker、George Kadianakis、Matt Garnett、Mofi Taiwo",
"page-upgrade-article-author-ethereum-foundation": "イーサリアム・ファウンデーション",
- "page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin",
+ "page-upgrade-article-author-vitalik-buterin": "ヴィタリック・ブテリン",
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
"page-upgrade-article-title-two-point-oh": "2.0: ビーコンチェーン",
- "page-upgrade-article-title-beacon-chain-explainer": "ビーコンチェーン イーサリアム2.0を最初に読んでください",
+ "page-upgrade-article-title-beacon-chain-explainer": "ビーコンチェーン イーサリアム2.0をまずお読みください",
"page-upgrade-article-title-sharding-consensus": "シャーディング・コンセンサス",
"page-upgrade-article-title-sharding-is-great": "シャーディングのメリット: テクニカルな特性",
"page-upgrade-article-title-rollup-roadmap": "ロールアップを中心としたロードマップ",
@@ -37,7 +37,7 @@
"page-upgrade-article-title-consensus-layer-specs": "コンセンサスレイヤーの仕様",
"page-upgrade-article-title-engine-api-specs": "Engine APIの仕様",
"page-upgrades-beacon-chain-date": "ビーコンチェーンは2020年12月1日に稼働",
- "page-upgrades-beacon-chain-desc": "ビーコンチェーンによってイーサリアムはステーキングできるようになり、将来のアップグレードの基礎を築きました。現在ビーコンチェーンは、新しいプルーフ・オブ・ステークのイーサリアムを調整しています。",
+ "page-upgrades-beacon-chain-desc": "ビーコンチェーンによってイーサリアムはステーキングができるようになり、将来のアップグレードの基盤を築きました。これにより、新しいプルーフ・オブ・ステークを備えたイーサリアムを調整しています。",
"page-upgrades-beacon-chain-estimate": "ビーコンチェーンの稼働",
"page-upgrades-beacon-chain-title": "ビーコンチェーン",
"page-upgrades-bug-bounty": "バグ報奨金プログラムを見る",
@@ -46,61 +46,61 @@
"page-upgrades-dive": "ビジョンに関する詳細",
"page-upgrades-dive-desc": "分散化というイーサリアムのコアとなる概念を維持しながら、 イーサリアムをよりスケーラブルで安全で持続可能なものにする。",
"page-upgrades-docking": "マージ",
- "page-upgrades-merge-answer-1": "マージは、イーサリアムが2022年9月15日にプルーフ・オブ・ステークに移行したときのことです。ビーコンチェーンがメインネットにマージされ、イーサリアムで正式にプルーフ・オブ・ワークが廃止されました。これにより、イーサリアムのエネルギー消費量が約99.95%削減されました。",
+ "page-upgrades-merge-answer-1": "マージは、イーサリアムが2022年9月15日にプルーフ・オブ・ステークに移行したときに行われました。ビーコンチェーンがメインネットにマージされ、イーサリアムで正式にプルーフ・オブ・ワークが廃止されました。これにより、イーサリアムのエネルギー消費量が約99.95%削減されました。",
"page-upgrades-merge-btn": "マージの詳細",
- "page-upgrades-merge-desc": "メインネットイーサリアムは、プルーフ・オブ・ステークのビーコンチェーンと「マージ」し、エネルギー集約型のマイニングの終焉となりました。",
+ "page-upgrades-merge-desc": "メインネットイーサリアムは、プルーフ・オブ・ステークのビーコンチェーンとマージし、エネルギー集約型のマイニングは終焉を迎えました。",
"page-upgrades-merge-estimate": "マージ完了",
- "page-upgrades-merge-mainnet": "メインネットとは",
+ "page-upgrades-merge-mainnet": "メインネットとは?",
"page-upgrades-eth-blog": "ethereum.orgのブログ",
"page-upgrades-explore-btn": "アップグレードの探索",
"page-upgrades-get-involved": "イーサリアムのアップグレードへの参加",
- "page-upgrades-get-involved-2": "参加",
+ "page-upgrades-get-involved-2": "参加しましょう",
"page-upgrades-head-to-ethresearch": "ethresear.chへ移動",
- "page-upgrades-help": "イーサリアムのアップグレードへの貢献",
+ "page-upgrades-help": "イーサリアムのアップグレードに貢献したい場合",
"page-upgrades-help-desc": "イーサリアムのアップグレードに関する意見を述べたり、テストを手伝ったり、さらには報酬を得る機会も沢山あります。",
"page-upgrades-index-staking": "ステーキングはこちら",
"page-upgrades-index-staking-desc": "イーサリアムのアップグレードの鍵となるのが、ステーキングの導入です。イーサリアムネットワークのセキュリティ向上のためにETHをステーキングしたい場合は、以下の手順に従ってください。",
"page-upgrades-index-staking-learn": "ステーキングについて学ぶ",
- "page-upgrades-index-staking-learn-desc": "ビーコンチェーンにより、ステーキングできるようになりました。ETHをお持ちの場合、ステーキングしネットワークのセキュリティ確保に貢献することで、ETHの報酬を獲得できます。",
- "page-upgrades-index-staking-step-1": "1. ランチパッドのセットアップ",
+ "page-upgrades-index-staking-learn-desc": "ビーコンチェーンにより、ステーキングが可能になりました。ETHをお持ちの場合は、ネットワークのセキュリティ確保に貢献することで、ETHの報酬を獲得できます。",
+ "page-upgrades-index-staking-step-1": "1. ランチパッドを利用したセットアップ",
"page-upgrades-index-staking-step-1-btn": "ステーキング・ランチパッドにアクセス",
- "page-upgrades-index-staking-step-1-desc": "イーサリアムでステーキングするには、手順を段階を追って案内するランチパッドを使用する必要があります。",
+ "page-upgrades-index-staking-step-1-desc": "イーサリアムでステーキングするには、ランチパッドを使用し、手順を追う必要があります。",
"page-upgrades-index-staking-step-2": "2. ステーキングアドレスの確認",
"page-upgrades-index-staking-step-2-btn": "デポジットコントラクトアドレスの確認",
- "page-upgrades-index-staking-step-2-desc": "ETHをステーキングする前に、必ずデポジット先のアドレスが正しいことを確認してください。これを行う前に、ランチパッドをセットアップしている必要があります。",
+ "page-upgrades-index-staking-step-2-desc": "ETHをステーキングする前に、必ずデポジット先のアドレスが正しいことを確認してください。この前に、ランチパッドをセットアップが完了していることも確認してください。",
"page-upgrades-index-staking-sustainability": "持続可能性",
- "page-upgrades-meta-desc": "イーサリアムのアップグレードと実現を望むビジョン。",
+ "page-upgrades-meta-desc": "イーサリアムのアップグレードの概要と実現したいビジョン。",
"page-upgrades-meta-title": "イーサリアムのアップグレード(旧称「Eth2」)",
"page-upgrades-proof-stake-link": "プルーフ・オブ・ステークの詳細",
- "page-upgrades-question-1-title": "アップグレードの時期",
+ "page-upgrades-question-1-title": "アップグレードされる時期はいつですか?",
"page-upgrades-question-1-desc": "イーサリアムは徐々にアップグレードを積み重ねており、それぞれのアップグレードが行われる日付は異なります。",
- "page-upgrades-question-2-title": "ビーコンチェーンは独立したブロックチェーンか",
- "page-upgrades-question-2-desc": "はい。ビーコンチェーンとは、プルーフ・オブ・ステークブロックチェーンに付けられた名前で、イーサリアムメインネットをアップグレードに向けて、メインネットで同時に並列して稼働していました。現在は、元のイーサリアムブロックチェーンがビーコンチェーンと統合されたため、ブロックチェーンは一つだけです。",
- "page-upgrades-question-3-answer-2a": "マージによる分散型アプリ(Dapp)デベロッパーへの影響はほとんどなく、これまでと同様にイーサリアムを利用できています。",
+ "page-upgrades-question-2-title": "ビーコンチェーンは独立したブロックチェーンですか?",
+ "page-upgrades-question-2-desc": "はい。ビーコンチェーンとは、プルーフ・オブ・ステークのブロックチェーンに付けられた名前で、イーサリアムメインネットのアップグレードに向けて、メインネットで同時に並列して稼働していました。現在は、元のイーサリアムブロックチェーンがビーコンチェーンと統合されたため、ブロックチェーンは一つだけです。",
+ "page-upgrades-question-3-answer-2a": "マージによる分散型アプリ(Dapp)デベロッパーへの影響はほとんどなく、これまでと同様にイーサリアムを使用できています。",
"page-upgrades-question-3-answer-2a-link": "マージと分散型アプリ(Dapp)のデベロッパー",
"page-upgrades-question-3-answer-2b": "シャーディングの計画はまだ策定中ですが、レイヤー2のロールアップを念頭に置いて設計される予定です。",
"page-upgrades-layer-2-rollups": "レイヤー2ロールアップの詳細",
"page-upgrades-question-3-answer-3-link": "ethresear.chを訪問",
"page-upgrades-question-3-desc": "アップグレードの準備を今すぐに始める必要はありません。",
- "page-upgrades-question-3-title": "アップグレードの準備",
+ "page-upgrades-question-3-title": "アップグレードの準備をするには何をすればいいですか?",
"page-upgrades-question-4-answer-1": "トランザクションを送信したり、分散型アプリ(Dapp)を使用するたびに、メインネットとも呼ばれる実行レイヤーを使用しています。",
"page-upgrades-question-4-answer-3": "マージ以降、プルーフ・オブ・ステークにより、バリデータがネットワーク全体を保護しています。",
"page-upgrades-question-4-answer-6": "ETHをステーキングすることで誰でもバリデータになることができます。",
- "page-upgrades-question-4-answer-7": "ステーキングの詳細",
- "page-upgrades-question-4-title": "実行レイヤーとは",
- "page-upgrades-question-4-desc": "マージ前には、イーサリアムブロックチェーンは「Eth1」と呼ばれましたが、段階的に名称が「実行レイヤー」に変更されました。",
+ "page-upgrades-question-4-answer-7": "ステークの詳細",
+ "page-upgrades-question-4-title": "実行レイヤーとは何ですか?",
+ "page-upgrades-question-4-desc": "マージ前には、イーサリアムブロックチェーンは「Eth1」とも呼ばれていましたが、徐々に「実行レイヤー」へと変わっていきました。",
"page-upgrades-question-5-answer-1": "ネットワークのバリデータになるためには、32 ETHをステーキングする必要があります。それほど多くの資金を保有していない場合やそれほど多くの資金をステーキングしたくない場合は、ステークキングプールに参加することができます。このプールに参加することで、より少ない金額で報酬総額の一部を得ることができます。",
"page-upgrades-question-5-desc": "ステーキングにはランチパッドを使用するか、ステーキングプールに参加する必要があります。",
"page-upgrades-question-5-title": "ステーキング方法",
"page-upgrades-question-6-answer-3": "イーサリアム・ファウンデーションのDanny Ryanは定期的に情報を更新しています:",
"page-upgrades-question-6-answer-4": "ConsenSysのBen Edgingtonは、イーサリアムのアップグレードに関する週刊ニュースレターを発行しています:",
"page-upgrades-question-6-answer-5": "または、ethresear.chでイーサリアムの研究開発に関する議論に参加することもできます。",
- "page-upgrades-question-6-title": "分散型アプリ(Dapp)への影響",
- "page-upgrades-question-6-desc": "マージは、分散型アプリ(Dapp)デベロッパーにほとんど影響がないように設計されましたが、注意すべき小さな変更点がいくつかありました。",
- "page-upgrades-question-6-answer-1": "マージ前のイーサリアムをご存じの分散型アプリ(Dapp)デベロッパーは、いくつかの変更点に注意する必要があります。ブロック構造とタイミング、いくつかのオペコードの変更、オンチェーンランダムネスのソース、およびエポックファイナライズのコンセプトが変更されています。",
+ "page-upgrades-question-6-title": "分散型アプリ(Dapp)では何をする必要がありますか?",
+ "page-upgrades-question-6-desc": "マージは、分散型アプリ(Dapp)デベロッパーにほとんど影響を及ぼさないように設計されましたが、注意すべき小さな変更点がいくつかありました。",
+ "page-upgrades-question-6-answer-1": "マージ前のイーサリアムをご存じの分散型アプリ(Dapp)デベロッパーは、ブロック構造とタイミング、いくつかのオペコードの変更、オンチェーンランダムネスのソース、およびエポックのファイナライズのコンセプトといったいくつかの変更点に注意する必要があります。",
"page-upgrades-question-6-answer-1-link": "マージがイーサリアムのアプリケーションレイヤーに与えた影響",
"page-upgrades-question-6-answer-2": "アプリケーションに影響はほとんどありませんでした。",
- "page-upgrades-question-7-desc": "コミュニティの多くの異なるチームが、さまざまなイーサリアムのアップグレードに取り組んでいます。",
+ "page-upgrades-question-7-desc": "コミュニティ中の多くの異なるチームが、さまざまなイーサリアムのアップグレードに取り組んでいます。",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Rustの実装)",
"page-upgrades-question-7-lodestar": "Lodestar",
@@ -115,37 +115,37 @@
"page-upgrades-question-7-title": "イーサリアムのアップグレードを構築しているのは誰ですか?",
"page-upgrades-question-7-clients": "イーサリアムクライアントについてもっと詳しく学ぶ",
"page-upgrades-question-8-answer-1": "イーサリアムのアップグレードは、セキュリティを維持し、持続可能性を向上させながら、分散化した方法でイーサリアムがスケーリングするのに役立ちます。",
- "page-upgrades-question-8-answer-2": "最も明らかな問題は、イーサリアムが1秒間に15~45件以上のトランザクションを処理できる能力が必要なことです。しかし、アップグレードにより、現在のイーサリアムが持つ他のいくつかの課題にも対処します。",
- "page-upgrades-question-8-answer-3": "ネットワークの需要が非常に高いときには、イーサリアムの使用が高額になってしまいます。ネットワークのノードは、イーサリアムの規模とコンピュータが処理しなければならないデータ量に苦戦しています。また、イーサリアムのセキュリティと分散化の基盤となる元のアルゴリズムは、エネルギー集約型であったので、より環境に優しいものにする必要がありました。",
+ "page-upgrades-question-8-answer-2": "最も明らかな問題は、イーサリアムが1秒間に15~45件以上のトランザクションを処理する必要があることです。しかし、アップグレードにより、現在のイーサリアムが持つ他のいくつかの課題にも対処します。",
+ "page-upgrades-question-8-answer-3": "ネットワークの需要が非常に高いときには、イーサリアムの使用が高額になってしまいます。ネットワークのノードは、イーサリアムの規模とコンピュータが処理しなければならないデータ量への対応に苦戦しています。また、イーサリアムのセキュリティと分散化の基盤となる元のアルゴリズムはエネルギー集約型だったことから、より環境に優しいものにする必要がありました。",
"page-upgrades-question-8-answer-4": "これらの変更の多くは、2015年からずっとイーサリアムのロードマップにあったものですが、現在の状況によりアップグレードの必要性がさらに高まっています。",
"page-upgrades-question-8-answer-6": "イーサリアムのビジョンの探索",
- "page-upgrades-question-8-desc": "現在のイーサリアムは、エンドユーザーとネットワーク参加者のエクスペリエンスを改善する必要があります。",
- "page-upgrades-question-8-title": "アップグレードが必要な理由",
+ "page-upgrades-question-8-desc": "現在のイーサリアムでは、エンドユーザーとネットワーク参加者のエクスペリエンスを改善する必要があります。",
+ "page-upgrades-question-8-title": "アップグレードが必要な理由はなんですか?",
"page-upgrades-question-9-answer-1": "もっともアクティブに活躍するには、ETHをステーキングすることです。",
"page-upgrades-question-9-answer-2": "また、クライアントの多様性を向上させるために、第2のクライアントを実行することもできます。",
- "page-upgrades-question-9-answer-3": "テクニカルに長けた方の場合は、新しいクライアントのバグを探すのをサポートすることができます。",
+ "page-upgrades-question-9-answer-3": "より技術力の高い方は、新規クライアントのバグを見つけるサポートをすることができます。",
"page-upgrades-question-9-answer-4": "ethresear.chでイーサリアムの研究者とのテクニカルな議論に参加することもできます。",
"page-upgrades-question-9-desc": "貢献するのにテクニカルなスキルが必要なわけではありません。コミュニティでは、あらゆる種類のスキルセットからの貢献を募っています。",
"page-upgrades-question-9-stake-eth": "ETHのステーキング",
- "page-upgrades-question-9-title": "イーサリアムのアップグレードへの貢献方法",
- "page-upgrades-question-9-more": "イーサリアムに参加する一般的な方法を見つける",
- "page-upgrades-question-10-title": "「Eth2フェーズ」とは",
- "page-upgrades-question-10-desc": "いくつかのことが変わりました。",
- "page-upgrades-question-10-answer-0": "単一のアップグレードや新しいネットワークを表すものではないため、「Eth2」という名称そのものが段階的に廃止されています。実際のところアップグレードは、イーサリアムをよりスケーラブルで、安全で、持続可能なものにするための複数のアップグレードからなります。皆さまがすでにご存知で大好きなネットワークは、ただ単に「イーサリアム」と呼ばれます。",
- "page-upgrades-question-10-answer-1": "テクニカルなロードマップに関しては、これがソフトウェアであり、状況が変化する可能性があるため、あまり話をしたくはありません。また、結果を読んだほうが何が起こっているのかを理解しやすいと考えています。",
+ "page-upgrades-question-9-title": "イーサリアムのアップグレードに貢献するどうすればいいですか?",
+ "page-upgrades-question-9-more": "イーサリアムに参加するためのさらに一般的な方法を見つける",
+ "page-upgrades-question-10-title": "「Eth2フェーズ」とは?",
+ "page-upgrades-question-10-desc": "ここでいくつか変化がありました。",
+ "page-upgrades-question-10-answer-0": "「Eth2」は、単一のアップグレードや新しいネットワークを表すものではないため、その名称そのものが徐々に廃止されています。正確には、イーサリアムをよりスケーラブルで、安全で、持続可能なものにするためにそれぞれ役割を持つ複数のアップグレードのことを指します。皆さまがご存知で愛用いただいているネットワークは、シンプルに「イーサリアム」と呼ばれることになります。",
+ "page-upgrades-question-10-answer-1": "技術ロードマップに関しては、これがソフトウェアであり、常に状況が変化する可能性があることから、あまり説明をしたくはありません。それに、結果を読んだほうが何が起こっているのかを理解しやすいと考えています。",
"page-upgrades-question-10-answer-1-link": "アップグレードを見る",
- "page-upgrades-question-10-answer-2": "これまでに議論をフォローしてきてい場合に備えて、アップグレードがテクニカルなロードマップにどのように適合し、変化してきているかをここで紹介します。",
- "page-upgrades-question-10-answer-3": "フェーズ0は、ビーコンチェーンを稼働するための作業でした。",
- "page-upgrades-question-10-answer-5": "フェーズ1では、本来シャードチェーンの実装に焦点を当てていましたが、優先順位が2022年9月15日にリリースされた「マージ」に変更されました。",
- "page-upgrades-question-10-answer-6": "フェーズ1.5では、もともと、シャード実装の後、ビーコンチェーンの最後のシャードとしてメインネットが追加されるときに予定されていました。しかし、ロールアップ技術の進化に伴い、イーサリアムコミュニティにより、プルーフ・オブ・ワークからの移行が優先させました。",
+ "page-upgrades-question-10-answer-2": "とはいえ、これまでの議論をフォローされてきた方には、アップグレードが技術ロードマップにどのように適合し、変化してきているかをここで紹介しましょう。",
+ "page-upgrades-question-10-answer-3": "フェーズ0は、ビーコンチェーンを稼働させるための作業でした。",
+ "page-upgrades-question-10-answer-5": "フェーズ1では、本来シャードチェーンの実装に焦点を当てていましたが、その優先順位は2022年9月15日にリリースされた「マージ」に移りました。",
+ "page-upgrades-question-10-answer-6": "フェーズ1.5は、もともとシャード実装の後にビーコンチェーンの最後のシャードとしてメインネットが追加されるときに実行が予定されていました。しかし、ロールアップ技術の進化に伴い、イーサリアムコミュニティは、プルーフ・オブ・ワークからの移行を優先させることになりました。",
"page-upgrades-question-10-answer-7": "フェーズ2の計画については、熱心な研究と議論が繰り返されてきました。マージを経て、レイヤー2ソリューションの進歩により、ロールアップの効率を最大化させるため、目標がより簡素化された形式のデータシャーディングを提供することに変わりました。現在のレイヤー2はトランザクションの実行をスケーリングでき、シャーディングはこのデータのプルーフを安価でスケーラブルな方法でレイヤー1に保存することを可能にします。",
"page-upgrades-question-10-answer-8": "ロールアップを中心としたロードマップの詳細",
- "page-upgrades-question-11-title": "Eth2の購入について",
- "page-upgrades-question-11-desc": "Eth2というトークンはなく、マージ後もお持ちのETHに変更はありません。",
- "page-upgrades-question-11-answer-1": "Eth2の名称が変更された理由の一つには、マージ後、または他のアップグレードにより、ETH保有者が「ETH」から「ETH2.0」へ移行する必要があるという誤解が広がったためです。これは真実ではなく、お持ちのETHを変更、移行する必要は一切ありません。",
- "page-upgrades-question-11-answer-2": "この誤解が詐欺の手口として使われていますので、ご注意ください。",
+ "page-upgrades-question-11-title": "Eth2を購入することはできますか?",
+ "page-upgrades-question-11-desc": "いいえ。Eth2というトークンはなく、マージ後もお持ちのETHに変更はありません。",
+ "page-upgrades-question-11-answer-1": "Eth2の名称が変更された理由の一つは、マージ後や他のアップグレードにより、ETH保有者が「ETH」から「ETH2.0」へ移行する必要があるという誤解が広がったためです。こういう事実はなく、お持ちのETHを変更、移行する必要は一切ありません。",
+ "page-upgrades-question-11-answer-2": "この誤解が頻繁に詐欺の手口として使われていますので、ご注意ください。",
"page-upgrades-question-title": "よくある質問",
- "page-upgrades-question3-answer-1": "ETHの保有者は何も対応する必要はなく、ETHの交換やアップグレードの必要もありません。何かをしないといけない言われた場合は、ほぼ確実に詐欺のためご注意ください。",
+ "page-upgrades-question3-answer-1": "ETH保有者は何の対応も行う必要はありません。ETHの取引やアップグレードの必要もありません。対応を求められた場合は、ほぼ詐欺ですので、ご注意ください。",
"page-upgrades-scalable": "よりスケーラブルに",
"page-upgrades-scalable-desc": "アプリケーションをより速く、より安価で利用できるようにするには、イーサリアムは1秒間に何千件ものトランザクション量に対応できる必要があります。",
"page-upgrades-secure": "よりセキュアに",
@@ -178,18 +178,18 @@
"page-upgrades-what-happened-to-eth2-1": "「Eth2」という用語は、マージ前に一般的に使用されていましたが、より正確な用語が好ましいため段階的に廃止されています。",
"page-upgrades-what-happened-to-eth2-1-more": "マージの詳細",
"page-upgrades-what-happened-to-eth2-2": "「Eth1」と「Eth2」が統合された今では、2つの異なるイーサリアムブロックチェーンがあるのではなく、イーサリアムだけが存在します。",
- "page-upgrades-what-happened-to-eth2-3": "混乱をなくすため、これらの名称が変更になりました:",
- "page-upgrades-what-happened-to-eth2-3-1": "「Eth1」は「実行レイヤー」と名称が変わり、これはトランザクションと実行を処理するものです。",
- "page-upgrades-what-happened-to-eth2-3-2": "「Eth2」は「コンセンサスレイヤー」になり、プルーフ・オブ・ステークのコンセンサスを処理します。",
+ "page-upgrades-what-happened-to-eth2-3": "混乱をなくすため、次の名称が変更になりました。",
+ "page-upgrades-what-happened-to-eth2-3-1": "「Eth1」は「実行レイヤー」と名称が変わり、これはトランザクションと実行を処理するレイヤーです。",
+ "page-upgrades-what-happened-to-eth2-3-2": "「Eth2」は「コンセンサスレイヤー」となり、プルーフ・オブ・ステークのコンセンサスを処理するレイヤーです。",
"page-upgrades-what-happened-to-eth2-4": "これらの用語の変更は、単に名称を変更するだけのものであり、イーサリアムの目標やロードマップには影響を及ぼしません。",
"page-upgrades-what-happened-to-eth2-5": "「Eth2」名称変更の詳細",
"page-upgrades-why-cant-we-just-use-eth2-title": "名称の変更理由",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "メンタルモデル",
- "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Eth2ブランディングの大きな問題の1つには、イーサリアムの新規ユーザーが誤った印象を抱きかねないことです。新規ユーザーは、直感的にEth1が最初で、Eth2が後発のものと思い込んでしまう可能性があります。 また、Eth2の出現によりEth1がなくなると誤解されるおそれもあります。 これらの両方ともに正しくなく、 Eth2という名称を廃止することで、今後こういった紛らわしい誤解をなくすことを意図しています。",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Eth2ブランディングの大きな問題の1つは、イーサリアムの新規ユーザーが誤った印象を抱くかもしれないことです。新規ユーザーは、直感的にEth1が最初で、Eth2が後発のものと思い込んでしまう可能性があります。 また、Eth2の出現によりEth1がなくなると誤解されるおそれもあります。 これらはどちらも間違っており、 Eth2という名称を廃止することで、今後こういった紛らわしい誤解をなくしていきます。",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "包括性",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "イーサリアムのロードマップが進化するにつれて、「イーサリアム2.0」という表現は不正確なものになりました。 名称を慎重かつ正確に選ぶことで、イーサリアムのコンテンツを出来るだけ幅広い人に理解されることを目的としています。",
"page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "詐欺防止",
- "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "残念なことに、「ETHをETH2トークンと交換する必要がある」、または「Eth2アップグレード前にETHを移行する必要がある」といった詐欺が横行しました。名称を改めることにより、このような詐欺を一掃し、エコシステムをより安全にすることを目指しています。",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "残念なことに、「ETHをETH2トークンと取引する必要がある」、または「Eth2アップグレード前にETHを移行する必要がある」といった詐欺が横行しました。名称を改めることにより、このような詐欺を一掃し、エコシステムをより安全にすることを目指しています。",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "ステーキングに関して誤解を防ぐために",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "一部のステーキングオペレーターは、ビーコンチェーンにステーキングされたETHを「ETH2」というティッカーで表現していました。 しかし、実際にETH2というトークンを受け取るわけではなく、これらのサービスを利用するユーザーに混乱を引き起こすおそれがあります。 「ETH2」というトークンは存在せず、単に特定のプロバイダーのシェアを表します。",
"page-upgrades-what-to-do": "アップグレードによる対応の必要性",
diff --git a/src/intl/ka/common.json b/src/intl/ka/common.json
index 93100bf62e3..4c17c15679e 100644
--- a/src/intl/ka/common.json
+++ b/src/intl/ka/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "ანგარიშის ამოღება",
"about-ethereum-org": "ethereum.org-ის შესახებ",
"about-us": "ჩვენს შესახებ",
+ "adding-desci-projects": "Desci პროექტების დამატება",
+ "adding-developer-tools": "პროგრამისტის ხელსაწყოების დამატება",
+ "adding-exchanges": "გაცვლების დამატება",
+ "adding-glossary-terms": "ლექსიკონის ტერმინების დამატება",
+ "adding-staking-products": "სტეიკინგის პროდუქტების დამატება",
+ "adding-wallets": "საფულეების დამატება",
+ "account-abstraction": "ანგარიშის ამოღება",
+ "acknowledgements": "ცნობები",
"aria-toggle-search-button": "ძიების ღილაკი",
"aria-toggle-menu-button": "მენიუს ღილაკი",
"beacon-chain": "Beacon ჯაჭვი",
"bridges": "ბლოკჩეინის ხიდები",
+ "bug-bounty": "Ჯილდო ბაგის აღმოჩენისათვის",
+ "build": "დეველოპმენტი",
+ "build-menu": "ააგეთ მენიუ",
"clear": "გასუფთავება",
"close": "დახურვა",
"community": "საზოგადოება",
"community-hub": "საზოგადოების ცენტრი",
"community-menu": "საზოგადოების მენიუ",
"contact": "კონტაქტი",
+ "content-buckets": "შინაარსის ნაერთები",
+ "content-resources": "შინაარსის რესურსები",
"content-standardization": "კონტენტის სტანდარტიზაცია",
"contributing": "შეიტანე წვლილი",
"contributors": "კონტრიბუტორები",
@@ -20,14 +32,17 @@
"copied": "დაკოპირებულია",
"copy": "კოპირება",
"danksharding": "დენკშერდინგი",
- "dao-page": "დეცენტრალიზებული ავტონომიური ორგანიზაციები (DAO)-ები",
+ "dao-page": "DAO - დეცენტრალიზებული ავტონომიური ორგანიზაციები -ები",
"dark-mode": "ბნელი",
"data-provided-by": "მონაცემთა წყარო:",
- "decentralized-applications-dapps": "დეცენტრალიზებული აპლიკაციები (dapps)",
+ "decentralized-applications-dapps": "Dapps - დეცენტრალიზებული აპლიკაციები",
"decentralized-identity": "დეცენტრალიზებული იდენტობა",
"decentralized-social-networks": "დეცენტრალიზებული სოციალური ქსელი",
- "decentralized-science": "დეცენტრალიზებული მეცნიერება (DeSci)",
- "defi-page": "დეცენტრალიზებული ფინანსები (DeFi)",
+ "decentralized-science": "DeSci - დეცენტრალიზებული მეცნიერება",
+ "description": "ნავიგაციის საგნის აღწერა",
+ "defi-page": "DeFi - დეცენტრალიზებული ფინანსები",
+ "design": "დიზაინი",
+ "design-principles": "დიზაინის პრინციპები",
"devcon": "Devcon",
"developers": "დეველოპერები",
"developers-home": "დეველოპერების მთავარი",
@@ -59,7 +74,6 @@
"enterprise-menu": "კომპანიის მენიუ",
"esp": "ეკოსისტემის მხარდაჭერის პროგრამა",
"eth-current-price": "ETH მიმდინარე ფასი (აშშ დოლარი)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "ეთერეუმის ხარვეზების ბოუნტი პროგრამა",
"consensus-when-shipping": "როდის არის მიწოდება?",
"ethereum-upgrades": "ეთერეუმის განახლებები",
@@ -83,22 +97,22 @@
"feedback-card-prompt-tutorial": "დაგეხმარა ეს სახელმძღვანელო?",
"feedback-widget-thank-you-title": "მადლობა გამოხმაურებისთვის!",
"feedback-widget-thank-you-subtitle": "გააუმჯობესეთ ეს გვერდი რამდენიმე კითხვაზე პასუხის გაცემით.",
- "feedback-widget-thank-you-subtitle-ext": "თუ დახმარება გჭირდებათ, შეგიძლიათ დაუკავშირდეთ საზოგადოებას ჩვენს Discord-ზე.",
+ "feedback-widget-thank-you-subtitle-ext": "დახმარების საჭიროების შემთხვევაში, შეგიძლიათ დაუკავშირდეთ საზოგადოებას ჩვენ Discord-ზე.",
"feedback-widget-thank-you-timing": "2–3 წუთი",
"feedback-widget-thank-you-cta": "გახსენით მოკლე გამოკითხვა",
"find-wallet": "იპოვე საფულე",
"future-proofing": "პერსპექტივა",
- "get-eth": "იყიდე ეთერეუმი",
+ "get-eth": "მიიღე ETH",
"get-involved": "ჩაერთე",
- "get-started": "დაიწყე",
+ "get-started": "დაწყება",
"grants": "გრანტები",
"grant-programs": "ეკოსისტემის საგრანტო პროგრამები",
"guides": "სახელმძღვანელოები",
- "guides-hub": "სახელმძღვანელოების ჰაბი",
+ "guides-hub": "ინსტრუქციები",
"history-of-ethereum": "ეთერეუმის ისტორია",
"home": "მთავარი",
"how-ethereum-works": "როგორ მუშაობს ეთერეუმი",
- "how-to-register-an-ethereum-account": "როგორ \"დავარეგისტრიროთ\" ეთერეუმის ანგარიში",
+ "how-to-create-an-ethereum-account": "Როგორ \"შევქმნათ\" ეთერიუმის ექაუნთი",
"how-to-revoke-token-access": "როგორ გააუქმოთ თქვენს კრიპტოზე ჭკვიანი კონტრაქტის წვდომა",
"how-to-swap-tokens": "როგორ გადავცვალოთ ტოქენები",
"how-to-use-a-bridge": "როგორ გავხიდოთ ტოქენები მე-2 დონეზე",
@@ -128,11 +142,105 @@
"loading-error-try-again-later": "მონაცემებზე წვდომა შეუძლებელია. კვლავ სცადეთ მოგვიანებით.",
"logo": "ლოგო",
"mainnet-ethereum": "ეთერეუმის მაინნეტი",
+ "merge": "შერწყმა",
"more": "მეტი",
- "nav-developers": "დეველოპერები",
+ "nav-about-description": "ეთერეუმის საზოგადოებისათვის განკუთვნილი საჯარო, ღია კოდის პროექტი",
+ "nav-advanced-description": "შეიტყვეთ მეტი კომპლექსური თემის შესახებ",
+ "nav-advanced-label": "დამატებით",
+ "nav-basics-description": "ეთერეუმის საფუძვლების გააზრება",
+ "nav-basics-label": "ძირითადი საკითხები",
+ "nav-bridges-description": "Web3-მა განიცადა ევოლუცია და იქცა პირველადი L1 ბლოქჩეინებისა და L2 სკალირების გადაწყვეტების ეკოსისტემად",
+ "nav-builders-home-description": "ეთერეუმის დეველოპერის სახელმძღვანელო - დეველოპერები დეველოპერებისთვის",
+ "nav-builders-home-label": "დეველოპერის მთავარი გვერდი",
+ "nav-contribute-description": "თუ დახმარება გჭირდებათ, შეგიძლიათ ამით იხელმძღვანელოთ",
+ "nav-contribute-label": "ethereum.org-ის კონტრიბუცია",
+ "nav-dao-description": "ცენტრალიზებული ხელმძღვანელობის არმქონე წევრების მფლობელობაში არსებული საზოგადოებები",
+ "nav-dapps-description": "ეთერეუმის გამოყენებით გამოიკვლიეთ აპების მდიდარი ეკოსისტემა",
+ "nav-defi-description": "ტრადიციული ფინანსური ბაზრის გლობალური, ღია ალტერნატივა",
+ "nav-desci-description": "მიმდინარე სამეცნიერო სისტემის გლობალური, ღია ალტერნატივა",
+ "nav-desoc-description": "ბლოკჩეინზე დაფუძნებული პლატფორმები სოციალური ინტერაქციისა და კონტენტის შექმნისათვის",
"nav-developers-docs": "დეველოპერების დოკუმენტაცია",
+ "nav-developers": "დეველოპერები",
+ "nav-did-description": "შექმენით და იქონიეთ თქვენი უნიკალური დეცენტრალიზებული იდენტიფიკატორები",
+ "nav-docs-description": "დოკუმენტები, რომლებიც დაგეხმარებათ ეთერეუმის გამოყენებით დეველოპმენტის გააზრებაში",
+ "nav-docs-design-description": "უნიკალური web3 დიზაინის გამოწვევების, საუკეთესი პრაქტიკებისა და მომხმარებლის კვლევის ინსაითების აღწერა",
+ "nav-docs-design-label": "UX/UI დიზაინის საფუძვლები",
+ "nav-docs-foundation-description": "ეთერეუმზე დეველოპმენტის ძირეული საფუძვლები",
+ "nav-docs-overview-description": "დეველოპერის დოკუმენტების თქვენი მთავარი გვერდი",
+ "nav-docs-stack-description": "ეთერეუმის სტეკის ყველა დეტალის გააზრება",
+ "nav-eip-description": "ახალი ფუნქციების თუ პროცესების მაკონკრეტებელი სტანდარტები",
+ "nav-eip-label": "EIP-ები - ეთერეუმის წინადადებები და შეთავაზებები",
+ "nav-emerging-description": "ეთერეუმის სხვა უფრო ახალი გამოყენების ქეისების გაცნობა",
+ "nav-enterprise-description": "ეთერეუმის ბიზნეს აპლიკაციები",
+ "nav-ethereum-org-description": "ვებსაიტი იმართება საზოგადოების მიერ—შემოგვიერთდით და მიიღეთ მონაწილეობა",
+ "nav-ethereum-wallets-description": "თქვენი ეთერეუმის ანგარიშთან ინტერაქციის აპლიკაცია",
+ "nav-events-description": "ნებისმიერი თქვენგანისათვის დეცენტრალიზაცია და მონაწილეობის თავისუფლება",
+ "nav-events-irl-description": "ყოველთვიურად იმართება ეთერეუმის ღონისძიებები, როგორც დასწრებული ასევე ონლაინ ფორმატით",
+ "nav-events-label": "საზოგადოებები და ღონისძიებები",
+ "nav-events-online-description": "ეთერეუმის ასობით ათასი ენთუზიასტი მამაა ამ ონლაინ საზოგადოებაში",
+ "nav-find-wallet-description": "საფულეები გაძლევთ კრიპტოს გამოყენების საშუალებას",
+ "nav-find-wallet-label": "აირჩიეთ თქვენი საფულე",
+ "nav-gas-fees-description": "როგორ ითვლება ETH ტრანზაქციის გადასახადები",
+ "nav-get-eth-description": "გჭირდებათ ეთერი (ETH) ან ეთერეუმის აპლიკაციის გამოყენება",
+ "nav-get-started-description": "ეთერეუმის გამოყენებისკენ გადადგმული თქვენი პირველი ნაბიჯები",
+ "nav-governance-description": "პროცესი, რომელიც გამოიყენებოდა ეთერეუმის პროტოკოლის გაახლებაში",
+ "nav-governance-label": "მმართველობა",
+ "nav-grants-description": "ჩვენი საზოგადოების კურატორის ზედამხედველობით შექმნილი სია პროექტებზე, რომლებიც უზრუნველყოფენ დაფინანსებს პროგრამების უფლებას",
+ "nav-guide-create-account-description": "საფულის აპის გამოყენებით, ეთერეუმის ანგარიშის შექმნა ნებისმიერ დროს, ნებისმიერ ადამიანს უფასოდ შეუძლია",
+ "nav-guide-create-account-label": "Როგორ შევქმნათ ეთერიუმის ექაუნთი",
+ "nav-guide-revoke-access-description": "ეთერეუმის ეკოსისტემაში სმარტ კონტრაქტებსა და აპლიკაციებთან ინტერაქციისას შეინარჩუნეთ უსაფრთხოება",
+ "nav-guide-revoke-access-label": "როგორ უნდა გავაუქმოთ სმარტ კონტრაქტზე წვდომა",
+ "nav-guide-use-wallet-description": "შეიტყვეთ, თუ როგორ მუშაობს საფულის ყველა საბაზისო ფუნქცია",
+ "nav-guide-use-wallet-label": "როგორ გამოვიყენოთ საფულე",
+ "nav-guides-description": "პრაქტიკული ნაბიჯ-ნაბიჯ სახელმძღვანელო, რომელიც საწყისი ეტაპისთვის დაგეხმარებათ",
+ "nav-guides-label": "ინსტრუქციები",
+ "nav-history-description": "ყველა მთავარი ფორკისა და განახლების დროის ხაზი",
+ "nav-history-label": "ეთერეუმის ტექნიკური ისტორია",
+ "nav-layer-2-description": "ეთერეუმის უფრო იაფი და სწრაფი ტრანზაქციები",
+ "nav-learn-by-coding-description": "იარაღები, რომლებიც დაგეხმარებათ ეთერეუმით ექსპერიმენტირებისთვის",
+ "nav-local-env-description": "აირჩიეთ და მოაწყვეთ თქვენი ეთერეუმის დეველოპმენტის სტეკი",
+ "nav-mainnet-description": "კომპანიის ბლოკჩეინ აპლიკაციების ჩაშენება შესაძლებელია ეთერეუმის საჯარო მეინნეტზე",
+ "nav-nft-description": "საშუალება წარმოაჩინოს რაიმე უნიკალური, როგორც Ethereum-ზე დაფუძნებული აქტივი",
+ "nav-open-research-description": "ეთერეუმის ერთ-ერთი უმთავრესი სიძლიერე მისი აქტიური კვლევითი საზოგადოებაა",
+ "nav-open-research-label": "ღია კვლევა",
+ "nav-overview-description": "ეთერეუმის ყოვლისმომცველი საგანმანათლებლო რესურსი",
+ "nav-participate-overview-description": "მიმოხილვა იმის შესახებ, თუ როგორ უნდა მიიღოთ მონაწილეობა",
"nav-primary": "ძირითადი",
- "nft-page": "შეუცვლელი ტოკენები (NFT)-ები",
+ "nav-quizzes-description": "შეიტყვეთ, თუ რამდენად კარგად იაზრებთ ეთერეუმსა და კრიპტოვალუტებს",
+ "nav-quizzes-label": "შეამოწმეთ თქვენი ცოდნა",
+ "nav-refi-description": "რეგენერაციულ პრინციპებზე დაფუძნებული ალტერნატიული ეკონომიკური სისტემა",
+ "nav-research-description": "ეთერეუმის გაუმჯობესებისთვის გამოყენებული პროცესები",
+ "nav-research-label": "კვლევა და განვითარება",
+ "nav-roadmap-description": "ეთერეუმის მეტი მასშტაბირებისკენ, დაცულობისა და მდგრადობისკენ მიმავალი გზა",
+ "nav-roadmap-future-description": "ეთერეუმის, როგორც მტკიცე და დეცენტრალიზებული ქსელის გამყარება",
+ "nav-roadmap-future-label": "პერსპექტივა",
+ "nav-roadmap-label": "რუკა",
+ "nav-roadmap-scaling-description": "ქსელის განახლებები, გამიზნული ტრანზაქციული ხარჯების დამატებით შემცირებისა და სისწრაფისთვის",
+ "nav-roadmap-security-description": "იმის უზრუნველყოფა, რომ ეთერეუმი სამომავლოდ ყველა ტიპის შემოტევების მიმართ შეუღწევადი დარჩება",
+ "nav-roadmap-security-label": "გაუმჯობესებული უსაფრთხოება",
+ "nav-roadmap-ux-description": "ეთერეუმის გამოყენება უნდა გამარტივდეს",
+ "nav-run-a-node-description": "გახდით მთლიანად სრულუფლებიანი, როცა ეხმარებით ქსელის დაცულად გახდომაში",
+ "nav-security-description": "შეიტყვეთ საუკეთესო გამოცდილებების შესახებ, კრიპტოვალუტის გამოყენებისას",
+ "nav-smart-contracts-description": "ეთერეუმის ეკოსისტემის მთავარი ფუნდამენტი",
+ "nav-stablecoins-description": "სთეიბლქოინები წარმოადგენს ეთერეუმის ტოკენებს, რომლებიც შექმნილია ფიქსირებულ მნიშვნელობაზე დასარჩენად",
+ "nav-stake-description": "ეთერეუმის დაცვისათვის მიიღეთ ჯილდოები",
+ "nav-stake-label": "სტეიკი",
+ "nav-staking-home-description": "სტეიკინგის სხვადასხვა ვარიანტის მიმოხილვა",
+ "nav-staking-pool-description": "სხვებთან შეერთებით, ეთერეუმის ნებისმიერი რაოდენობა განათავსეთ სტეიკად და მიიღეთ ჯილდო",
+ "nav-staking-pool-label": "გაერთიანებული სტეიკინგი",
+ "nav-staking-saas-label": "სერვისით სტეიკინგი",
+ "nav-staking-solo-label": "სოლო სტეიკინგი",
+ "nav-start-building-description": "სასარგებლო ინფორმაცია ახალი წევრებისათვის",
+ "nav-translation-program-description": "ურთიერთთანამშრომლობითი ძალისხმევა ethereum.org-ის ყველა ენაზე გადათარგმნის კუთხით",
+ "nav-tutorials-description": "საზოგადოების სასწავლო ვიდეოების კურირებული სია",
+ "nav-use-cases-description": "აღმოაჩინეთ ეთერეუმის გამოყენების განსხვავებული იდეები",
+ "nav-what-is-ether-description": "ეთერეუმის აპლიკაციების ვალუტა",
+ "nav-what-is-ethereum-description": "გაიგეთ, რა ხდის ეთერეუმს განსაკუთრებულს",
+ "nav-what-is-web3-label": "რა არის WEB3?",
+ "nav-what-is-web3-description": "ცენტრალიზებული მონოპოლიების ალტერნატივა, რომელიც კარნახობს წესებს",
+ "nav-whitepaper-description": "თავდაპირველი ეთერეუმის დოკუმენტი, რომელიც დაწერილია ვიტალიკ ბუტერინის მიერ, 2014 წელს",
+ "nav-zkp-description": "განაცხადის ვალიდურობის დამტკიცების გზა ისე, რომ არ მოხდეს თავად განაცხადის გამჟღავნება",
+ "nft-page": "NFT - შეუცვლელი ტოკენები -ები",
"nfts": "NFT-ები",
"no": "არა",
"on-this-page": "ამ გვერდზე",
@@ -140,6 +248,7 @@
"page-developers-aria-label": "დეველოპერების მენიუ",
"page-index-meta-title": "მთავარი",
"page-last-updated": "გვერდი ბოლოს განახლდა",
+ "participate-menu": "მონაწილეობის მენიუ",
"pbs": "შეთავაზების შემქმნელის გამიჯვნა",
"pools": "გაერთიანებული სტეიკინგი",
"privacy-policy": "კონფიდენციალურობის პოლიტიკა",
@@ -150,13 +259,15 @@
"refresh": "გთხოვთ განაახლეთ გვერდი.",
"return-home": "დაბრუნება მთავარზე",
"roadmap": "ეთერეუმის საგზაო რუკა",
+ "research": "კვლევა",
+ "research-menu": "კვლევის მენიუ",
"resources": "თარგმნის რესურსები",
- "regenerative-finance": "Რეგენერატიული ფინანსები (ReFi)",
- "run-a-node": "კვანძის გაშვება",
+ "regenerative-finance": "ReFi - Რეგენერატიული ფინანსები",
+ "run-a-node": "ქსელის ჩაშვება",
"rollup-component-website": "ვებგვერდი",
"rollup-component-developer-docs": "დეველოპერის დოკუმენტაცია",
"rollup-component-technology-and-risk-summary": "ტექნოლოგია და რისკის შეჯამება",
- "scaling": "სუბიექტები ქსელში, რომლებსაც შეუძლიათ ბალანსის შენარჩუნება და ტრანზაქციების გაგზავნა",
+ "scaling": "მასშტაბირება",
"saas": "სტეიკინგი როგორც სერვისი",
"search": "ძიება",
"search-ethereum-org": "ძიება ethereum.org-ზე",
@@ -164,6 +275,7 @@
"search-box-blank-state-text": "მოძებნე!",
"search-eth-address": "ეს ჰგავს Ethereum-ის მისამართს. ჩვენ არ გავცემთ მისამართებზე სპეციფიკურ მონაცემებს. სცადეთ მოიძიოთ ინფორმაცია ისეთ ბლოკ ექსპლორერში, როგორიცაა",
"search-no-results": "თქვენმა ძებნამ შედეგი არ გამოიღო",
+ "security": "უსაფრთხოება",
"single-slot-finality": "საბოლოო ცალკე სლოტი",
"statelessness": "გაუფორმებლობა",
"see-contributors": "იხილეთ კონტრიბუტორები",
@@ -172,15 +284,14 @@
"show-all": "ყველაფრის ჩვენება",
"show-less": "ნაკლების ჩვენება",
"site-description": "Ethereum არის გლობალური, დეცენტრალიზებული პლატფორმა ფინანსური თუ სხვა ახალი ტიპის აპლიკაციებისთვის. Ethereum-ზე შეგიძლიათ დაწეროთ კოდი, რომელიც აკონტროლებს ფულს და შექმნათ აპლიკაციები, რომლებიც ხელმისაწვდომი იქნება მსოფლიოს ნებისმიერ წერტილში.",
- "site-title": "ethereum.org",
"skip-to-main-content": "ძირითად მასალაზე გადასვლა",
"smart-contracts": "ჭკვიანი კონტრაქტები",
"stablecoins": "სტაბილური ქოინები",
"stake-eth": "დაასტეიკე ETH",
"staking": "სტეიკინგი",
"start-here": "დაიწყე აქ",
- "style-guide": "Style guide",
"solo": "სოლო სტეიკინგი",
+ "support": "მხარდაჭერა",
"terms-of-use": "მოხმარების წესები",
"translation-banner-body-new": "თქვენ ხედავთ ამ გვერდს ინგლისურად, რადგან ის ჯერ არ გვითარგმნია. დაგვეხმარეთ ამ გვერდის თარგმნაში.",
"translation-banner-body-update": "ეს გვერდის ახალი ვერსიაა, ამიტომ ის ამჟამად მხოლოდ ინგლისურ ენაზეა. დაგვეხმარეთ ახალი ვერსიის თარგმნაში. ",
@@ -191,12 +302,14 @@
"translation-banner-no-bugs-title": "აქ არ არის ბაგი!",
"translation-banner-no-bugs-content": "ეს გვერდი არ ითარგმნება. ჩვენ სპეციალურად დავტოვეთ ეს გვერდი ინგლისურად.",
"translation-banner-no-bugs-dont-show-again": "აღარ მაჩვენო",
+ "translation-program": "თარგმნის პროგრამა",
"try-using-search": "სცადეთ საძიებოს გამოყენება, რათა იპოვოთ ის, რასაც ეძებთ",
"tutorials": "გაკვეთილები",
"up": "მაღლა",
+ "use": "გამოყენება",
"use-ethereum": "ეთერეუმის გამოყენება",
"use-ethereum-menu": "ეთერეუმის მენიუს გამოყენება",
- "user-experience": "User experience",
+ "use-menu": "გამოიყენეთ მენიუ",
"verkle-trees": "\"Verkle\" ხეები",
"wallets": "საფულეები",
"we-couldnt-find-that-page": "გვერდი არ მოიძებნა",
diff --git a/src/intl/ka/page-languages.json b/src/intl/ka/page-languages.json
index 83d6babd844..aa667bad0bb 100644
--- a/src/intl/ka/page-languages.json
+++ b/src/intl/ka/page-languages.json
@@ -1,4 +1,17 @@
{
+ "page-languages-h1": "ენის მხარდაჭერა",
+ "page-languages-interested": "დაინტერესებული ხართ წვლილის შეტანით?",
+ "page-languages-learn-more": "მეტი შეიტყვეთ ჩვენი თარგმანის პროგრამის შესახებ",
+ "page-languages-meta-desc": "Resources to all supported languages of ethereum.org and ways to get involved as a translator.",
+ "page-languages-meta-title": "ethereum.org ენათა თარგმანები",
+ "page-languages-want-more-header": "გსურთ ნახოთ ethereum.org სხვადასხვა ენაზე?",
+ "page-languages-want-more-link": "თარგმანის პროგრამა",
+ "page-languages-filter-label": "ფილტრების სია",
+ "page-languages-filter-placeholder": "აკრიბეთ დასაფილტრად",
+ "page-languages-browser-default": "ბრაუზერის ნაგულისხმები",
+ "page-languages-translated": "გადათარგმნილი",
+ "page-languages-words": "სიტყვები",
+ "page-languages-recruit-community": "დაგვეხმარეთ ethereum.org-ის გადათარგმნაში.",
"language-ar": "არაბული",
"language-az": "აზერბაიჯანული",
"language-bg": "ბულგარული",
@@ -14,6 +27,7 @@
"language-fi": "ფინური",
"language-fr": "ფრანგული",
"language-gl": "გალიციური",
+ "language-he": "Ებრაული",
"language-hi": "ინდური",
"language-hr": "ხორვატული",
"language-hu": "უნგრული",
@@ -30,6 +44,7 @@
"language-ms": "მალაიური",
"language-nb": "ნორვეგიული",
"language-nl": "ჰოლანდიური",
+ "language-pcm": "ნიგერიული პიჯინი",
"language-fil": "ფილიპინური",
"language-pl": "პოლონური",
"language-pt": "პორტუგალიური",
@@ -44,6 +59,7 @@
"language-th": "ტაილანდური",
"language-tr": "თურქული",
"language-uk": "უკრაინული",
+ "language-ur": "ურდუ",
"language-vi": "ვიეტნამური",
"language-zh": "ჩინური გამარტივებული",
"language-zh-tw": "ჩინური ტრადიციული"
diff --git a/src/intl/ka/page-stablecoins.json b/src/intl/ka/page-stablecoins.json
index 37aa081de28..2b058114cd3 100644
--- a/src/intl/ka/page-stablecoins.json
+++ b/src/intl/ka/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao-ს ლოგო",
"matcha-logo": "Matcha-ს ლოგო",
"oasis-logo": "Oasis -ის ლოგო",
- "uniswap-logo": "Uniswap-ის ლოგო"
+ "uniswap-logo": "Uniswap-ის ლოგო",
+ "page-stablecoins-category-dashboard-and-education": "პანელი & განათლება"
}
diff --git a/src/intl/kk/common.json b/src/intl/kk/common.json
index 820eaef73b3..372ed9d0e09 100644
--- a/src/intl/kk/common.json
+++ b/src/intl/kk/common.json
@@ -1,29 +1,70 @@
{
"about-ethereum-org": "ethereum.org туралы",
"about-us": "Біз туралы",
+ "adding-desci-projects": "Desci жобаларын қосу",
+ "adding-developer-tools": "Әзірлеуші құралдарды қосу",
+ "adding-exchanges": "Биржаларды қосу",
+ "adding-glossary-terms": "Глоссарий терминдерін қосу",
+ "adding-staking-products": "Стейкинг өнімдерін қосу",
+ "adding-wallets": "Әмияндарды қосу",
+ "account-abstraction": "Есептік жазбаның абстракциясы",
+ "acknowledgements": "Тану",
"aria-toggle-search-button": "Іздеуді ауыстыру түймесі",
"aria-toggle-menu-button": "Мәзірді ауыстыру түймесі",
"beacon-chain": "Beacon Chain",
"bridges": "Блокчейн көпірлері",
- "close": "Close",
+ "bug-bounty": "Баг марапаты",
+ "build": "Құру",
+ "build-menu": "Мәзір құру",
+ "clear": "Тазалау",
+ "close": "Жабу",
"community": "Қауымдастық",
"community-hub": "Қауымдастық орталығы",
"community-menu": "Қауымдастық мәзірі",
"contact": "Контакт",
+ "content-buckets": "Мазмұн шелектері",
+ "content-resources": "Мазмұн ресурстары",
+ "content-standardization": "Мазмұнды стандарттау",
"contributing": "Үлес қосу",
"contributors": "Үлес қосушылар",
"contributors-thanks": "Бұл бетке үлес қосқандардың бәріне рақмет!",
"cookie-policy": "Cookie саясаты",
"copied": "Көшірілді",
"copy": "Көшіру",
+ "danksharding": "Данкшардинг",
+ "dao-page": "DAO-лар - Орталықсыздандырылған автономды ұйымдар",
"dark-mode": "Күңгірт",
"data-provided-by": "Деректер көзі:",
- "decentralized-applications-dapps": "Орталықсыздандырылған қолданбалар (dapps)",
+ "decentralized-applications-dapps": "Dapps - Орталықсыздандырылған қолданбалар",
+ "decentralized-identity": "Орталықтандырылмаған сәйкестендіру",
+ "decentralized-social-networks": "Орталықтандырылмаған әлеуметтік желілер",
+ "decentralized-science": "DeSci - Орталықтандырылмаған ғылым",
+ "description": "Навигация элементінің сипаттамасы",
+ "defi-page": "DeFi - Орталықсыздандырылған қаржы",
+ "design": "Дизайн",
+ "design-principles": "Дизайн принциптері",
"devcon": "Devcon",
"developers": "Әзірлеушілер",
"developers-home": "Әзірлеушілер басты беті",
"docs": "Құжаттар",
+ "docsearch-to-select": "Тандау",
+ "docsearch-to-navigate": "Өту",
+ "docsearch-to-close": "Жабу",
+ "docsearch-search-by": "Іздеу",
+ "docsearch-start-recent-searches-title": "Соңғы",
+ "docsearch-start-no-recent-searches": "Соңғы іздеу сұраулары жоқ",
+ "docsearch-start-save-recent-search": "Бұл іздеу сұрауларын сақтаңыз",
+ "docsearch-start-remove-recent-search": "Бұл іздеу сұрауын тарихтан жойыңыз",
+ "docsearch-start-favorite-searches": "Таңдаулы",
+ "docsearch-start-remove-favorite-search": "Бұл іздеу сұрауын таңдаулылардан алып тастаңыз",
+ "docsearch-no-results-text": "Сұраныс бойынша нәтиже жоқ",
+ "docsearch-no-results-suggested-query": "Іздеуге тырысыңыз",
+ "docsearch-no-results-missing": "Осы сұраныс бойынша нәтижелер болуы керек деп ойлайсыз ба?",
+ "docsearch-no-results-missing-link": "Бізге хабарлаңыз.",
+ "docsearch-error-title": "Нәтиже беру мүмкін болмады",
+ "docsearch-error-help": "Желіге қосылуды тексеру қажет болуы мүмкін.",
"documentation": "Құжаттама",
+ "down": "Төмен",
"ecosystem": "Экожүйе",
"edit-page": "Бетті өңдеу",
"ef-blog": "Ethereum қорының блогі",
@@ -44,29 +85,37 @@
"ethereum-glossary": "Ethereum глоссарийі",
"ethereum-governance": "Ethereum платформасын Басқару",
"ethereum-logo": "Ethereum логотипі",
+ "ethereum-roadmap": "Ethereum жол картасы",
+ "ethereum-protocol": "Ethereum хаттамасы",
"ethereum-security": "Ethereum қауіпсіздігі және алаяқтықтың алдын алу",
"ethereum-support": "Ethereum қолдауы",
"ethereum-wallets": "Ethereum әмияндары",
"ethereum-whitepaper": "Ethereum жобалық құжаты",
"feedback-widget-prompt": "Бұл бет пайдалы ма?",
- "feedback-card-prompt-page": "Was this page helpful?",
- "feedback-card-prompt-article": "Was this article helpful?",
- "feedback-card-prompt-tutorial": "Was this tutorial helpful?",
+ "feedback-card-prompt-page": "Бұл бет пайдалы болды ма?",
+ "feedback-card-prompt-article": "Бұл мақала пайдалы болды ма?",
+ "feedback-card-prompt-tutorial": "Бұл нұсқаулық пайдалы болды ма?",
"feedback-widget-thank-you-title": "Пікіріңіз үшін рахмет!",
"feedback-widget-thank-you-subtitle": "Бірнеше сұраққа жауап беру арқылы бұл бетті бұрыннан да жақсырақ етіңіз.",
- "feedback-widget-thank-you-subtitle-ext": "If you need help, you can reach out to the community on our Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Егер сізге көмек қажет болса, сіз біздің Discord мекенжайы бойынша қоғамдастыққа хабарласа аласыз.",
"feedback-widget-thank-you-timing": "2-3 мин",
"feedback-widget-thank-you-cta": "Қысқаша сауалнаманы ашу",
"find-wallet": "Әмиян табу",
+ "future-proofing": "Болашақты қамтамасыз ету",
"get-eth": "ETH алу",
"get-involved": "Қатысу",
"get-started": "Бастау",
"grants": "Гранттар",
"grant-programs": "Экожүйелік гранттар бағдарламалары",
- "guides-and-resources": "Қауымдастық нұсқаулықтары мен ресурстары",
+ "guides": "Нұсқаулықтар",
+ "guides-hub": "Нұсқаулық",
"history-of-ethereum": "Ethereum тарихы",
"home": "Басты бет",
"how-ethereum-works": "Ethereum қалай жұмыс істейді?",
+ "how-to-revoke-token-access": "Ақылды келісімшарттың криптоқаражатына қол жетімділігін қалай жоюға болады",
+ "how-to-swap-tokens": "Токендерді қалай ауыстыруға болады",
+ "how-to-use-a-bridge": "Токендерді 2-деңгейге қалай аударуға болады",
+ "how-to-use-a-wallet": "Әмиянды қалай пайдалануға болады",
"image": "сурет",
"in-this-section": "Бұл бөлімде",
"individuals": "Тұлғалар",
@@ -80,6 +129,7 @@
"layer-2": "2-қабат",
"learn": "Үйрену",
"learn-by-coding": "Кодтау арқылы үйрену",
+ "learn-hub": "Оқу орталығы",
"learn-menu": "Үйрену мәзірі",
"learn-more": "Көбірек білу",
"less": "Азырақ",
@@ -88,42 +138,153 @@
"loading": "Жүктелуде...",
"loading-error": "Жүктеу қатесі.",
"loading-error-refresh": "Қате, жаңартыңыз.",
+ "loading-error-try-again-later": "Деректерді жүктеу мүмкін емес. Кейінірек қайталап көріңіз.",
"logo": "логотип",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Біріктіру",
"more": "Көбірек",
- "nav-developers": "Әзірлеушілер",
+ "nav-about-description": "Ethereum қауымдастығы үшін ортақ, ашық жоба",
+ "nav-advanced-description": "Одан да күрделі тақырыптарды үйреніңіз",
+ "nav-basics-description": "Ethereum негіздерін түсініңіз",
+ "nav-basics-label": "Негіздер",
+ "nav-bridges-description": "Web3 негізгі L1 блокчейндері мен L2 масштабтау шешімдері экожүйесі болып өзгертілді",
+ "nav-builders-home-description": "Ethereum үшін әзірлеуші нұсқаулығы—әзірлеушілер бойынша, әзірлеушілер үшін",
+ "nav-builders-home-label": "Әзірлеуші басты беті",
+ "nav-contribute-description": "Егер сіз көмектескіңіз келсе, бұл сізге бағыт-бағдар көрсетеді",
+ "nav-contribute-label": "ethereum.org жүйесіне үлес қосу",
+ "nav-dao-description": "Мүшелердің иелігіндегі орталықтандырылған басқарусыз қауымдастықтар",
+ "nav-dapps-description": "Ethereum қолданатын қолданбалардың бай экожүйесін қарап шығыңыз",
+ "nav-defi-description": "Дәстүрлі қаржылық нарықтың ғаламдық, ашық баламасы",
+ "nav-desci-description": "Ағымдағы ғылыми жүйенің ғаламдық, ашық баламасы",
+ "nav-desoc-description": "Әлеуметтік өзара қарым-қатынас пен контент жасауға арналған блокчейн негізіндегі платформалар",
"nav-developers-docs": "Әзірлеушілер құжаттары",
+ "nav-developers": "Әзірлеушілер",
+ "nav-did-description": "Бірегей орталықсыздандырылған идентификаторларды шығару және оларға иелік ету",
+ "nav-docs-description": "Ethereum арқылы түсінуге және құруға көмектесетін құжаттар",
+ "nav-docs-design-description": "Бірегей web3 құрылымы тапсырмаларының, ең жақсы тәжірибелерінің және пайдаланушы зерттеу мәліметтерінің сипаттамасы",
+ "nav-docs-design-label": "UX/UI құрылымы негіздері",
+ "nav-docs-foundation-description": "Ethereum жүйесінде әзірлеуге арналған негіздер",
+ "nav-docs-overview-description": "Әзірлеуші құжаттарының мекені",
+ "nav-docs-stack-description": "Ethereum стегінің барлық мәліметтерін түсініңіз",
+ "nav-eip-description": "Жаңа мүмкіндіктерді немесе процестерді көрсететін стандарттар",
+ "nav-eip-label": "EIP - Ethereum жетілдіру ұсыныстары",
+ "nav-emerging-description": "Ethereum үшін басқа жаңа қолдану жағдайларын біліңіз",
+ "nav-enterprise-description": "Ethereum үшін бизнестік қолданбалар",
+ "nav-ethereum-org-description": "Бұл веб-сайт қауымдастық тарапынан басқарылады—бізге қосылып, өз үлесіңізді қосыңыз",
+ "nav-ethereum-wallets-description": "Ethereum шотымен жұмыс істеуге арналған қолданба",
+ "nav-events-description": "Орталықсыздандыру және әркімнің қатысу еркіндігі",
+ "nav-events-irl-description": "Әр айда маңызды Ethereum жүзбе-жүз және онлайн іс-шаралары болады",
+ "nav-events-label": "Қауымдастықтар мен іс-шаралар",
+ "nav-events-online-description": "Бұл онлайн қауымдастықтарда жүз мыңдаған Ethereum ынтагерлері бар",
+ "nav-find-wallet-description": "Әмияндар криптовалютаны пайдалану мүмкіндігін береді",
+ "nav-find-wallet-label": "Әмияныңызды таңдаңыз",
+ "nav-gas-fees-description": "ETH транзакцияларының алымы қалай есептеледі",
+ "nav-get-eth-description": "Ethereum қолданбаларын пайдалану үшін сізге эфир (ETH) қажет",
+ "nav-get-started-description": "Ethereum пайдаланудың алғашқы қадамдары",
+ "nav-governance-description": "Ethereum протоколын жаңартудағы процесс",
+ "nav-governance-label": "Басқармасы",
+ "nav-grants-description": "Грант негізінде қаржыландыру бағдарламаларын беретін жобалар бойынша біздің қауымдастығымыз тарапынан мұқият таңдалған тізім",
+ "nav-guide-create-account-description": "Кез келген адам кез келген уақытта әмиян қолданбасы арқылы Ethereum шотын тегін жасай алады",
+ "nav-guide-revoke-access-description": "Смарт келісімшарттармен және Ethereum экожүйелерімен жұмыс істегенде қауіпсіздікті сақтаңыз",
+ "nav-guide-revoke-access-label": "Смарт келісімшартты қолдану құқығын қалай қайтарып алуға болады",
+ "nav-guide-use-wallet-description": "Әмиянның барлық негізгі функцияларын қолдану туралы біліңіз",
+ "nav-guide-use-wallet-label": "Әмиянды қалай пайдалануға болады",
+ "nav-guides-description": "Сізге жұмысты бастауға көмектесетін қадамдық практикалық нұсқаулар",
+ "nav-guides-label": "Практикалық нұсқаулықтар",
+ "nav-history-description": "Барлық негізгі өзгерістер мен жаңартулардың хронологиясы",
+ "nav-history-label": "Ethereum техникалық тарихы",
+ "nav-layer-2-description": "Ethereum үшін арзан және жылдам транзакциялар",
+ "nav-learn-by-coding-description": "Ethereum арқылы тәжірибе жүргізіп көруге көмектесетін құралдар",
+ "nav-local-env-description": "Choose and set up your Ethereum әзірлеу стегін таңдау және орнату",
+ "nav-mainnet-description": "Кәсіпорын блокчейн қолданбаларын ортақ Ethereum негізгі желісінде құруға болады",
+ "nav-nft-description": "Ethereum негізіндегі актив ретінде бірегей өнімді ұсыну жолы",
+ "nav-open-research-description": "Ethereum негізгі басым тараптарының бірі оның белсенді зерттеу қауымдастығы болып табылады",
+ "nav-open-research-label": "Ағымдағы зерттеулер",
+ "nav-overview-description": "Ethereum туралы барлық мәліметтер",
+ "nav-participate-overview-description": "Қатысу әдісі туралы шолу",
"nav-primary": "Негізгі",
+ "nav-quizzes-description": "Ethereum және криптовалюталарды қаншалықты түсінетініңізді біліңіз",
+ "nav-quizzes-label": "Біліміңізді тексеріп көріңіз",
+ "nav-refi-description": "Қалпына келтіру принциптеріне негізделген балама экономикалық жүйе",
+ "nav-research-description": "Ethereum жақсарту үшін пайдаланылатын процестер",
+ "nav-research-label": "Зерттеу және әзірлеу",
+ "nav-roadmap-description": "Ethereum үшін масштабтау, қауіпсіздік және тұрақтылық жолы",
+ "nav-roadmap-future-description": "Ethereum криптовалютасын сенімді және орталықсыздандырылған желі ретінде нығайту",
+ "nav-roadmap-future-label": "Болашақты қамтамасыз ету",
+ "nav-roadmap-label": "Жол картасы",
+ "nav-roadmap-scaling-description": "Транзакция шығындары мен жылдамдығын одан әрі азайтуға арналған желі жаңартулары",
+ "nav-roadmap-security-description": "Ethereum криптовалютасының болашақтағы барлық қауіп түрлеріне төзімділігін қамтамасыз ету",
+ "nav-roadmap-security-label": "Жақсартылған қауіпсіздік",
+ "nav-roadmap-ux-description": "Ethereum пайдалану қарапайымдастырылуы керек",
+ "nav-run-a-node-description": "Желінің қауіпсіздігін қамтамасыз ету кезінде толықтай тәуелсіз болыңыз",
+ "nav-security-description": "Криптовалютаны пайдалану кезінде ең жақсы тәжірибелерді үйреніңіз",
+ "nav-smart-contracts-description": "Ethereum экожүйесінің негізгі құру блоктары",
+ "nav-stablecoins-description": "Стейблкоиндар белгіленген құнда қалуға арналған Ethereum токендері болып табылады",
+ "nav-stake-description": "Ethereum қауіпсіздігі үшін марапаттар алыңыз",
+ "nav-stake-label": "Ставка",
+ "nav-staking-home-description": "Ставка жасау үшін әртүрлі опцияларды шолу",
+ "nav-staking-pool-description": "Ставка жасаңыз және басқалармен қосылу арқылы кез келген ETH сомасында марапаттар алыңыз",
+ "nav-staking-pool-label": "Пулдық стейкинг",
+ "nav-staking-saas-label": "Қызмет арқылы ставка жасау",
+ "nav-staking-solo-label": "Соло стейкинг",
+ "nav-start-building-description": "Жаңа келгендер үшін пайдалы ақпарат",
+ "nav-translation-program-description": "ethereum.org сайтын барлық тілдерге аударуға бірге әрекеттену",
+ "nav-tutorials-description": "Қауымдастық нұсқаулығының таңдалған тізімі",
+ "nav-use-cases-description": "Ethereum пайдаланудың әртүрлі идеяларын ашыңыз",
+ "nav-what-is-ether-description": "Ethereum қолданбаларының валютасы",
+ "nav-what-is-ethereum-description": "Ethereum ерекшелігі неде екенін түсініңіз",
+ "nav-what-is-web3-label": "Web3 дегеніміз не?",
+ "nav-what-is-web3-description": "Ережелерді орнататын орталықтандырылған монополияның баламасы",
+ "nav-whitepaper-description": "Бастапқы Ethereum ресми құжаты 2014 жылы Виталик Бутерин тарапынан жазылған",
+ "nav-zkp-description": "Мәлімдеменің өзін әшкерелемей, мәлімдеменің жарамдылығын дәлелдеу әдісі",
+ "nft-page": "NFT-лер - Өзара алмастырылмайтын токендер",
+ "nfts": "NFT-лер",
"no": "Жоқ",
"on-this-page": "Бұл бетте",
- "open-research": "Open research",
+ "open-research": "Ағымдағы зерттеулер",
+ "page-developers-aria-label": "Әзірлеушілер мәзірі",
+ "page-index-meta-title": "Басты бет",
"page-last-updated": "Соңғы бет жаңартылуы",
+ "participate-menu": "Қатысу мәзірі",
+ "pbs": "Мәлімдеуші мен құрылысшыны бөлу",
+ "pools": "Пулдық стейкинг",
"privacy-policy": "Құпиялық саясаты",
"private-ethereum": "Жеке Ethereum",
+ "product-disclaimer": "Өнімдер мен қызметтер Ethereum қауымдастығы үшін ыңғайлылық үшін көрсетілген. Өнімді немесе қызметті қосу ethereum.org веб-сайт тобы немесе Ethereum қоры тарапынан мақұлдауды білдірмейді.",
+ "quizzes-title": "Викторина орталығы",
+ "quizzes": "Викториналар",
"refresh": "Бетті жаңартыңыз.",
"return-home": "үйге оралу",
+ "roadmap": "Ethereum жол картасы",
+ "research": "Зерттеу",
+ "research-menu": "Зерттеу мәзірі",
+ "resources": "Аударма ресурстары",
"run-a-node": "Түйінді басқару",
"rollup-component-website": "Веб-сайт",
"rollup-component-developer-docs": "Әзірлеуші құжаттары",
"rollup-component-technology-and-risk-summary": "Технология және тәуекелдер туралы жиынтық мәліметтер",
+ "saas": "Қызмет ретіндегі стейкинг",
"search": "Іздеу",
+ "search-ethereum-org": "ethereum.org іздеу",
+ "secret-leader-election": "Құпия көшбасшыны сайлау",
"search-box-blank-state-text": "Іздеңіз!",
"search-eth-address": "Бұл Ethereum мекенжайына ұқсайды. Біз мекенжайлар туралы деректерді қамтамасыз етпейміз. Оны мына сияқты блок іздеу құралында іздеп көріңіз:",
"search-no-results": "Іздеу нәтижелер қайтармады",
+ "security": "Қауіпсіздік",
+ "single-slot-finality": "Бір ұяшықта аяқтау",
+ "statelessness": "Мәртебенің болмауы",
"see-contributors": "Үлес қосушыларды көру",
- "set-up-local-env": "Жергілікті ортаны реттеу",
- "sharding": "Sharding",
+ "set-up-local-env": "Локал орта баптау",
"show-all": "Бәрін көрсету",
"show-less": "Азырақ көрсету",
"site-description": "Ethereum — ақша мен жаңа қолданбаларың түрлеріне арналған жаһандық, орталықсыздандырылған платформа. Ethereum арқылы ақша бақылайтын код жазып, әлемнің кез келген жерінде қолжетімді болатын қолданбалар жасай аласыз.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Негізгі мазмұнға өту",
- "smart-contracts": "Смарт келісімшарттар",
- "stablecoins": "Стейблкойндар",
+ "smart-contracts": "Ақылды келісімшарттар",
+ "stablecoins": "Stablecoins",
"staking": "Стейкиң",
+ "start-here": "Осы жерден бастаңыз",
"solo": "Соло стейкинг",
- "saas": "Қызмет ретіндегі стейкинг",
- "pools": "Пулдық стейкинг",
+ "support": "Қолдау көрсету",
"terms-of-use": "Пайдалану шарттары",
"translation-banner-body-new": "Біз бұл бетті аудармағандықтан, оны ағылшын тілінде көріп отырсыз. Бұл мазмұнды аударуға көмектесіңіз.",
"translation-banner-body-update": "Бұл беттің жаңарақ нұсқасы бар, бірақ ол ағылшын тілінде ғана қолжетімді. Соңғы нұсқасын аударуға көмектесіңіз.",
@@ -134,21 +295,22 @@
"translation-banner-no-bugs-title": "Мұнда қателер жоқ!",
"translation-banner-no-bugs-content": "Бұл бет аударылып жатқан жоқ. Біз бұл бетті әзірге әдейі ағылшын тілінде қалдырдық.",
"translation-banner-no-bugs-dont-show-again": "Қайта көрсетпеу",
+ "translation-program": "Аударма бағдарламасы",
"try-using-search": "Іздеп жатқаныңызды табу үшін іздеуді қолданып көріңіз",
"tutorials": "Туториалдар",
+ "up": "Жоғары",
+ "use": "Қолд.",
"use-ethereum": "Ethereum платформасын пайдалану",
"use-ethereum-menu": "Ethereum мәзірін пайдалану",
+ "use-menu": "Қолдану мәзірі",
+ "verkle-trees": "Веркола Ауылы",
"wallets": "Әмияндар",
"we-couldnt-find-that-page": "Бұл бетті табу мүмкін болмады",
"web3": "Web3 дегеніміз не?",
"website-last-updated": "Веб-сайттың соңғы жаңартылуы",
- "what-is-ether": "Ether (ETH) дегеніміз не?",
- "what-is-ethereum": "Ethereum дегеніміз не?",
- "defi-page": "Орталықсыздандырылған қаржы (DeFi)",
- "dao-page": "Орталықсыздандырылған автономды ұйымдар (DAO-лар)",
- "nft-page": "Өзара алмастырылмайтын токендер (NFT-лер)",
- "decentralized-social-networks": "Decentralized social networks",
- "decentralized-identity": "Decentralized identity",
+ "what-is-ether": "Ether (ETH) деген не?",
+ "what-is-ethereum": "Ethereum деген не?",
+ "withdrawals": "Ставкаларды шығару",
"yes": "Иә",
- "page-index-meta-title": "Басты бет"
+ "zero-knowledge-proofs": "Нөлдік жария етілген дәлелдер"
}
diff --git a/src/intl/kk/page-languages.json b/src/intl/kk/page-languages.json
index ade331af029..d7b234ba390 100644
--- a/src/intl/kk/page-languages.json
+++ b/src/intl/kk/page-languages.json
@@ -1,4 +1,14 @@
{
+ "page-languages-h1": "Тіл қолдау",
+ "page-languages-interested": "Үлес қосқыңыз келе ме?",
+ "page-languages-learn-more": "Аударма бағдарламасы туралы көбірек біліңіз",
+ "page-languages-meta-desc": "ethereum.org қолдайтын барлық тіл ресурсы және аудармашы ретінде үлес қосу жолдары.",
+ "page-languages-meta-title": "ethereum.org тіл аудармалары",
+ "page-languages-p1": "Ethereum — бұл жаһандық жоба, және ethereum.org сайтының ұлт немесе тілге қарамастан, бәріне қолжетімді болғандығы өте маңызды. Қауымдастығымыз бұл пікірді жүзеге асыру үшін бар ыждаһатын салады.",
+ "page-languages-translations-available": "ethereum.org келесі тілдерде қолжетімді",
+ "page-languages-want-more-header": "ethereum.org-ті басқа тілде көргіңіз келе ме?",
+ "page-languages-want-more-link": "Аударма бағдарламасы",
+ "page-languages-want-more-paragraph": "ethereum.org аудармашылары беттерді әрқашан мүмкін болғанша көп тілге аударады. Олар қазіргі кезде немен жұмыс істеп жүргенін көргіңіз келсе, немесе оларға қосылу үшін тіркелгіңіз келсе, мұны оқыңыз:",
"language-ar": "Араб",
"language-az": "Әзірбайжан",
"language-bg": "Болгар",
diff --git a/src/intl/kk/page-stablecoins.json b/src/intl/kk/page-stablecoins.json
index 1b369566086..bcea87baaff 100644
--- a/src/intl/kk/page-stablecoins.json
+++ b/src/intl/kk/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao логотипі",
"matcha-logo": "Matcha логотипі",
"oasis-logo": "Oasis логотипі",
- "uniswap-logo": "Uniswap логотипі"
+ "uniswap-logo": "Uniswap логотипі",
+ "page-stablecoins-category-dashboard-and-education": "Қасымдық тақтасы және оқу"
}
diff --git a/src/intl/km/common.json b/src/intl/km/common.json
index 2154e3d01a6..bf7597404f5 100644
--- a/src/intl/km/common.json
+++ b/src/intl/km/common.json
@@ -1,17 +1,27 @@
{
- "account-abstraction": "Account abstraction",
"about-ethereum-org": "អំពី ethereum.org",
"about-us": "អំពីពួកយើង",
+ "adding-desci-projects": "ការបន្ថែមគម្រោង Desci",
+ "adding-developer-tools": "ការបន្ថែមឧបករណ៍អ្នកអភិវឌ្ឍន៍",
+ "adding-exchanges": "ការបន្ថែមការប្តូរ",
+ "adding-glossary-terms": "ការបន្ថែមវាក្យសព្ទសទ្ទានុក្រម",
+ "adding-staking-products": "ការបន្ថែមផលិតផលភ្នាល់",
+ "adding-wallets": "ការបន្ថែមកាបូប",
+ "acknowledgements": "ការទទួលស្គាល់",
"aria-toggle-search-button": "បិទបើកប៊ូតុងស្វែងរក",
"aria-toggle-menu-button": "បិទបើកប៊ូតុងមីនុយ",
"beacon-chain": "ខ្សែសង្វាក់ Beacon",
"bridges": "ស្ពាន Blockchain",
+ "build": "បង្កើត",
+ "build-menu": "ម៉ឺនុយបង្កើត",
"clear": "សម្អាត",
"close": "បិទ",
"community": "សហគមន៍",
"community-hub": "មជ្ឈមណ្ឌលសហគមន៍",
"community-menu": "ម៉ឺនុយសហគមន៍",
"contact": "ទំនាក់ទំនង",
+ "content-buckets": "ធុងមាតិកា",
+ "content-resources": "ធនធានមាតិកា",
"content-standardization": "ស្តង់ដារមាតិកា",
"contributing": "ការរួមចំណែក",
"contributors": "អ្នករួមចំណែក",
@@ -20,14 +30,17 @@
"copied": "បានចម្លង",
"copy": "ចម្លង",
"danksharding": "Danksharding",
- "dao-page": "អង្គការស្វយ័តវិមជ្ឈការ (DAOs)",
+ "dao-page": "DAOs - អង្គការស្វយ័តវិមជ្ឈការ",
"dark-mode": "ងងឹត",
"data-provided-by": "ប្រភពទិន្នន័យ៖",
- "decentralized-applications-dapps": "កម្មវិធីវិមជ្ឈការ (dapps)",
+ "decentralized-applications-dapps": "Dapps - កម្មវិធីវិមជ្ឈការ",
"decentralized-identity": "អត្តសញ្ញាណវិមជ្ឈការ",
"decentralized-social-networks": "បណ្តាញសង្គមវិមជ្ឈការ",
- "decentralized-science": "វិទ្យាសាស្ត្រវិមជ្ឈការ (DeSci)",
- "defi-page": "ហិរញ្ញវត្ថុវិមជ្ឈការ (DeFi)",
+ "decentralized-science": "DeSci - វិទ្យាសាស្ត្រវិមជ្ឈការ",
+ "description": "ការពណ៌នាសម្រាប់ធាតុ nav",
+ "defi-page": "DeFi - ហិរញ្ញវត្ថុវិមជ្ឈការ",
+ "design": "ការរចនា",
+ "design-principles": "គោលការណ៍នៃការរចនា",
"devcon": "Devcon",
"developers": "អ្នកអភិវឌ្ឍន៍",
"developers-home": "ផ្ទះរបស់អ្នកអភិវឌ្ឍន៍",
@@ -59,7 +72,6 @@
"enterprise-menu": "ម៉ឺនុយសហគ្រាស",
"esp": "កម្មវិធីជំនួយប្រព័ន្ធអេកូឡូស៊ី",
"eth-current-price": "តម្លៃ ETH បច្ចុប្បន្ន (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "កម្មវិធី Ethereum Bug Bounty ",
"consensus-when-shipping": "តើការដឹកជញ្ជូននៅពេលណា?",
"ethereum-upgrades": "ការអាប់គ្រេដ Ethereum",
@@ -90,15 +102,14 @@
"future-proofing": "ការធានាអនាគត",
"get-eth": "ទទួលយក ETH",
"get-involved": "ចូលរួម",
- "get-started": "ចាប់ផ្ដើម",
+ "get-started": "តោះ! ចាប់ផ្ដើម",
"grants": "ជំនួយ",
"grant-programs": "កម្មវិធីជំនួយប្រព័ន្ធអេកូឡូស៊ី",
"guides": "ការណែនាំ",
- "guides-hub": "មជ្ឈមណ្ឌលណែនាំ",
+ "guides-hub": "របៀបណែនាំ",
"history-of-ethereum": "ប្រវត្តិ Ethereum",
"home": "ទំព័រដើម",
"how-ethereum-works": "របៀបដែល Ethereum ដំណើរការ",
- "how-to-register-an-ethereum-account": "របៀប \"ចុះឈ្មោះ\" គណនី Ethereum",
"how-to-revoke-token-access": "របៀបដកហូតការចូលប្រើមូលនិធិគ្រីបតូរបស់អ្នកពីកិច្ចសន្យាឆ្លាតវៃ។",
"how-to-swap-tokens": "របៀបប្រើ swap tokens",
"how-to-use-a-bridge": "របៀបផ្ទេរកាក់ទៅស្រទាប់ទី 2",
@@ -128,11 +139,104 @@
"loading-error-try-again-later": "មិនអាចផ្ទុកទិន្នន័យបានទេ។ សូមព្យាយាមម្តងទៀតពេលក្រោយ។",
"logo": "រូបសញ្ញា",
"mainnet-ethereum": "Mainnet Ethereum",
- "more": "ច្រើនទៀត",
- "nav-developers": "អ្នកអភិវឌ្ឍន៍",
+ "merge": "បញ្ចូលគ្នា",
+ "more": "ច្រើនជាង",
+ "nav-about-description": "គម្រោងប្រភពបើកចំហ សាធារណៈ សម្រាប់សហគមន៍ Ethereum",
+ "nav-advanced-description": "ស្វែងយល់អំពីប្រធានបទស្មុគស្មាញបន្ថែមទៀត",
+ "nav-advanced-label": "កម្រិតខ្ពស់",
+ "nav-basics-description": "ស្វែងយល់អំពីមូលដ្ឋានគ្រឹះរបស់ Ethereum",
+ "nav-basics-label": "មូលដ្ឋាន",
+ "nav-bridges-description": "Web3 បានវិវត្តទៅជាប្រព័ន្ធអេកូឡូស៊ីនៃប្លុកឆែន L1 បឋម និងដំណោះស្រាយពង្រីក L2",
+ "nav-builders-home-description": "សៀវភៅណែនាំរបស់អ្នកអភិវឌ្ឍសម្រាប់ Ethereum — ដោយអ្នកអភិវឌ្ឍ សម្រាប់អ្នកអភិវឌ្ឍ",
+ "nav-builders-home-label": "ផ្ទះរបស់អ្នកអភិវឌ្ឍ",
+ "nav-contribute-description": "ប្រសិនបើអ្នកត្រូវការជំនួយ ជំនួយនេះអាចជួយអ្នកបាន",
+ "nav-contribute-label": "ការចូលរួមចំណែកដល់ ethereum.org",
+ "nav-dao-description": "សហគមន៍ដែលគ្រប់គ្រងដោយសមាជិក ដោយគ្មានអាជ្ញាធរនៅកណ្តាល",
+ "nav-dapps-description": "រុករកប្រព័ន្ធអេកូឡូស៊ីដ៏សម្បូរបែបនៃកម្មវិធីដោយប្រើ Ethereum",
+ "nav-defi-description": "ជម្រើសជាសកល បើកចំហចំពោះទីផ្សារហិរញ្ញវត្ថុប្រពៃណី",
+ "nav-desci-description": "ជម្រើសជាសកល បើកចំហចំពោះប្រព័ន្ធវិទ្យាសាស្ត្របច្ចុប្បន្ន",
+ "nav-desoc-description": "ថ្នាលដែលមានមូលដ្ឋានលើប្លុកឆែនសម្រាប់អន្តរកម្មសង្គម និងការបង្កើតមាតិកា",
"nav-developers-docs": "ឯកសារអ្នកអភិវឌ្ឍន៍",
+ "nav-developers": "អ្នកអភិវឌ្ឍន៍",
+ "nav-did-description": "ចេញ និងធ្វើជាម្ចាស់ឧបករណ៍កំណត់អត្តសញ្ញាណវិមជ្ឈការតែមួយគត់របស់អ្នក",
+ "nav-docs-description": "ឯកសារដើម្បីជួយអ្នកយល់ និងអភិវឌ្ឍជាមួយ Ethereum",
+ "nav-docs-design-description": "ការពណ៌នាអំពីបញ្ហាប្រឈមនៃការរចនា web3 តែមួយគត់ ការអនុវត្តល្អបំផុត និងការយល់ដឹងអំពីការស្រាវជ្រាវអ្នកប្រើប្រាស់",
+ "nav-docs-design-label": "មូលដ្ឋានគ្រឹះអំពីការរចនា UX/UI",
+ "nav-docs-foundation-description": "មូលដ្ឋានគ្រឹះជាស្នូលដើម្បីអភិវឌ្ឍលើ Ethereum",
+ "nav-docs-overview-description": "ផ្ទះរបស់អ្នកសម្រាប់ឯកសារអ្នកអភិវឌ្ឍន៍",
+ "nav-docs-stack-description": "ស្វែងយល់ពីព័ត៌មានលម្អិតទាំងអស់នៃ stack របស់ Ethereum",
+ "nav-eip-description": "ស្ដង់ដារដែលបញ្ជាក់មុខងារ ឬដំណើរការថ្មី",
+ "nav-eip-label": "EIP - សំណើកែលម្អ Ethereum",
+ "nav-emerging-description": "ស្វែងយល់ពីករណីប្រើប្រាស់ថ្មីជាងនេះផ្សេងទៀតសម្រាប់ Ethereum",
+ "nav-enterprise-description": "កម្មវិធីអាជីវកម្មសម្រាប់ Ethereum",
+ "nav-ethereum-org-description": "គេហទំព័រនេះមានការជំរុញពីសហគមន៍ សូមចូលរួមជាមួយពួកយើង និងរួមចំណែកផងដែរ",
+ "nav-ethereum-wallets-description": "កម្មវិធីមួយដើម្បីធ្វើអន្តរកម្មជាមួយគណនី Ethereum របស់អ្នក",
+ "nav-events-description": "វិមជ្ឈការ និងសេរីភាពក្នុងការចូលរួមសម្រាប់មនុស្សគ្រប់រូប",
+ "nav-events-irl-description": "ជារៀងរាល់ខែមានព្រឹត្តិការណ៍ Ethereum សំខាន់ៗដោយជួបផ្ទាល់ និងតាមអ៊ីនធឺណិត",
+ "nav-events-label": "សហគមន៍ និងព្រឹត្តិការណ៍",
+ "nav-events-online-description": "មានឪពុកដែលជាអ្នកចូលចិត្ត Ethereum រាប់រយពាន់នាក់នៅក្នុងសហគមន៍អនឡាញទាំងនេះ",
+ "nav-find-wallet-description": "កាបូបដែលអាចឱ្យអ្នកប្រើគ្រីបតូ",
+ "nav-find-wallet-label": "ជ្រើសរើសកាបូបរបស់អ្នក",
+ "nav-gas-fees-description": "តើថ្លៃសេវាប្រតិបត្តិការ ETH ត្រូវបានគណនារបៀបណា",
+ "nav-get-eth-description": "អ្នកត្រូវការ ether (ETH) ដើម្បីប្រើកម្មវិធី Ethereum",
+ "nav-get-started-description": "ជំហានដំបូងរបស់អ្នកក្នុងការប្រើ Ethereum",
+ "nav-governance-description": "ដំណើរការពាក់ព័ន្ធនឹងការធ្វើឱ្យប្រសើរឡើងនូវពិធីការ Ethereum",
+ "nav-governance-label": "អភិបាលកិច្ច",
+ "nav-grants-description": "បញ្ជីត្រៀមទុកដោយសហគមន៍របស់យើងលើគម្រោងដែលផ្តល់កម្មវិធីផ្តល់មូលនិធិជំនួយ",
+ "nav-guide-create-account-description": "គ្រប់គ្នាអាចបង្កើតគណនី Ethereum នៅពេលណាក៏បាន ដោយមិនគិតថ្លៃជាមួយកម្មវិធីកាបូប",
+ "nav-guide-revoke-access-description": "រក្សាសុវត្ថិភាពនៅពេលធ្វើអន្តរកម្មជាមួយកិច្ចសន្យាឆ្លាតវៃ និងកម្មវិធីនៅក្នុងប្រព័ន្ធអេកូឡូស៊ី Ethereum",
+ "nav-guide-revoke-access-label": "របៀបដកសិទ្ធិចូលប្រើកិច្ចសន្យាឆ្លាតវៃ",
+ "nav-guide-use-wallet-description": "រៀនពីរបៀបដំណើរការមុខងារមូលដ្ឋានទាំងអស់របស់កាបូប",
+ "nav-guide-use-wallet-label": "របៀបប្រើកាបូប",
+ "nav-guides-description": "ការណែនាំជាជំហានៗជាក់ស្តែង ដើម្បីជួយអ្នកចាប់ផ្តើម",
+ "nav-guides-label": "របៀបណែនាំ",
+ "nav-history-description": "គ្រោងពេលវេលានៃការបំបែក និងការអាប់ដេតសំខាន់ៗទាំងអស់",
+ "nav-history-label": "ប្រវត្តិបច្ចេកទេសរបស់ Ethereum",
+ "nav-layer-2-description": "ប្រតិបត្តិការថោកជាង និងលឿនជាងមុនសម្រាប់ Ethereum",
+ "nav-learn-by-coding-description": "ឧបករណ៍ដែលជួយអ្នកសាកល្បងជាមួយ Ethereum",
+ "nav-local-env-description": "ជ្រើសរើស និងរៀបចំ stack អភិវឌ្ឍន៍ Ethereum របស់អ្នក",
+ "nav-mainnet-description": "កម្មវិធី blockchain សម្រាប់សហគ្រាសអាចត្រូវបានបង្កើតឡើងនៅលើ Ethereum Mainnet សាធារណៈ",
+ "nav-nft-description": "មធ្យោបាយដើម្បីតំណាងឱ្យអ្វីដែលប្លែកពីគេជាទ្រព្យសកម្មដែលផ្អែកលើ Ethereum",
+ "nav-open-research-description": "ចំណុចខ្លាំងសំខាន់មួយនៃ Ethereum គឺសហគមន៍ស្រាវជ្រាវសកម្មរបស់ខ្លួន",
+ "nav-open-research-label": "បើកការស្រាវជ្រាវ",
+ "nav-overview-description": "ការអប់រំ Ethereum មានទាំងអស់",
+ "nav-participate-overview-description": "ទិដ្ឋភាពទូទៅអំពីរបៀបចូលរួម",
"nav-primary": "បឋម",
- "nft-page": "ថូខិនដែលមិនអាចផ្លាស់ប្តូរបាន (NFTs)",
+ "nav-quizzes-description": "ស្វែងយល់ពីរបៀបដែលអ្នកយល់ Ethereum និងរូបិយប័ណ្ណគ្រីបតូ",
+ "nav-quizzes-label": "សាកល្បងចំណេះដឹងរបស់អ្នក",
+ "nav-refi-description": "ប្រព័ន្ធសេដ្ឋកិច្ចជំនួសដែលបង្កើតឡើងនៅលើគោលការណ៍បង្កើតឡើងវិញ",
+ "nav-research-description": "ដំណើរការដែលប្រើដើម្បីកែលម្អ Ethereum",
+ "nav-research-label": "ការស្រាវជ្រាវ និងអភិវឌ្ឍន៍",
+ "nav-roadmap-description": "ផ្លូវទៅកាន់ការពង្រីក សុវត្ថិភាព និងចីរភាពកាន់តែច្រើនសម្រាប់ Ethereum",
+ "nav-roadmap-future-description": "ការពង្រឹង Ethereum ឱ្យក្លាយជាបណ្តាញដ៏រឹងមាំ និងវិមជ្ឈការ",
+ "nav-roadmap-future-label": "ការធានាអនាគត",
+ "nav-roadmap-label": "ផែនទីបង្ហាញផ្លូវ",
+ "nav-roadmap-scaling-description": "ការអាប់ដេតបណ្តាញ ដើម្បីកាត់បន្ថយថ្លៃសេវាប្រតិបត្តិការ និងល្បឿនបន្ថែមទៀត",
+ "nav-roadmap-security-description": "ធ្វើឱ្យប្រាកដថា Ethereum រក្សាភាពធន់នឹងការវាយប្រហារគ្រប់ប្រភេទនាពេលអនាគត",
+ "nav-roadmap-security-label": "សន្តិសុខប្រសើរឡើង",
+ "nav-roadmap-ux-description": "ការប្រើ Ethereum ចាំបាច់ត្រូវធ្វើឱ្យសាមញ្ញ",
+ "nav-run-a-node-description": "ក្លាយជាអធិបតេយ្យពេញលេញ ស្របដែលជួយធានាដល់បណ្តាញ",
+ "nav-security-description": "ស្វែងយល់ពីការអនុវត្តល្អបំផុតនៅពេលប្រើរូបិយប័ណ្ណគ្រីបតូ",
+ "nav-smart-contracts-description": "ប្លុកនៃការបង្កើតជាមូលដ្ឋានគ្រឹះនៃប្រព័ន្ធអេកូឡូស៊ី Ethereum",
+ "nav-stablecoins-description": "Stablecoins គឺជាថូខិន Ethereum ដែលត្រូវបានរចនាឡើងដើម្បីរក្សាតម្លៃថេរ",
+ "nav-stake-description": "ទទួលបានរង្វាន់សម្រាប់ការធានា Ethereum",
+ "nav-stake-label": "ភ្នាល់",
+ "nav-staking-home-description": "ទិដ្ឋភាពទូទៅនៃជម្រើសផ្សេងៗសម្រាប់ការភ្នាល់",
+ "nav-staking-pool-description": "ភ្នាល់ និងទទួលបានរង្វាន់ជាមួយនឹងទឹកប្រាក់ណាមួយនៃ ETH ដោយចូលរួមជាមួយអ្នកដទៃ",
+ "nav-staking-pool-label": "ការភ្នាល់រួមបញ្ចូលគ្នា",
+ "nav-staking-saas-label": "ការភ្នាល់ដោយប្រើសេវាកម្ម",
+ "nav-staking-solo-label": "ការភ្នាល់ទោល",
+ "nav-start-building-description": "ព័ត៌មានសំខាន់ៗសម្រាប់អ្នកចូលរួមថ្មី",
+ "nav-translation-program-description": "ការខិតខំប្រឹងប្រែងរួមគ្នាដើម្បីបកប្រែ ethereum.org ឱ្យបានគ្រប់ភាសាទាំងអស់",
+ "nav-tutorials-description": "បញ្ជីត្រៀមទុកនៃការបង្រៀនសហគមន៍",
+ "nav-use-cases-description": "ស្វែងយល់ពីគំនិតផ្សេងៗគ្នាសម្រាប់ការប្រើ Ethereum",
+ "nav-what-is-ether-description": "រូបិយប័ណ្ណរបស់កម្មវិធី Ethereum",
+ "nav-what-is-ethereum-description": "ស្វែងយល់ពីអ្វីដែលធ្វើឱ្យ Ethereum មានលក្ខណៈពិសេស",
+ "nav-what-is-web3-label": "តើ Web3 ជាអ្វី?",
+ "nav-what-is-web3-description": "ជម្រើសជំនួសចំពោះភាពផ្តាច់មុខបែបមជ្ឈការដែលកំណត់ច្បាប់",
+ "nav-whitepaper-description": "ក្រដាសស Ethereum ដើមដែលសរសេរដោយ Vitalik Buterin នៅឆ្នាំ 2014",
+ "nav-zkp-description": "របៀបបញ្ជាក់សុពលភាពនៃសេចក្តីថ្លែងការណ៍ដោយមិនបង្ហាញសេចក្តីថ្លែងការណ៍ខ្លួនឯង",
+ "nft-page": "NFTs - ថូខិនដែលមិនអាចផ្លាស់ប្តូរបាន",
"nfts": "NFTs",
"no": "ទេ",
"on-this-page": "នៅលើទំព័រនេះ",
@@ -140,6 +244,7 @@
"page-developers-aria-label": "ម៉ឺនុយអ្នកអភិវឌ្ឍន៍",
"page-index-meta-title": "ទំព័រដើម",
"page-last-updated": "ទំព័របានធ្វើបច្ចុប្បន្នភាពចុងក្រោយ",
+ "participate-menu": "ម៉ឺនុយចូលរួម",
"pbs": "ការបែងចែករវាង អ្នកស្នើសុំ - អ្នកបង្កើត",
"pools": "ការភ្នាល់រួមបញ្ចូលគ្នា",
"privacy-policy": "គោលការណ៍ឯកជនភាព",
@@ -150,9 +255,11 @@
"refresh": "សូមផ្ទុកទំព័រឡើងវិញ។",
"return-home": "ត្រលប់ទៅទំព័រដើម",
"roadmap": "ផែនទីបង្ហាញផ្លូវ Ethereum",
+ "research": "ស្រាវជ្រាវ",
+ "research-menu": "ម៉ឺនុយស្រាវជ្រាវ",
"resources": "ធនធានបកប្រែ",
- "regenerative-finance": "ហិរញ្ញវត្ថុបង្កើតឡើងវិញ (ReFi)",
- "run-a-node": "ដំណើរការ node",
+ "regenerative-finance": "ReFi - ហិរញ្ញវត្ថុបង្កើតឡើងវិញ",
+ "run-a-node": "ដំណើរការnode",
"rollup-component-website": "វែបសាយ",
"rollup-component-developer-docs": "ឯកសារអ្នកអភិវឌ្ឍន៍",
"rollup-component-technology-and-risk-summary": "សង្ខេបបច្ចេកវិជ្ជា និងហានិភ័យ",
@@ -164,6 +271,7 @@
"search-box-blank-state-text": "ស្វែងរកដោយប្រុងប្រយ័ត្ន!",
"search-eth-address": "វាមើលទៅដូចជាអាសយដ្ឋាន Ethereum ។ យើងមិនផ្តល់ទិន្នន័យជាក់លាក់ចំពោះអាសយដ្ឋានទេ។ ព្យាយាមស្វែងរកវានៅលើកម្មវិធីរុករកប្លុកដូចជា",
"search-no-results": "គ្មានលទ្ធផលសម្រាប់ការស្វែងរករបស់អ្នកទេ។",
+ "security": "សន្តិសុខ",
"single-slot-finality": "ការបញ្ចប់តែមួយស្លត",
"statelessness": "ភាពមិនរក្សាទិន្នន័យ",
"see-contributors": "មើលអ្នករួមចំណែក",
@@ -172,15 +280,14 @@
"show-all": "បង្ហាញទាំងអស់",
"show-less": "បង្ហាញតិច",
"site-description": "Ethereum គឺជាវេទិកាវិមជ្ឈការសកល សម្រាប់រូបិយប័ណ្ណនិងជាកម្មវិធីបែបថ្មី។ នៅលើ Ethereum អ្នកអាចសរសេរកូដត្រួតពិនិត្យលុយ និងបង្កើតកម្មវិធីដែលអាចចូលប្រើប្រាស់បានគ្រប់ទីកន្លែងក្នុងពិភពលោក។",
- "site-title": "ethereum.org",
"skip-to-main-content": "រំលងទៅមាតិកាចម្បង",
"smart-contracts": "កិច្ចសន្យាឆ្លាតវៃ",
"stablecoins": "Stablecoins",
"stake-eth": "តម្កល់ ETH",
"staking": "ការភ្នាល់",
"start-here": "ចាប់ផ្តើមនៅទីនេះ",
- "style-guide": "Style guide",
"solo": "ការភ្នាល់ទោល",
+ "support": "គាំទ្រ",
"terms-of-use": "ល័ក្ខខ័ណ្ឌនៃការប្រើប្រាស់",
"translation-banner-body-new": "អ្នកកំពុងមើលទំព័រនេះជាភាសាអង់គ្លេស ដោយសារយើងមិនទាន់បានបកប្រែវានៅឡើយ។ ជួយយើងបកប្រែខ្លឹមសារនេះ។",
"translation-banner-body-update": "មានកំណែថ្មីនៃទំព័រនេះ ប៉ុន្តែវាជាភាសាអង់គ្លេសឥឡូវនេះ។ ជួយយើងបកប្រែកំណែចុងក្រោយបំផុត។",
@@ -191,12 +298,14 @@
"translation-banner-no-bugs-title": "គ្មានកំហុសនៅទីនេះទេ!",
"translation-banner-no-bugs-content": "ទំព័រនេះមិនត្រូវបានបកប្រែទេ។ យើងបានដាក់ទំព័រនេះជាភាសាអង់គ្លេសដោយចេតនានៅពេលនេះ។",
"translation-banner-no-bugs-dont-show-again": "កុំបង្ហាញម្តងទៀត",
+ "translation-program": "កម្មវិធីបកប្រែ",
"try-using-search": "សាកល្បងប្រើការស្វែងរកដើម្បីស្វែងរកអ្វីដែលអ្នកកំពុងស្វែងរក ឬ",
"tutorials": "ការបង្រៀន",
"up": "ឡើងលើ",
+ "use": "ប្រើ",
"use-ethereum": "ប្រើ Ethereum",
"use-ethereum-menu": "ប្រើម៉ឺនុយ Ethereum",
- "user-experience": "User experience",
+ "use-menu": "ម៉ឺនុយប្រើប្រាស់",
"verkle-trees": "Verkle trees",
"wallets": "កាបូប",
"we-couldnt-find-that-page": "យើងរកមិនឃើញទំព័រនោះទេ",
diff --git a/src/intl/km/page-dapps.json b/src/intl/km/page-dapps.json
index 246a5e3a2d5..727ce844c38 100644
--- a/src/intl/km/page-dapps.json
+++ b/src/intl/km/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "ស្ទ្រីមប្រាក់ក្នុងពេលវេលាជាក់ស្តែង។",
"page-dapps-dapp-description-superrare": "ទិញស្នាដៃសិល្បៈឌីជីថលដោយផ្ទាល់ពីសិល្បករ ឬនៅក្នុងទីផ្សារបន្ទាប់បន្សំ។",
"page-dapps-dapp-description-token-sets": "យុទ្ធសាស្រ្តវិនិយោគ Crypto ដែលធ្វើឱ្យមានតុល្យភាពឡើងវិញដោយស្វ័យប្រវត្តិ។",
- "page-dapps-dapp-description-tornado-cash": "ផ្ញើប្រតិបត្តិការអនាមិកនៅលើ Ethereum ។",
"page-dapps-dapp-description-uniswap": "ប្តូរថូខឹនយ៉ាងសាមញ្ញ ឬផ្តល់ថូខឹនសម្រាប់រង្វាន់ %។",
"page-dapps-dapp-description-dexguru": "វេទិកាជួញដូរដែលមិនមានការឃុំឃាំងសម្រាប់អ្នកជួញដូរតាមរយៈ DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix គឺជាវេទិកាសម្រាប់បញ្ចេញ និងជួញដូរទ្រព្យសម្បត្តិសំយោគ",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "ទាំងនេះគឺជាកម្មវិធីដែលផ្តោតលើការធ្វើវិមជ្ឈការឧបករណ៍អ្នកអភិវឌ្ឍន៍ ការបញ្ចូលប្រព័ន្ធសេដ្ឋកិច្ចគ្រីពតូទៅក្នុងបច្ចេកវិទ្យាដែលមានស្រាប់ និងបង្កើតទីផ្សារសម្រាប់ការងារអភិវឌ្ឍន៍ប្រភពបើកចំហ។",
"page-dapps-technology-title": "បច្ចេកវិទ្យាវិមជ្ឈការ",
"page-dapps-token-sets-logo-alt": "និមិត្តសញ្ញា Token Sets",
- "page-dapps-tornado-cash-logo-alt": "និមិត្តសញ្ញាសាច់ប្រាក់ Tornado",
"page-dapps-uniswap-logo-alt": "និមិត្តសញ្ញា Uniswap",
"page-dapps-wallet-callout-button": "ស្វែងរកកាបូប",
"page-dapps-wallet-callout-description": "កាបូបក៏ជា dapps ផងដែរ។ ស្វែងរកមួយដោយផ្អែកលើលក្ខណៈពិសេសដែលសាកសមនឹងអ្នក។",
diff --git a/src/intl/km/page-languages.json b/src/intl/km/page-languages.json
index fa592058ec4..7387e58d46e 100644
--- a/src/intl/km/page-languages.json
+++ b/src/intl/km/page-languages.json
@@ -1,19 +1,39 @@
{
- "language-ar": "ភាសាអារ៉ាប់",
- "language-az": "ភាសាអាហ្សាបាចានី",
+ "page-languages-h1": "គាំទ្រភាសា",
+ "page-languages-interested": "ចាប់អារម្មណ៍ក្នុងការចូលរួមចំណែកមែនទេ?",
+ "page-languages-learn-more": "ស្វែងយល់បន្ថែមអំពីកម្មវិធីបកប្រែរបស់យើង",
+ "page-languages-meta-desc": "ធនធានសម្រាប់ភាសាដែលបានគាំទ្រទាំងអស់នៃ ethereum.org និងវិធីដើម្បីចូលរួមធ្វើជាអ្នកបកប្រែ។",
+ "page-languages-meta-title": "ការបកប្រែភាសារបស់ ethereum.org",
+ "page-languages-p1": "Ethereum គឺជាគម្រោងសកល ហើយវាជារឿងសំខាន់ដែល ethereum.org គឺអាចចូលប្រើបានសម្រាប់មនុស្សគ្រប់គ្នា ដោយមិនគិតពីសញ្ជាតិ ឬភាសារបស់ពួកគេ។ សហគមន៍របស់យើងបាននិងកំពុងខិតខំប្រឹងប្រែង ដើម្បីធ្វើឱ្យចក្ខុវិស័យនេះក្លាយជាការពិត។",
+ "page-languages-translations-available": "ethereum.org គឺអាចប្រើប្រាស់បានក្នុងភាសាដូចខាងក្រោម",
+ "page-languages-resources-paragraph": "បន្ថែមពីលើការបកប្រែមាតិកា ethereum.org យើងក៏រក្សាផងដែរនូវ",
+ "page-languages-resources-link": "បញ្ជីត្រៀមទុកនៃធនធាន Ethereum ក្នុងភាសាជាច្រើនទៀត",
+ "page-languages-want-more-header": "ចង់ឃើញ Ethereum.org ក្នុងភាសាខុសគ្នាមែនទេ?",
+ "page-languages-want-more-link": "កម្មវិធីបកប្រែ",
+ "page-languages-want-more-paragraph": "អ្នកបកប្រែ ethereum.org តែងតែធ្វើការបកប្រែទំព័រជាច្រើនភាសាតាមតែអាចធ្វើបាន។ ដើម្បីមើលអ្វីដែលពួកគេកំពុងធ្វើការនៅពេលនេះ ឬក៏បញ្ជាប់ចូលរួមជាមួយពួកគេ សូមអានអំពី",
+ "page-languages-filter-label": "បញ្ជីតម្រង",
+ "page-languages-filter-placeholder": "វាយពាក្យដើម្បីត្រង",
+ "page-languages-browser-default": "លំនាំដើមនៃកម្មវិធីរុករក",
+ "page-languages-translated": "បានបកប្រែ",
+ "page-languages-words": "ពាក្យពេចន៍",
+ "page-languages-recruit-community": "ជួយយើងបកប្រែ ethereum.org។",
+ "language-ar": "អារ៉ាប់",
+ "language-az": "អាស៊ែបៃហ្សង់",
"language-bg": "ប៊ុលហ្គារី",
"language-bn": "បង់ក្លាដែស",
"language-ca": "កាតាឡាន",
"language-cs": "ឆេកូ",
"language-da": "ដាណឺម៉ាក",
"language-de": "អាល្លឺម៉ង់",
- "language-el": "ក្រិច",
+ "language-el": "ក្រិក",
"language-en": "អង់គ្លេស",
"language-es": "អេស្ប៉ាញ",
"language-fa": "ហ្វាស៊ី",
"language-fi": "ហ្វាំងឡង់",
"language-fr": "បារាំង",
"language-gl": "កាលីកហ្សង់",
+ "language-gu": "ហ្គូចារ៉ា",
+ "language-he": "ជ្វីហ្វ",
"language-hi": "ហិណ្ឌូ",
"language-hr": "ក្រូអាត",
"language-hu": "ហុងគ្រី",
@@ -29,9 +49,10 @@
"language-ml": "ម៉ាឡាយ៉ាឡាម",
"language-mr": "ម៉ារ៉ាធី",
"language-ms": "ម៉ាឡេ",
- "language-nb": "ន័រវេ",
- "language-nl": "ដាត់ច៍ (ណេឌឺឡែន)",
- "language-fil": "ភាសាហ្វីលីពីន",
+ "language-nb": "ន័រវែស",
+ "language-nl": "ហូឡង់",
+ "language-pcm": "នីហ្សេរីយ៉ា",
+ "language-fil": "ហ្វីលីពីន",
"language-pl": "ប៉ូឡូញ",
"language-pt": "ព័រទុយហ្គាល់",
"language-pt-br": "ព័រទុយហ្គាល់ (ប្រស៊ីល)",
@@ -42,11 +63,13 @@
"language-sl": "ស្លូវេនៀ",
"language-sr": "ស៊ែប៊ី",
"language-sw": "ស្វាហ៊ីលី",
+ "language-ta": "តាមីល",
"language-th": "ថៃ",
"language-tr": "ទួរគី",
"language-uk": "អ៊ុយក្រែន",
- "language-uz": "អ៊ូបែក",
+ "language-ur": "អ៊ូឌូ",
+ "language-uz": "អ៊ូសបេគ",
"language-vi": "វៀតណាម",
- "language-zh": "ភាសាចិនសាមញ្ញ",
+ "language-zh": "ចិនសាមញ្ញ",
"language-zh-tw": "ចិន (បុរាណ)"
}
diff --git a/src/intl/km/page-stablecoins.json b/src/intl/km/page-stablecoins.json
index ce3adf26207..d9f74b3e3df 100644
--- a/src/intl/km/page-stablecoins.json
+++ b/src/intl/km/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "ប្រភព",
"page-stablecoins-bitcoin-pizza": "ភីហ្សា Bitcoin ដ៏ល្បីល្បាញ",
"page-stablecoins-bitcoin-pizza-body": "ក្នុងឆ្នាំ 2010 មាននរណាម្នាក់បានទិញភីហ្សាចំនួន 2 ក្នុងតម្លៃ 10,000 bitcoin ។ នៅពេលនោះមានតម្លៃ ~ 41 ដុល្លារ។ នៅក្នុងទីផ្សារសព្វថ្ងៃ មានតម្លៃរាប់លានដុល្លារ។ មានប្រតិបត្តិការសោកស្ដាយស្រដៀងគ្នាជាច្រើននៅក្នុងប្រវត្តិសាស្រ្តរបស់ Ethereum ។ Stablecoins ដោះស្រាយបញ្ហានេះ ដូច្នេះអ្នកអាចរីករាយនឹងភីហ្សារបស់អ្នក ហើយកាន់ ETH របស់អ្នក។",
+ "page-stablecoins-category-dashboard-and-education": "ផ្ទៃដើមសេចក្ដីស្វែងរក & ការអប់រំ",
"page-stablecoins-coin-price-change": "ការផ្លាស់ប្តូរតម្លៃកាក់ (30 ថ្ងៃចុងក្រោយ)",
"page-stablecoins-crypto-backed": "Crypto គាំទ្រ",
"page-stablecoins-crypto-backed-con-1": "មានស្ថិរភាពតិចជាងកាក់ស្ថិរភាពដែលគាំទ្រដោយ fiat",
diff --git a/src/intl/kn/common.json b/src/intl/kn/common.json
index a0c30074f6e..195667f9ae3 100644
--- a/src/intl/kn/common.json
+++ b/src/intl/kn/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "ಅಕೌಂಟ್-ಅಬ್ಸ್ಟ್ರಾಕ್ಷನ್",
"about-ethereum-org": "Ethereum.org ಬಗ್ಗೆ",
"about-us": "ನಮ್ಮ ಬಗ್ಗೆ",
+ "adding-desci-projects": "Desci ಪ್ರಾಜೆಕ್ಟ್ಗಳನ್ನು ಸೇರಿಸುವುದು",
+ "adding-developer-tools": "ಡೆವಲಪರ್ ಟೂಲ್ಸ್ ಸೇರಿಸುವುದು",
+ "adding-exchanges": "ಎಕ್ಸ್ಚೇಂಜ್ಗಳನ್ನು ಸೇರಿಸುವುದು",
+ "adding-glossary-terms": "ಗ್ಲೋಸರಿ ಪದಗಳನ್ನು ಸೇರಿಸುವುದು",
+ "adding-staking-products": "ಸ್ಟ್ಯಾಕಿಂಗ್ ಉತ್ಪನ್ನಗಳನ್ನು ಸೇರಿಸುವುದು",
+ "adding-wallets": "ವ್ಯಾಲೆಟ್ಗಳನ್ನು ಸೇರಿಸುವುದು",
+ "account-abstraction": "ಅಕೌಂಟ್-ಅಬ್ಸ್ಟ್ರಾಕ್ಷನ್",
+ "acknowledgements": "ಸ್ವೀಕೃತಿಗಳು",
"aria-toggle-search-button": "ಹುಡುಕಾಟ ಬಟನ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ",
"aria-toggle-menu-button": "ಮೆನು ಬಟನ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ",
"beacon-chain": "ಬೀಕನ್ ಚೈನ್",
"bridges": "ಬ್ಲಾಕ್ಚೈನ್ ಸೇತುವೇಗಳು",
+ "bug-bounty": "ಬಗ್ ಬೌಂಟಿ",
+ "build": "ನಿರ್ಮಾಣ",
+ "build-menu": "ನಿರ್ಮಾಣ ಸೂಚಿ",
"clear": "ಅಳಿಸು",
"close": "ಮುಚ್ಚು",
"community": "ಸಮುದಾಯ",
"community-hub": "ಸಮುದಾಯದ ಮೆನು",
"community-menu": "ಸಮುದಾಯದ ಮೆನು",
"contact": "ಸಂಪರ್ಕ",
+ "content-buckets": "ವಿಷಯ ಬಕೆಟ್ಗಳು",
+ "content-resources": "ವಿಷಯ ಸಂಪನ್ಮೂಲಗಳು",
"content-standardization": "ವಿಷಯ ಮಾನಕೀಕರಣ",
"contributing": "ಕೊಡುಗೆ ನೀಡುತ್ತಿದೆ",
"contributors": "ಕೊಡುಗೆದಾರರು",
@@ -20,14 +32,17 @@
"copied": "ನಕಲು ಮಾಡಲಾಗಿದೆ",
"copy": "ನಕಲು",
"danksharding": "ಡ್ಯಾಂಕ್ಶಾರ್ಡಿಂಗ್",
- "dao-page": "ವಿಕೇಂದ್ರೀಕರಿತ ಸ್ವಯಂಚಾಲಿತ ಸಂಸ್ಥೆಗಳು (ಡಿಎಒಗಳು)",
- "dark-mode": "ಕತ್ತಲು / ಅಂಧಕಾರದ",
+ "dao-page": "ಡಿಎಒಗಳು - ವಿಕೇಂದ್ರೀಕರಿತ ಸ್ವಯಂಚಾಲಿತ ಸಂಸ್ಥೆಗಳು",
+ "dark-mode": "ಗಾಢ",
"data-provided-by": "ಡೇಟಾ ಮೂಲ:",
- "decentralized-applications-dapps": "ವಿಕೇಂದ್ರೀಕೃತ ಅಪ್ಲಿಕೇಶನ್ಗಳು (dapps)",
+ "decentralized-applications-dapps": "Dapps - ವಿಕೇಂದ್ರೀಕೃತ ಅಪ್ಲಿಕೇಶನ್ಗಳು",
"decentralized-identity": "ವಿಕೇಂದ್ರೀಕರಿತ ಗುರುತು",
"decentralized-social-networks": "ವಿಕೇಂದ್ರೀಕರಿತ ಸಾಮಾಜಿಕ ಜಾಲಗಳು",
- "decentralized-science": "ವಿಕೇಂದ್ರೀಕರಿತ ವಿಜ್ಞಾನ (ಡಿಸೈ)",
- "defi-page": "ವಿಕೇಂದ್ರೀಕರಿತ ಹಣಕಾಸು (ಡಿಫೈ)",
+ "decentralized-science": "ಡಿಸೈ - ವಿಕೇಂದ್ರೀಕರಿತ ವಿಜ್ಞಾನ",
+ "description": "ಸಂಚರಣೆಯ ವಿವರ",
+ "defi-page": "DeFi - ವಿಕೇಂದ್ರೀಕರಿತ ಹಣಕಾಸು",
+ "design": "ವಿನ್ಯಾಸ",
+ "design-principles": "ವಿನ್ಯಾಸ ತತ್ವಗಳು",
"devcon": "ಡೆವ್ಕಾನ್",
"developers": "ಡೆವೆಲಪರ್",
"developers-home": "ಡೆವಲಪರ್ಗಳ ಮುಖಪುಟ",
@@ -47,23 +62,21 @@
"docsearch-no-results-missing": "ಈ ಪ್ರಶ್ನೆಗೆ ಫಲಿತಾಂಶಗಳು ಬರಬೇಕೆಂದು ನೀವು ನಂಬುತ್ತೀರಾ?",
"docsearch-no-results-missing-link": "ನಮಗೆ ತಿಳಿಸಿ.",
"docsearch-error-title": "ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ",
- "docsearch-error-help": "ನೀವು ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಬಯಸುತ್ತೀರಿ.",
+ "docsearch-error-help": "ನೀವು ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಬಯಸುತ್ತೀರಿ.",
"documentation": "ದಾಖಲೆ",
"down": "ಕೆಳಗೆ",
"ecosystem": "ಪರಿಸರ ವ್ಯವಸ್ಥೆ",
"edit-page": "ಪುಟ ಸಂಪಾದಿಸಿ",
- "ef-blog": "ಎಥೆರಿಯಂ ಫೌಂಡೇಶನ್ ಬ್ಲಾಗ್",
- "eips": "ಎಥೆರಿಯಂ ಸುಧಾರಣಾ ಪ್ರಸ್ತಾವನೆಗಳು",
+ "ef-blog": "ಇಥಿರಿಯಂ ಫೌಂಡೇಶನ್ ಬ್ಲಾಗ್",
+ "eips": "ಇಥಿರಿಯಂ ಸುಧಾರಣಾ ಪ್ರಸ್ತಾವನೆಗಳು",
"energy-consumption": "ಇಥಿರಿಯಮ್ ಶಕ್ತಿಯ ಬಳಕೆ",
"enterprise": "ಉದ್ಯಮ",
"enterprise-menu": "ಎಂಟರ್ಪ್ರೈಸ್ ಮೆನು",
"esp": "ಪರಿಸರ ವ್ಯವಸ್ಥೆ ಬೆಂಬಲ ಕಾರ್ಯಕ್ರಮ",
"eth-current-price": "ಪ್ರಸ್ತುತ ETH ಬೆಲೆ (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "ಇಥಿರಿಯಮ್ ಬಗ್ ಬೌಂಟಿ ಪ್ರೋಗ್ರಾಂ",
"consensus-when-shipping": "ಇದು ಯಾವಾಗ ಶಿಪ್ಪಿಂಗ್?",
"ethereum-upgrades": "ಇಥಿರಿಯಮ್ ನವೀಕರಣಗಳು",
- "ethereum-brand-assets": "Ethereum brand assets",
"ethereum-online": "ಆನ್ ಲೈನ್ ಸಮುದಾಯಗಳು",
"ethereum-events": "ಇಥಿರಿಯಮ್ ಘಟನೆಗಳು",
"ethereum-foundation": "ಇಥಿರಿಯಮ್ ಫೌಂಡೇಶನ್",
@@ -75,7 +88,7 @@
"ethereum-protocol": "ಇಥಿರಿಯಮ್ ಪ್ರೊಟೋಕಾಲ್",
"ethereum-security": "ಇಥಿರಿಯಮ್ ಭದ್ರತೆ ಮತ್ತು ಹಗರಣ ತಡೆಗಟ್ಟುವಿಕೆ",
"ethereum-support": "ಇಥಿರಿಯಮ್ ಬೆಂಬಲ",
- "ethereum-wallets": "ಇಥಿರಿಯಮ್ ವ್ಯಾಲೆಟ್ ಗಳು",
+ "ethereum-wallets": "ಇಥಿರಿಯಮ್ ವ್ಯಾಲೆಟ್ಗಳು",
"ethereum-whitepaper": "ಇಥಿರಿಯಮ್ ಶ್ವೇತಪತ್ರ",
"feedback-widget-prompt": "ಈ ಪುಟವು ಸಹಾಯಕವಾಗಿದೆಯೇ?",
"feedback-card-prompt-page": "ಈ ಪುಟವು ಸಹಾಯಕವಾಗಿದೆಯೇ?",
@@ -94,11 +107,10 @@
"grants": "ಅನುದಾನಗಳು",
"grant-programs": "ಪರಿಸರ ವ್ಯವಸ್ಥೆ ಅನುದಾನ ಕಾರ್ಯಕ್ರಮಗಳು",
"guides": "ಮಾರ್ಗದರ್ಶಿಗಳು",
- "guides-hub": "ಮಾರ್ಗದರ್ಶಿ ಕೇಂದ್ರ",
+ "guides-hub": "ಗೈಡ್ಸ್ ಹೇಗೆ",
"history-of-ethereum": "ಇಥಿರಿಯಮ್ ನ ಇತಿಹಾಸ",
"home": "ಹೋಮ್",
"how-ethereum-works": "ಇಥಿರಿಯಮ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ",
- "how-to-register-an-ethereum-account": "ಇಥಿರಿಯಮ್ ಖಾತೆಯನ್ನು \"ನೋಂದಾಯಿಸುವುದು\" ಹೇಗೆ",
"how-to-revoke-token-access": "ನಿಮ್ಮ ಕ್ರಿಪ್ಟೋ ಫಂಡ್ಗಳಿಗೆ ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವುದು ಹೇಗೆ",
"how-to-swap-tokens": "ಟೋಕನ್ ಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವುದು ಹೇಗೆ",
"how-to-use-a-bridge": "ಟೋಕನ್ ಗಳನ್ನು ಲೇಯರ್ 2 ಗೆ ಹೇಗೆ ಸೇತುವೆ ಮಾಡುವುದು",
@@ -128,11 +140,106 @@
"loading-error-try-again-later": "ಡೇಟಾ ಲೋಡ್ ಮಾಡಲು ಅಸಮರ್ಥವಾಗಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
"logo": "ಲೋಗೋ",
"mainnet-ethereum": "ಮೈನೆಟ್ ಇಥಿರಿಯಮ್",
+ "merge": "ವಿಲೀನಗೊಳಿಸಿ",
"more": "ಇನ್ನಷ್ಟು",
- "nav-developers": "ಡೆವೆಲಪರ್",
+ "nav-about-description": "ಎಥೆರಿಯಮ್ ಸಮುದಾಯಕ್ಕೆ ಒಂದು ಸಾರ್ವಜನಿಕ, ಮುಕ್ತ ಸಂಪನ್ಮೂಲ ಯೋಜನೆಯಾಗಿದೆ",
+ "nav-advanced-description": "ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ವಿಷಯಗಳನ್ನು ಕಲಿಯಿರಿ",
+ "nav-advanced-label": "ಮುಂದುವರೆದ",
+ "nav-basics-description": "ಎಥೆರಿಯಮ್ಮಿನ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ",
+ "nav-basics-label": "ಮೂಲಭೂತ ಅಂಶಗಳು",
+ "nav-bridges-description": "ವೆಬ್3ಯು ಪ್ರಾಥಮಿಕ ಎಲ್1 ಬ್ಲಾಕ್ ಚೈನ್ಗಳು ಮತ್ತು ಎಲ್2 ಸ್ಕೇಲಿಂಗ್ ಪರಿಹಾರಗಳ ವ್ಯವಹಾರ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಾಗಿ ವಿಕಸನಗೊಂಡಿದೆ",
+ "nav-builders-home-description": "ಎಥೆರಿಯಮ್ಗಾಗಿ ನಿರ್ಮಿತರ ಕೈಪಿಡಿ - ನಿರ್ಮಿತರಿಂದ, ನಿರ್ಮಿತರಿಗಾಗಿ",
+ "nav-builders-home-label": "ನಿರ್ಮಿತರ ಮನೆ",
+ "nav-contribute-description": "ನೀವು ಸಹಾಯ ಮಾಡಲು ಬಯಸಿದರೆ, ಇದು ನಿಮಗೆ ಮಾರ್ಗದರ್ಶನ ನೀಡುತ್ತದೆ",
+ "nav-contribute-label": "Ethereum.org ಗೆ ಕೊಡುಗೆ ನೀಡು",
+ "nav-dao-description": "ಕೇಂದ್ರೀಕೃತ ಅಧಿಕಾರವಿಲ್ಲದ ಸದಸ್ಯ-ಮಾಲೀಕತ್ವದ ಸಮುದಾಯಗಳು",
+ "nav-dapps-description": "ಎಥೆರಿಯಮ್ ಬಳಸಿ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಸಮೃದ್ಧ ವ್ಯವಹಾರ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯನ್ನು ಅನ್ವೇಷಿಸಿ",
+ "nav-defi-description": "ಸಾಂಪ್ರದಾಯಿಕ ಹಣಕಾಸು ಮಾರುಕಟ್ಟೆಗೆ ಜಾಗತಿಕ, ಮುಕ್ತ ಪರ್ಯಾಯ",
+ "nav-desci-description": "ಪ್ರಸ್ತುತ ವೈಜ್ಞಾನಿಕ ವ್ಯವಸ್ಥೆಗೆ ಜಾಗತಿಕ, ಮುಕ್ತ ಪರ್ಯಾಯ",
+ "nav-desoc-description": "ಸಾಮಾಜಿಕ ಸಂವಹನ ಮತ್ತು ವಿಷಯ ಸೃಷ್ಟಿಗಾಗಿ ಬ್ಲಾಕ್ಚೈನ್ ಆಧಾರಿತ ವೇದಿಕೆಗಳು",
"nav-developers-docs": "ಡೆವಲಪರ್ಗಳ ಮುಖಪುಟ",
+ "nav-developers": "ಡೆವೆಲಪರ್",
+ "nav-did-description": "ನಿಮ್ಮ ಅನನ್ಯ ವಿಕೇಂದ್ರೀಕೃತ ಗುರುತಿಸುವಿಕೆಗಳನ್ನು ವಿತರಿಸಿ ಮತ್ತು ಹೊಂದಿರಿ",
+ "nav-docs-description": "ಎಥೆರಿಯಮ್ನೊಂದಿಗೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನಿರ್ಮಿಸಲು ನಿಮಗೆ ಸಹಾಯಕ್ಕೆ ಬೇಕಾಗುವ ದಾಖಲೆಗಳು",
+ "nav-docs-design-description": "ಅನನ್ಯ ವೆಬ್3 ಸವಾಲಾತ್ಮಕ ವಿನ್ಯಾಸಗಳು, ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು ಮತ್ತು ಬಳಕೆದಾರರ ಸಂಶೋಧನಾ ಒಳನೋಟಗಳ ವಿವರಣೆ",
+ "nav-docs-design-label": "UX/UI ವಿನ್ಯಾಸದ ಮೂಲಭೂತ ಅಂಶಗಳು",
+ "nav-docs-foundation-description": "ಎಥೆರಿಯಂನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಬೇಕಾದ ಪ್ರಮುಖ ಮೂಲಭೂತ ಅಂಶಗಳು",
+ "nav-docs-overview-description": "ಡೆವಲಪರ್ ದಾಖಲೆಗಳಿಗಾಗಿ ನಿಮ್ಮ ಮನೆ",
+ "nav-docs-stack-description": "ಎಥೆರಿಯಮ್ ಸ್ಟಾಕಿನ ಎಲ್ಲಾ ವಿವರಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ",
+ "nav-eip-description": "ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಅಥವಾ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮಾನದಂಡಗಳು",
+ "nav-eip-label": "ಇಸುಪ್ರ ಗಳು - ಇಥಿರಿಯಂ ಸುಧಾರಣಾ ಪ್ರಸ್ತಾವನೆಗಳು",
+ "nav-emerging-description": "ಎಥೆರಿಯಮ್ನ ಇತರ ಹೊಸ ಬಳಕೆಯ ಪ್ರಕರಣಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ",
+ "nav-enterprise-description": "ಎಥೆರಿಯಮ್ಗಾಗಿ ವ್ಯವಹಾರ ಅಪ್ಲಿಕೇಶನ್ಗಳು",
+ "nav-ethereum-org-description": "ಈ ಜಾಲತಾಣವು ಸಮುದಾಯ ಪ್ರೇರಿತವಾಗಿದೆ - ನಮ್ಮೊಂದಿಗೆ ಸೇರಿ ಹಾಗೂ ಕೊಡುಗೆ ನೀಡಿ",
+ "nav-ethereum-wallets-description": "ನಿಮ್ಮ ಎಥೆರಿಯಮ್ ಖಾತೆಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಒಂದು ಅಪ್ಲಿಕೇಶನ್",
+ "nav-events-description": "ವಿಕೇಂದ್ರೀಕರಣ ಮತ್ತು ಯಾರಿಗಾದರೂ ಭಾಗವಹಿಸುವ ಸ್ವಾತಂತ್ರ್ಯ",
+ "nav-events-irl-description": "ಪ್ರತಿ ತಿಂಗಳು ವೈಯಕ್ತಿಕವಾಗಿ ಮತ್ತು ಆನ್ಲೈನ್ನಲ್ಲಿ ಬಹಳ ಎಥೆರಿಯಮ್ ಕಾರ್ಯಕ್ರಮಗಳು ನಡೆಯುತ್ತವೆ",
+ "nav-events-label": "ಸಮುದಾಯಗಳು ಮತ್ತು ಕಾರ್ಯಕ್ರಮಗಳು",
+ "nav-events-online-description": "ಈ ಆನ್ಲೈನ್ ಸಮುದಾಯಗಳಲ್ಲಿ ಲಕ್ಷಾಂತರ ಎಥೆರಿಯಮ್ ಉತ್ಸಾಹಿಗಳ ತಂದೆ",
+ "nav-find-wallet-description": "ಕ್ರಿಪ್ಟೊವನ್ನು ಬಳಸಲು ವಾಲೆಟ್ಗಳು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ.",
+ "nav-find-wallet-label": "ನಿಮ್ಮ ವಾಲೆಟ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ",
+ "nav-gas-fees-description": "ಎಥ್ ವಹಿವಾಟು ಶುಲ್ಕಗಳನ್ನು ಹೇಗೆ ಲೆಕ್ಕ ಹಾಕಲಾಗುತ್ತದೆ",
+ "nav-get-eth-description": "ಎಥೆರಿಯಮ್ ಅನ್ವಯಿಕೆಗಳನ್ನು ಬಳಸಲು ನಿಮಗೆ ಎಥೆರ್ (ಎಥ್) ನ ಅಗತ್ಯವಿದೆ",
+ "nav-get-started-description": "ಎಥೆರಿಯಮ್ ಅನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಮೊದಲ ಹಂತಗಳು",
+ "nav-governance-description": "ಎಥೆರಿಯಮ್ ಶಿಷ್ಟಾಚಾರವನ್ನು ಮೇಲ್ದರ್ಜೆಗೇರಿಸುವಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಪ್ರಕ್ರಿಯೆ",
+ "nav-grants-description": "ಅನುದಾನ ಧನಸಹಾಯ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಒದಗಿಸುವ ಯೋಜನೆಗಳ ಕುರಿತು ನಮ್ಮ ಸಮುದಾಯದಿಂದ ಸಂಗ್ರಹಿಸಲಾದ ಪಟ್ಟಿ",
+ "nav-guide-create-account-description": "ಯಾರಾದರೂ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ, ವ್ಯಾಲೆಟ್ ಅಪ್ಲಿಕೇಶನ್ನೊಂದಿಗೆ ಉಚಿತವಾಗಿ ಎಥೆರಿಯಮ್ ಖಾತೆಯನ್ನು ರಚಿಸಬಹುದು",
+ "nav-guide-revoke-access-description": "ಎಥೆರಿಯಮ್ ವ್ಯವಹಾರ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವಾಗ ಸುರಕ್ಷಿತವಾಗಿರಿ",
+ "nav-guide-revoke-access-label": "ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಪ್ರವೇಶವನ್ನು ರದ್ದುಪಡಿಸುವುದು ಹೇಗೆ",
+ "nav-guide-use-wallet-description": "ವಾಲೆಟಿನ ಎಲ್ಲಾ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಬೇಕು ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ",
+ "nav-guide-use-wallet-label": "ವ್ಯಾಲೆಟ್ ಬಳಸುವುದು ಹೇಗೆ",
+ "nav-guides-description": "ನಿಮಗೆ ಪ್ರಾರಂಭಿಸಲು ಸಹಾಯ ಮಾಡಲು ಬೇಕಾದ ಪ್ರಾಯೋಗಿಕ ಹಂತ-ಹಂತದ ಮಾರ್ಗದರ್ಶಿಗಳು",
+ "nav-guides-label": "ಮಾರ್ಗದರ್ಶನ ಮಾಡುವುದು ಹೇಗೆ",
+ "nav-history-description": "ಎಲ್ಲಾ ಪ್ರಮುಖ ಫೋರ್ಕ್ಗಳ ಮತ್ತು ನವೀಕರಣಗಳ ಟೈಮ್ಲೈನ್",
+ "nav-history-label": "ಎಥೆರಿಯಮ್ನ ತಾಂತ್ರಿಕ ಇತಿಹಾಸ",
+ "nav-layer-2-description": "ಎಥೆರಿಯಂಗೆ ಅಗ್ಗದ ಮತ್ತು ವೇಗದ ವಹಿವಾಟುಗಳು",
+ "nav-learn-by-coding-description": "ಎಥೆರಿಯಮ್ನೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುವ ಉಪಕರಣಗಳು",
+ "nav-local-env-description": "ನಿಮ್ಮ ಎಥೆರಿಯಮ್ ಅಭಿವೃದ್ಧಿ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ ಮತ್ತು ಹೊಂದಿಸಿ",
+ "nav-mainnet-description": "ಎಂಟರ್ಪ್ರೈಸ್ ಬ್ಲಾಕ್ಚೈನ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸಾರ್ವಜನಿಕ ಎಥೆರಿಯಮ್ ಮೇನ್ನೆಟ್ನಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದು",
+ "nav-nft-description": "ಇಥಿರಿಯಮ್ ಆಧಾರಿತ ಆಸ್ತಿಯಾಗಿ ಅನನ್ಯವಾದ ಯಾವುದನ್ನಾದರೂ ಪ್ರತಿನಿಧಿಸುವ ಒಂದು ಮಾರ್ಗ",
+ "nav-open-research-description": "ಎಥೆರಿಯಮ್ನ ಪ್ರಾಥಮಿಕ ಸಾಮರ್ಥ್ಯಗಳಲ್ಲಿ ಒಂದು ಅದರ ಸಕ್ರಿಯ ಸಂಶೋಧನಾ ಸಮುದಾಯವಾಗಿದೆ",
+ "nav-open-research-label": "ಮುಕ್ತ ಸಂಶೋಧನೆ",
+ "nav-overview-description": "ಎಲ್ಲ ವಿಷಯಗಳು ಎಥೆರಿಯಮ್ ಶಿಕ್ಷಣ",
+ "nav-participate-overview-description": "ಹೇಗೆ ಭಾಗವಹಿಸಬೇಕು ಎಂಬುದರ ಕುರಿತು ಅವಲೋಕನ",
"nav-primary": "ಪ್ರಾಥಮಿಕ",
- "nft-page": "ಶಿಲೀಂಧ್ರವಲ್ಲದ ಟೋಕನ್ ಗಳು (NFTs)",
+ "nav-quizzes-description": "ನೀವು ಎಥೆರಿಯಮ್ ಮತ್ತು ಕ್ರಿಪ್ಟೋಕರೆನ್ಸಿಗಳನ್ನು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಕಂಡುಕೊಳ್ಳಿ",
+ "nav-quizzes-label": "ನಿಮ್ಮ ಜ್ಞಾನವನ್ನು ಪರೀಕ್ಷಿಸಿ",
+ "nav-refi-description": "ಪರ್ಯಾಯ ಆರ್ಥಿಕ ವ್ಯವಸ್ಥೆಯು ಪುನರುತ್ಪಾದಕ ತತ್ವಗಳ ಮೇಲೆ ನಿರ್ಮಾಣವಾಗಿದೆ",
+ "nav-research-description": "ಎಥೆರಿಯಮ್ ಅನ್ನು ಸುಧಾರಿಸಲು ಬಳಸಲಾಗುವ ಪ್ರಕ್ರಿಯೆಗಳು",
+ "nav-research-label": "ಸಂಶೋಧನೆ ಮತ್ತು ಅಭಿವೃದ್ಧಿ",
+ "nav-roadmap-description": "ಎಥೆರಿಯಂಗೆ ಹೆಚ್ಚು ಸ್ಕೇಲೆಬಿಲಿಟಿ, ಭದ್ರತೆ ಮತ್ತು ಸುಸ್ಥಿರತೆಯ ಹಾದಿ",
+ "nav-roadmap-future-description": "ಎಥೆರಿಯಮ್ ಅನ್ನು ದೃಢವಾದ ಮತ್ತು ವಿಕೇಂದ್ರೀಕೃತ ಜಾಲವಾಗಿ ಒಗ್ಗೂಡಿಸುವುದು",
+ "nav-roadmap-future-label": "ಭವಿಷ್ಯ-ನಿರೋಧಕ",
+ "nav-roadmap-label": "ಮಾರ್ಗಸೂಚಿ",
+ "nav-roadmap-scaling-description": "ವಹಿವಾಟಿನ ವೆಚ್ಚ ಮತ್ತು ವೇಗವನ್ನು ಮತ್ತಷ್ಟು ಕಡಿಮೆ ಮಾಡಲು ಜಾಲಬಂಧ ನವೀಕರಣಗಳು",
+ "nav-roadmap-security-description": "ಭವಿಷ್ಯದಲ್ಲಿ ಎಲ್ಲಾ ರೀತಿಯ ದಾಳಿಗಳಿಗೆ ಎಥೆರಿಯಮ್ ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವವನ್ನು ಹೊಂದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು",
+ "nav-roadmap-security-label": "ಭದ್ರತೆಯನ್ನು ಹೆಚ್ಚಿಸಲಾಗಿದೆ",
+ "nav-roadmap-ux-description": "ಎಥೆರಿಯಮ್ ಬಳಕೆಯನ್ನು ಸರಳೀಕರಿಸಬೇಕಾಗಿದೆ",
+ "nav-run-a-node-description": "ಜಾಲಬಂಧವನ್ನು ಭದ್ರಪಡಿಸಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುವಾಗ ಸಂಪೂರ್ಣ ಸಾರ್ವಭೌಮತ್ವವನ್ನು ಹೊಂದಿರಿ",
+ "nav-security-description": "ಕ್ರಿಪ್ಟೋಕರೆನ್ಸಿಯನ್ನು ಬಳಸುವಾಗ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಕಲಿಯಿರಿ",
+ "nav-smart-contracts-description": "ಎಥೆರಿಯಮ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯ ಮೂಲಭೂತ ಬುಲ್ಡಿಂಗ್ ಬ್ಲಾಕ್ಗಳು",
+ "nav-stablecoins-description": "ಸ್ಥಿರ ನಾಣ್ಯಗಳು ಸ್ಥಿರ ಮೌಲ್ಯದಲ್ಲಿ ಉಳಿಯಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಎಥೆರಿಯಮ್ ಟೋಕನ್ಗಳಾಗಿವೆ",
+ "nav-stake-description": "ಎಥೆರಿಯಮ್ ಅನ್ನು ಭದ್ರಪಡಿಸಿಕೊಂಡಿದ್ದಕ್ಕಾಗಿ ಬಹುಮಾನಗಳನ್ನು ಗಳಿಸಿ",
+ "nav-stake-label": "ಸ್ಟೇಕ್",
+ "nav-staking-home-description": "ಸ್ಟೇಕಿಂಗ್ಗಾಗಿ ವಿವಿಧ ಆಯ್ಕೆಗಳ ಅವಲೋಕನ",
+ "nav-staking-home-label": "Staking ಮುಖಪುಟ",
+ "nav-staking-pool-description": "ಇತರರೊಂದಿಗೆ ಸೇರುವ ಮೂಲಕ ಯಾವುದೇ ಪ್ರಮಾಣದ ಇ. ಟಿ. ಎಚ್. ನೊಂದಿಗೆ ಪಾಲುದಾರಿಕೆ ಮಾಡಿಕೊಳ್ಳಿ ಮತ್ತು ಬಹುಮಾನಗಳನ್ನು ಗಳಿಸಿ",
+ "nav-staking-pool-label": "ಪೂಲ್ಡ್ Staking",
+ "nav-staking-saas-description": "ಮೂರನೇ ಪಕ್ಷದ ನೋಡ್ ಆಪರೇಟರ್ ಗಳು ನಿಮ್ಮ ವ್ಯಾಲಿಡೇಟರ್ ಕ್ಲೈಂಟ್ ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತಾರೆ",
+ "nav-staking-saas-label": "ಸೇವೆಯೊಂದಿಗೆ ಸ್ಟಾಕಿಂಗ್",
+ "nav-staking-solo-description": "ನಿಮ್ಮ ಮನೆಯ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ವೈಯಕ್ತಿಕವಾಗಿ ಎಥೆರಿಯಂ ನೆಟ್ವರ್ಕ್ನ ಭದ್ರತೆ ಮತ್ತು decentralization ಗೆ ಸೇರಿಸಿ",
+ "nav-staking-solo-label": "ಏಕವ್ಯಕ್ತಿ Staking",
+ "nav-start-building-description": "ಹೊಸಬರಿಗೆ ಉಪಯುಕ್ತ ಮಾಹಿತಿ",
+ "nav-translation-program-description": "Ethereum.org ಅನ್ನು ಎಲ್ಲಾ ಭಾಷೆಗಳಿಗೆ ಭಾಷಾಂತರಿಸಲು ಸಹಯೋಗದ ಪ್ರಯತ್ನ",
+ "nav-tutorials-description": "ಸಮುದಾಯ ಬೋಧನೆಗಳ ಕ್ಯುರೇಟೆಡ್ ಪಟ್ಟಿ",
+ "nav-use-cases-description": "ಎಥೆರಿಯಮ್ ಬಳಕೆಗೆ ವಿವಿಧ ವಿಚಾರಗಳನ್ನು ಕಂಡುಕೊಳ್ಳಿ",
+ "nav-what-is-ether-description": "ಎಥೆರಿಯಮ್ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಕರೆನ್ಸಿ",
+ "nav-what-is-ethereum-description": "ಎಥೆರಿಯಮ್ ಅನ್ನು ಯಾವುದು ವಿಶೇಷವಾಗಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ",
+ "nav-what-is-web3-label": "Web3 ಎಂದರೇನು?",
+ "nav-what-is-web3-description": "ನಿಯಮಗಳನ್ನು ನಿರ್ದೇಶಿಸುವ ಕೇಂದ್ರೀಕೃತ ಏಕಸ್ವಾಮ್ಯಗಳಿಗೆ ಪರ್ಯಾಯ",
+ "nav-whitepaper-description": "2014ರಲ್ಲಿ ವಿಟಾಲಿಕ್ ಬ್ಯೂಟೆರಿನ್ ಬರೆದ ಮೂಲ ಎಥೆರಿಯಮ್ ಶ್ವೇತಪತ್ರ",
+ "nav-zkp-description": "ಹೇಳಿಕೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸದೆ ಹೇಳಿಕೆಯ ಸಿಂಧುತ್ವವನ್ನು ಸಾಬೀತುಪಡಿಸುವ ಒಂದು ಮಾರ್ಗ",
+ "nft-page": "NFTs - ಶಿಲೀಂಧ್ರವಲ್ಲದ ಟೋಕನ್ ಗಳು",
"nfts": "NFTs",
"no": "ಇಲ್ಲ",
"on-this-page": "ಈ ಪುಟದಲ್ಲಿ",
@@ -140,6 +247,7 @@
"page-developers-aria-label": "ಅಭಿವರ್ಧಕರ ಮೆನು",
"page-index-meta-title": "ಹೋಮ್",
"page-last-updated": "ಪುಟವನ್ನು ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ",
+ "participate-menu": "ಭಾಗವಹಿಸುವ ಮೆನು",
"pbs": "ಪ್ರಪೋಸರ್-ಬಿಲ್ಡರ್ ಪ್ರತ್ಯೇಕತೆ",
"pools": "ಪೂಲ್ಡ್ Staking",
"privacy-policy": "ಗೌಪ್ಯತೆ ನೀತಿ",
@@ -150,10 +258,10 @@
"refresh": "ದಯವಿಟ್ಟು ಪುಟವನ್ನು ತಾಜಾ ಮಾಡಿ.",
"return-home": "ಮುಖಪುಟ ಹಿಂತಿರುಗಿ",
"roadmap": "ಇಥಿರಿಯಮ್ ಮಾರ್ಗಸೂಚಿ",
+ "research": "ಸಂಶೋಧನೆ",
+ "research-menu": "ಸಂಶೋಧನಾ ಮೆನು",
"resources": "ಅನುವಾದ ಸಂಪನ್ಮೂಲಗಳು",
- "regenerative-finance": "ಪುನರುತ್ಪಾದಕ ಹಣಕಾಸು (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
+ "regenerative-finance": "ReFi - ಪುನರುತ್ಪಾದಕ ಹಣಕಾಸು",
"rollup-component-developer-docs": "ಡೆವಲಪರ್ ಡಾಕ್ಸ್",
"rollup-component-technology-and-risk-summary": "ತಂತ್ರಜ್ಞಾನ ಮತ್ತು ಅಪಾಯದ ಸಾರಾಂಶ",
"scaling": "ಅಗತ್ಯನುಸಾರ",
@@ -168,18 +276,15 @@
"statelessness": "ಸ್ಥಿತಿ ರಹಿತತೆ",
"see-contributors": "ಕೊಡುಗೆದಾರರನ್ನು ನೋಡಿ",
"set-up-local-env": "ಸ್ಥಳೀಯ ಪರಿಸರವನ್ನು ಸ್ಥಾಪಿಸಿ",
- "sharding": "Sharding",
"show-all": "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು",
"show-less": "ಕಡಿಮೆ ತೋರಿಸು",
"site-description": "\"ಎಥೆರಿಯಂ ಹಣ ಮತ್ತು ಹೊಸ ರೀತಿಯ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಜಾಗತಿಕ, ವಿಕೇಂದ್ರೀಕೃತ ವೇದಿಕೆಯಾಗಿದೆ. ಎತೆರಿಯಮ್, ನೀವು ಹಣವನ್ನು ನಿಯಂತ್ರಿಸುವ ಕೋಡ್ ಅನ್ನು ಬರೆಯಬಹುದು ಮತ್ತು ಪ್ರಪಂಚದಲ್ಲಿ ಎಲ್ಲಿಯಾದರೂ ಪ್ರವೇಶಿಸಬಹುದಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು\".",
- "site-title": "ethereum.org",
"skip-to-main-content": "ಮುಖ್ಯ ವಿಷಯಕ್ಕೆ ಬಿಟ್ಟುಬಿಡಿ",
"smart-contracts": "ಸ್ಮಾರ್ಟ್ ಕಾಂಟ್ರಾಕ್ಟ್ ಗಳು",
"stablecoins": "ಸ್ಟೇಬಲ್ಕಾಯಿನ್ಗಳು",
"stake-eth": "ETH ಸ್ಟೇಕ್ ಮಾಡಿ",
"staking": "Staking",
"start-here": "ಇಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿ",
- "style-guide": "Style guide",
"solo": "ಏಕವ್ಯಕ್ತಿ Staking",
"terms-of-use": "ಬಳಕೆಯ ನಿಯಮಗಳು",
"translation-banner-body-new": "ನೀವು ಈ ಪುಟವನ್ನು ಇಂಗ್ಲಿಷ್ ನಲ್ಲಿ ನೋಡುತ್ತಿದ್ದೀರಿ ಏಕೆಂದರೆ ನಾವು ಇನ್ನೂ ಅದನ್ನು ಅನುವಾದಿಸಿಲ್ಲ. ಈ ವಿಷಯವನ್ನು ಭಾಷಾಂತರಿಸಲು ನಮಗೆ ಸಹಾಯ ಮಾಡಿ.",
@@ -191,17 +296,19 @@
"translation-banner-no-bugs-title": "ಇಲ್ಲಿ ದೋಷಗಳಿಲ್ಲ!",
"translation-banner-no-bugs-content": "ಈ ಪುಟವನ್ನು ಭಾಷಾಂತರಿಸಲಾಗುತ್ತಿಲ್ಲ. ನಾವು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಈ ಪುಟವನ್ನು ಇಂಗ್ಲಿಷ್ ನಲ್ಲಿ ಬಿಟ್ಟಿದ್ದೇವೆ.",
"translation-banner-no-bugs-dont-show-again": "ಮತ್ತೆ ತೋರಿಸಬೇಡಿ",
+ "translation-program": "ಅನುವಾದ ಪ್ರೋಗ್ರಾಂ",
"try-using-search": "ನೀವು ಏನನ್ನು ಹುಡುಕುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ಹುಡುಕಾಟವನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ",
"tutorials": "ಟ್ಯುಟೋರಿಯಲ್ ಗಳು",
"up": "ಮೇಲೇ",
+ "use": "ಬಳಸಿ",
"use-ethereum": "ಇಥಿರಿಯಮ್ ಬಳಸಿ",
"use-ethereum-menu": "ಇಥಿರಿಯಮ್ ಮೆನು ಬಳಸಿ",
+ "use-menu": "ಬಳಸಿ ಮೆನು",
"user-experience": "ಬಳಕೆದಾರರ ಅನುಭವ",
"verkle-trees": "ವೆರ್ಕಲ್ ಮರಗಳು",
"wallets": "ವ್ಯಾಲೆಟ್ಗಳು",
"we-couldnt-find-that-page": "ನಮಗೆ ಆ ಪುಟವನ್ನು ಹುಡುಕಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ",
"web3": "Web3 ಎಂದರೇನು?",
- "web3-title": "Web3",
"website-last-updated": "ವೆಬ್ ಸೈಟ್ ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ",
"what-is-ether": "ಇಥರ್ (ETH) ಎಂದರೇನು?",
"what-is-ethereum": "ಇಥಿರಿಯಮ್ ಎಂದರೇನು?",
diff --git a/src/intl/kn/page-dapps.json b/src/intl/kn/page-dapps.json
index 5b1892ac0b2..726bbc54441 100644
--- a/src/intl/kn/page-dapps.json
+++ b/src/intl/kn/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "ನೈಜ ಸಮಯದಲ್ಲಿ ಹಣವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಿ.",
"page-dapps-dapp-description-superrare": "ಕಲಾವಿದರಿಂದ ನೇರವಾಗಿ ಅಥವಾ ದ್ವಿತೀಯ ಮಾರುಕಟ್ಟೆಗಳಲ್ಲಿ ಡಿಜಿಟಲ್ ಕಲಾಕೃತಿಗಳನ್ನು ಖರೀದಿಸಿ.",
"page-dapps-dapp-description-token-sets": "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸಮತೋಲನಗೊಳಿಸುವ ಕ್ರಿಪ್ಟೋ ಹೂಡಿಕೆ ತಂತ್ರಗಳು.",
- "page-dapps-dapp-description-tornado-cash": "ಇಥಿರಿಯಮ್ ನಲ್ಲಿ ಅನಾಮಧೇಯ ವಹಿವಾಟುಗಳನ್ನು ಕಳುಹಿಸಿ.",
"page-dapps-dapp-description-uniswap": "ಟೋಕನ್ ಗಳನ್ನು ಸರಳವಾಗಿ ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಿ ಅಥವಾ % ಪ್ರತಿಫಲಗಳಿಗೆ ಟೋಕನ್ ಗಳನ್ನು ಒದಗಿಸಿ.",
"page-dapps-dapp-description-dexguru": "ಡಿಫೈ ವ್ಯಾಪಾರಿಗಳಿಗೆ ಕಸ್ಟಡಿಯಲ್ಲದ ವ್ಯಾಪಾರ ಟರ್ಮಿನಲ್",
"page-dapps-dapp-description-synthetix": "ಸಿಂಥೆಟಿಕ್ಸ್ ಎಂಬುದು ಸಂಶ್ಲೇಷಿತ ಸ್ವತ್ತುಗಳನ್ನು ವಿತರಿಸುವ ಮತ್ತು ವ್ಯಾಪಾರ ಮಾಡುವ ಪ್ರೋಟೋಕಾಲ್ ಆಗಿದೆ",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "ಇವು ಡೆವಲಪರ್ ಸಾಧನಗಳನ್ನು ವಿಕೇಂದ್ರೀಕರಿಸುವುದು, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ತಂತ್ರಜ್ಞಾನದಲ್ಲಿ ಕ್ರಿಪ್ಟೋಎಕನಾಮಿಕ್ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ಮತ್ತು ಮುಕ್ತ-ಮೂಲ ಅಭಿವೃದ್ಧಿ ಕಾರ್ಯಗಳಿಗೆ ಮಾರುಕಟ್ಟೆಗಳನ್ನು ರಚಿಸುವತ್ತ ಗಮನ ಹರಿಸುವ ಅಪ್ಲಿಕೇಶನ್ಗಳಾಗಿವೆ.",
"page-dapps-technology-title": "ವಿಕೇಂದ್ರೀಕೃತ ತಂತ್ರಜ್ಞಾನ",
"page-dapps-token-sets-logo-alt": "Token Sets ಲೋಗೋ",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash ಲೋಗೋ",
"page-dapps-uniswap-logo-alt": "Uniswap ಲೋಗೋ",
"page-dapps-wallet-callout-button": "ವ್ಯಾಲೆಟ್ ಹುಡುಕಿ",
"page-dapps-wallet-callout-description": "ವ್ಯಾಲೆಟ್ ಗಳು ಸಹ Dapps ಗಳಾಗಿವೆ. ನಿಮಗೆ ಸರಿಹೊಂದುವ ವೈಶಿಷ್ಟ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ಒಂದನ್ನು ಹುಡುಕಿ.",
diff --git a/src/intl/kn/page-languages.json b/src/intl/kn/page-languages.json
index 77a6556c921..c7a23c95481 100644
--- a/src/intl/kn/page-languages.json
+++ b/src/intl/kn/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Ethereum.org ಬೇರೆ ಭಾಷೆಯಲ್ಲಿ ನೋಡಲು ಬಯಸುವಿರಾ?",
"page-languages-want-more-link": "ಅನುವಾದ ಪ್ರೋಗ್ರಾಂ",
"page-languages-want-more-paragraph": "ethereum.org ಅನುವಾದಕರು ಯಾವಾಗಲೂ ಸಾಧ್ಯವಾದಷ್ಟು ಭಾಷೆಗಳಲ್ಲಿ ಪುಟಗಳನ್ನು ಅನುವಾದಿಸುತ್ತಿದ್ದಾರೆ. ಅವರು ಈಗ ಏನು ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದಾರೆಂದು ನೋಡಲು ಅಥವಾ ಅವರೊಂದಿಗೆ ಸೇರಲು ಸೈನ್ ಅಪ್ ಮಾಡಲು, ನಮ್ಮ ಬಗ್ಗೆ ಓದಿ",
- "page-languages-filter-placeholder": "ಫಿಲ್ಟರ್",
+ "page-languages-filter-label": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿ",
+ "page-languages-filter-placeholder": "ಫಿಲ್ಟರ್ ಮಾಡಲು ಟೈಪ್ ಮಾಡಿ",
+ "page-languages-browser-default": "ಬ್ರೌಸರ್ ಡೀಫಾಲ್ಟ್",
+ "page-languages-translated": "ಅನುವಾದಿಸಲಾಗಿದೆ",
+ "page-languages-words": "ಪದಗಳು",
+ "page-languages-recruit-community": "Ethereum.org ಅನ್ನು ಭಾಷಾಂತರಿಸಲು ನಮಗೆ ಸಹಾಯ ಮಾಡಿ.",
"language-ar": "ಅರೇಬಿಕ್",
"language-az": "ಅಜರ್ಬೈಜಾನಿ",
"language-bg": "ಬಲ್ಗೇರಿಯನ್",
@@ -58,8 +63,8 @@
"language-sl": "ಸ್ಲೋವೇನಿಯನ್",
"language-sr": "ಸರ್ಬಿಯನ್",
"language-sw": "ಸ್ವಾಹಿಲಿ",
- "language-th": "ಥಾಯ್",
"language-ta": "ತಮಿಳು",
+ "language-th": "ಥಾಯ್",
"language-tr": "Turkish",
"language-uk": "ಉಕ್ರೇನಿಯನ್",
"language-ur": "ುರ್ದು",
diff --git a/src/intl/kn/page-stablecoins.json b/src/intl/kn/page-stablecoins.json
index 60218cb0ec2..4cf9c8f8206 100644
--- a/src/intl/kn/page-stablecoins.json
+++ b/src/intl/kn/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "ಮೂಲ",
"page-stablecoins-bitcoin-pizza": "ಕುಖ್ಯಾತ ಬಿಟ್ ಕಾಯಿನ್ ಪಿಜ್ಜಾ",
"page-stablecoins-bitcoin-pizza-body": "2010 ರಲ್ಲಿ, ಯಾರೋ ಒಬ್ಬರು 10,000 ಬಿಟ್ ಕಾಯಿನ್ ಗೆ 2 ಪಿಜ್ಜಾಗಳನ್ನು ಖರೀದಿಸಿದರು. ಆ ಸಮಯದಲ್ಲಿ ಇವುಗಳ ಮೌಲ್ಯ ~ $ 41 USD ಆಗಿತ್ತು. ಇಥಿರಿಯಮ್ ನ ಇತಿಹಾಸದಲ್ಲಿ ಇದೇ ರೀತಿಯ ಅನೇಕ ವಿಷಾದಕರ ವಹಿವಾಟುಗಳಿವೆ. ಸ್ಟ್ಯಾಬಲ್ ಕಾಯಿನ್ ಗಳು ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ನೀವು ನಿಮ್ಮ ಪಿಜ್ಜಾವನ್ನು ಆನಂದಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ ETH ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಹುದು.",
+ "page-stablecoins-category-dashboard-and-education": "ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು ಶಿಕ್ಷಣ",
"page-stablecoins-coin-price-change": "ನಾಣ್ಯಗಳ ಬೆಲೆ ಬದಲಾವಣೆ (ಕಳೆದ 30 ದಿನಗಳು)",
"page-stablecoins-crypto-backed": "ಕ್ರಿಪ್ಟೋ ಬೆಂಬಲಿತ",
"page-stablecoins-crypto-backed-con-1": "ಫಿಯೆಟ್-ಬೆಂಬಲಿತ ಸ್ಟೇಬಲ್ಕಾಯಿನ್ಗಳಿಗಿಂತ ಕಡಿಮೆ ಸ್ಥಿರವಾಗಿದೆ.",
diff --git a/src/intl/ko/common.json b/src/intl/ko/common.json
index 0fa72c87cc7..6d30712cee8 100644
--- a/src/intl/ko/common.json
+++ b/src/intl/ko/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "계정 추상화",
"about-ethereum-org": "ethereum.org 소개",
"about-us": "회사 소개",
+ "adding-desci-projects": "DeSci 프로젝트 추가",
+ "adding-developer-tools": "개발자 도구 추가",
+ "adding-exchanges": "거래소 추가",
+ "adding-glossary-terms": "용어집 용어 추가",
+ "adding-layer-2s": "Layer 2s (오프체인) 추가",
+ "adding-products": "제품 추가하기",
+ "adding-staking-products": "스테이킹 상품 추가",
+ "adding-wallets": "지갑 추가",
+ "account-abstraction": "계정 추상화",
+ "acknowledgements": "감사의 글",
"aria-toggle-search-button": "검색 버튼 보이기/숨기기",
"aria-toggle-menu-button": "메뉴 버튼 보이기/숨기기",
"beacon-chain": "비콘 체인",
"bridges": "블록체인 브리지",
+ "bug-bounty": "버그 포상금",
+ "build": "빌드",
+ "build-menu": "빌드 메뉴",
"clear": "지우기",
"close": "닫기",
"community": "커뮤니티",
"community-hub": "커뮤니티 허브",
"community-menu": "커뮤니티 메뉴",
"contact": "문의처",
+ "content-buckets": "콘텐츠 버킷",
+ "content-resources": "콘텐츠 참고 자료",
"content-standardization": "콘텐츠 표준화",
"contributing": "기여",
"contributors": "기여자",
@@ -20,14 +34,17 @@
"copied": "복사 완료",
"copy": "복사",
"danksharding": "댄크샤딩",
- "dao-page": "분산형 자율 조직(DAO)",
+ "dao-page": "DAO - 분산형 자율 조직",
"dark-mode": "다크",
"data-provided-by": "데이터 원본:",
- "decentralized-applications-dapps": "분산형 애플리케이션(디앱)",
+ "decentralized-applications-dapps": "디앱 - 분산형 애플리케이션",
"decentralized-identity": "탈중앙화 신원 증명",
"decentralized-social-networks": "탈중앙화 소셜 네트워크",
- "decentralized-science": "탈중앙화 과학(DeSci)",
- "defi-page": "분산형 금융(DeFi)",
+ "decentralized-science": "DeSci - 탈중앙화 과학",
+ "description": "탐색 항목에 대한 설명",
+ "defi-page": "DeFi - 분산형 금융",
+ "design": "디자인",
+ "design-principles": "디자인 원칙",
"devcon": "Devcon",
"developers": "개발자",
"developers-home": "개발자 홈",
@@ -51,7 +68,7 @@
"documentation": "개발문서",
"down": "아래로",
"ecosystem": "생태계",
- "edit-page": "페이지 수정",
+ "edit-page": "페이지 편집",
"ef-blog": "이더리움 재단 블로그",
"eips": "이더리움 개선 제안",
"energy-consumption": "이더리움 에너지 소비량",
@@ -83,22 +100,22 @@
"feedback-card-prompt-tutorial": "이 튜토리얼이 도움이 되셨나요?",
"feedback-widget-thank-you-title": "피드백을 주셔서 감사합니다!",
"feedback-widget-thank-you-subtitle": "몇 가지 질문에 답하여 이 페이지를 개선해 주세요.",
- "feedback-widget-thank-you-subtitle-ext": "도움이 필요하다면 Discord에서 커뮤니티를 활용해 보십시오.",
+ "feedback-widget-thank-you-subtitle-ext": "도움이 필요하시면 Discord에서 커뮤니티에 연락해 볼 수 있습니다.",
"feedback-widget-thank-you-timing": "2–3분",
"feedback-widget-thank-you-cta": "짧은 공개 설문조사",
"find-wallet": "지갑 찾기",
"future-proofing": "미래 대비",
- "get-eth": " ETH 사기",
+ "get-eth": "이더 구매하기",
"get-involved": "참여하기",
"get-started": "시작하기",
"grants": "지원금",
"grant-programs": "생태계 지원금 프로그램",
"guides": "가이드",
- "guides-hub": "가이드 허브",
+ "guides-hub": "사용법 안내서",
"history-of-ethereum": "이더리움 연혁",
"home": "홈",
"how-ethereum-works": "이더리움의 작동 원리",
- "how-to-register-an-ethereum-account": "이더리움 계정을 \"등록\"하는 방법",
+ "how-to-create-an-ethereum-account": "이더리움 계정 \"생성\"하는 법",
"how-to-revoke-token-access": "암호화폐 자금에 대한 스마트 계약 액세스를 취소하는 방법",
"how-to-swap-tokens": "토큰 교환 방법",
"how-to-use-a-bridge": "레이어 2로 토큰을 브리지하는 방법",
@@ -115,11 +132,11 @@
"last-edit": "최근 수정",
"layer-2": "레이어 2",
"learn": "학습하기",
- "learn-by-coding": "코딩으로 학습하기",
+ "learn-by-coding": "코딩으로 학습",
"learn-hub": "학습 허브",
"learn-menu": "메뉴 살펴보기",
"learn-more": "자세히 보기",
- "less": "간단히 보기",
+ "less": "간단히",
"light-mode": "라이트",
"listing-policy-disclaimer": "이 페이지에 명시된 모든 제품은 공식적으로 보증되지 않으며 정보 제공 용도로만 제공됩니다. 제품을 추가하거나 정책에 대한 피드백을 제공하려면 GitHub에 이슈를 올려 주세요.",
"loading": "불러오는 중...",
@@ -128,11 +145,112 @@
"loading-error-try-again-later": "데이터를 로드할 수 없습니다. 나중에 다시 시도하세요.",
"logo": "로고",
"mainnet-ethereum": "메인넷(Mainnet) 이더리움",
- "more": "더 보기",
- "nav-developers": "개발자",
+ "merge": "병합",
+ "more": "자세히",
+ "nav-about-description": "이더리움 커뮤니티를 위한 공개 오픈 소스 프로젝트",
+ "nav-advanced-description": "보다 복잡한 주제에 대해 알아보기",
+ "nav-advanced-label": "고급",
+ "nav-basics-description": "이더리움의 기초 이해하기",
+ "nav-basics-label": "기본",
+ "nav-bridges-description": "웹3는 기본 L1 블록체인과 L2 확장 솔루션의 생태계로 진화해 왔습니다.",
+ "nav-builders-home-description": "개발자가 개발자를 위해 만든 이더리움 개발자 매뉴얼",
+ "nav-builders-home-label": "개발자의 홈",
+ "nav-contribute-description": "도움이 필요하시면 이 자료가 길잡이가 될 수 있습니다.",
+ "nav-contribute-label": "ethereum.org에 기여하기",
+ "nav-dao-description": "중앙화된 기관이 없는 회원 소유 커뮤니티",
+ "nav-dapps-description": "이더리움을 사용하여 앱의 풍부한 생태계를 살펴보기",
+ "nav-defi-description": "기존 금융 시장에 대한 글로벌하고 개방적인 대안",
+ "nav-desci-description": "현재 과학 시스템에 대한 글로벌하고 개방적인 대안",
+ "nav-desoc-description": "소셜 상호 작용 및 콘텐츠 창작을 위한 블록체인 기반 플랫폼",
"nav-developers-docs": "개발자 문서",
+ "nav-developers": "개발자",
+ "nav-did-description": "고유한 탈중앙화된 식별자를 발급하고 소유",
+ "nav-docs-description": "이더리움을 이해하고 빌드하는 데 도움이 되는 문서",
+ "nav-docs-design-description": "고유한 웹3 디자인 과제, 모범 사례 및 사용자 검색 인사이트에 대한 설명",
+ "nav-docs-design-label": "UX/UI 디자인 기초",
+ "nav-docs-foundation-description": "이더리움에서 개발할 핵심 기초",
+ "nav-docs-foundation-label": "기초 주제",
+ "nav-docs-overview-description": "개발자 문서를 위한 홈",
+ "nav-docs-stack-description": "이더리움 스택의 모든 세부 사항 이해하기",
+ "nav-docs-stack-label": "이더리움 스택",
+ "nav-eip-description": "새로운 기능이나 프로세스를 지정하는 표준",
+ "nav-eip-label": "EIP - 이더리움 개선 제안",
+ "nav-emerging-description": "이더리움에 대한 기타 새로운 사용 사례 알아보기",
+ "nav-emerging-label": "새로운 사용 사례",
+ "nav-enterprise-description": "이더리움의 비즈니스 애플리케이션",
+ "nav-ethereum-org-description": "이 웹사이트는 커뮤니티 중심으로 운영됩니다. 함께 참여하고 기여해 보세요.",
+ "nav-ethereum-wallets-description": "이더리움 계정으로 상호 작업하는 앱",
+ "nav-events-description": "누구나 참여할 수 있는 탈중앙화 및 자유",
+ "nav-events-irl-description": "매월 오프라인 및 온라인에서 주요 이더리움 이벤트가 개최됩니다.",
+ "nav-events-label": "커뮤니티 및 이벤트",
+ "nav-events-online-description": "이 온라인 커뮤니티에는 수십만 명의 이더리움 열성팬이 있습니다.",
+ "nav-find-wallet-description": "지갑을 통해 암호화폐를 사용할 수 있습니다.",
+ "nav-find-wallet-label": "지갑 선택",
+ "nav-gas-fees-description": "ETH 거래 수수료가 계산되는 방법",
+ "nav-get-eth-description": "이더리움 애플리케이션을 사용하려면 이더(ETH)가 필요합니다.",
+ "nav-get-started-description": "이더리움을 사용하기 위한 첫 번째 단계",
+ "nav-governance-description": "이더리움 프로토콜 업그레이드 관련 프로세스",
+ "nav-governance-label": "운영 방식",
+ "nav-grants-description": "보조금 지원 프로그램을 제공하는 프로젝트에 대해 커뮤니티에서 선별한 목록",
+ "nav-guide-create-account-description": "누구든지 지갑 앱을 사용하여 언제든 무료로 이더리움 계정을 만들 수 있습니다.",
+ "nav-guide-create-account-label": "이더리움 계정 만들기",
+ "nav-guide-revoke-access-description": "이더리움 생태계에서 스마트 계약 및 애플리케이션으로 안전하게 상호 작업할 수 있습니다.",
+ "nav-guide-revoke-access-label": "스마트 계약 액세스를 취소하는 방법",
+ "nav-guide-use-wallet-description": "지갑의 모든 기본 기능을 실행하는 방법에 대해 알아보기",
+ "nav-guide-use-wallet-label": "지갑 사용법",
+ "nav-guides-description": "시작하는 데 도움이 되는 실용적인 단계별 안내서",
+ "nav-guides-label": "사용 방법 안내",
+ "nav-history-description": "모든 주요 포크 및 업데이트에 대한 타임라인",
+ "nav-history-label": "이더리움의 기술적 역사",
+ "nav-layer-2-description": "이더리움의 더 저렴하고 빠른 거래",
+ "nav-learn-by-coding-description": "이더리움을 실험하는 데 도움이 되는 도구",
+ "nav-local-env-description": "이더리움 개발 스택을 선택하고 설정하세요.",
+ "nav-mainnet-description": "엔터프라이즈 블록체인 애플리케이션은 공개 이더리움 메인넷에 구축될 수 있습니다.",
+ "nav-nft-description": "이더리움 기반 자산으로 고유한 모든 것을 나타내는 방법",
+ "nav-open-research-description": "이더리움의 주요 강점 중 하나는 활발한 연구 커뮤니티입니다.",
+ "nav-open-research-label": "공개 연구",
+ "nav-overview-description": "이더리움 교육의 모든 것",
+ "nav-overview-label": "개요",
+ "nav-participate-overview-description": "참여하는 방법에 대한 개요",
"nav-primary": "기본",
- "nft-page": "대체 불가 토큰(NFT)",
+ "nav-quizzes-description": "이더리움과 암호화폐를 얼마나 잘 이해하고 있는지 알아보기",
+ "nav-quizzes-label": "지식 테스트",
+ "nav-refi-description": "재생 원칙에 기반한 대안 경제 시스템",
+ "nav-research-description": "이더리움을 향상하는 데 사용되는 프로세스",
+ "nav-research-label": "연구 및 개발",
+ "nav-roadmap-description": "이더리움의 확장성, 보안 및 지속 가능성을 강화하는 방법",
+ "nav-roadmap-future-description": "이더리움을 강력하고 탈중앙화된 네트워크로 굳히기",
+ "nav-roadmap-future-label": "미래 대비",
+ "nav-roadmap-label": "로드맵",
+ "nav-roadmap-scaling-description": "거래 비용을 더욱 줄이고 속도를 높이기 위한 네트워크 업데이트",
+ "nav-roadmap-security-description": "이더리움이 미래에도 모든 종류의 공격에 대한 복원력을 유지할 수 있게 확인합니다.",
+ "nav-roadmap-security-label": "강화된 보안",
+ "nav-roadmap-ux-description": "이더리움 사용을 단순화해야 합니다.",
+ "nav-run-a-node-description": "네트워크를 보호하는 한편 완전한 주권자가 될 수 있습니다.",
+ "nav-security-description": "암호 화폐를 사용할 때 모범 사례 알아보기",
+ "nav-smart-contracts-description": "이더리움 생태계의 기본 구성 요소",
+ "nav-stablecoins-description": "스테이블코인은 고정된 가치를 유지하도록 설계된 이더리움 토큰입니다.",
+ "nav-stake-description": "이더리움을 보호하면서 보상받기",
+ "nav-stake-label": "스테이킹",
+ "nav-staking-home-description": "스테이킹의 다른 옵션 개요",
+ "nav-staking-home-label": "스테이킹 홈",
+ "nav-staking-pool-description": "다른 사용자와 함께 ETH의 양과 관계없이 스테이킹하고 보상을 받으세요.",
+ "nav-staking-pool-label": "풀 스테이킹",
+ "nav-staking-saas-description": "제3자 노드 운영자가 검증자 클라이언트의 운영을 처리함",
+ "nav-staking-saas-label": "서비스로 스테이킹",
+ "nav-staking-solo-description": "가정용 컴퓨터를 실행하고 이더리움 네트워크의 보안과 탈중앙화에 기여해 보세요.",
+ "nav-staking-solo-label": "솔로 스테이킹",
+ "nav-start-building-description": "신규 사용자를 위한 유용한 정보",
+ "nav-translation-program-description": "ethereum.org를 모든 언어로 번역하기 위한 공동의 노력",
+ "nav-tutorials-description": "엄선된 커뮤니티 튜토리얼 목록",
+ "nav-use-cases-description": "이더리움 사용에 대한 다른 아이디어 살펴보기",
+ "nav-what-is-ether-description": "이더리움 앱의 화폐",
+ "nav-what-is-ethereum-description": "이더리움을 특별하게 만드는 것이 무엇인지 이해하기",
+ "nav-what-is-web3-label": "Web3란 무엇입니까?",
+ "nav-what-is-web3-description": "규칙을 지시하는 중앙 집중식 독점에 대한 대안",
+ "nav-whitepaper-description": "2014년 비탈릭 부테린이 작성한 최초의 이더리움 백서",
+ "nav-zkp-description": "어떤 진술을 드러내지 않으면서도 그것의 유효성을 증명하는 방법",
+ "nft-page": "NFT - 대체 불가 토큰",
"nfts": "NFT",
"no": "아니오",
"on-this-page": "이 페이지에서는",
@@ -140,6 +258,8 @@
"page-developers-aria-label": "개발자 메뉴",
"page-index-meta-title": "홈",
"page-last-updated": "페이지가 마지막으로 업데이트됨",
+ "participate": "참여하기",
+ "participate-menu": "참여 메뉴",
"pbs": "제안자-빌더 분리",
"pools": "풀 스테이킹",
"privacy-policy": "개인정보 보호 정책",
@@ -150,8 +270,10 @@
"refresh": "페이지를 새로고침하세요.",
"return-home": "홈으로 돌아가기",
"roadmap": "이더리움 로드맵",
+ "research": "연구",
+ "research-menu": "연구 메뉴",
"resources": "번역 참고 자료",
- "regenerative-finance": "재생금융(ReFi)",
+ "regenerative-finance": "ReFi - 재생금융",
"run-a-node": "노드 실행하기",
"rollup-component-website": "웹사이트",
"rollup-component-developer-docs": "개발자 문서",
@@ -164,6 +286,7 @@
"search-box-blank-state-text": "바로 검색!",
"search-eth-address": "이것은 이더리움 주소로 보입니다. 당사는 특정 주소에 대한 데이터를 제공하지 않습니다. 블록 탐색기를 통해 아래와 같이 검색해 보세요.",
"search-no-results": "검색과 일치하는 결과가 없습니다.",
+ "security": "보안",
"single-slot-finality": "단일 슬롯 최종 승인",
"statelessness": "무상태성",
"see-contributors": "기여자 확인하기",
@@ -181,6 +304,7 @@
"start-here": "여기서 시작하세요",
"style-guide": "스타일 가이드",
"solo": "솔로 스테이킹",
+ "support": "지원",
"terms-of-use": "이용 약관",
"translation-banner-body-new": "이 페이지는 아직 내용이 번역되지 않아 영어로 쓰여 있습니다. 이 콘텐츠의 번역을 도와 주세요.",
"translation-banner-body-update": "이 페이지의 새로운 버전이 있지만 현재는 영어로만 제공됩니다. 최신 버전의 번역을 도와 주세요.",
@@ -191,11 +315,14 @@
"translation-banner-no-bugs-title": "버그 없음!",
"translation-banner-no-bugs-content": "이 페이지는 번역되고 있지 않습니다. 이 페이지는 현재 영어로만 제공되고 있습니다.",
"translation-banner-no-bugs-dont-show-again": "다시 표시하지 않기",
+ "translation-program": "번역 프로그램",
"try-using-search": "원하는 항목을 찾기 위해 검색을 해보세요.",
"tutorials": "튜토리얼",
"up": "위로",
+ "use": "사용",
"use-ethereum": "이더리움 사용하기",
"use-ethereum-menu": "이더리움 메뉴 사용하기",
+ "use-menu": "메뉴 사용",
"user-experience": "사용자 환경",
"verkle-trees": "버클 트리",
"wallets": "지갑",
@@ -203,8 +330,8 @@
"web3": "Web3란 무엇입니까?",
"web3-title": "웹3",
"website-last-updated": "웹사이트가 마지막으로 업데이트됨",
- "what-is-ether": "이더(ETH)란?",
- "what-is-ethereum": "이더리움이란?",
+ "what-is-ether": "이더(ETH)란 무엇인가요?",
+ "what-is-ethereum": "이더리움이란 무엇인가요?",
"withdrawals": "스테이킹 인출",
"yes": "네",
"zero-knowledge-proofs": "영지식 증명"
diff --git a/src/intl/ko/page-dapps.json b/src/intl/ko/page-dapps.json
index d6633a2650c..615e5f1f080 100644
--- a/src/intl/ko/page-dapps.json
+++ b/src/intl/ko/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "실시간으로 돈을 스트리밍합니다.",
"page-dapps-dapp-description-superrare": "직접 아티스트로부터 디지털 미술품을 구매하거나 중고 시장에서 구매합니다.",
"page-dapps-dapp-description-token-sets": "자동으로 재조정하는 암호화폐 투자 전략입니다.",
- "page-dapps-dapp-description-tornado-cash": "이더리움에서 익명의 거래를 보냅니다.",
"page-dapps-dapp-description-uniswap": "토큰을 간단하게 교환하거나 %의 보상을 위해 토큰을 제공합니다.",
"page-dapps-dapp-description-dexguru": "디파이 트레이더를 위한 비수탁형 트레이딩 터미널",
"page-dapps-dapp-description-synthetix": "Synthetix는 합성 자산 발행 및 거래를 위한 프로토콜입니다.",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "다음은 개발자 도구의 탈중앙화, 암호경제 시스템을 기존의 기술에 통합, 오픈소스 개발 작업을 위한 시장의 창출에 집중하는 애플리케이션입니다.",
"page-dapps-technology-title": "탈중앙화 기술",
"page-dapps-token-sets-logo-alt": "Token Sets 로고",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash 로고",
"page-dapps-uniswap-logo-alt": "Uniswap 로고",
"page-dapps-wallet-callout-button": "지갑 찾기",
"page-dapps-wallet-callout-description": "지갑도 디앱입니다. 적합한 기능에 따라 골라보세요.",
diff --git a/src/intl/ko/page-gas.json b/src/intl/ko/page-gas.json
new file mode 100644
index 00000000000..f8b3dba2626
--- /dev/null
+++ b/src/intl/ko/page-gas.json
@@ -0,0 +1,8 @@
+{
+ "page-gas-hero-button-1-content": "가스란 무엇인가요?",
+ "page-gas-summary-title": "요약",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "레이어 2 사용",
+ "page-gas-advanced": "고급",
+ "page-gas-faq-question-2-a-2": "ETH에 대해 자세히 알아보기",
+ "page-gas-use-layer-2": "레이어 2 사용"
+}
diff --git a/src/intl/ko/page-get-eth.json b/src/intl/ko/page-get-eth.json
index 6d73e3de1a8..c678ffc0c5e 100644
--- a/src/intl/ko/page-get-eth.json
+++ b/src/intl/ko/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "거래소는 기존 통화를 사용하여 암호화폐를 구매할 수 있는 비즈니스입니다. 거래소는 당신이 구매한 ETH를 지갑으로 보낼 때까지 모든 ETH에 대한 보호권을 가집니다.",
"page-get-eth-checkout-dapps-btn": "디앱스 확인하기",
"page-get-eth-community-safety": "보안에 대한 커뮤니티 게시물",
- "page-get-eth-description": "이더리움과 ETH는 중앙 정부나 기업의 통제를 받지 않으며 분권화되어 있습니다. 이것은 ETH가 모든 개인에게 열려 있음을 의미합니다.",
+ "page-get-eth-description": "이더리움은 어떠한 단일 조직의 통제도 받지 않습니다. 탈중앙화되어 있기 때문입니다.",
"page-get-eth-dex": "탈중앙화 거래소(DEX)",
- "page-get-eth-dex-desc": "더 많이 제어하시려면 ETH 피어-투-피어를 구입하십시오. DEX를 사용하면 중앙 집권화된 회사에 귀하의 재산을 제어할 수 있는 권한을 주지 않고 거래할 수 있습니다.",
+ "page-get-eth-dex-desc": "통제권을 더 확보하려면 스마트 계약을 사용하여 ETH를 매수하세요. DEX를 이용하면 보유한 자금의 통제권을 중앙화된 기업에 넘기지 않고도 디지털 자산을 거래할 수 있습니다.",
+ "page-get-eth-peers": "다른 사람한테서 ETH 받기",
+ "page-get-eth-peers-desc": "이더리움 계정을 개설하셨나요? 이제 주소를 공유하기만 하면 ETH(및 기타 토큰)를 P2P로 주고 받을 수 있습니다.",
+ "page-get-eth-staking": "보상 스테이크 중",
+ "page-get-eth-staking-desc": "이미 ETH를 보유하고 있는 경우 검증자 노드를 실행하여 ETH를 추가로 획득할 수 있습니다. 이 검증 작업을 수행하여 ETH로 보상을 받습니다.",
+ "page-get-eth-earn": "ETH 획득하기",
+ "page-get-eth-earn-desc": "암호화폐로 급여를 지불하는 DAO 또는 회사에서 일하거나 바운티(보상)을 받거나 소프트웨어 버그 등을 찾아 ETH를 획득할 수 있습니다.",
+ "page-get-eth-daos-link-desc": "DAO 알아보기",
+ "page-get-eth-cex-link-desc": "거래소 목록 보기",
+ "page-get-eth-staking-link-desc": "스테이킹 자세히 알아보기",
"page-get-eth-dexs": "탈중앙화 거래소(DEX)",
"page-get-eth-dexs-desc": "탈중앙화 거래소는 ETH 및 다른 토큰을 위한 오픈 마켓입니다. 해당 거래소는 구매자와 판매자를 직접 연결합니다.",
"page-get-eth-dexs-desc-2": "거래소는 거래에서 재산을 보호할 때 신뢰받는 타사를 이용하는 대신, 코드를 사용합니다. 판매자의 ETH는 납부가 확인되었을 경우에만 이체됩니다. 이러한 유형의 코드를 스마트 계약이라고 합니다.",
- "page-get-eth-dexs-desc-3": "이는 중앙화 거래소에 비해 지리적 제한을 덜 받음을 의미합니다. 누군가가 당신이 원하는 것을 판매하고 귀하가 제공하는 지불 방식을 받아들인다면, 완료된 것입니다. DEX에서는 다른 토큰, PayPal 또는 현금 직거래를 통해 ETH를 구매할 수 있습니다.",
+ "page-get-eth-dexs-desc-3": "이는 중앙화 거래소에 비해 지리적 제약이 적다는 뜻입니다. 누군가가 내가 원하는 것을 팔고 있고 내가 사용할 수 있는 지불 수단을 받아들인다면 거래가 가능합니다.",
"page-get-eth-do-not-copy": "예제: 복사하지 마시오",
"page-get-eth-exchanges-disclaimer": "이 정보는 저희가 직접 수집한 것입니다. 잘못된 부분이 있으면 이메일을 보내주세요.",
- "page-get-eth-exchanges-empty-state-text": "ETH를 구입하기 위해 사용할 수 있는 지갑과 거래소의 목록을 확인하려면 거주하고 계신 국가를 입력하세요.",
+ "page-get-eth-exchanges-empty-state-text": "이용할 수 있는 거래소 목록을 보려면 거주 국가를 입력하세요.",
"page-get-eth-exchanges-except": "제외",
"page-get-eth-exchanges-header": "어느 국가에 살고 있습니까?",
"page-get-eth-exchanges-header-exchanges": "거래소",
"page-get-eth-exchanges-header-wallets": "지갑",
- "page-get-eth-exchanges-intro": "거래소와 지갑에는 암호화폐를 판매할 수 있는 곳이 제한되어 있습니다.",
+ "page-get-eth-exchanges-intro": "거래소는 암호화폐를 판매할 수 있는 지리적 규제를 받습니다. 이 목록은 국가별 영업 중인 거래소 서비스를 정리한 것입니다. 단, 목록에 포함되었다고 해서 서비스 제공이 보장되지는 않으므로 정확한 정보는 직접 확인하시길 바랍니다!",
"page-get-eth-exchanges-no-exchanges": "죄송합니다. 이 국가에는 ETH를 구매할 수 있는 거래소가 없습니다. 거래 가능한 거래소를 알고 있으면 이메일을 보내주십시오.",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "죄송합니다. 이 국가에는 ETH를 구매할 수 있는 거래소나 지갑이 없습니다. 거래 가능한 거래소나 지갑을 알고 있으면 이메일을 보내주십시오.",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "죄송합니다. 이 국가에는 ETH를 구매할 수 있는 거래소가 없습니다. 거래 가능한 거래소를 알고 있으면 이메일을 보내주십시오.",
"page-get-eth-exchanges-no-wallets": "죄송합니다. 이 국가에는 ETH를 구매할 수 있는 지갑이 없습니다. 거래 가능한 지갑을 알고 계시면 이메일을 보내주십시오.",
"page-get-eth-exchanges-search": "사는 곳을 입력하세요...",
"page-get-eth-exchanges-success-exchange": "법적인 확인 절차로 인해 거래소 등록에 며칠이 걸릴 수 있습니다.",
@@ -36,28 +45,28 @@
"page-get-eth-hero-image-alt": "ETH 구매 히어로 이미지",
"page-get-eth-keep-it-safe": "당신의 ETH를 안전하게 지키기",
"page-get-eth-meta-description": "거주지에 따라 ETH를 구매하고 관리하는 방법",
- "page-get-eth-meta-title": "ETH 구매 방법",
+ "page-get-eth-meta-title": "ETH 획득 방법",
"page-get-eth-need-wallet": "DEX를 사용하시려면 지갑이 필요합니다.",
"page-get-eth-new-to-eth": "ETH는 처음이신가요? 시작하려면 개요를 읽어보세요.",
"page-get-eth-other-cryptos": "다른 암호화폐로 구매하기",
- "page-get-eth-protect-eth-desc": "ETH를 많이 구매하시려면 거래소가 아니라 소유하신 지갑에 보관하는 게 좋습니다. 거래소는 해커들의 목표가 될 수 있기 때문입니다. 해커가 접근하게 되면 재산을 잃을 수도 있습니다. 대신, 오직 귀하만이 자신의 지갑을 통제할 수 있습니다.",
- "page-get-eth-protect-eth-in-wallet": "지갑 안의 ETH 보호하기",
+ "page-get-eth-protect-eth-desc": "이더리움의 주요 기능 중 하나는 사용자가 본인의 계정을 직접 관리하여 원하는 대로 자신의 자산을 통제할 수 있다는 점입니다. 즉, 자산을 제3자에게 위탁하지 않아도 되며 관리인의 부정행위, 파산 또는 해킹 위험으로부터 보호받습니다. 단, 사용자 본인이 자기 책임하에 보안도 유지해야 합니다.",
+ "page-get-eth-protect-eth-in-wallet": "본인 지갑에 ETH 보관하기",
"page-get-eth-search-by-country": "국가별 검색",
- "page-get-eth-security": "하지만 이는 자산의 안전을 진지하게 보호해야 한다는 뜻이기도 합니다. ETH의 경우, 은행이 당신의 돈을 지켜주는 게 아니라 당신 자신이 지켜야 하니까요.",
+ "page-get-eth-security": "이는 자기 자산은 본인이 직접 빈틈없이 지켜야 한다는 뜻입니다. ETH를 이용하면 은행이나 다른 기업에 자산을 맡기는 것이 아니라 사용자 본인이 스스로에 대한 책임을 집니다.",
"page-get-eth-smart-contract-link": "스마트 계약에 대한 자세한 정보",
"page-get-eth-swapping": "당신의 토큰을 다른 사람의 ETH와 교환하세요. 역으로도 가능합니다.",
"page-get-eth-try-dex": "탈중앙화 거래소 사용해 보기",
"page-get-eth-use-your-eth": "귀하의 ETH 사용",
"page-get-eth-use-your-eth-dapps": "이제 ETH를 소유하셨으니 이더리움 애플리케이션(디앱스)을 확인해보세요. 금융, 소셜 미디어, 게임 등 다양한 카테고리를 위한 디앱스가 있습니다.",
"page-get-eth-wallet-instructions": "지갑 설명서 따르기",
- "page-get-eth-wallet-instructions-lost": "지갑에 대한 접근권을 잃어버리면 본인의 자산에 접근할 수 없게 됩니다. 지갑에는 이를 방지하기 위한 설명서가 제공됩니다. 주의하여 그 내용을 따라주십시오. 대부분의 경우, 지갑에 대한 접근권을 잃어버리면 아무도 도와줄 수 없습니다.",
+ "page-get-eth-wallet-instructions-lost": "계정에 대한 액세스 권한을 분실하면 자금에 액세스할 권한도 잃습니다. 지갑은 이를 방지할 수 있는 지침을 제공합니다. 지침을 꼼꼼하게 읽으세요. 대부분의 경우 계정의 액세스 권한을 분실하면 그 누구도 도와줄 수 없습니다.",
"page-get-eth-wallets": "지갑",
"page-get-eth-wallets-link": "지갑에 대해 자세히 알아보기",
"page-get-eth-wallets-purchasing": "일부 지갑은 직불 카드/신용 카드, 계좌 이체나 Apple Pay로도 암호화폐를 구매할 수 있습니다. 지리적 제한이 적용됩니다.",
- "page-get-eth-warning": "이 탈중앙화 거래소는 어느 정도 ETH가 필요하기 때문에 초보자에게 적합하지 않습니다.",
+ "page-get-eth-warning": "이러한 DEX를 이용하려면 일정량의 ETH가 필요하기 때문에 초보자에게 적합하지 않습니다. 이는 단지 예시일 뿐이며 보장된 상품이 아닙니다. 정보는 본인이 직접 찾아야 합니다!",
"page-get-eth-what-are-DEX's": "DEX란 무엇인가요?",
"page-get-eth-whats-eth-link": "ETH란 무엇인가요?",
- "page-get-eth-where-to-buy-desc": "거래소나 지갑에서 직접 ETH를 구매할 수 있습니다.",
+ "page-get-eth-where-to-buy-desc": "ETH를 벌거나 다른 사람으로부터 받거나 거래소 및 앱에서 매수할 수 있습니다.",
"page-get-eth-where-to-buy-desc-2": "거주지에 따라 사용 가능한 서비스를 확인하세요.",
"page-get-eth-where-to-buy-title": "ETH 구매처",
"page-get-eth-your-address": "귀하의 ETH 주소",
diff --git a/src/intl/ko/page-languages.json b/src/intl/ko/page-languages.json
index 6da152a9534..d77b6080687 100644
--- a/src/intl/ko/page-languages.json
+++ b/src/intl/ko/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "ethereum.org를 다른 언어로 확인해 보시겠습니까?",
"page-languages-want-more-link": "번역 프로그램",
"page-languages-want-more-paragraph": "ethereum.org 번역가는 항상 가능한 많은 언어로 페이지를 번역하고 있습니다. 현재 작업하고 있는 내용을 확인하거나, 참여하기 위해서는 다음 자료를 참조하세요.",
- "page-languages-filter-placeholder": "필터",
+ "page-languages-filter-label": "필터 목록",
+ "page-languages-filter-placeholder": "필터링할 내용 입력",
+ "page-languages-browser-default": "기본 브라우저",
+ "page-languages-translated": "번역됨",
+ "page-languages-words": "단어",
+ "page-languages-recruit-community": "ethereum.org를 번역하는 데 도움을 주세요.",
+ "langauge-am": "암하라어",
"language-ar": "아랍어",
"language-az": "아제르바이잔어",
+ "langauge-be": "벨라루스어",
"language-bg": "불가리아어",
"language-bn": "벵골어",
+ "language-bs": "보스니아어",
"language-ca": "카탈루냐어",
"language-cs": "체코어",
"language-da": "덴마크어",
@@ -32,6 +40,7 @@
"language-hi": "힌디어",
"language-hr": "크로아티아어",
"language-hu": "헝가리어",
+ "language-hy-am": "아르메니아어",
"language-id": "인도네시아어",
"language-ig": "이그보어",
"language-it": "이탈리아어",
@@ -39,12 +48,14 @@
"language-ka": "조지아어",
"language-kk": "카자흐스탄어",
"language-km": "캄보디아어",
+ "language-kn": "칸나다어",
"language-ko": "한국어",
"language-lt": "리투아니아어",
"language-ml": "말라얄람어",
"language-mr": "마라티어",
"language-ms": "말레이어",
"language-nb": "노르웨이어",
+ "language-ne-np": "Nepali",
"language-nl": "네덜란드어",
"language-pcm": "나이지리아 피진어",
"language-fil": "필리핀어",
@@ -58,8 +69,9 @@
"language-sl": "슬로베니아어",
"language-sr": "세르비아어",
"language-sw": "스와힐리어",
- "language-th": "태국어",
"language-ta": "타밀어",
+ "language-th": "태국어",
+ "language-tk": "투르크멘어",
"language-tr": "터키어",
"language-uk": "우크라이나어",
"language-ur": "우르두어",
diff --git a/src/intl/ko/page-layer-2.json b/src/intl/ko/page-layer-2.json
index 646bce15f3d..9e26a33a7b3 100644
--- a/src/intl/ko/page-layer-2.json
+++ b/src/intl/ko/page-layer-2.json
@@ -123,6 +123,7 @@
"zksync-description": "zkSync는 Matter Labs에서 개발한 사용자 중심의 영지식 롤업 플랫폼입니다. 이더리움을 위한 확장 솔루션이며 이미 이더리움 메인넷에서 사용되고 있습니다. 결제, 토큰 교환 및 NFT 발행을 지원합니다.",
"zkspace-description": "ZKSpace 플랫폼은 세 가지 주요 부분인 ZKSwap(ZK롤업 기술을 활용한 레이어 2 AMM DEX), ZKSquare(지급결제 서비스), ZKSea(NFT 마켓플레이스)로 구성됩니다.",
"aztec-description": "Aztec 네트워크는 이더리움의 첫 번째 비공개 영지식 롤업이며 분산형 애플리케이션이 정보를 보호하고 확장할 수 있도록 합니다.",
+ "starknet-description": "스타크넷은 검증 롤업 레이어2입니다. 이는 많은 양을 처리할 수 있으며 가스 비용이 저렴하고 이더리움 레이어1의 보안 수준을 유지합니다.",
"layer-2-note": "참고:",
"layer-2-ecosystem-portal": "생태계 포털",
"layer-2-token-lists": "토큰 목록",
diff --git a/src/intl/ko/page-stablecoins.json b/src/intl/ko/page-stablecoins.json
index cc665bb68ad..71ffcdf2010 100644
--- a/src/intl/ko/page-stablecoins.json
+++ b/src/intl/ko/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "출처",
"page-stablecoins-bitcoin-pizza": "악명 높은 비트코인 피자 사건",
"page-stablecoins-bitcoin-pizza-body": "2010년, 한 사용자가 10,000비트코인으로 피자 두 판을 샀습니다. 그때는 비트코인의 가치가 약 41달러였습니다. 오늘날 시장에서는 수백만 달러죠. 이더리움의 역사에서 그것과 비슷한 안타까운 거래 내역이 많습니다. 스테이블 코인은 이러한 문제를 해결하므로 당신은 피자를 즐기며 ETH를 계속 보유할 수 있습니다.",
+ "page-stablecoins-category-dashboard-and-education": "대시 보드 및 교육",
"page-stablecoins-coin-price-change": "코인 가격 변동 (지난 30일간)",
"page-stablecoins-crypto-backed": "암호화폐 기반",
"page-stablecoins-crypto-backed-con-1": "명목화폐 기반 스테이블 코인보다 덜 안정적입니다.",
diff --git a/src/intl/ko/page-wallets-find-wallet.json b/src/intl/ko/page-wallets-find-wallet.json
index 66c6304db15..f3f1dbcd05a 100644
--- a/src/intl/ko/page-wallets-find-wallet.json
+++ b/src/intl/ko/page-wallets-find-wallet.json
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "브라우저 확장 기능이 있는 지갑",
"page-find-wallet-device": "기기",
"page-find-choose-to-compare": "비교하도록 선택",
- "page-find-wallet-choose-features": "기능 선택"
+ "page-find-wallet-choose-features": "기능 선택",
+ "page-find-wallet-reset-filters": "필터 초기화"
}
diff --git a/src/intl/lt/common.json b/src/intl/lt/common.json
index 1acb09d4eb8..8699739705d 100644
--- a/src/intl/lt/common.json
+++ b/src/intl/lt/common.json
@@ -1,28 +1,70 @@
{
"about-ethereum-org": "Apie ethereum.org",
"about-us": "Apie mus",
+ "adding-desci-projects": "„Desci“ projektų pridėjimas",
+ "adding-developer-tools": "Kūrėjo įrankių pridėjimas",
+ "adding-exchanges": "Keityklų pridėjimas",
+ "adding-glossary-terms": "Žodyno terminų pridėjimas",
+ "adding-staking-products": "Palaikymo produktų pridėjimas",
+ "adding-wallets": "Piniginių pridėjimas",
+ "account-abstraction": "Sąskaitos abstrakcija",
+ "acknowledgements": "Padėkos",
"aria-toggle-search-button": "Rodyti paieškos mygtuką",
"aria-toggle-menu-button": "Rodyti meniu mygtuką",
"beacon-chain": "Švyturio grandinė",
"bridges": "Blokų grandinės tiltai",
+ "bug-bounty": "Klaidų atlygis",
+ "build": "Kurti",
+ "build-menu": "Kūrimo meniu",
+ "clear": "Išvalyti",
+ "close": "Uždaryti",
"community": "Bendruomenė",
"community-hub": "Bendruomenės centras",
"community-menu": "Bendruomenės meniu",
"contact": "Susisiekti",
+ "content-buckets": "Turinio grupės",
+ "content-resources": "Turinio ištekliai",
+ "content-standardization": "Turinio standartizavimas",
"contributing": "Prisidėkite",
"contributors": "Pagalbininkai",
"contributors-thanks": "Visiems prisidėjusiems prie šio puslapio – ačiū!",
"cookie-policy": "Slapukų naudojimo politika",
"copied": "Nukopijuota",
"copy": "Kopijuoti",
+ "danksharding": "Dankšardingas",
+ "dao-page": "DAO - Decentralizuotos autonominės organizacijos",
"dark-mode": "Tamsus",
"data-provided-by": "Duomenų šaltinis:",
- "decentralized-applications-dapps": "Decentralizuotos programėlės (dapps'ai)",
+ "decentralized-applications-dapps": "Dapps'ai - Decentralizuotos programėlės",
+ "decentralized-identity": "Decentralizuota tapatybė",
+ "decentralized-social-networks": "Decentralizuoti socialiniai tinklai",
+ "decentralized-science": "„DeSci“ - Decentralizuotasis mokslas",
+ "description": "Navigacijos elemento aprašymas",
+ "defi-page": "DeFi - Decentralizuoti finansai",
+ "design": "Projektavimas",
+ "design-principles": "Projektavimo principai",
"devcon": "Devcon",
"developers": "Kūrėjams",
"developers-home": "Kūrėjų pagrindinis puslapis",
"docs": "Dokumentai",
+ "docsearch-to-select": "Kaip pasirinkti",
+ "docsearch-to-navigate": "Kaip surasti",
+ "docsearch-to-close": "Kaip uždaryti",
+ "docsearch-search-by": "Ieškoti pagal",
+ "docsearch-start-recent-searches-title": "Naujausia",
+ "docsearch-start-no-recent-searches": "Nėra naujausių paieškų",
+ "docsearch-start-save-recent-search": "Įrašyti šią paiešką",
+ "docsearch-start-remove-recent-search": "Šalinti šią paiešką iš istorijos",
+ "docsearch-start-favorite-searches": "Mėgstama",
+ "docsearch-start-remove-favorite-search": "Šalinti šią paiešką iš mėgstamų",
+ "docsearch-no-results-text": "Nepavyko rasti",
+ "docsearch-no-results-suggested-query": "Pabandykite ieškoti",
+ "docsearch-no-results-missing": "Ar manote, kad ši užklausa bus rezultatyvi?",
+ "docsearch-no-results-missing-link": "Praneškite mums.",
+ "docsearch-error-title": "Nepavyksta gauti rezultatų",
+ "docsearch-error-help": "Reikėtų patikrinti ryšį su tinklu.",
"documentation": "Dokumentacija",
+ "down": "Žemyn",
"ecosystem": "Ekosistema",
"edit-page": "Redaguoti puslapį",
"ef-blog": "Ethereum fondo tinklaraštis",
@@ -32,6 +74,8 @@
"enterprise-menu": "Verslo meniu",
"esp": "Ekosistemos palaikymo programa",
"eth-current-price": "Dabartinė ETH kaina (USD)",
+ "ethereum-basics": "Ethereum pagrindai",
+ "ethereum-bug-bounty": "„Ethereum“ atlygio už aptiktus riktus programa",
"consensus-when-shipping": "Kada bus išsiųstas?",
"ethereum-upgrades": "Ethereum atnaujinimai",
"ethereum-brand-assets": "Ethereum prekių ženklo turtas",
@@ -42,20 +86,37 @@
"ethereum-glossary": "Ethereum žodynėlis",
"ethereum-governance": "Ethereum valdymas",
"ethereum-logo": "Ethereum logotipas",
+ "ethereum-roadmap": "„Ethereum“ veiksmų gairės",
+ "ethereum-protocol": "„Ethereum“ protokolas",
"ethereum-security": "Ethereum sauga ir sukčiavimų prevencija",
"ethereum-support": "Ethereum palaikymas",
"ethereum-wallets": "Ethereum piniginės",
"ethereum-whitepaper": "Ethereum baltoji knyga",
+ "feedback-widget-prompt": "Ar šis puslapis naudingas?",
+ "feedback-card-prompt-page": "Ar šis puslapis padėjo?",
+ "feedback-card-prompt-article": "Ar šis straipsnis padėjo?",
+ "feedback-card-prompt-tutorial": "Ar ši mokomoji programa padėjo?",
+ "feedback-widget-thank-you-title": "Dėkojame už atsiliepimą!",
+ "feedback-widget-thank-you-subtitle": "Padarykite šį puslapį dar geresnį atsakydami į kelis klausimus.",
+ "feedback-widget-thank-you-subtitle-ext": "Jeigu reikia pagalbos, galite kreiptis į mūsų bendruomenę svetainėje „Discord“.",
+ "feedback-widget-thank-you-timing": "2–3 min.",
+ "feedback-widget-thank-you-cta": "Atverti trumpą anketą",
"find-wallet": "Rasti piniginę",
+ "future-proofing": "Pritaikymas ateičiai",
"get-eth": "Gauti ETH",
"get-involved": "Prisijunk",
"get-started": "Pradėti",
"grants": "Dotacijos",
"grant-programs": "Ekosistemos dotacijų programos",
- "guides-and-resources": "Bendruomenės gairės ir ištekliai",
+ "guides": "Gairės",
+ "guides-hub": "Aiškinamosios gairės",
"history-of-ethereum": "Ethereum istorija",
"home": "Pagrindinis puslapis",
"how-ethereum-works": "Kaip veikia Ethereum",
+ "how-to-revoke-token-access": "Kaip atšaukti išmaniosios sutarties prieigą prie jūsų kriptovaliutos atsargų",
+ "how-to-swap-tokens": "Kaip sukeisti žetonus",
+ "how-to-use-a-bridge": "Kaip susieti žetonus su 2 sluoksniu",
+ "how-to-use-a-wallet": "Kaip naudoti piniginę",
"image": "paveikslėlis",
"in-this-section": "Šiame skirsnyje",
"individuals": "Asmenims",
@@ -66,41 +127,168 @@
"languages": "Kalbos",
"last-24-hrs": "Pastarosios 24 valandos",
"last-edit": "Paskutinis koreguotas",
+ "layer-2": "2 sluoksnis",
"learn": "Sužinoti",
"learn-by-coding": "Mokykitės kurdami kodus",
+ "learn-hub": "Mokymosi centras",
"learn-menu": "Sužinoti meniu",
"learn-more": "Sužinoti daugiau",
"less": "Mažiau",
"light-mode": "Šviesus",
- "listing-policy-disclaimer": "Visi šiame puslapyje išvardyti produktai nėra oficialiai patvirtinti ir yra pateikti tik informaciniais tikslais. Jei norite pridėti produktą ar pateikti atsiliepimą apie politiką, iškelkite klausimą GitHub platformoje.",
+ "listing-policy-disclaimer": "Visi šiame puslapyje išvardyti produktai nėra oficialiai patvirtinti ir yra pateikti tik informaciniais tikslais. Jei norite pridėti produktą ar pateikti atsiliepimą apie politiką, iškelkite klausimą Github platformoje.",
"loading": "Įkeliama...",
"loading-error": "Įkėlimo klaida.",
"loading-error-refresh": "Klaida, prašome atnaujinti.",
+ "loading-error-try-again-later": "Nepavyksta įkelti duomenų. Pabandykite vėliau.",
"logo": "logotipas",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Sulieti",
"more": "Daugiau",
+ "nav-about-description": "Etereum bendruomenei skirtas viešas, atvirojo šaltinio projektas",
+ "nav-advanced-description": "Įvaldykite sudėtingesnes temas",
+ "nav-advanced-label": "Pažengusiems",
+ "nav-basics-description": "Supraskite Ethereum pagrindus",
+ "nav-basics-label": "Pagrindai",
+ "nav-bridges-description": "Web3 išaugo į pirminių L1 blokų grandinių ir L2 dydžio pritaikymo sprendimų ekosistemą",
+ "nav-builders-home-description": "Kūrėjų Ethereum vadovas. Sukurta kūrėjų kūrėjams",
+ "nav-builders-home-label": "Kūrėjų pagrindinis puslapis",
+ "nav-contribute-description": "Norėdami padėti, laikykitės šių rekomendacijų",
+ "nav-contribute-label": "Prisidėkite prie ethereum.org",
+ "nav-dao-description": "Narių bendruomenės be centralizuoto valdymo",
+ "nav-dapps-description": "Atraskite turtingą taikomųjų programų ekosistemą naudodami Ethereum",
+ "nav-defi-description": "Visuotinė, atvira tradicinės finansų rinkos alternatyva",
+ "nav-desci-description": "Visuotinė, atvira esamos mokslinės sistemos alternatyva",
+ "nav-desoc-description": "Socialinės sąveikos ir turinio kūrimo platformos blokų grandinių pagrindu",
+ "nav-developers-docs": "Kūrėjų dokumentai",
+ "nav-developers": "Kūrėjams",
+ "nav-did-description": "Sukurkite ir turėkite savo unikalius decentralizuotus identifikatorius",
+ "nav-docs-description": "Dokumentai, padėsiantis jums suprasti Ethereum platformą ir joje kurti",
+ "nav-docs-design-description": "Unikalaus web3 dizaino iššūkių aprašymas, geriausios praktikos ir naudotojų tyrimo įžvalgos",
+ "nav-docs-design-label": "UX/UI dizaino pradmenys",
+ "nav-docs-foundation-description": "Pagrindiniai dalykai, reikalingi kuriant Ethereum platformoje",
+ "nav-docs-overview-description": "Kūrėjų dokumentų pagrindinis puslapis",
+ "nav-docs-stack-description": "Supraskite Ethereum saugyklos informaciją",
+ "nav-eip-description": "Standartai, pagal kuriuos apibūdinamos naujos savybės ir procesai",
+ "nav-eip-label": "Pasiūlymai, kaip tobulinti Ethereum",
+ "nav-emerging-description": "Susipažinkite su naujausiais Ethereum naudotojų atvejais",
+ "nav-enterprise-description": "Ethereum verslo taikomosios programos",
+ "nav-ethereum-org-description": "Ši interneto svetainė pagrįsta bendruomenės bendradarbiavimu – prisijunkite ir prisidėkite ir jūs",
+ "nav-ethereum-wallets-description": "Taikomoji programa, skirta susieti su Ethereum paskyra",
+ "nav-events-description": "Decentralizuotas požiūris ir laisvė dalyvauti visiems",
+ "nav-events-irl-description": "Kas mėnesį gyvai ir nuotoliniu būdu organizuojami reikšmingi Ethereum renginiai",
+ "nav-events-label": "Bendruomenės ir renginiai",
+ "nav-events-online-description": "Šimtai tūkstančių Ethereum entuziastų aktyviai dalyvauja šiose internetinėse bendruomenėse",
+ "nav-find-wallet-description": "Piniginėse galite naudoti kriptovaliutą",
+ "nav-find-wallet-label": "Pasirinkite piniginę",
+ "nav-gas-fees-description": "Kaip apskaičiuojami vidinės Ethereum kriptovaliutos mokesčiai?",
+ "nav-get-eth-description": "Kad galėtumėte naudoti Ethereum taikomąsias programas, jums reikia eterių (ETH – vidinė Ethereum kriptovaliuta)",
+ "nav-get-started-description": "Pirmieji žingsniai naudojant Ethereum",
+ "nav-governance-description": "Ethereum protokolo naujinimo procesas",
+ "nav-governance-label": "Valdymas",
+ "nav-grants-description": "Mūsų bendruomenės sudarytas projektų, kuriuose teikiamos dotacijų finansavimo programos, sąrašas",
+ "nav-guide-create-account-description": "Ethereum paskyrą bet kada gali susikurti visi naudotojai, turintys piniginės taikomąją programą",
+ "nav-guide-revoke-access-description": "Saugiai valdykite išmaniąsias sutartis ir taikomąsias programas Ethereum ekosistemoje",
+ "nav-guide-revoke-access-label": "Kaip atšaukti prieigą prie išmaniųjų sutarčių?",
+ "nav-guide-use-wallet-description": "Sužinokite, kaip valdyti visas pagrindines piniginės funkcijas",
+ "nav-guide-use-wallet-label": "Kaip naudoti piniginę",
+ "nav-guides-description": "Praktiški detalūs pradiniai nurodymai",
+ "nav-guides-label": "Aiškinamosios gairės",
+ "nav-history-description": "Visų svarbiausių išsišakojimų ir naujinių tvarkaraštis",
+ "nav-history-label": "Ethereum techninė istorija",
+ "nav-layer-2-description": "Ethereum pigesni ir spartesni sandoriai",
+ "nav-learn-by-coding-description": "Įrankiai, kurie padeda jums eksperimentuoti Ethereum platformoje",
+ "nav-local-env-description": "Pasirinkite ir sukurtkite savo Ethereum kūrimo saugyklą",
+ "nav-mainnet-description": "Verslo blokų grandinių taikomąsias programas galima sukurti viešame tinkle Ethereum Mainnet",
+ "nav-nft-description": "Būdas pateikti viską, kas unikalu, kaip Ethereum pagrįstą investiciją",
+ "nav-open-research-description": "Viena iš pagrindinių Ethereum stiprybių – aktyvi tyrėjų bendruomenė",
+ "nav-open-research-label": "Atverti tyrimą",
+ "nav-overview-description": "Viskas apie Ethereum švietimą",
+ "nav-overview-label": "Apžvalga",
+ "nav-participate-overview-description": "Dalyvavimo galimybių apžvalga",
+ "nav-primary": "Pagrindinis",
+ "nav-quizzes-description": "Pasitikrinkite, ar gerai išmanote Ethereum ir kriptovaliutas",
+ "nav-quizzes-label": "Patikrinkite savo žinias",
+ "nav-refi-description": "Alternatyvi ekonominė sistema, sukurta regeneravimo principu",
+ "nav-research-description": "Ethereum tobulinimo procesai",
+ "nav-research-label": "Tyrimai ir plėtra",
+ "nav-roadmap-description": "Kelias link didesnio Ethereum išplečiamumo, saugumo ir tvarumo",
+ "nav-roadmap-future-description": "Ethereum, kaip patikimo ir decentralizuoto tinklo, įtvirtinimas",
+ "nav-roadmap-future-label": "Pritaikymas ateičiai",
+ "nav-roadmap-label": "Planas",
+ "nav-roadmap-scaling-description": "Tinklo naujiniai, siekiant dar labiau sumažinti sandorių išlaidas ir greitį",
+ "nav-roadmap-security-description": "Užtikrinimas, kad Ethereum platforma ir ateityje išliktų atspari įvairiems išpuoliams",
+ "nav-roadmap-security-label": "Didesnis saugumas",
+ "nav-roadmap-ux-description": "Ethereum naudojimas turi būti paprastesnis",
+ "nav-run-a-node-description": "Tapkite visiškai nepriklausomi ir padėkite apsaugoti tinklą",
+ "nav-security-description": "Susipažinkite su geriausiomis kriptovaliutos naudojimo praktikomis",
+ "nav-smart-contracts-description": "Pagrindiniai Ethereum ekosistemos blokai",
+ "nav-stablecoins-description": "Stablecoins yra Ethereum žetonai, kurių vertė išlieka fiksuota",
+ "nav-stake-description": "Gaukite atlygį už Ethereum saugumo didinimą",
+ "nav-stake-label": "Palaikyti",
+ "nav-staking-home-description": "Skirtingų palaikymo parinkčių apžvalga",
+ "nav-staking-pool-description": "Palaikykite ir gaukite bet kokios ETH sumos atlygį prisijungdami prie kitų",
+ "nav-staking-pool-label": "Sutelktasis palaikymas",
+ "nav-staking-saas-label": "Palaikymas teikiant paslaugą",
+ "nav-staking-solo-label": "Savarankiškas palaikymas",
+ "nav-start-building-description": "Naudinga informacija naujokams",
+ "nav-translation-program-description": "Bendros pastangos išversti puslapį ethereum.org į visas kalbas",
+ "nav-tutorials-description": "Sudarytas bendruomenės vadovėlių sąrašas",
+ "nav-use-cases-description": "Atraskite kitokio Ethereum panaudojimo idėjų",
+ "nav-what-is-ether-description": "Ethereum taikomųjų programų valiuta",
+ "nav-what-is-ethereum-description": "Supraskite, kodėl Ethereum yra ypatinga platforma",
+ "nav-what-is-web3-label": "Kas yra „Web3“?",
+ "nav-what-is-web3-description": "Centralizuotų monopolijų, diktuojančių taisykles, alternatyva",
+ "nav-whitepaper-description": "Originali Ethereum baltoji knyga, kurią 2014 m. parašė Vitalik Buterin",
+ "nav-zkp-description": "Būdas įrodyti teiginio pagrįstumą, neatskleidžiant paties teiginio",
+ "nft-page": "NFT - Nekeičiamieji žetonai",
+ "nfts": "NFT žetonai",
"no": "Ne",
"on-this-page": "Šiame puslapyje",
+ "open-research": "Atverti tyrimą",
+ "page-developers-aria-label": "Kūrėjų meniu",
+ "page-index-meta-title": "Pagrindinis puslapis",
"page-last-updated": "Puslapis paskutinį kartą atnaujintas",
+ "participate-menu": "Dalyvavimo meniu",
+ "pbs": "Siūlytojo-kūrėjo atskyrimas",
+ "pools": "Sutelktasis palaikymas",
"privacy-policy": "Privatumo politika",
"private-ethereum": "Privatus Ethereum",
+ "product-disclaimer": "Produktų ir paslaugų sąrašas sudarytas tam, kad „Ethereum“ bendruomenei būtų patogiau. Jei produktas ar paslauga įtraukiamas (-a), tai nereiškia, kad jį (ją) patvirtino interneto svetainės ethereum.org komanda arba „Ethereum“ fondas.",
+ "quizzes-title": "Apklausų centras",
+ "quizzes": "Apklausos",
"refresh": "Prašome atnaujinti puslapį.",
+ "return-home": "grįžti į pradžią",
+ "roadmap": "„Ethereum“ veiksmų gairės",
+ "research": "Tyrimai",
+ "research-menu": "Tyrimų meniu",
+ "resources": "Vertimo ištekliai",
"run-a-node": "Paleisti mazgą",
+ "rollup-component-developer-docs": "Kūrėjo dokumentai",
+ "rollup-component-technology-and-risk-summary": "Technologijų ir rizikų suvestinė",
+ "scaling": "Dydžio pritaikymas",
+ "saas": "Palaikymo paslauga",
"search": "Paieška",
+ "search-ethereum-org": "Ieškoti svetainėje ethereum.org",
+ "secret-leader-election": "Slaptieji lyderio rinkimai",
"search-box-blank-state-text": "Ieškok!",
"search-eth-address": "Panašu, kad tai Ethereum adresas. Mes neteikiame duomenų, susijusių su konkrečiais adresais. Bandykite ieškoti duomenų blokų naršyklėje Etherscan",
"search-no-results": "Rezultatų, atitinkančių paieškos užklausą, nerasta",
+ "security": "Saugumas",
+ "single-slot-finality": "Baigtumas per tą patį laikotarpį",
+ "statelessness": "Bepilietybė",
"see-contributors": "Žiūrėti pagalbininkus",
- "set-up-local-env": "Susikurti vietinę aplinką",
- "sharding": "Padalijimo grandinės",
+ "set-up-local-env": "Susikurkite vietinę aplinką",
+ "sharding": "Skirstymas",
"show-all": "Rodyti visus",
"show-less": "Rodyti mažiau",
"site-description": "Ethereum yra globali, decentralizuota platforma, skirta pinigų ir naujo tipo programoms. Ethereum platformoje galite sukurti pinigus valdantį kodą ir kurti programas, prieinamas visame pasaulyje.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Pereiti prie pagrindinio turinio",
"smart-contracts": "Išmaniosios sutartys",
"stablecoins": "Stablecoins",
"staking": "Palaikymas",
+ "start-here": "Pradėti čia",
+ "solo": "Savarankiškas palaikymas",
+ "support": "Parama",
"terms-of-use": "Naudojimosi sąlygos",
"translation-banner-body-new": "Šį puslapį matote anglų kalba, nes jis dar nėra išverstas. Padėkite mums išversti šį turinį.",
"translation-banner-body-update": "Jau yra nauja šio puslapio versija, bet kol kas tik anglų kalba. Padėkite mums išversti naujausią versiją.",
@@ -108,17 +296,25 @@
"translation-banner-button-translate-page": "Išversti puslapį",
"translation-banner-title-new": "Padėkite išversti šį puslapį",
"translation-banner-title-update": "Padėkite atnaujinti šį puslapį",
+ "translation-banner-no-bugs-title": "Čia riktų nėra!",
+ "translation-banner-no-bugs-content": "Šis puslapis neverčiamas. Kol kas jį tyčia paliekame anglų kalba.",
+ "translation-banner-no-bugs-dont-show-again": "Daugiau nerodyti",
+ "translation-program": "Vertimo programa",
+ "try-using-search": "Norėdami surasti norimą dalyką išbandykite paieškos funkciją arba",
"tutorials": "Pamokos",
+ "up": "Aukštyn",
+ "use": "Naudojimas",
"use-ethereum": "Naudoti Ethereum",
"use-ethereum-menu": "Naudoti Ethereum meniu",
+ "use-menu": "Naudojimo meniu",
+ "verkle-trees": "„Verkle“ medžiai",
"wallets": "Piniginės",
+ "we-couldnt-find-that-page": "Nepavyko rasti šio puslapio",
+ "web3": "Kas yra „Web3“?",
"website-last-updated": "Svetainė paskutinį kartą atnaujinta",
"what-is-ether": "Kas yra Ether (ETH)?",
"what-is-ethereum": "Kas yra Ethereum?",
- "defi-page": "Decentralizuoti finansai (DeFi)",
- "dao-page": "Decentralizuotos autonominės organizacijos (DAO)",
- "nft-page": "Nekeičiamieji žetonai (NFT)",
+ "withdrawals": "Palaikymo lėšų atsiėmimas",
"yes": "Taip",
- "page-index-meta-title": "Pagrindinis puslapis",
- "page-developers-aria-label": "Kūrėjų meniu"
+ "zero-knowledge-proofs": "Įrodymas be žinių"
}
diff --git a/src/intl/lt/page-languages.json b/src/intl/lt/page-languages.json
index 6b4b21f7608..72c247c692f 100644
--- a/src/intl/lt/page-languages.json
+++ b/src/intl/lt/page-languages.json
@@ -1,4 +1,12 @@
{
+ "page-languages-h1": "Kalbos palaikymas",
+ "page-languages-want-more-link": "Vertimo programa",
+ "page-languages-filter-label": "Filtrų sąrašas",
+ "page-languages-filter-placeholder": "Filtro tipas",
+ "page-languages-browser-default": "Numatytoji naršyklė",
+ "page-languages-translated": "išversta",
+ "page-languages-words": "žodžiai",
+ "page-languages-recruit-community": "Padėkite mums išversti puslapį ethereum.org.",
"language-ar": "Arabų",
"language-bg": "Bulgarų",
"language-bn": "Bengalų",
diff --git a/src/intl/lt/page-stablecoins.json b/src/intl/lt/page-stablecoins.json
index 2189e8ee837..78c8a20770b 100644
--- a/src/intl/lt/page-stablecoins.json
+++ b/src/intl/lt/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "„MakerDao“ logotipas",
"matcha-logo": "„Matcha“ logotipas",
"oasis-logo": "„Oasis“ logotipas",
- "uniswap-logo": "„Uniswap“ logotipas"
+ "uniswap-logo": "„Uniswap“ logotipas",
+ "page-stablecoins-category-dashboard-and-education": "Valdymo skydelis ir švietimas"
}
diff --git a/src/intl/ml/common.json b/src/intl/ml/common.json
index a3362555781..f8d5a84958c 100644
--- a/src/intl/ml/common.json
+++ b/src/intl/ml/common.json
@@ -1,28 +1,70 @@
{
"about-ethereum-org": "Ethereum.org-നെ കുറിച്ച്",
"about-us": "ഞങ്ങളെ കുറിച്ച്",
+ "adding-desci-projects": "Desci പ്രോജക്റ്റുകൾ ചേർക്കൽ",
+ "adding-developer-tools": "ഡെവലപ്പർ ഉപകരണങ്ങൾ ചേർക്കൽ",
+ "adding-exchanges": "എക്സ്ചേഞ്ചുകൾ ചേർക്കൽ",
+ "adding-glossary-terms": "ഗ്ലോസറി പദങ്ങൾ ചേർക്കൽ",
+ "adding-staking-products": "സ്റ്റെയ്ക്കിങ് ഉൽപ്പന്നങ്ങൾ ചേർക്കൽ",
+ "adding-wallets": "വാലറ്റുകൾ ചേർക്കൽ",
+ "account-abstraction": "അക്കൗണ്ട് അബ്സ്ട്രാക്ഷൻ",
+ "acknowledgements": "അംഗീകാരങ്ങൾ",
"aria-toggle-search-button": "തിരയൽ ബട്ടൺ ടോഗിൾ ചെയ്യുക",
"aria-toggle-menu-button": "മെനു ബട്ടൺ ടോഗിൾ ചെയ്യുക",
"beacon-chain": "ബീക്കൺ ചെയിൻ",
"bridges": "ബ്ലോക്ക്ചെയിൻ ബ്രിഡ്ജുകൾ",
+ "bug-bounty": "ബഗ് ബൗണ്ടി",
+ "build": "ബിൽഡ്",
+ "build-menu": "ബിൽഡ് മെനു",
+ "clear": "മായ്ക്കുക",
+ "close": "അവസാനിപ്പിക്കുക",
"community": "കമ്യൂണിറ്റി",
"community-hub": "കമ്മ്യൂണിറ്റി കേന്ദ്രം",
"community-menu": "കമ്മ്യൂണിറ്റി മെനു",
"contact": "ബന്ധപ്പെടുക",
+ "content-buckets": "ഉള്ളടക്ക ബക്കറ്റുകൾ",
+ "content-resources": "ഉള്ളടക്ക റിസോഴ്സുകൾ",
+ "content-standardization": "ഉള്ളടക്ക ക്രമവൽക്കരണം",
"contributing": "സംഭാവന ചെയ്യുന്നു",
"contributors": "കോണ്ട്രിബ്യൂട്ടര്മാര്",
"contributors-thanks": "ഈ പേജിലേക്ക് സംഭാവന നൽകിയ എല്ലാവരും - നന്ദി!",
"cookie-policy": "കുക്കി നയം",
"copied": "പകർത്തി",
"copy": "പകര്പ്പ്",
+ "danksharding": "ഡാങ്ക്ഷാർഡിംഗ്",
+ "dao-page": "DAOs - വികേന്ദ്രീകൃത സ്വയംഭരണ സ്ഥാപനങ്ങൾ",
"dark-mode": "ഡാർക്ക്",
"data-provided-by": "ഡാറ്റ ഉറവിടം:",
- "decentralized-applications-dapps": "വികേന്ദ്രീകൃത ആപ്ലിക്കേഷനുകൾ (ഡാപ്പുകൾ)",
+ "decentralized-applications-dapps": "ഡാപ്പുകൾ - വികേന്ദ്രീകൃത ആപ്ലിക്കേഷനുകൾ",
+ "decentralized-identity": "വികേന്ദ്രീകൃത വ്യക്തിവിവരം",
+ "decentralized-social-networks": "വികേന്ദ്രീകൃത സോഷ്യൽ നെറ്റ്വർക്കുകൾ",
+ "decentralized-science": "DeSci - വികേന്ദ്രീകൃത ശാസ്ത്രം",
+ "description": "നാവിഗേഷൻ ഇനത്തിനുള്ള വിവരണം",
+ "defi-page": "DeFi - വികേന്ദ്രീകൃത ധനകാര്യം",
+ "design": "രൂപരേഖ",
+ "design-principles": "രൂപരേഖ തത്വങ്ങൾ",
"devcon": "ഡവ്കോൺ",
"developers": "ഡെവലപ്പർമാർ",
"developers-home": "ഡെവലപ്പേഴ്സ് ഹോം",
"docs": "ഡോക്യുമെന്റുകൾ",
+ "docsearch-to-select": "തിരഞ്ഞെടുക്കാൻ",
+ "docsearch-to-navigate": "നാവിഗേറ്റ് ചെയ്യാൻ",
+ "docsearch-to-close": "അടയ്ക്കാൻ",
+ "docsearch-search-by": "ഇപ്രകാരം തിരയുക",
+ "docsearch-start-recent-searches-title": "സമീപകാലത്തേത്",
+ "docsearch-start-no-recent-searches": "സമീപകാല തിരയലുകൾ ഒന്നുമില്ല",
+ "docsearch-start-save-recent-search": "ഈ തിരയൽ സംരക്ഷിക്കുക",
+ "docsearch-start-remove-recent-search": "ഹിസ്റ്ററിയിൽ നിന്ന് ഈ തിരയൽ നീക്കംചെയ്യുക",
+ "docsearch-start-favorite-searches": "പ്രിയപ്പെട്ടത്",
+ "docsearch-start-remove-favorite-search": "പ്രിയപ്പെട്ടവയിൽ നിന്ന് ഈ തിരയൽ നീക്കംചെയ്യുക",
+ "docsearch-no-results-text": "ഇതിനുള്ള ഉത്തരം കണ്ടെത്താനായില്ല",
+ "docsearch-no-results-suggested-query": "ഇതിനായി തിരഞ്ഞ് ശ്രമിക്കുക",
+ "docsearch-no-results-missing": "ഈ അന്വേഷണം ഉത്തരം തരുമെന്ന് വിശ്വസിക്കുന്നുണ്ടോ?",
+ "docsearch-no-results-missing-link": "നമുക്ക് നോക്കി നോക്കാം.",
+ "docsearch-error-title": "ഉത്തരം കണ്ടെത്താനായില്ല",
+ "docsearch-error-help": "നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ ഉറപ്പുവരുത്തുക.",
"documentation": "പ്രമാണീകരണം",
+ "down": "താഴെ",
"ecosystem": "ഇക്കോസിസ്റ്റം",
"edit-page": "പേജ് എഡിറ്റുചെയ്യുക",
"ef-blog": "Ethereum ഫൗണ്ടേഷന് ബ്ലോഗ്",
@@ -32,9 +74,11 @@
"enterprise-menu": "എന്റർപ്രൈസ് മെനു",
"esp": "ഇക്കോസിസ്റ്റം സപ്പോർട്ട് പ്രോഗ്രാം",
"eth-current-price": "നിലവിലെ ETH വില (USD)",
+ "ethereum-basics": "Ethereum അടിസ്ഥാനകാര്യങ്ങൾ",
+ "ethereum-bug-bounty": "Ethereum ബഗ് ബൗണ്ടി പ്രോഗ്രാം",
"consensus-when-shipping": "ഇത് ഷിപ്പ് ചെയ്യുന്നത് എപ്പോഴാണ്?",
"ethereum-upgrades": "Ethereum അപ്ഗ്രേഡുകൾ",
- "ethereum-brand-assets": "Ethereum ബ്രാന്ഡ് ആസ്തികള്",
+ "ethereum-brand-assets": "Ethereum ബ്രാന്ഡ് അസറ്റുകള്",
"ethereum-online": "ഓൺലൈൻ കമ്മ്യൂണിറ്റികൾ",
"ethereum-events": "Ethereum ഇവെന്റ്സ്",
"ethereum-foundation": "Ethereum ഫൗണ്ടേഷന്",
@@ -42,20 +86,37 @@
"ethereum-glossary": "Ethereum പദാവലി",
"ethereum-governance": "Ethereum ഭരണനിർവഹണം",
"ethereum-logo": "Ethereum ലോഗോ",
+ "ethereum-roadmap": "Ethereum റോഡ്മാപ്പ്",
+ "ethereum-protocol": "Ethereum പ്രോട്ടോക്കോൾ",
"ethereum-security": "Ethereum സുരക്ഷ, അഴിമതി തടയൽ",
"ethereum-support": "Ethereum പിന്തുണ",
- "ethereum-wallets": "Ethereum വാലറ്റുകള്",
+ "ethereum-wallets": "Ethereum വാലറ്റുകൾ",
"ethereum-whitepaper": "Ethereum ധവളപത്രം",
+ "feedback-widget-prompt": "ഈ പേജ് സഹായകരമാണോ?",
+ "feedback-card-prompt-page": "ഈ പേജ് സഹായകരമായോ?",
+ "feedback-card-prompt-article": "ഈ ലേഖനം സഹായകമായിരുന്നോ?",
+ "feedback-card-prompt-tutorial": "ഈ ട്യൂട്ടോറിയൽ സഹായകമായിരുന്നോ?",
+ "feedback-widget-thank-you-title": "നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി!",
+ "feedback-widget-thank-you-subtitle": "കുറച്ച് ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകി ഈ പേജ് കൂടുതൽ മികച്ചതാക്കുക.",
+ "feedback-widget-thank-you-subtitle-ext": "നിങ്ങൾക്ക് സഹായം ആവശ്യമുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ഞങ്ങളുടെ Discord-ലെ കമ്മ്യൂണിറ്റിയുമായി ബന്ധപ്പെടാം.",
+ "feedback-widget-thank-you-timing": "2–3 മിനിറ്റ്",
+ "feedback-widget-thank-you-cta": "ഹ്രസ്വമായ സർവേ തുറക്കുക",
"find-wallet": "വാലറ്റ് കണ്ടെത്തുക",
+ "future-proofing": "ഭാവി-പ്രൂഫിംഗ്",
"get-eth": "ETH നേടൂ",
"get-involved": "ഇടപെടുക",
"get-started": "ആരംഭിക്കുക",
"grants": "ഗ്രാന്റുകൾ",
"grant-programs": "ഇക്കോസിസ്റ്റം ഗ്രാന്റ് പ്രോഗ്രാമുകൾ",
- "guides-and-resources": "കമ്മ്യൂണിറ്റി ഗൈഡുകളും റിസോഴ്സുകളും",
+ "guides": "ഗൈഡുകൾ",
+ "guides-hub": "ഏതുവിധമെന്ന മാർഗ്ഗനിർദ്ദേശങ്ങൾ",
"history-of-ethereum": "Ethereum ചരിത്രം",
"home": "ഹോം",
"how-ethereum-works": "Ethereum എങ്ങനെ പ്രവർത്തിക്കുന്നു",
+ "how-to-revoke-token-access": "എങ്ങനെ നിങ്ങളുടെ ക്രിപ്റ്റോ ഫണ്ടുകളിലേക്കുള്ള സ്മാർട്ട് കരാർ പിൻവലിക്കാം",
+ "how-to-swap-tokens": "എങ്ങനെ ടോക്കൺസ് സ്വാപ്പ് ചെയ്യാം",
+ "how-to-use-a-bridge": "എങ്ങനെ ടോക്കൺസ് വരി 2-വുമായി ബന്ധിപ്പിക്കാം",
+ "how-to-use-a-wallet": "എങ്ങനെ ഒരു വാലറ്റ് ഉപയോഗിക്കാം",
"image": "ചിത്രം",
"in-this-section": "ഈ വിഭാഗത്തിൽ",
"individuals": "വ്യക്തികൾ",
@@ -69,6 +130,7 @@
"layer-2": "വരി 2",
"learn": "പഠിക്കൂ",
"learn-by-coding": "കോഡിംഗ് ഉപയോഗിച്ച് പഠിക്കൂ",
+ "learn-hub": "പഠന ഹബ്",
"learn-menu": "മെനു പഠിക്കൂ",
"learn-more": "കൂടുതല് അറിയുക",
"less": "കുറവ്",
@@ -77,30 +139,149 @@
"loading": "ലോഡ്ചെയ്യുന്നു...",
"loading-error": "ലോഡു ചെയ്യുന്നതിൽ പിശക്.",
"loading-error-refresh": "പിശക്, പുതുക്കുക.",
+ "loading-error-try-again-later": "ഡേറ്റ ലോഡ് ചെയ്യാൻ സാധിക്കുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.",
"logo": "ലോഗോ",
"mainnet-ethereum": "മെയിന്നെറ്റ് Ethereum",
+ "merge": "ലയിപ്പിക്കുക",
"more": "കൂടുതൽ",
- "nav-developers": "ഡെവലപ്പർമാർ",
+ "nav-about-description": "Ethereum കമ്മ്യൂണിറ്റിക്കുള്ള ഒരു പൊതുവായ ഓപ്പൺ-സോഴ്സ് പ്രൊജക്റ്റ്",
+ "nav-advanced-description": "കൂടുതൽ സങ്കീർണ്ണമായ വിഷയങ്ങൾ മനസ്സിലാക്കുക",
+ "nav-advanced-label": "വിപുലമായത്",
+ "nav-basics-description": "Ethereum-ന്റെ അടിസ്ഥാന തത്ത്വങ്ങൾ മനസ്സിലാക്കുക",
+ "nav-basics-label": "അടിസ്ഥാന കാര്യങ്ങൾ",
+ "nav-bridges-description": "പ്രാഥമിക L1 ബ്ലോക്ക്ചെയിനുകളുടെയും L2 സ്കെയിലിംഗ് സൊല്യൂഷനുകളുടെയും ഒരു ഇക്കോസിസ്റ്റമായി Web3 പരിണമിച്ചിരിക്കുന്നു",
+ "nav-builders-home-description": "Ethereum-നായുള്ള നിർമ്മാതാക്കളുടെ ഒരു മാനുവൽ—നിർമ്മാതാക്കൾക്കായി, നിർമ്മാതാക്കള് തയ്യാറാക്കിയത്",
+ "nav-builders-home-label": "നിർമ്മാതാക്കളുടെ ഹോം",
+ "nav-contribute-description": "നിങ്ങൾക്ക് സഹായിക്കാൻ താൽപ്പര്യമുണ്ടെങ്കിൽ, ഇത് നിങ്ങളെ മുന്നോട്ടുനയിക്കും",
+ "nav-contribute-label": "Ethereum.org എന്നതിലേക്ക് സംഭാവന നൽകൽ",
+ "nav-dao-description": "കേന്ദ്രീകൃത അധികാരമില്ലാത്ത, അംഗങ്ങൾക്ക് സ്വന്തമായ കമ്മ്യൂണിറ്റികൾ",
+ "nav-dapps-description": "Ethereum ഉപയോഗിക്കുന്ന ആപ്പുകളുടെ ഒരു സമ്പന്നമായ ഇക്കോസിസ്റ്റം അടുത്തറിയുക",
+ "nav-defi-description": "പരമ്പരാഗത സാമ്പത്തിക വിപണിക്കുള്ള ആഗോളമായ ഒരു സ്വതന്ത്ര ബദൽ",
+ "nav-desci-description": "നിലവിലെ ശാസ്ത്രീയ സംവിധാനത്തിനുള്ള ആഗോളമായ ഒരു സ്വതന്ത്ര ബദൽ",
+ "nav-desoc-description": "സാമൂഹിക ഇടപഴകലിനും ഉള്ളടക്കം സൃഷ്ടിക്കുന്നതിനുമായി ബ്ലോക്ക്ചെയിൻ അടിസ്ഥാനമാക്കിയുള്ള പ്ലാറ്റ്ഫോമുകൾ",
"nav-developers-docs": "ഡെവലപ്പർമാർ ഡോക്സ്",
+ "nav-developers": "ഡെവലപ്പർമാർ",
+ "nav-did-description": "നിങ്ങളുടെ തനത് വികേന്ദ്രീകൃത ഐഡന്റിഫയറുകൾ ഇഷ്യൂ ചെയ്യുക, സ്വന്തമാക്കുക",
+ "nav-docs-description": "Ethereum മനസ്സിലാക്കി അത് ഉപയോഗിച്ച് ബിൽഡ് ചെയ്യാൻ നിങ്ങളെ സഹായിക്കുന്ന ഡോക്യുമെന്റുകൾ",
+ "nav-docs-design-description": "തനത് web3 രൂപകൽപ്പനാ ചലഞ്ചുകൾ, മികച്ച കീഴ്വഴക്കങ്ങൾ, ഉപയോക്തൃ ഗവേഷണ ഇൻസൈറ്റുകൾ എന്നിവയുടെ വിവരണം",
+ "nav-docs-design-label": "UX/UI രൂപകൽപ്പനാ അടിസ്ഥാന തത്ത്വങ്ങൾ",
+ "nav-docs-foundation-description": "Ethereum എന്നതിൽ അഭിവൃദ്ധിപ്പെടാനുള്ള പ്രധാന അടിസ്ഥാന തത്ത്വങ്ങൾ",
+ "nav-docs-foundation-label": "അടിസ്ഥാന വിഷയങ്ങൾ",
+ "nav-docs-overview-description": "ഡെവലപ്പർ ഡോക്യുമെന്റുകൾക്കുള്ള നിങ്ങളുടെ ഹോം",
+ "nav-docs-stack-description": "ഇതറീയം സ്റ്റേക്കിന്റെ എല്ലാ വിശദാംശങ്ങളും മനസ്സിലാക്കുക",
+ "nav-docs-stack-label": "Ethereum സ്റ്റേക്ക്",
+ "nav-eip-description": "പുതിയ സവിശേഷതകളോ പ്രോസസ്സുകളോ വ്യക്തമാക്കുന്ന സ്റ്റാൻഡേർഡുകൾ",
+ "nav-eip-label": "EIP-കൾ - Ethereum ഇംപ്രൂവ്മെന്റ് പ്രൊപ്പോസലുകള്",
+ "nav-emerging-description": "Ethereum-നുള്ള ഏറ്റവും പുതിയ മറ്റ് ഉപയോഗ സാഹചര്യങ്ങൾ മനസ്സിലാക്കുക",
+ "nav-enterprise-description": "Ethereum-നുള്ള ബിസിനസ് ആപ്ലിക്കേഷനുകൾ",
+ "nav-ethereum-org-description": "ഈ വെബ്സൈറ്റ് കമ്മ്യൂണിറ്റി പ്രേരിതമാണ്—ഞങ്ങൾക്കൊപ്പം ചേർന്ന് സംഭാവന ചെയ്യൂ",
+ "nav-ethereum-wallets-description": "നിങ്ങളുടെ Ethereum അക്കൗണ്ടുമായി സംവദിക്കുന്ന ഒരു ആപ്പ്",
+ "nav-events-description": "വികേന്ദ്രീകരണവും ആർക്കും പങ്കെടുക്കാനുള്ള സ്വാതന്ത്ര്യവും",
+ "nav-events-irl-description": "നേരിട്ടും ഓൺലൈനിലും ഓരോ മാസവുമുള്ള പ്രമുഖ Ethereum ഇവന്റുകൾ",
+ "nav-events-label": "കമ്മ്യൂണിറ്റികളും ഇവന്റുകളും",
+ "nav-events-online-description": "ആയിരക്കണക്കിന് Ethereum പ്രേമികളാണ് ഈ ഓൺലൈൻ കമ്മ്യൂണിറ്റികൾ സൃഷ്ടിച്ചിട്ടുള്ളത്",
+ "nav-find-wallet-description": "ക്രിപ്റ്റോ ഉപയോഗിക്കാൻ വാലറ്റുകൾ നിങ്ങളെ അനുവദിക്കുന്നു",
+ "nav-find-wallet-label": "നിങ്ങളുടെ വാലറ്റ് തിരഞ്ഞെടുക്കുക",
+ "nav-gas-fees-description": "ETH ഇടപാട് നിരക്കുകൾ കണക്കാക്കുന്നതെങ്ങനെ",
+ "nav-get-eth-description": "Ethereum ആപ്ലിക്കേഷനുകൾ ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് ഇതർ (ETH) ആവശ്യമാണ്",
+ "nav-get-started-description": "Ethereum ഉപയോഗിക്കാനുള്ള നിങ്ങളുടെ ആദ്യ ചുവടുകൾ",
+ "nav-governance-description": "പ്രോസസ്സിൽ Ethereum പ്രോട്ടോക്കോൾ അപ്ഗ്രേഡ് ചെയ്യുന്നത് ഉൾപ്പെടുന്നു",
+ "nav-governance-label": "ഭരണനിർവഹണം",
+ "nav-grants-description": "ഗംഭീരമായ ഫണ്ടിംഗ് പ്രോഗ്രാമുകൾ നൽകുന്ന പ്രൊജക്റ്റുകൾ സംബന്ധിച്ച് ഞങ്ങളുടെ കമ്മ്യൂണിറ്റി ക്യുറേറ്റ് ചെയ്ത ഒരു ലിസ്റ്റ്",
+ "nav-guide-create-account-description": "ആർക്കും എപ്പോൾ വേണമെങ്കിലും ഒരു വാലറ്റ് ആപ്പ് ഉപയോഗിച്ച് സൗജന്യമായി ഒരു Ethereum അക്കൗണ്ട് സൃഷ്ടിക്കാം",
+ "nav-guide-revoke-access-description": "Ethereum ഇക്കോസിസ്റ്റത്തിൽ സ്മാർട്ട് കരാറുകൾ, ആപ്ലിക്കേഷനുകൾ എന്നിവയുമായി സംവദിക്കുമ്പോൾ സുരക്ഷിതരായിരിക്കുക",
+ "nav-guide-revoke-access-label": "സ്മാർട്ട് കരാർ ആക്സസ് എങ്ങനെ പിൻവലിക്കാം",
+ "nav-guide-use-wallet-description": "ഒരു വാലറ്റിന്റെ എല്ലാ അടിസ്ഥാന പ്രവർത്തനങ്ങളും പ്രവർത്തിപ്പിക്കുന്ന വിധം മനസ്സിലാക്കുക",
+ "nav-guide-use-wallet-label": "എങ്ങനെ ഒരു വാലറ്റ് ഉപയോഗിക്കാം",
+ "nav-guides-description": "ആരംഭിക്കാനായി നിങ്ങളെ സഹായിക്കാൻ, ഘട്ടം ഘട്ടമായുള്ള പ്രായോഗിക ഗൈഡുകൾ",
+ "nav-guides-label": "എങ്ങനെ ഗൈഡ് ചെയ്യുന്നു",
+ "nav-history-description": "എല്ലാ പ്രമുഖ ഫോർക്കുകളുടെയും അപ്ഡേറ്റുകളുടെയും ഒരു ടൈംലൈൻ",
+ "nav-history-label": "Ethereum-ന്റെ സാങ്കേതിക ചരിത്രം",
+ "nav-layer-2-description": "Ethereum-നുള്ള ചെലവ് കുറഞ്ഞതും വേഗമേറിയതുമായ ഇടപാടുകൾ",
+ "nav-learn-by-coding-description": "Ethereum ഉപയോഗിച്ചുള്ള പരീക്ഷണത്തിന് നിങ്ങളെ സഹായിക്കുന്ന ഉപകരണങ്ങൾ",
+ "nav-local-env-description": "നിങ്ങളുടെ Ethereum വികസന സഞ്ചയം തിരഞ്ഞെടുത്ത് സജ്ജീകരിക്കുക",
+ "nav-mainnet-description": "പൊതു Ethereum മെയിൻനെറ്റിൽ എന്റർപ്രൈസ് ബ്ലോക്ക്ചെയിൻ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കാൻ കഴിയും",
+ "nav-nft-description": "ഒരു Ethereum അധിഷ്ഠിത അസറ്റ് പോലുള്ള, തനതായ എന്തിനെയും പ്രതിനിധീകരിക്കാനുള്ള ഒരു മാർഗ്ഗം",
+ "nav-open-research-description": "Ethereum-ന്റെ മുൻനിര കരുത്തുകളിലൊന്ന്, അതിന്റെ സജീവമായ ഗവേഷണ കമ്മ്യൂണിറ്റിയാണ്",
+ "nav-open-research-label": "റിസേർച്ച് എന്നത് തുറക്കുക",
+ "nav-overview-description": "Ethereum വിദ്യാഭ്യാസം സംബന്ധിച്ച എല്ലാ കാര്യങ്ങളും",
+ "nav-participate-overview-description": "എങ്ങനെ പങ്കെടുക്കാമെന്നത് സംബന്ധിച്ച ചുരുക്കവിവരണം",
"nav-primary": "പ്രാഥമികം",
+ "nav-quizzes-description": "നിങ്ങൾ Ethereum, ക്രിപ്റ്റോകറൻസികൾ എന്നിവ എത്രത്തോളം നന്നായി മനസ്സിലാക്കിയിട്ടുണ്ടെന്ന് കണ്ടെത്തുക",
+ "nav-quizzes-label": "നിങ്ങളുടെ അറിവ് പരീക്ഷിക്കുക",
+ "nav-refi-description": "പുനരുൽപ്പാദന തത്ത്വങ്ങളിൽ അധിഷ്ഠിതമായി സൃഷ്ടിച്ചെടുത്ത ഒരു ബദൽ സമ്പദ്വ്യവസ്ഥ",
+ "nav-research-description": "Ethereum മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്ന പ്രോസസ്സുകൾ",
+ "nav-research-label": "ഗവേഷണവും വികസനവും",
+ "nav-roadmap-description": "Ethereum-നുള്ള കൂടുതൽ വിപുലീകരണക്ഷമത, സുരക്ഷ, സ്ഥിരത എന്നിവയിലേക്കുള്ള പാത",
+ "nav-roadmap-future-description": "ബലവത്തായതും വികേന്ദ്രീകൃതവുമായ ഒരു നെറ്റ്വർക്ക് എന്ന നിലയിൽ Ethereum കരുത്തുറ്റതാകുന്നു",
+ "nav-roadmap-future-label": "ഭാവി-പ്രൂഫിംഗ്",
+ "nav-roadmap-label": "റോഡ്മാപ്പ്",
+ "nav-roadmap-scaling-description": "ഇടപാട് ചെലവുകളും വേഗതയും കൂടുതൽ ചുരുക്കാനുള്ള നെറ്റ്വർക്ക് അപ്ഡേറ്റുകൾ",
+ "nav-roadmap-security-description": "ഭാവിയിലെ എല്ലാത്തരം ആക്രമണങ്ങളെയും അതിജീവിച്ച് Ethereum നിലനിൽക്കുമെന്ന് ഉറപ്പാക്കുന്നു",
+ "nav-roadmap-security-label": "മെച്ചപ്പെടുത്തിയ സുരക്ഷ",
+ "nav-roadmap-ux-description": "Ethereum-ന്റെ ഉപയോഗം ലളിതമാക്കേണ്ടതുണ്ട്",
+ "nav-run-a-node-description": "നെറ്റ്വർക്ക് സുരക്ഷിതമാക്കാൻ സഹായിക്കുമ്പോൾ തന്നെ, പൂർണ്ണമായും ഫലവത്തായതുമായി മാറുന്നു",
+ "nav-security-description": "ക്രിപ്റ്റോകറൻസി ഉപയോഗിക്കുമ്പോഴുള്ള മികച്ച കീഴ്വഴക്കങ്ങൾ മനസ്സിലാക്കുക",
+ "nav-smart-contracts-description": "Ethereum ഇക്കോസിസ്റ്റത്തിന്റെ അടിസ്ഥാന ശിലകൾ",
+ "nav-stablecoins-description": "ഒരു നിശ്ചിത മൂല്യത്തിൽ നിലനിൽക്കാൻ രൂപകൽപ്പന ചെയ്തിട്ടുള്ള Ethereum ടോക്കണുകളാണ് സ്റ്റേബിൾകോയിനുകൾ",
+ "nav-stake-description": "Ethereum സുരക്ഷിതമാക്കുന്നതിനുള്ള റിവാർഡുകൾ കരസ്ഥമാക്കുക",
+ "nav-stake-label": "സ്റ്റേക്ക്",
+ "nav-staking-home-description": "സ്റ്റെയ്ക്കിങ്ങിനുള്ള വ്യത്യസ്ത ഓപ്ഷനുകളുടെ ഒരു ചുരുക്കവിവരണം",
+ "nav-staking-pool-description": "മറ്റുള്ളവർക്കൊപ്പം ചേരുന്നതിലൂടെ, സ്റ്റേക്ക് ചെയ്ത് ETH-ന്റെ ഏതൊരു തുകയ്ക്കുമുള്ള റിവാർഡുകൾ കരസ്ഥമാക്കുക",
+ "nav-staking-pool-label": "പൂൾഡ് സ്റ്റെയ്ക്കിങ്",
+ "nav-staking-saas-label": "ഒരു സേവനം ഉപയോഗിച്ചുള്ള സ്റ്റെയ്ക്കിങ്",
+ "nav-staking-solo-label": "സോളോ സ്റ്റെയ്ക്കിങ്",
+ "nav-start-building-description": "നവാഗതർക്കുള്ള ഉപയോഗപ്രദമായ വിവരങ്ങൾ",
+ "nav-translation-program-description": "എല്ലാ ഭാഷകളിലേക്കും ethereum.org വിവർത്തനം ചെയ്യാനുള്ള ഒരു കൂട്ടായ പരിശ്രമം",
+ "nav-tutorials-description": "കമ്മ്യൂണിറ്റി ട്യൂട്ടോറിയലുകളുടെ ക്യൂറേറ്റ് ചെയ്ത ലിസ്റ്റ്",
+ "nav-use-cases-description": "Ethereum ഉപയോഗത്തിനുള്ള വ്യത്യസ്ത ആശയങ്ങൾ കണ്ടെത്തുക",
+ "nav-what-is-ether-description": "Ethereum ആപ്പുകളുടെ കറൻസി",
+ "nav-what-is-ethereum-description": "Ethereum-നെ വേറിട്ടതാക്കുന്നത് എന്തെന്ന് മനസ്സിലാക്കുക",
+ "nav-what-is-web3-label": "എന്താണ് Web3?",
+ "nav-what-is-web3-description": "കേന്ദ്രീകൃത കുത്തകകൾ സ്വയം നിയമങ്ങൾ സൃഷ്ടിക്കുന്ന അവസ്ഥയ്ക്ക് പകരമായുള്ള ഒരു സംവിധാനം",
+ "nav-whitepaper-description": "2014-ൽ വിറ്റാലിക് ബ്യൂട്ടറിൻ എഴുതിയ യഥാർത്ഥ Ethereum ധവളപത്രം",
+ "nav-zkp-description": "പ്രസ്താവന വെളിപ്പെടുത്താതെ തന്നെ ആ പ്രസ്താവനയുടെ സാധുത തെളിയിക്കാനുള്ള ഒരു മാർഗ്ഗം",
+ "nft-page": "NFTs - നോൺ-ഫഞ്ചിബിൾ ടോക്കണുകൾ",
+ "nfts": "NFT-കൾ",
"no": "ഇല്ല",
"on-this-page": "ഈ പേജില്",
+ "open-research": "റിസേർച്ച് എന്നത് തുറക്കുക",
+ "page-developers-aria-label": "ഡവലപ്പർമാരുടെ മെനു",
+ "page-index-meta-title": "ഹോം",
"page-last-updated": "അവസാനം അപ്ഡേറ്റുചെയ്ത പേജ്",
+ "participate": "പങ്കെടുക്കുക",
+ "participate-menu": "പങ്കെടുക്കൽ മെനു",
+ "pbs": "പ്രൊപ്പോസർ-ബിൽഡർ വേർതിരിക്കൽ",
+ "pools": "പൂൾഡ് സ്റ്റെയ്ക്കിങ്",
"privacy-policy": "സ്വകാര്യതാ നയം",
"private-ethereum": "പ്രൈവറ്റ് Ethereum",
+ "product-disclaimer": "Ethereum കമ്മ്യൂണിക്കായുള്ള ഒരു സൗകര്യമായി ഉൽപ്പന്നങ്ങളും സേവനങ്ങളും ലിസ്റ്റ് ചെയ്തിരിക്കുന്നു. ഒരു ഉൽപ്പന്നത്തിന്റെയോ സേവനത്തിന്റെയോ ഉൾപ്പെടുത്തൽ ethereum.org വെബ്സൈറ്റ് ടീമിൽ നിന്നുള്ള അല്ലെങ്കിൽ Ethereum ഫൗണ്ടേഷനിൽ നിന്നുള്ള ഒരു എൻഡോഴ്സ്മെന്റിനെ പ്രതിനിധീകരിക്കുന്നില്ല.",
+ "quizzes-title": "ക്വിസ് ഹബ്",
+ "quizzes": "ക്വിസ്സുകൾ",
"refresh": "ദയവായി പേജ് പുതുക്കുക.",
"return-home": "ഹോമിലേക്ക് മടങ്ങുക",
- "run-a-node": "ഒരു നോഡ് റൺ ചെയ്യുക",
+ "roadmap": "Ethereum റോഡ്മാപ്പ്",
+ "research": "ഗവേഷണം",
+ "research-menu": "ഗവേഷണ മെനു",
+ "resources": "വിവർത്തന ഉറവിടങ്ങൾ",
+ "run-a-node": "ഒരു നോഡ് പ്രവർത്തിപ്പിക്കുക",
"rollup-component-website": "വെബ്സൈറ്റ്",
"rollup-component-developer-docs": "ഡെവലപ്പർ ഡോക്സ്",
"rollup-component-technology-and-risk-summary": "സാങ്കേതികവിദ്യയും അപകടസാധ്യതാ സംഗ്രഹവും",
+ "scaling": "സ്കെയിലിംഗ്",
+ "saas": "ഒരു സേവനമായി സ്റ്റെയ്ക്കിങ്",
"search": "തിരയുക",
+ "search-ethereum-org": "ethereum.org തിരയുക",
+ "secret-leader-election": "രഹസ്യ ലീഡർ തിരഞ്ഞെടുപ്പ്",
"search-box-blank-state-text": "അകലെ തിരയുക!",
"search-eth-address": "ഇത് ഒരു Ethereum വിലാസം പോലെ തോന്നുന്നു. വിലാസങ്ങൾക്ക് മാത്രമായുള്ള ഡാറ്റ ഞങ്ങൾ നൽകുന്നില്ല. ഇതുപോലുള്ള ഒരു ബ്ലോക്ക് എക്സ്പ്ലോററിൽ തിരയാൻ ശ്രമിക്കുക",
"search-no-results": "നിങ്ങളുടെ തിരയലിന് ഫലങ്ങളൊന്നുമില്ല",
+ "security": "സുരക്ഷ",
+ "single-slot-finality": "സിംഗിൾ-സ്ലോട്ട് ഫൈനലിറ്റി",
+ "statelessness": "സ്റ്റേറ്റ്ലെസ്നെസ്",
"see-contributors": "കോണ്ട്രിബ്യൂട്ടര്മാരെ കാണുക",
"set-up-local-env": "തദ്ദേശീയ അന്തരീക്ഷം സജ്ജമാക്കൂ",
- "sharding": "ഷാർഡ് ചെയിനുകള്",
+ "sharding": "ഷാർഡിംഗ്",
"show-all": "എല്ലാം കാണിക്കുക",
"show-less": "കുറച്ച് കാണിക്കുക",
"site-description": "പണത്തിനും പുതിയ തരം അപ്ലിക്കേഷനുകൾക്കുമുള്ള ആഗോള വികേന്ദ്രീകൃത പ്ലാറ്റ്ഫോമാണ് Ethereum. നിങ്ങൾക്ക് Ethereum- ൽ പണത്തെ നിയന്ത്രിക്കുന്ന കോഡ് എഴുതാനും ലോകത്തെവിടെയും ആക്സസ് ചെയ്യാവുന്ന അപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാനും കഴിയും.",
@@ -108,10 +289,11 @@
"skip-to-main-content": "പ്രധാന ഉള്ളടക്കത്തിലേക്ക് പോകുക",
"smart-contracts": "സ്മാര്ട്ട് കരാറുകള്",
"stablecoins": "സ്റ്റേബിള്കോയിനുകള്",
+ "stake-eth": "ETH സ്റ്റേക്ക് ചെയ്യുക",
"staking": "സ്റ്റേക്കിംഗ്",
- "solo": "Solo staking",
- "saas": "Staking as a service",
- "pools": "Pooled staking",
+ "start-here": "ഇവിടെ തുടങ്ങാം",
+ "solo": "സോളോ സ്റ്റെയ്ക്കിങ്",
+ "support": "സപ്പോർട്ട്",
"terms-of-use": "ഉപയോഗ നിബന്ധനകൾ",
"translation-banner-body-new": "നിങ്ങൾ ഈ പേജ് ഇംഗ്ലീഷിൽ കാണുന്നതിന് കാരണം ഞങ്ങൾ ഇത് ഇതുവരെ വിവര്ത്തനം ചെയ്തിട്ടില്ലാത്തതിനാലാണ്. ഈ ഉള്ളടക്കം വിവർത്തനം ചെയ്യാൻ ഞങ്ങളെ സഹായിക്കൂ.",
"translation-banner-body-update": "ഈ പേജിന്റെ ഒരു പുതിയ പതിപ്പുണ്ട്, പക്ഷേ ഇത് ഇപ്പോൾ ഇംഗ്ലീഷിൽ മാത്രമേ ഉള്ളൂ. ഈ ഏറ്റവും പുതിയ പതിപ്പ് വിവർത്തനം ചെയ്യാൻ ഞങ്ങളെ സഹായിക്കൂ.",
@@ -122,20 +304,22 @@
"translation-banner-no-bugs-title": "ഇവിടെ ബഗുകൾ ഒന്നുമില്ല!",
"translation-banner-no-bugs-content": "ഈ പേജ് വിവർത്തനം ചെയ്തില്ല. ഞങ്ങൾ ഇപ്പോഴത്തേക്ക് ഈ പേജ് ബോധപൂർവ്വം ഇംഗ്ലീഷിൽ തന്നെ വിട്ടിരിക്കുന്നു.",
"translation-banner-no-bugs-dont-show-again": "വീണ്ടും കാണിക്കരുത്",
+ "translation-program": "വിവർത്തന പരിപാടി",
"try-using-search": "നിങ്ങൾ തിരയുന്നത് കണ്ടെത്താൻ തിരയൽ ഉപയോഗിച്ച് നോക്കുക, അല്ലെങ്കിൽ",
"tutorials": "ട്യൂട്ടോറിയലുകൾ",
+ "up": "മുകളിൽ",
+ "use": "ഉപയോഗിക്കുക",
"use-ethereum": "Ethereum ഉപയോഗിക്കൂ",
"use-ethereum-menu": "Ethereum മെനു ഉപയോഗിക്കൂ",
- "wallets": "വാലറ്റുകള്",
+ "use-menu": "ഉപയോഗ മെനു",
+ "verkle-trees": "Verkle മരങ്ങൾ",
+ "wallets": "വാലറ്റുകൾ",
"we-couldnt-find-that-page": "ഞങ്ങൾക്ക് ആ പേജ് കണ്ടെത്താൻ കഴിഞ്ഞില്ല",
"web3": "എന്താണ് Web3?",
"website-last-updated": "അവസാനം അപ്ഡേറ്റുചെയ്ത വെബ്സൈറ്റ്",
- "what-is-ether": "എന്താണ് ഇതര് (ETH)?",
+ "what-is-ether": "എന്താണ് ഈതര് (ETH)?",
"what-is-ethereum": "എന്താണ് Ethereum?",
- "defi-page": "വികേന്ദ്രീകൃത ധനകാര്യം (DeFi)",
- "dao-page": "വികേന്ദ്രീകൃത സ്വയംഭരണ സ്ഥാപനങ്ങൾ (DAOs)",
- "nft-page": "നോൺ-ഫഞ്ചിബിൾ ടോക്കണുകൾ (NFTs)",
+ "withdrawals": "സ്റ്റെയ്ക്കിങ് പിൻവലിക്കലുകൾ",
"yes": "അതെ",
- "page-index-meta-title": "വീട്",
- "page-developers-aria-label": "ഡവലപ്പർമാരുടെ മെനു"
+ "zero-knowledge-proofs": "പൂജ്യം-അറിവ് പ്രൂഫുകൾ"
}
diff --git a/src/intl/ml/page-dapps.json b/src/intl/ml/page-dapps.json
index e27711f912b..606dfaff235 100644
--- a/src/intl/ml/page-dapps.json
+++ b/src/intl/ml/page-dapps.json
@@ -70,7 +70,6 @@
"page-dapps-dapp-description-sablier": "തത്സമയം പണം സ്ട്രീം ചെയ്യുക.",
"page-dapps-dapp-description-superrare": "ആർട്ടിസ്റ്റുകളിൽ നിന്നോ സെക്കൻഡറി മാർക്കറ്റുകളിൽ നിന്നോ നേരിട്ട് ഡിജിറ്റൽ കലാസൃഷ്ടികൾ വാങ്ങുക.",
"page-dapps-dapp-description-token-sets": "സ്വപ്രേരിതമായി വീണ്ടും സമതുലിതമാക്കുന്ന ക്രിപ്റ്റോ നിക്ഷേപ തന്ത്രങ്ങൾ.",
- "page-dapps-dapp-description-tornado-cash": "Ethereumൽ അജ്ഞാത ഇടപാടുകൾ അയയ്ക്കുക.",
"page-dapps-dapp-description-uniswap": "ടോക്കണുകൾ ലളിതമായി സ്വാപ്പ് ചെയ്യുക അല്ലെങ്കിൽ % റിവാർഡുകൾക്കായി ടോക്കണുകൾ നൽകുക.",
"page-dapps-dark-forest-logo-alt": "ഡാർക്ക് ഫോറസ്റ്റ് ലോഗോ",
"page-dapps-decentraland-logo-alt": "ഡിസെൻട്രാലാൻഡ് ലോഗോ",
@@ -170,7 +169,6 @@
"page-dapps-technology-description": "ഡവലപ്പർ ഉപകരണങ്ങൾ വികേന്ദ്രീകരിക്കുക, നിലവിലുള്ള സാങ്കേതികവിദ്യയിൽ ക്രിപ്റ്റോ ഇക്കണോമിക് സിസ്റ്റങ്ങൾ സംയോജിപ്പിക്കുക, ഓപ്പൺ സോഴ്സ് വികസന പ്രവർത്തനങ്ങൾക്കായി വിപണനസ്ഥലങ്ങൾ സൃഷ്ടിക്കുക എന്നിവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്ന ആപ്ലിക്കേഷനുകളാണ് ഇവ.",
"page-dapps-technology-title": "വികേന്ദ്രീകൃത സാങ്കേതികവിദ്യ",
"page-dapps-token-sets-logo-alt": "ടോക്കൺ സെറ്റ്സ് ലോഗോ",
- "page-dapps-tornado-cash-logo-alt": "ടൊര്ണാഡോ ക്യാഷ് ലോഗോ",
"page-dapps-uniswap-logo-alt": "യൂണിസ്വാപ്പ് ലോഗോ",
"page-dapps-wallet-callout-button": "വാലറ്റ് കണ്ടെത്തുക",
"page-dapps-wallet-callout-description": "വാലറ്റുകളും ഡാപ്പുകളാണ്. നിങ്ങൾക്ക് അനുയോജ്യമായ സവിശേഷതകളെ അടിസ്ഥാനമാക്കി ഒന്ന് കണ്ടെത്തുക.",
diff --git a/src/intl/ml/page-languages.json b/src/intl/ml/page-languages.json
index 898956cde1b..41af9e0e1cf 100644
--- a/src/intl/ml/page-languages.json
+++ b/src/intl/ml/page-languages.json
@@ -6,15 +6,24 @@
"page-languages-meta-title": "ethereum.org ഭാഷാ വിവർത്തനങ്ങൾ",
"page-languages-p1": "Ethereum ഒരു ആഗോള പ്രോജക്റ്റാണ്, കൂടാതെ ദേശീയതയോ ഭാഷയോ പരിഗണിക്കാതെ എല്ലാവർക്കും ethereum.org ആക്സസ് ചെയ്യാനാകുന്നത് നിർണായകമാണ്. ഈ ദർശനം യാഥാർത്ഥ്യമാക്കാൻ ഞങ്ങളുടെ കമ്മ്യൂണിറ്റി കഠിനമായി പരിശ്രമിക്കുന്നു.",
"page-languages-translations-available": "ethereum.org ഇനിപ്പറയുന്ന ഭാഷകളിൽ ലഭ്യമാണ്",
+ "page-languages-resources-paragraph": "Ethereum.org ഉള്ളടക്കം വിവർത്തനം ചെയ്യുന്നതിനു പുറമേ, ഞങ്ങൾ",
+ "page-languages-resources-link": "പല ഭാഷകളിലുമുള്ള Ethereum ഉറവിടങ്ങളുടെ ഒരു ക്യൂറേറ്റഡ് ലിസ്റ്റും പരിപാലിക്കുന്നു",
"page-languages-want-more-header": "Ethereum.org മറ്റൊരു ഭാഷയിൽ കാണണോ?",
"page-languages-want-more-link": "വിവർത്തന പരിപാടി",
"page-languages-want-more-paragraph": "ethereum.org വിവർത്തകർ എല്ലായ്പ്പോഴും കഴിയുന്നത്ര ഭാഷകളിൽ പേജുകൾ വിവർത്തനം ചെയ്യുന്നു. അവർ ഇപ്പോൾ എന്താണ് ചെയ്യുന്നതെന്ന് കാണാൻ അല്ലെങ്കിൽ അവരോടൊപ്പം ചേരുന്നതിന് സൈൻ അപ്പ് ചെയ്യാൻ, വായിക്കുക ഞങ്ങളുടെ",
+ "page-languages-filter-label": "ഫിൽറ്റർ ലിസ്റ്റ്",
+ "page-languages-filter-placeholder": "ഫിൽറ്റർ ചെയ്യാൻ ടൈപ്പ് ചെയ്യുക",
+ "page-languages-browser-default": "ബ്രൗസർ ഡിഫോൾട്ട്",
+ "page-languages-translated": "വിവർത്തനം ചെയ്തത്",
+ "page-languages-words": "വാക്കുകൾ",
+ "page-languages-recruit-community": "Ethereum.org വിവർത്തനം ചെയ്യാൻ ഞങ്ങളെ സഹായിക്കുക.",
"language-ar": "അറബിക്",
"language-az": "അസർബൈജാനി",
"language-bg": "ബൾഗേറിയൻ",
"language-bn": "ബംഗാളി",
"language-ca": "ക്യാറ്റലന്",
"language-cs": "ചെക്ക്",
+ "language-da": "ഡാനിഷ്",
"language-de": "ജര്മ്മന്",
"language-el": "ഗ്രീക്ക്",
"language-en": "ഇംഗ്ലീഷ്",
@@ -38,6 +47,7 @@
"language-ms": "മലായ്",
"language-nb": "നോര്വീജിയന്",
"language-nl": "ഡച്ച്",
+ "language-fil": "ഫിലിപ്പിനോ",
"language-pl": "പോളിഷ്",
"language-pt": "പോർച്ചുഗീസ്",
"language-pt-br": "പോർച്ചുഗീസ് (ബ്രസീലിയൻ)",
diff --git a/src/intl/ml/page-stablecoins.json b/src/intl/ml/page-stablecoins.json
index 9c0a50ff97f..922f65e317a 100644
--- a/src/intl/ml/page-stablecoins.json
+++ b/src/intl/ml/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "ഉറവിടം",
"page-stablecoins-bitcoin-pizza": "കുപ്രസിദ്ധമായ ബിറ്റ്കോയിൻ പിസ്സ",
"page-stablecoins-bitcoin-pizza-body": "2010 ൽ ഒരാൾ 10,000 ബിറ്റ്കോയിന് 2 പിസ്സകൾ വാങ്ങി. അക്കാലത്ത് ഇവയുടെ വില US 41 യുഎസ്ഡി ആയിരുന്നു. ഇന്നത്തെ വിപണിയിൽ ദശലക്ഷക്കണക്കിന് ഡോളർ. Ethereumന്റെ ചരിത്രത്തിൽ സമാനമായ നിരവധി ഖേദകരമായ ഇടപാടുകൾ ഉണ്ട്. സ്റ്റേബിൾകോയിനുകൾ ഈ പ്രശ്നം പരിഹരിക്കുന്നു, അതിനാൽ നിങ്ങളുടെ പിസ്സ ആസ്വദിക്കാനും നിങ്ങളുടെ ETH മുറുകെ പിടിക്കാനും കഴിയും.",
+ "page-stablecoins-category-dashboard-and-education": "ഡാഷ്ബോർഡ് & പഠനം",
"page-stablecoins-coin-price-change": "നാണയ വില മാറ്റം (കഴിഞ്ഞ 30 ദിവസം)",
"page-stablecoins-crypto-backed": "ക്രിപ്റ്റോ പിന്തുണയുള്ളത്",
"page-stablecoins-crypto-backed-con-1": "ഫിയറ്റ് പിന്തുണയുള്ള സ്റ്റേബിൾകോയിനുകളേക്കാൾ സ്ഥിരത കുറവാണ്.",
diff --git a/src/intl/mr/common.json b/src/intl/mr/common.json
index c63f55112a2..9944d5a62bb 100644
--- a/src/intl/mr/common.json
+++ b/src/intl/mr/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "खाते शून्यमनस्कता",
"about-ethereum-org": "Ethereum.org बद्दल",
"about-us": "आमच्याबद्दल",
+ "adding-desci-projects": "Desci प्रकल्प जोडत आहे",
+ "adding-developer-tools": "विकसक साधने जोडत आहे",
+ "adding-exchanges": "एक्सचेंज जोडत आहे",
+ "adding-glossary-terms": "शब्दकोष अटी जोडत आहे",
+ "adding-staking-products": "स्टिकिंग उत्पादने जोडणे",
+ "adding-wallets": "वॉलेट्स जोडत आहे",
+ "account-abstraction": "खाते शून्यमनस्कता",
+ "acknowledgements": "श्रेयनिर्देश",
"aria-toggle-search-button": "शोध बटण टॉगल करा",
"aria-toggle-menu-button": "मेनू बटण टॉगल करा",
"beacon-chain": "बीकन चेन",
"bridges": "ब्लॉकचेन ब्रिज",
+ "bug-bounty": "बग बाउंटी",
+ "build": "निर्माण",
+ "build-menu": "निर्माण मेनू",
"clear": "साफ",
"close": "बंद",
"community": "समुदाय",
- "community-hub": "समुदाय यादी",
+ "community-hub": "समुदाय केंद्र",
"community-menu": "समुदाय यादी",
"contact": "संपर्क",
+ "content-buckets": "सामग्री बकेट्स",
+ "content-resources": "सामग्री संसाधने",
"content-standardization": "सामग्री मानकीकरण",
"contributing": "योगदान करा",
"contributors": "योगदानकर्ते",
@@ -20,15 +32,18 @@
"copied": "कॉपी केले",
"copy": "कॉपी",
"danksharding": "डंकशार्डिंग",
- "dao-page": "विकेंद्रीत स्वायत्त संस्था (DAO)",
+ "dao-page": "DAO - विकेंद्रीत स्वायत्त संस्था",
"dark-mode": "गडद",
"data-provided-by": "डेटा स्रोत:",
- "decentralized-applications-dapps": "विकेंद्रित अनुप्रयोग (dapps)",
+ "decentralized-applications-dapps": "Dapps - विकेंद्रित अनुप्रयोग",
"decentralized-identity": "विकेंद्रित ओळख",
"decentralized-social-networks": "विकेंद्रित सामाजिक जाळे",
- "decentralized-science": "विकेंद्रित विज्ञान (DeSci)",
- "defi-page": "विकेंद्रीत अर्थव्यवस्था (DeFi)",
- "devcon": "डेव्हकॉन",
+ "decentralized-science": "DeSci - विकेंद्रित विज्ञान",
+ "description": "एनएव्ही आयटमचे वर्णन",
+ "defi-page": "DeFi - विकेंद्रीत अर्थव्यवस्था",
+ "design": "डिझाईन",
+ "design-principles": "डिझाईनची तत्त्वे",
+ "devcon": "Devcon",
"developers": "विकासक",
"developers-home": "विकासकांचे मुख्यपृष्ठ",
"docs": "दस्तऐवज",
@@ -51,7 +66,7 @@
"documentation": "दस्तऐवज",
"down": "खाली",
"ecosystem": "इकोसिस्टम",
- "edit-page": "पृष्ठ संपादित करा",
+ "edit-page": "पृष्ठ सुधारणे",
"ef-blog": "Ethereum फाउंडेशन ब्लॉग",
"eips": "Ethereum सुधार प्रस्ताव",
"energy-consumption": "Ethereum ची ऊर्जा खपत",
@@ -59,11 +74,9 @@
"enterprise-menu": "एंटरप्राइझ मेनू",
"esp": "इकोसिस्टम सपोर्ट प्रोग्राम",
"eth-current-price": "सध्याची ETH किंमत (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Ethereum दोष बक्षीस कार्यक्रम",
"consensus-when-shipping": "हे शिपिंग कधी आहे?",
"ethereum-upgrades": "Ethereum चे अपग्रेड",
- "ethereum-brand-assets": "Ethereum ब्रँड मालमत्ता",
"ethereum-online": "ऑनलाइन समुदाय",
"ethereum-events": "Ethereum कार्यक्रम",
"ethereum-foundation": "Ethereum फाउंडेशन",
@@ -75,7 +88,7 @@
"ethereum-protocol": "Ethereum प्रोटोकॉल",
"ethereum-security": "Ethereum सुरक्षा आणि घोटाळा प्रतिबंध",
"ethereum-support": "Ethereum सपोर्ट",
- "ethereum-wallets": "Ethereum वॉलेट",
+ "ethereum-wallets": "Ethereum वॅलेट",
"ethereum-whitepaper": "Ethereum व्हाइटपेपर",
"feedback-widget-prompt": "हे पृष्ठ उपयुक्त आहे का?",
"feedback-card-prompt-page": "हे पृष्ठ उपयुक्त होते का?",
@@ -83,7 +96,7 @@
"feedback-card-prompt-tutorial": "हे मार्गदर्शन उपयुक्त होते का?",
"feedback-widget-thank-you-title": "आपल्या अभिप्रायाबद्दल आपले धन्यवाद!",
"feedback-widget-thank-you-subtitle": "हे पृष्ठ काही प्रश्नांची उत्तरे देऊन आणखी चांगले बनवा.",
- "feedback-widget-thank-you-subtitle-ext": "तुम्हाला मदत हवी असल्यास, तुम्ही आमच्या Discord वर समुदायापर्यंत पोहोचू शकता.",
+ "feedback-widget-thank-you-subtitle-ext": "तुम्हाला मदत हवी असल्यास, तुम्ही आमच्या मतभेदावर Discord वर समुदायापर्यंत पोहोचू शकता.",
"feedback-widget-thank-you-timing": "2-3 मिनिटे",
"feedback-widget-thank-you-cta": "लहान सर्वेक्षण उघडा",
"find-wallet": "वॉलेट शोधा",
@@ -94,11 +107,10 @@
"grants": "अनुदान",
"grant-programs": "अनुदान कार्यक्रम प्रणाली",
"guides": "मार्गदर्शक",
- "guides-hub": "मार्गदर्शक हब",
+ "guides-hub": "\"कसे करावे” मार्गदर्शिका",
"history-of-ethereum": "Ethereum चा इतिहास",
"home": "मुख्यपृष्ठ",
"how-ethereum-works": "Ethereum कसे कार्य करते",
- "how-to-register-an-ethereum-account": "Ethereum खाते \"नोंदणी\" कसे करावे",
"how-to-revoke-token-access": "तुमच्या क्रिप्टो फंडांमध्ये स्मार्ट कॉन्ट्रॅक्ट प्रवेश कसा रद्द करायचा",
"how-to-swap-tokens": "प्रतिक कसे देवाणघेवाण करावे",
"how-to-use-a-bridge": "टोकन लेयर 2 वर कसे जोडायचे",
@@ -115,7 +127,7 @@
"last-edit": "शेवटचे संपादन",
"layer-2": "स्तर 2",
"learn": "शिका",
- "learn-by-coding": "सांकेतिक लेखनासह शिका",
+ "learn-by-coding": "कोडिंग करून शिका",
"learn-hub": "हब शिका",
"learn-menu": "जाणून घ्या मेनू",
"learn-more": "अधिक जाणून घ्या",
@@ -128,11 +140,106 @@
"loading-error-try-again-later": "डेटा लोड करण्यात अक्षम. पुन्हा प्रयत्न करा.",
"logo": "लोगो",
"mainnet-ethereum": "मेननेट Ethereum",
+ "merge": "विलीन करा",
"more": "अधिक",
- "nav-developers": "विकसक",
+ "nav-about-description": "इथरियम समुदायासाठी सार्वजनिक, मुक्त-स्रोत प्रकल्प",
+ "nav-advanced-description": "अधिक जटिल विषय जाणून घ्या",
+ "nav-advanced-label": "प्रगत",
+ "nav-basics-description": "इथरियमची मूलभूत तत्त्वे समजून घ्या",
+ "nav-basics-label": "मूलभूत",
+ "nav-bridges-description": "Web3 प्राथमिक L1 ब्लॉकचेन्स आणि L2 स्केलिंग सोल्यूशन्सच्या इकोसिस्टममध्ये विकसित झाले आहे",
+ "nav-builders-home-description": "इथरियमसाठी बिल्डर्सचे मॅन्युअल—बिल्डर्सद्वारे, बिल्डर्ससाठी",
+ "nav-builders-home-label": "बिल्डर्स होम",
+ "nav-contribute-description": "तुम्हाला मदत करायची असल्यास, हे तुम्हाला मार्गदर्शन करेल",
+ "nav-contribute-label": "Ethereum.org वर योगदान देत आहे",
+ "nav-dao-description": "केंद्रीकृत अधिकाराशिवाय सदस्य-मालकीचे समुदाय",
+ "nav-dapps-description": "इथरियम वापरून ॲप्सची समृद्ध इकोसिस्टम एक्सप्लोर करा",
+ "nav-defi-description": "पारंपारिक आर्थिक बाजारपेठेसाठी जागतिक, खुला पर्याय",
+ "nav-desci-description": "सध्याच्या वैज्ञानिक प्रणालीसाठी जागतिक, खुला पर्याय",
+ "nav-desoc-description": "सामाजिक संवाद आणि सामग्री निर्मितीसाठी ब्लॉकचेन-आधारित व्यासपीठ",
"nav-developers-docs": "विकसक डॉक्स",
+ "nav-developers": "विकासक",
+ "nav-did-description": "तुमचे विशेष विकेंद्रीकृत अभिज्ञापक जारी करा आणि मालकी मिळवा",
+ "nav-docs-description": "तुम्हाला इथरियमला समजून घेण्यात आणि तयार करण्यात मदत करणारे दस्तऐवज",
+ "nav-docs-design-description": "विशेष web3 डिझाइनची आव्हाने, सर्वोत्तम पद्धती आणि वापरकर्ता संशोधन अंतर्दृष्टी यांचे वर्णन",
+ "nav-docs-design-label": "UX/UI डिझाइनची आधारभूत तत्वे",
+ "nav-docs-foundation-description": "इथरियमवर विकसित करण्यासाठी मूळ आधारभूत तत्त्वे",
+ "nav-docs-overview-description": "विकसक दस्तऐवजांसाठी तुमचे होम",
+ "nav-docs-stack-description": "इथरियम भागभांडवलाचे सर्व तपशील समजून घ्या",
+ "nav-eip-description": "नवीन वैशिष्ट्ये किंवा प्रक्रिया निर्दिष्ट करणारी मानके",
+ "nav-eip-label": "EIPs - इथरियम सुधारणा प्रस्ताव",
+ "nav-emerging-description": "इथरियमसाठी इतर नवीन वापर प्रकरणे जाणून घ्या",
+ "nav-enterprise-description": "इथरियमसाठी व्यवसाय ॲप्लिकेशन्स",
+ "nav-ethereum-org-description": "ही वेबसाइट समुदायाद्वारे चालवली जात आहे—आमच्यात सामील व्हा आणि योगदान द्या",
+ "nav-ethereum-wallets-description": "तुमच्या इथरियम खात्याशी संवाद साधण्यासाठी एक ॲप",
+ "nav-events-description": "विकेंद्रीकरण आणि कोणासाठीही भाग घेण्याचे स्वातंत्र्य",
+ "nav-events-irl-description": "प्रत्येक महिन्यात येथे वैयक्तिक आणि ऑनलाइन प्रमुख इथरियम कार्यक्रम असतात",
+ "nav-events-label": "समुदाय आणि कार्यक्रम",
+ "nav-events-online-description": "या ऑनलाइन समुदायांमध्ये शेकडो हजारो इथरियम उत्साही जनक आहेत",
+ "nav-find-wallet-description": "वॉलेट तुम्हाला क्रिप्टो वापरण्याची परवानगी देतात",
+ "nav-find-wallet-label": "तुमचे वॉलेट निवडा",
+ "nav-gas-fees-description": "ETH चे व्यवहार शुल्क कसे मोजले जाते",
+ "nav-get-eth-description": "इथरियम अॅप्लिकेशन्स वापरण्यासाठी तुम्हाला इथर (ETH) आवश्यक आहे",
+ "nav-get-started-description": "इथरियम वापरण्यासाठी तुमची पहिली पायरी",
+ "nav-governance-description": "इथरियम प्रोटोकॉल अपग्रेड करण्यासाठी प्रक्रिया समाविष्ट आहे",
+ "nav-governance-label": "शासन",
+ "nav-grants-description": "अनुदान निधी कार्यक्रम प्रदान करणाऱ्या उपक्रमांवर आमच्या समुदायाने तयार केलेली यादी",
+ "nav-guide-create-account-description": "वॉलेट ॲपसह कोणीही कधीही इथरियम खाते तयार करू शकते",
+ "nav-guide-revoke-access-description": "इथरियम इकोसिस्टममधील स्मार्ट करार आणि ॲप्लिकेशन्सशी संवाद साधताना सुरक्षित रहा",
+ "nav-guide-revoke-access-label": "स्मार्ट करार प्रवेश कसा रद्द करायचा",
+ "nav-guide-use-wallet-description": "वॉलेटची सर्व मूलभूत कार्ये कशी चालवायची ते शिका",
+ "nav-guide-use-wallet-label": "वॉलेट कसे वापरावे",
+ "nav-guides-description": "आपल्याला प्रारंभ करण्यात मदत करण्यासाठी व्यावहारिक चरण-दर-चरण मार्गदर्शक",
+ "nav-guides-label": "मार्गदर्शन कसे करायचे",
+ "nav-history-description": "सर्व प्रमुख फॉर्क्स आणि अद्यतनांची टाइमलाइन",
+ "nav-history-label": "इथरियमचा तांत्रिक इतिहास",
+ "nav-layer-2-description": "इथरियमसाठी स्वस्त आणि जलद व्यवहार",
+ "nav-learn-by-coding-description": "तुम्हाला इथरियमचा प्रयोग करण्यास मदत करणारी साधने",
+ "nav-local-env-description": "तुमचे इथरियम विकास भागभांडवल निवडा आणि सेट करा",
+ "nav-mainnet-description": "सार्वजनिक इथरियम मेननेटवर एंटरप्राइझ ब्लॉकचेन अॅप्लिकेशन्स तयार केले जाऊ शकतात",
+ "nav-nft-description": "Ethereum-आधारित मालमत्ता म्हणून अद्वितीय कोणत्याही गोष्टीचे प्रतिनिधित्व करण्याचा एक मार्ग",
+ "nav-open-research-description": "इथरियमची प्राथमिक ताकद म्हणजे त्याचा सक्रिय संशोधन समुदाय",
+ "nav-open-research-label": "संशोधन खोला",
+ "nav-overview-description": "इथरियम शिक्षणाच्या सर्व गोष्टी",
+ "nav-participate-overview-description": "सहभागी कसे व्हावे याबद्दलचा आढावा",
"nav-primary": "प्राथमिक",
- "nft-page": "नॉन-फंजीबल टोकन (NFT)",
+ "nav-quizzes-description": "इथरियम आणि क्रिप्टोकरन्सी तुम्हाला किती चांगल्या प्रकारे समजतात ते शोधा",
+ "nav-quizzes-label": "तुमच्या ज्ञानाची चाचणी घ्या",
+ "nav-refi-description": "पुनर्निर्मिती तत्त्वांवर आधारित पर्यायी आर्थिक व्यवस्था",
+ "nav-research-description": "इथरियम सुधारण्यासाठी वापरल्या जाणाऱ्या प्रक्रिया",
+ "nav-research-label": "संशोधन आणि विकास",
+ "nav-roadmap-description": "इथरियमसाठी अधिक मापनीयता, सुरक्षितता आणि टिकाऊपणाचा मार्ग",
+ "nav-roadmap-future-description": "मजबूत आणि विकेंद्रित नेटवर्क म्हणून इथरियमचे घनीकरण",
+ "nav-roadmap-future-label": "भविष्य-प्रूफिंग",
+ "nav-roadmap-label": "नकाशा",
+ "nav-roadmap-scaling-description": "व्यवहार खर्च आणि गती आणखी कमी करण्यासाठी नेटवर्क अद्यतने",
+ "nav-roadmap-security-description": "भविष्यात इथरियम सर्व प्रकारच्या हल्ल्यांना लवचिक राहते याची खात्री करणे",
+ "nav-roadmap-security-label": "सुधारित सुरक्षा",
+ "nav-roadmap-ux-description": "इथरियम वापरणे सोपे करणे आवश्यक आहे",
+ "nav-run-a-node-description": "नेटवर्क सुरक्षित करण्यात मदत करताना पूर्णपणे सार्वभौम व्हा",
+ "nav-security-description": "क्रिप्टोकरन्सी वापरताना सर्वोत्तम पद्धती जाणून घ्या",
+ "nav-smart-contracts-description": "इथरियम इकोसिस्टमचे मूलभूत बिल्डिंग ब्लॉक्स",
+ "nav-stablecoins-description": "स्टेबलकॉइन्स हे इथरियम टोकन्स आहेत जे एका निश्चित मूल्यावर राहण्यासाठी डिझाइन केले आहेत",
+ "nav-stake-description": "इथरियम सुरक्षित करण्यासाठी बक्षिसे मिळवा",
+ "nav-stake-label": "भागभांडवल",
+ "nav-staking-home-description": "भागभांडवलासाठी विविध पर्यायांचा आढावा",
+ "nav-staking-pool-description": "इतरांसह सामील होऊन ETH च्या कितीही रकमेसह भागभांडवल मिळवा आणि बक्षिसे मिळवा",
+ "nav-staking-pool-label": "पूल केलेले स्टॅकिंग",
+ "nav-staking-saas-description": "थर्ड-पार्टी नोड ऑपरेटर तुमच्या व्हॅलिडेटर क्लायंटचे ऑपरेशन हाताळतात",
+ "nav-staking-saas-label": "एक सेवेसह भागभांडवल",
+ "nav-staking-solo-description": "होम हार्डवेअर चालवा आणि वैयक्तिकरित्या इथरियम नेटवर्कची सुरक्षा आणि विकेंद्रीकरण जोडा",
+ "nav-staking-solo-label": "सोलो स्टॅकिंग",
+ "nav-start-building-description": "नवोदितांसाठी उपयुक्त माहिती",
+ "nav-translation-program-description": "Ethereum.org सर्व भाषांमध्ये अनुवादित करण्याचा एक सहयोगी प्रयत्न",
+ "nav-tutorials-description": "सामुदायिक ट्यूटोरियलची क्युरेट केलेली यादी",
+ "nav-use-cases-description": "इथरियमच्या वापरासाठी विविध कल्पना शोधा",
+ "nav-what-is-ether-description": "इथरियम ॲप्सचे चलन",
+ "nav-what-is-ethereum-description": "असे काय आहे जे इथरियमला विशेष बनवते ते समजून घ्या",
+ "nav-what-is-web3-label": "Web3 म्हणजे काय?",
+ "nav-what-is-web3-description": "केंद्रीकृत मक्तेदारी नियमांचे पालन करण्याचा पर्याय",
+ "nav-whitepaper-description": "2014 मध्ये व्हिटालिक बुटेरिन यांनी लिहिलेले मूळ इथरियम व्हाइटपेपर",
+ "nav-zkp-description": "विधान उघड न करता विधानाची वैधता सिद्ध करण्याचा एक मार्ग",
+ "nft-page": "NFT - नॉन-फंजीबल टोकन",
"nfts": "NFT",
"no": "नाही",
"on-this-page": "या पृष्ठावर",
@@ -140,6 +247,7 @@
"page-developers-aria-label": "विकसक मेनू",
"page-index-meta-title": "मुख्यपृष्ठ",
"page-last-updated": "पृष्ठ अखेरचे अद्यतनित",
+ "participate-menu": "सहभागी मेनू",
"pbs": "प्रस्तावक-बिल्डर वेगळे करणे",
"pools": "पूल केलेले स्टॅकिंग",
"privacy-policy": "गुप्तता धोरण",
@@ -150,8 +258,10 @@
"refresh": "कृपया पृष्ठ रीफ्रेश करा.",
"return-home": "मुख्यपृष्ठावर परत या",
"roadmap": "Ethereum नकाशा",
+ "research": "संशोधन",
+ "research-menu": "संशोधन मेनू",
"resources": "भाषांतर संसाधने",
- "regenerative-finance": "रीजनरेटिव्ह फायनान्स (ReFi)",
+ "regenerative-finance": "ReFi - रीजनरेटिव्ह फायनान्स",
"run-a-node": "एक नोड चालवा",
"rollup-component-website": "वेबसाईट",
"rollup-component-developer-docs": "विकसक डॉक्स",
@@ -164,23 +274,23 @@
"search-box-blank-state-text": "शोध घ्या!",
"search-eth-address": "हे Ethereum पत्त्याप्रमाणे दिसते. आम्ही पत्त्यांसाठी विशिष्ट असा डेटा प्रदान करत नाही. ब्लॉक एक्सप्लोरअर वर एथरस्केन प्रमाणे त्यासाठी शोध घेण्याचा प्रयत्न करा",
"search-no-results": "आपल्या शोधासाठी कोणतेही परिणाम नाहीत",
+ "security": "सुरक्षा",
"single-slot-finality": "एकटा-स्लॉट अंतिमता",
"statelessness": "राज्यहीनता",
"see-contributors": "योगदानकर्ता पहा",
- "set-up-local-env": "स्थानिक वातावरण सेट अप करा",
+ "set-up-local-env": "स्थानिक पातळीवर सेट अप करा",
"sharding": "खापरीकरण",
"show-all": "सर्व दाखवा",
"show-less": "कमी दाखवा",
"site-description": "Ethereum हे पैसे आणि नवीन प्रकारच्या अनुप्रयोगांसाठी जागतिक, विकेंद्रीकृत व्यासपीठ आहे. Ethereum वर, आपण पैसे नियंत्रित करणारा कोड लिहू शकता आणि जगात कोठेही प्रवेशयोग्य अनुप्रयोग तयार करू शकता.",
- "site-title": "ethereum.org",
"skip-to-main-content": "प्रमुख मजकुराकडे जा",
"smart-contracts": "स्मार्ट कॉन्ट्रॅक्ट",
- "stablecoins": "स्टेबलकॉइन्स",
+ "stablecoins": "स्टेबलकोइन्स",
"stake-eth": "भागभांडवल ETH",
"staking": "स्टॅकिंग",
"start-here": "इथून सुरुवात",
- "style-guide": "Style guide",
"solo": "सोलो स्टॅकिंग",
+ "support": "मदत",
"terms-of-use": "वापरण्याच्या अटी",
"translation-banner-body-new": "आपण हे पृष्ठ इंग्रजीमध्ये पहात आहात कारण आम्ही अद्याप ते अनुवादित केलेले नाही. आम्हाला या सामग्रीचे भाषांतर करण्यात मदत करा.",
"translation-banner-body-update": "या पृष्ठाची नवीन आवृत्ती आहे परंतु ती आत्ता केवळ इंग्रजीमध्ये आहे. नवीनतम आवृत्ती अनुवादित करण्यात आमची मदत करा.",
@@ -191,20 +301,21 @@
"translation-banner-no-bugs-title": "येथे कोणतेही बग नाहीत!",
"translation-banner-no-bugs-content": "हे पृष्ठ भाषांतरित केले जात नाही. आम्ही जाणूनबुजून हे पृष्ठ इंग्रजीमध्ये सोडले आहे.",
"translation-banner-no-bugs-dont-show-again": "पुन्हा दाखवू नका",
+ "translation-program": "भाषांतर कार्यक्रम",
"try-using-search": "तुम्ही जे शोधत आहात ते शोधण्यासाठी शोध बार वापरून पहा किंवा",
"tutorials": "शिकवण्या",
"up": "वर",
+ "use": "वापर",
"use-ethereum": "Ethereum वापरा",
"use-ethereum-menu": "Ethereum मेनू वापरा",
- "user-experience": "User experience",
+ "use-menu": "वापर मेनू",
"verkle-trees": "वर्कल ट्रीस",
"wallets": "वॉलेट",
"we-couldnt-find-that-page": "आम्हाला ते पृष्ठ सापडले नाही",
"web3": "Web3 म्हणजे काय?",
- "web3-title": "Web3",
"website-last-updated": "संकेतस्थळाचे अखेरचे अद्यतनित",
- "what-is-ether": "इथर(ETH) म्हणजे काय?",
- "what-is-ethereum": "इथेरियम म्हणजे काय?",
+ "what-is-ether": "इथर (ETH) म्हणजे काय?",
+ "what-is-ethereum": "Ethereum म्हणजे काय?",
"withdrawals": "पैसे काढणे स्टिकिंग",
"yes": "होय",
"zero-knowledge-proofs": "शून्य-ज्ञान पुरावे"
diff --git a/src/intl/mr/page-dapps.json b/src/intl/mr/page-dapps.json
index c054e711cba..f5b5804af03 100644
--- a/src/intl/mr/page-dapps.json
+++ b/src/intl/mr/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "प्रत्यक्ष-वेळी मध्ये पैसे प्रवाहित करा.",
"page-dapps-dapp-description-superrare": "थेट कलाकारांकडून किंवा दुय्यम बाजारपेठेतून डिजिटल कलाकृती खरेदी करा.",
"page-dapps-dapp-description-token-sets": "क्रिप्टो गुंतवणूक धोरणे जी आपोआप संतुलित होतात.",
- "page-dapps-dapp-description-tornado-cash": "Ethereum वर निनावी व्यवहार पाठवा.",
"page-dapps-dapp-description-uniswap": "फक्त टोकन स्वॅप करा किंवा % रिवॉर्डसाठी टोकन प्रदान करा.",
"page-dapps-dapp-description-dexguru": "DeFi व्यापार्यांसाठी नॉन-कस्टोडियल ट्रेडिंग टर्मिनल",
"page-dapps-dapp-description-synthetix": "Synthetix हा सिंथेटिक मालमत्ता जारी करण्यासाठी आणि व्यापार करण्यासाठी एक प्रोटोकॉल आहे",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "हे असे ऍप्लिकेशन आहेत जे विकसक साधनांचे विकेंद्रीकरण करणे, विद्यमान तंत्रज्ञानामध्ये क्रिप्टोइकॉनॉमिक सिस्टम समाविष्ट करणे आणि मुक्त-स्रोत विकास कार्यासाठी बाजारपेठ तयार करणे यावर लक्ष केंद्रित करतात.",
"page-dapps-technology-title": "विकेंद्रित तंत्रज्ञान",
"page-dapps-token-sets-logo-alt": "Token Sets लोगो",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash लोगो",
"page-dapps-uniswap-logo-alt": "Uniswap लोगो",
"page-dapps-wallet-callout-button": "वॉलेट शोधा",
"page-dapps-wallet-callout-description": "वॉलेट देखील dapps आहेत. आपल्यास अनुकूल असलेल्या वैशिष्ट्यांवर आधारित एक शोधा.",
diff --git a/src/intl/mr/page-languages.json b/src/intl/mr/page-languages.json
index ee74a96e0ce..94de22f0b60 100644
--- a/src/intl/mr/page-languages.json
+++ b/src/intl/mr/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "ethereum.org वेगळ्या भाषेत पाहू इच्छिता?",
"page-languages-want-more-link": "भाषांतर कार्यक्रम",
"page-languages-want-more-paragraph": "ethereum.org अनुवादक नेहमी शक्य तितक्या भाषांमध्ये पृष्ठांचे भाषांतर करत असतात. ते सध्या कशावर काम करत आहेत हे पाहण्यासाठी किंवा त्यांच्यात सामील होण्यासाठी साइन अप करण्यासाठी, आमच्याबद्दल वाचा",
- "page-languages-filter-placeholder": "फिल्टर करा",
+ "page-languages-filter-label": "फिल्टर यादी",
+ "page-languages-filter-placeholder": "फिल्टर करण्यासाठी टाइप करा",
+ "page-languages-browser-default": "ब्राऊझर डिफॉल्ट",
+ "page-languages-translated": "भाषांतरित",
+ "page-languages-words": "शब्द",
+ "page-languages-recruit-community": "ethereum.org चे भाषांतर करण्यात आम्हाला मदत करा.",
"language-ar": "अरेबिक",
"language-az": "अझरबैजानी",
"language-bg": "बल्गेरियन",
@@ -58,8 +63,8 @@
"language-sl": "स्लोवेनियन",
"language-sr": "सर्बियन",
"language-sw": "स्वाहिली",
- "language-th": "थाई",
"language-ta": "तमिळ",
+ "language-th": "थाई",
"language-tr": "तुर्किश",
"language-uk": "युक्रेनियन",
"language-ur": "उर्दू",
diff --git a/src/intl/mr/page-stablecoins.json b/src/intl/mr/page-stablecoins.json
index b0f7977ea92..7cf97c5d771 100644
--- a/src/intl/mr/page-stablecoins.json
+++ b/src/intl/mr/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "स्रोत",
"page-stablecoins-bitcoin-pizza": "कुप्रसिद्ध Bitcoin पिझ्झा",
"page-stablecoins-bitcoin-pizza-body": "2010 मध्ये, कोणीतरी 10,000 bitcoin साठी 2 पिझ्झा विकत घेतले. त्यावेळी त्यांची किंमत ~$41 USD होती. आजच्या बाजारात ते लाखो डॉलर्स आहे. Ethereum च्या इतिहासात असेच अनेक खेदजनक व्यवहार आहेत. स्टेबलकॉइन्स या समस्येचे निराकरण करतात, जेणेकरून तुम्ही तुमच्या पिझ्झाचा आनंद घेऊ शकता आणि तुमच्या ETH ला धरून राहू शकता.",
+ "page-stablecoins-category-dashboard-and-education": "डॅशबोर्ड आणि शिक्षण",
"page-stablecoins-coin-price-change": "नाण्याच्या किंमतीत बदल (गेल्या 30 दिवसांत)",
"page-stablecoins-crypto-backed": "क्रिप्टो समर्थित",
"page-stablecoins-crypto-backed-con-1": "फियाट-बॅक्ड स्टेबलकॉइन्सपेक्षा कमी स्थिर.",
diff --git a/src/intl/ms/common.json b/src/intl/ms/common.json
index f977fcf3736..e2a0133865f 100644
--- a/src/intl/ms/common.json
+++ b/src/intl/ms/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Pengabstrakan akaun",
"about-ethereum-org": "Perihal ethereum.org",
"about-us": "Perihal kami",
+ "adding-desci-projects": "Menambah Projek Desci",
+ "adding-developer-tools": "Menambah Alat Pemaju",
+ "adding-exchanges": "Menambah Pertukaran",
+ "adding-glossary-terms": "Menambah Istilah Daftar Kata",
+ "adding-staking-products": "Menambah Produk Pertaruhan",
+ "adding-wallets": "Menambah Dompet",
+ "account-abstraction": "Pengabstrakan akaun",
+ "acknowledgements": "Perakuan",
"aria-toggle-search-button": "Togol butang cari",
"aria-toggle-menu-button": "Togol butang menu",
"beacon-chain": "Rantai Beacon",
"bridges": "Jambatan blok rantai",
+ "bug-bounty": "Hadiah untuk penemuan Pepijat",
+ "build": "Bina",
+ "build-menu": "Bina menu",
"clear": "Kosongkan",
"close": "Tutup",
"community": "Komuniti",
"community-hub": "Hab komuniti",
"community-menu": "Menu Komuniti",
"contact": "Hubungi",
+ "content-buckets": "Baldi Kandungan",
+ "content-resources": "Sumber Kandungan",
"content-standardization": "Pemiawaian kandungan",
"contributing": "Menyumbang",
"contributors": "Penyumbang",
@@ -20,14 +32,17 @@
"copied": "Telah disalin",
"copy": "Salin",
"danksharding": "Danksharding",
- "dao-page": "Organisasi autonomi yang tak terpusat (DAO)",
+ "dao-page": "DAO - Organisasi autonomi yang tak terpusat",
"dark-mode": "Gelap",
"data-provided-by": "Sumber data:",
- "decentralized-applications-dapps": "Aplikasi tidak berpusat (dapps)",
+ "decentralized-applications-dapps": "Dapp - Aplikasi tidak berpusat",
"decentralized-identity": "Identiti ternyahpusat",
"decentralized-social-networks": "Rangkaian sosial ternyahpusat",
- "decentralized-science": "Sains ternyahpusat (DeSci)",
- "defi-page": "Kewangan tak terpusat (DeFi)",
+ "decentralized-science": "DeSci - Sains ternyahpusat",
+ "description": "Deskripsi untuk item navigasi",
+ "defi-page": "DeFi - Kewangan tak terpusat",
+ "design": "Reka Bentuk",
+ "design-principles": "Prinsip Reka Bentuk",
"devcon": "Devcon",
"developers": "Pembangun",
"developers-home": "Laman Utama Pembangun",
@@ -51,7 +66,7 @@
"documentation": "Dokumentasi",
"down": "Bawah",
"ecosystem": "Ekosistem",
- "edit-page": "Edit halaman",
+ "edit-page": "Edit halaman\nOr\nSunting halaman",
"ef-blog": "Blog Yayasan Ethereum",
"eips": "Cadangan Penambahbaikan Ethereum",
"energy-consumption": "Penggunaan tenaga Ethereum",
@@ -63,7 +78,7 @@
"ethereum-bug-bounty": "Sistem baunti pepijat Ethereum",
"consensus-when-shipping": "Bilakah ia dihantar?",
"ethereum-upgrades": "Naik taraf Ethereum",
- "ethereum-brand-assets": "Aset Jenama Ethereum",
+ "ethereum-brand-assets": "Aset jenama Ethereum",
"ethereum-online": "Komuniti dalam talian",
"ethereum-events": "Acara Ethereum",
"ethereum-foundation": "Yayasan Ethereum",
@@ -83,22 +98,22 @@
"feedback-card-prompt-tutorial": "Adakah tutorial ini membantu?",
"feedback-widget-thank-you-title": "Terima kasih atas maklum balas anda!",
"feedback-widget-thank-you-subtitle": "Jadikan halaman ini lebih baik dengan menjawab beberapa soalan.",
- "feedback-widget-thank-you-subtitle-ext": "Jika anda memerlukan bantuan, anda boleh menghubungi komuniti kami di Discord kami.",
+ "feedback-widget-thank-you-subtitle-ext": "Jika anda memerlukan bantuan, anda boleh menghubungi komuniti kami di Discord.",
"feedback-widget-thank-you-timing": "2–3 minit",
"feedback-widget-thank-you-cta": "Tinjauan ringkas terbuka",
"find-wallet": "Cari dompet",
"future-proofing": "Langkah berdaya tahan masa depan",
"get-eth": "Dapatkan ETH",
"get-involved": "Libatkan diri",
- "get-started": "Mari mulakan",
+ "get-started": "Mari bermula",
"grants": "Geran",
"grant-programs": "Program Geran Ekosistem",
"guides": "Panduan",
- "guides-hub": "Hab panduan",
+ "guides-hub": "Panduan cara",
"history-of-ethereum": "Sejarah Ethereum",
"home": "Laman Utama",
"how-ethereum-works": "Cara Ethereum berfungsi",
- "how-to-register-an-ethereum-account": "Cara \"mendaftar\" akaun Ethereum",
+ "how-to-create-an-ethereum-account": "Cara untuk \"mencipta\" akaun Ethereum",
"how-to-revoke-token-access": "Cara membatalkan akses kontrak pintar kepada dana kripto anda",
"how-to-swap-tokens": "Cara menukar token",
"how-to-use-a-bridge": "Cara menghubungkan token kepada lapisan 2",
@@ -115,7 +130,7 @@
"last-edit": "Suntingan terakhir",
"layer-2": "Lapisan 2",
"learn": "Ketahui",
- "learn-by-coding": "Belajar melalui mengekod",
+ "learn-by-coding": "Belajar melalui pengekodan",
"learn-hub": "Hab Pembelajaran",
"learn-menu": "Menu belajar",
"learn-more": "Ketahui lebih lanjut",
@@ -128,11 +143,110 @@
"loading-error-try-again-later": "Tidak dapat memuatkan data. Cuba lagi kemudian.",
"logo": "logo",
"mainnet-ethereum": "Jaringan Utama Ethereum",
- "more": "Selanjutnya",
- "nav-developers": "Pemaju",
+ "merge": "Gabung",
+ "more": "Lebih lanjut",
+ "nav-about-description": "Satu projek sumber terbuka umum untuk komuniti Ethereum",
+ "nav-advanced-description": "Pelajari topik yang lebih kompleks",
+ "nav-advanced-label": "Maju",
+ "nav-basics-description": "Fahami asas Ethereum",
+ "nav-basics-label": "Asas",
+ "nav-bridges-description": "Web3 telah berkembang menjadi satu ekosistem blok rantai L1 utama dan penyelesaian penskalaan L2",
+ "nav-builders-home-description": "Buku panduan pembina untuk Ethereum—oleh pembina, untuk pembina",
+ "nav-builders-home-label": "Laman utama pembina",
+ "nav-contribute-description": "Jika anda mahu membantu, ini akan memberi anda panduan",
+ "nav-contribute-label": "Menyumbang kepada ethereum.org",
+ "nav-dao-description": "Komuniti milik ahli tanpa penguasaan berpusat",
+ "nav-dapps-description": "Terokai pelbagai ekosistem aplikasi menggunakan Ethereum",
+ "nav-defi-description": "Satu alternatif global yang terbuka berbanding pasaran kewangan tradisional",
+ "nav-desci-description": "Satu alternatif global yang terbuka berbanding sistem saintifik semasa",
+ "nav-desoc-description": "Platform berasaskan blok rantai untuk interaksi sosial dan penciptaan kandungan",
"nav-developers-docs": "Dokumen pembangun",
+ "nav-developers": "Pembangun",
+ "nav-did-description": "Hasilkan dan miliki pengecam tidak berpusat anda yang unik",
+ "nav-docs-description": "Dokumen untuk membantu anda memahami dan membina dengan Ethereum",
+ "nav-docs-design-description": "Deskripsi cabaran reka bentuk web3 unik, amalan terbaik, dan pemahaman penyelidikan pengguna",
+ "nav-docs-design-label": "Asas reka bentuk UX/UI",
+ "nav-docs-foundation-description": "Laman utama anda untuk dokumen pembangun",
+ "nav-docs-foundation-label": "Topik asas",
+ "nav-docs-overview-description": "Laman utama anda untuk dokumen pembangun",
+ "nav-docs-stack-description": "Fahami semua butiran timbunan Ethereum",
+ "nav-docs-stack-label": "Timbunan Ethereum",
+ "nav-eip-description": "Standard yang menentukan ciri atau proses baharu",
+ "nav-eip-label": "EIP - Cadangan penambahbaikan Ethereum",
+ "nav-emerging-description": "Kenali kes penggunaan baharu yang lain bagi Ethereum",
+ "nav-emerging-label": "Kes penggunaan yang muncul",
+ "nav-enterprise-description": "Aplikasi perniagaan untuk Ethereum",
+ "nav-ethereum-org-description": "Tapak web ini dipacu oleh komuniti—sertai kami dan buat sumbangan juga",
+ "nav-ethereum-wallets-description": "Aplikasi untuk berinteraksi dengan akaun Ethereum anda",
+ "nav-events-description": "Desentralisasi dan kebebasan untuk mengambil bahagian kepada sesiapa sahaja",
+ "nav-events-irl-description": "Setiap bulan terdapat acara besar Ethereum secara langsung dan dalam talian",
+ "nav-events-label": "Komuniti dan acara",
+ "nav-events-online-description": "Begitu ramai penyokong Ethereum mengetuai komuniti dalam talian ini",
+ "nav-find-wallet-description": "Dompet membolehkan anda menggunakan kripto",
+ "nav-find-wallet-label": "Pilih dompet anda",
+ "nav-gas-fees-description": "Cara yuran transaksi ETH dikira",
+ "nav-get-eth-description": "Anda memerlukan ether (ETH) untuk menggunakan aplikasi Ethereum",
+ "nav-get-started-description": "Langkah pertama anda untuk menggunakan Ethereum",
+ "nav-governance-description": "Proses yang terlibat untuk meningkatkan protokol Ethereum",
+ "nav-governance-label": "Tadbir Urus",
+ "nav-grants-description": "Senarai yang dipilih susun oleh komuniti tentang projek yang menyediakan program pembiayaan geran",
+ "nav-guide-create-account-description": "Semua orang boleh mencipta akaun Ethereum pada bila-bila masa, secara percuma dengan aplikasi dompet",
+ "nav-guide-create-account-label": "Cara untuk mencipta akaun Ethereum",
+ "nav-guide-revoke-access-description": "Kekal selamat apabila berinteraksi dengan kontrak pintar dan aplikasi dalam ekosistem Ethereum",
+ "nav-guide-revoke-access-label": "Cara membatalkan akses kontrak pintar",
+ "nav-guide-use-wallet-description": "Belajar cara mengendalikan semua fungsi asas dalam sebuah dompet",
+ "nav-guide-use-wallet-label": "Cara menggunakan dompet",
+ "nav-guides-description": "Panduan langkah demi langkah praktikal untuk membantu anda bermula",
+ "nav-guides-label": "Panduan cara",
+ "nav-history-description": "Garis masa semua pelaksanaan dan pengemaskinian penting",
+ "nav-history-label": "Sejarah teknikal Ethereum",
+ "nav-layer-2-description": "Transaksi yang lebih murah dan pantas untuk Ethereum",
+ "nav-learn-by-coding-description": "Alat-alat yang membantu anda mencuba dengan Ethereum",
+ "nav-local-env-description": "Pilih dan tetapkan tindanan pembangunan Ethereum anda",
+ "nav-mainnet-description": "Aplikasi blok rantai syarikat boleh dibina pada Rangkaian Utama Ethereum umum",
+ "nav-nft-description": "Satu cara untuk mewakili apa sahaja yang unik sebagai aset berasaskan Ethereum",
+ "nav-open-research-description": "Salah satu kelebihan utama Ethereum ialah komuniti penyelidikannya yang aktif",
+ "nav-open-research-label": "Penyelidikan terbuka",
+ "nav-overview-description": "Segala-galanya tentang Ethereum",
+ "nav-overview-label": "Ringkasan",
+ "nav-participate-overview-description": "Gambaran keseluruhan tentang cara untuk mengambil bahagian",
"nav-primary": "Utama",
- "nft-page": "Token yang tidak dapat dipertukarkan (NFT)",
+ "nav-quizzes-description": "Ketahui sejauh mana anda memahami Ethereum dan mata wang kripto",
+ "nav-quizzes-label": "Uji pengetahuan anda",
+ "nav-refi-description": "Satu sistem ekonomi alternatif yang dibina atas prinsip penjanaan semula",
+ "nav-research-description": "Proses yang digunakan untuk menambah baik Ethereum",
+ "nav-research-label": "Penyelidikan dan pembangunan",
+ "nav-roadmap-description": "Laluan untuk penskalaan, keselamatan dan kelestarian yang lebih untuk Ethereum",
+ "nav-roadmap-future-description": "Mengukuhkan Ethereum sebagai satu rangkaian yang teguh dan tidak berpusat",
+ "nav-roadmap-future-label": "Langkah berdaya tahan masa depan",
+ "nav-roadmap-label": "Pelan hala tuju",
+ "nav-roadmap-scaling-description": "Pengemaskinian rangkaian untuk mengurangkan lagi kos transaksi dan kelajuan",
+ "nav-roadmap-security-description": "Memastikan Ethereum kekal berdaya tahan kepada semua jenis serangan pada masa depan",
+ "nav-roadmap-security-label": "Meningkatkan keselamatan",
+ "nav-roadmap-ux-description": "Penggunaan Ethereum perlu dipermudahkan",
+ "nav-run-a-node-description": "Jadi berkuasa sepenuhnya di samping membantu melindungi rangkaian",
+ "nav-security-description": "Ketahui amalan terbaik apabila menggunakan mata wang kripto",
+ "nav-smart-contracts-description": "Blok pembangunan asas bagi ekosistem Ethereum",
+ "nav-stablecoins-description": "Stablecoins ialah token Ethereum yang direka bentuk untuk kekal pada nilai tetap",
+ "nav-stake-description": "Peroleh ganjaran kerana menggunakan Ethereum",
+ "nav-stake-label": "Petaruhan",
+ "nav-staking-home-description": "Gambaran keseluruhan tentang pilihan berbeza untuk pertaruhan",
+ "nav-staking-pool-description": "Bertaruh dan peroleh ganjaran dengan sebarang amaun ETH dengan menyertai bersama orang lain",
+ "nav-staking-pool-label": "Pertaruhan terkumpul",
+ "nav-staking-saas-description": "Pengendali nod pihak ketiga mengendalikan operasi klien pengesah anda",
+ "nav-staking-saas-label": "Pertaruhan dengan perkhidmatan",
+ "nav-staking-solo-label": "Pertaruhan solo",
+ "nav-start-building-description": "Maklumat berguna untuk pengguna baharu",
+ "nav-translation-program-description": "Usahasama untuk menterjemah ethereum.org kepada semua bahasa",
+ "nav-tutorials-description": "Senarai tutorial komuniti yang dipilih susun",
+ "nav-use-cases-description": "Terokai idea lain untuk penggunaan Ethereum",
+ "nav-what-is-ether-description": "Mata wang aplikasi Ethereum",
+ "nav-what-is-ethereum-description": "Fahami perkara yang membuatkan Ethereum istimewa",
+ "nav-what-is-web3-label": "Apakah itu Web3?",
+ "nav-what-is-web3-description": "Alternatif kepada monopoli berpusat yang menentukan peraturan",
+ "nav-whitepaper-description": "Kertas putih Ethereum yang asal ditulis oleh Vitalik Buterin pada 2014",
+ "nav-zkp-description": "Satu cara untuk membuktikan kesahihan kenyataan tanpa mendedahkan kenyataan itu sendiri",
+ "nft-page": "NFT - Token yang tidak dapat dipertukarkan",
"nfts": "NFT",
"no": "Tidak",
"on-this-page": "Pada halaman ini",
@@ -140,6 +254,7 @@
"page-developers-aria-label": "Menu Pembangun",
"page-index-meta-title": "Laman Utama",
"page-last-updated": "Kali terakhir halaman dikemas kini",
+ "participate-menu": "Menu penyertaan",
"pbs": "Pemisahan pencadang-pembina",
"pools": "Pertaruhan terkumpul",
"privacy-policy": "Dasar privasi",
@@ -150,9 +265,11 @@
"refresh": "Sila muat semula halaman.",
"return-home": "kembali ke laman utama",
"roadmap": "Peta hala tuju Ethereum",
+ "research": "Penyelidikan",
+ "research-menu": "Menu penyelidikan",
"resources": "Sumber untuk penterjemahan",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Jalankan nod",
+ "regenerative-finance": "ReFi - Kewangan Jana Semula",
+ "run-a-node": "Gerakkan nod",
"rollup-component-website": "Laman web",
"rollup-component-developer-docs": "Dokumen pembangun",
"rollup-component-technology-and-risk-summary": "Teknologi dan ringkasan risiko",
@@ -164,6 +281,7 @@
"search-box-blank-state-text": "Cari!",
"search-eth-address": "Kelihatan seperti alamat Ethereum. Kami tidak menyediakan data spesifik kepada alamat. Cuba cari pada pelayar blok seperti",
"search-no-results": "Carian anda tidak dijumpai",
+ "security": "Keselamatan",
"single-slot-finality": "Kemuktamadan slot tunggal",
"statelessness": "Ketiadaan keadaan",
"see-contributors": "Lihat penyumbang",
@@ -172,15 +290,15 @@
"show-all": "Tunjukkan semua",
"show-less": "Tunjukkan lebih sedikit",
"site-description": "Ethereum ialah sebuah platform global dan tak terpusat untuk mata wang dan pelbagai aplikasi baharu. Dalam Ethereum, anda boleh menulis kod yang dapat mengawal mata wang, serta membina aplikasi yang boleh diakses di mana-mana sahaja di dunia.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Langkau ke kandungan utama",
"smart-contracts": "Kontrak pintar",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Syiling Stabil",
"stake-eth": "Taruh ETH",
"staking": "Pertaruhan",
"start-here": "Mula di sini",
"style-guide": "Gaya panduan",
"solo": "Pertaruhan solo",
+ "support": "Bantuan",
"terms-of-use": "Terma Penggunaan",
"translation-banner-body-new": "Anda sedang melihat halaman ini dalam Bahasa Inggeris kerana kami belum menterjemahkannya lagi. Bantu kami untuk menterjemahkan kandungan ini.",
"translation-banner-body-update": "Terdapat versi baru untuk halaman ini tetapi ianya hanya didapati dalam Bahasa Inggeris buat masa ini. Bantu kami untuk menterjemahkan versi terkini.",
@@ -191,20 +309,22 @@
"translation-banner-no-bugs-title": "Tiada pepijat di sini!",
"translation-banner-no-bugs-content": "Halaman ini tiada terjemahan. Kami membiarkan halaman ini dalam bahasa Inggeris buat masa ini.",
"translation-banner-no-bugs-dont-show-again": "Jangan tunjuk lagi",
+ "translation-program": "Program Penterjemahan",
"try-using-search": "Cuba gunakan carian untuk menemui perkara yang anda cari",
"tutorials": "Tutorial",
"up": "Atas",
+ "use": "Guna",
"use-ethereum": "Guna Ethereum",
"use-ethereum-menu": "Guna menu Ethereum",
+ "use-menu": "Menu penggunaan",
"user-experience": "Pengalaman pengguna",
"verkle-trees": "Pohon Verkle",
- "wallets": "Dompet",
+ "wallets": "Dompet-dompet",
"we-couldnt-find-that-page": "Maaf, kami tidak jumpa halaman tersebut",
"web3": "Apakah itu Web3?",
- "web3-title": "Web3",
"website-last-updated": "Kali terakhir laman web dikemas kini",
"what-is-ether": "Apakah ether (ETH)?",
- "what-is-ethereum": "Apa itu Ethereum?",
+ "what-is-ethereum": "Apakah itu Ethereum?",
"withdrawals": "Pertaruhan keluaran",
"yes": "Ya",
"zero-knowledge-proofs": "Bukti sifar pengetahuan"
diff --git a/src/intl/ms/page-dapps.json b/src/intl/ms/page-dapps.json
index 2795fd43a63..ce0b5e4862b 100644
--- a/src/intl/ms/page-dapps.json
+++ b/src/intl/ms/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Salurkan wang secara masa nyata.",
"page-dapps-dapp-description-superrare": "Beli karya seni digital terus daripada artis atau pasaran sekunder.",
"page-dapps-dapp-description-token-sets": "Strategi pelaburan kripto yang mengimbang semula secara automatik.",
- "page-dapps-dapp-description-tornado-cash": "Hantarkan transaksi tanpa nama dalam Ethereum.",
"page-dapps-dapp-description-uniswap": "Tukarkan token dengan mudah atau bekalkan token untuk ganjaran %.",
"page-dapps-dapp-description-dexguru": "Terminal dagangan bukan penjaga untuk pedagang DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix ialah protokol untuk mengeluarkan dan mendagangkan aset sintetik",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Ini merupakan aplikasi yang tertumpu pada usaha menyahpusatkan alat pembangun, menggabungkan sistem kriptoekonomi ke dalam teknologi sedia ada, dan mewujudkan pasaran untuk kerja pembangunan sumber terbuka.",
"page-dapps-technology-title": "Teknologi Ternyahpusat",
"page-dapps-token-sets-logo-alt": "Logo Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo Uniswap",
"page-dapps-wallet-callout-button": "Cari \"wallet\"\nOr\nCari dompet",
"page-dapps-wallet-callout-description": "Dompet juga merupakan dapps. Pilih dapp berdasarkan ciri yang sesuai dengan anda.",
diff --git a/src/intl/ms/page-languages.json b/src/intl/ms/page-languages.json
index e9ffffd050f..14d6f85fc0f 100644
--- a/src/intl/ms/page-languages.json
+++ b/src/intl/ms/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Ingin melihat ethereum.org dalam bahasa lain?",
"page-languages-want-more-link": "Program Penterjemahan",
"page-languages-want-more-paragraph": "Para penterjemah ethereum.org sentiasa menterjemah laman dalam seberapa banyak bahasa yang mungkin. Untuk melihat apa yang mereka usahakan sekarang atau mendaftar untuk menurut serta, sila baca mengenai",
- "page-languages-filter-placeholder": "Tapis",
+ "page-languages-filter-label": "Senarai tapisan",
+ "page-languages-filter-placeholder": "Taip untuk menapis",
+ "page-languages-browser-default": "Lalai pelayar",
+ "page-languages-translated": "diterjemah",
+ "page-languages-words": "perkataan",
+ "page-languages-recruit-community": "Bantu kami menterjemah ethereum.org.",
"language-ar": "Bahasa Arab",
"language-az": "Bahasa Azerbaijan",
"language-bg": "Bahasa Bulgaria",
@@ -58,8 +63,8 @@
"language-sl": "Bahasa Slovenia",
"language-sr": "Bahasa Serbia",
"language-sw": "Bahasa Swahili",
- "language-th": "Bahasa Thai",
"language-ta": "Bahasa Tamil",
+ "language-th": "Bahasa Thai",
"language-tr": "Bahasa Turki",
"language-uk": "Bahasa Ukraine",
"language-ur": "Bahasa Urdu",
diff --git a/src/intl/ms/page-stablecoins.json b/src/intl/ms/page-stablecoins.json
index 1874d0cc4a4..1efa60083f1 100644
--- a/src/intl/ms/page-stablecoins.json
+++ b/src/intl/ms/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Sumber",
"page-stablecoins-bitcoin-pizza": "Peristiwa piza Bitcoin terkenal",
"page-stablecoins-bitcoin-pizza-body": "Pada tahun 2010, seseorang telah membeli 2 piza pada harga 10,000 bitcoin. Pada masa itu, bitcoin bernilai ~$41 USD. Pada pasaran kini, jumlah tersebut bernilai jutaan dolar. Terdapat banyak transaksi penuh sesal seperti ini dalam sejarah Ethereum. Syiling stabil menyelesaikan masalah ini, jadi anda boleh menikmati piza dan menyimpan ETH anda.",
+ "page-stablecoins-category-dashboard-and-education": "Papan Pemuka & Pendidikan",
"page-stablecoins-coin-price-change": "Perubahan harga syiling (30 hari lalu)",
"page-stablecoins-crypto-backed": "Bersandarkan kripto",
"page-stablecoins-crypto-backed-con-1": "Kurang stabil berbanding syiling stabil yang bersandarkan mata wang fiat.",
diff --git a/src/intl/nb/common.json b/src/intl/nb/common.json
index ef4c9dacf0a..8c969545fc4 100644
--- a/src/intl/nb/common.json
+++ b/src/intl/nb/common.json
@@ -1,30 +1,70 @@
{
"about-ethereum-org": "Om ethereum.org",
"about-us": "Om oss",
+ "adding-desci-projects": "Legger til Desci-prosjekter",
+ "adding-developer-tools": "Legger til utviklerverktøy",
+ "adding-exchanges": "Legger til børser",
+ "adding-glossary-terms": "Legger til ordlisteuttrykk",
+ "adding-staking-products": "Legger til staking-produkter",
+ "adding-wallets": "Legger til lommebøker",
+ "account-abstraction": "Kontoabstraksjon",
+ "acknowledgements": "Anerkjennelser",
"aria-toggle-search-button": "Veksleknapp for søk",
"aria-toggle-menu-button": "Veksleknapp for meny",
"beacon-chain": "Beacon-kjeden",
"bridges": "Blokkkjedebroer",
+ "bug-bounty": "Bug bounty-program",
+ "build": "Bygg",
+ "build-menu": "Byggemeny",
+ "clear": "Tøm",
"close": "Lukk",
"community": "Fellesskap",
"community-hub": "Samfunnssentral",
"community-menu": "Fellesskapsmeny",
"contact": "Kontakt",
+ "content-buckets": "Innholdssøyler",
+ "content-resources": "Innholdsressurser",
+ "content-standardization": "Innholdsstandardisering",
"contributing": "Bidra",
"contributors": "Bidragsytere",
"contributors-thanks": "Alle som har bidratt til denne siden – takk!",
"cookie-policy": "Retningslinjer for informasjonskapsler",
"copied": "Kopiert",
"copy": "Kopier",
+ "danksharding": "Danksharding",
+ "dao-page": "DAO - Desentraliserte egenstyrte organisasjoner",
"dark-mode": "Mørk",
"data-provided-by": "Datakilde:",
- "decentralized-applications-dapps": "Desentraliserte applikasjoner (dapper)",
- "decentralized-science": "Desentralisert vitenskap (DeSci)",
+ "decentralized-applications-dapps": "Dapper - Desentraliserte applikasjoner",
+ "decentralized-identity": "Desentralisert identitet",
+ "decentralized-social-networks": "Desentraliserte sosiale nettverk",
+ "decentralized-science": "DeSci - Desentralisert vitenskap",
+ "description": "Beskrivelse av nav-element",
+ "defi-page": "DeFi - Desentralisert finans",
+ "design": "Design",
+ "design-principles": "Designprinsipper",
"devcon": "Devcon",
"developers": "Utviklere",
"developers-home": "Startside for utviklere",
"docs": "Dokumenter",
+ "docsearch-to-select": "Å velge",
+ "docsearch-to-navigate": "Å navigere",
+ "docsearch-to-close": "Å lukke",
+ "docsearch-search-by": "Søk etter",
+ "docsearch-start-recent-searches-title": "Nylig",
+ "docsearch-start-no-recent-searches": "Ingen nylige søk",
+ "docsearch-start-save-recent-search": "Lagre dette søket",
+ "docsearch-start-remove-recent-search": "Fjern dette søket fra historikken",
+ "docsearch-start-favorite-searches": "Favoritt",
+ "docsearch-start-remove-favorite-search": "Fjern dette søket fra favoritter",
+ "docsearch-no-results-text": "Ingen resultater for",
+ "docsearch-no-results-suggested-query": "Prøv å søke etter",
+ "docsearch-no-results-missing": "Burde dette spørsmålet gi deg resultater?",
+ "docsearch-no-results-missing-link": "Gi oss beskjed.",
+ "docsearch-error-title": "Kunne ikke hente resultater",
+ "docsearch-error-help": "Du burde kanskje sjekke koblingen til nettverket ditt.",
"documentation": "Dokumentasjon",
+ "down": "Ned",
"ecosystem": "Økosystem",
"edit-page": "Rediger side",
"ef-blog": "Ethereum Foundation-blogg",
@@ -34,10 +74,10 @@
"enterprise-menu": "Bedrift-meny",
"esp": "Støtteprogram for økosystem",
"eth-current-price": "Nåværende ETH-pris (USD)",
+ "ethereum-basics": "Grunnleggende om Ethereum",
"ethereum-bug-bounty": "Ethereums belønningsprogram for problemløsning",
"consensus-when-shipping": "Når blir den levert?",
"ethereum-upgrades": "Ethereum-oppgraderinger",
- "ethereum-brand-assets": "Merkevareaktiva for Ethereum",
"ethereum-online": "Nettbaserte felleskap",
"ethereum-events": "Ethereum-arrangementer",
"ethereum-foundation": "Ethereum Foundation",
@@ -45,6 +85,8 @@
"ethereum-glossary": "Ethereum-ordliste",
"ethereum-governance": "Ethereum-styring",
"ethereum-logo": "Ethereum-logo",
+ "ethereum-roadmap": "Ethereum-veikart",
+ "ethereum-protocol": "Ethereum-protokoll",
"ethereum-security": "Ethereums sikkerhets- og svindelforebygging",
"ethereum-support": "Ethereum-brukerstøtte",
"ethereum-wallets": "Ethereum-lommebøker",
@@ -59,18 +101,17 @@
"feedback-widget-thank-you-timing": "2–3 min.",
"feedback-widget-thank-you-cta": "Åpne kort spørreundersøkelse",
"find-wallet": "Finn lommebok",
+ "future-proofing": "Fremtidssikring",
"get-eth": "Hent ETH",
"get-involved": "Bli involvert",
"get-started": "Kom i gang",
"grants": "Tilskudd",
"grant-programs": "Støtteprogram for økosystem",
- "guides-and-resources": "Fellesskapsveiledninger og -ressurser",
"guides": "Veiledninger",
- "guides-hub": "Veileder-hub",
+ "guides-hub": "Veiledninger",
"history-of-ethereum": "Ethereums historie",
"home": "Startside",
"how-ethereum-works": "Slik fungerer Ethereum",
- "how-to-create-an-ethereum-account": "Slik registrerer du en Ethereum-konto",
"how-to-revoke-token-access": "Slik opphever du smartkontraktens tilgang til dine krypto-midler",
"how-to-swap-tokens": "Hvordan bytte token",
"how-to-use-a-bridge": "Hvordan bygger du tokenbro til lag 2",
@@ -88,6 +129,7 @@
"layer-2": "Lag 2",
"learn": "Lær",
"learn-by-coding": "Lær ved koding",
+ "learn-hub": "Læringshub",
"learn-menu": "Lær-meny",
"learn-more": "Finn ut mer",
"less": "Mindre",
@@ -96,23 +138,143 @@
"loading": "Laster...",
"loading-error": "Lasting mislyktes.",
"loading-error-refresh": "Feil, vennligst oppdater.",
+ "loading-error-try-again-later": "Kan ikke laste inn data. Prøv igjen senere.",
"logo": "logo",
"mainnet-ethereum": "Ethereum-hovednett",
+ "merge": "Slå sammen",
"more": "Mer",
+ "nav-about-description": "Et offentlig, åpen kildekode-prosjekt for Ethereum-samfunnet",
+ "nav-advanced-description": "Lær de mer komplekse emnene",
+ "nav-advanced-label": "Avansert",
+ "nav-basics-description": "Forstå det grunnleggende av Ethereum",
+ "nav-basics-label": "Grunnleggende",
+ "nav-bridges-description": "Web3 har utviklet seg til et økosystem av hovedsakelig L1-blokkjeder og L2-skalerings-løsninger",
+ "nav-builders-home-description": "En byggehåndbok for Ethereum, av byggere for byggere",
+ "nav-builders-home-label": "Byggernes hjem",
+ "nav-contribute-description": "Hvis du vil ha hjelp, vill dette veilede deg",
+ "nav-contribute-label": "Bidra til ethereum.org",
+ "nav-dao-description": "Samfunn eid av medlemmer uten sentralisert myndighet",
+ "nav-dapps-description": "Utforsk et rikt økosystem av apper ved bruk av Ethereum",
+ "nav-defi-description": "Et globalt, åpent alternativ til det tradisjonelle finansmarkedet",
+ "nav-desci-description": "Et globalt, åpent alternativ til dagens vitenskapelige system",
+ "nav-desoc-description": "Blokkjede-baserte plattformer for sosiale interaksjoner og utvikling av innhold",
+ "nav-developers-docs": "Dokumenter for utviklere",
+ "nav-developers": "Utviklere",
+ "nav-did-description": "Utsted og eie dine unike desentraliserte identifikatorer",
+ "nav-docs-description": "Dokumenter for å hjelpe deg med å forstå og bygge med Ethereum",
+ "nav-docs-design-description": "Beskrivelse av unike web3-designutfordringer, beste praksis og brukeres innblikk i forskning",
+ "nav-docs-design-label": "UX/UI grunnleggende design",
+ "nav-docs-foundation-description": "Grunnleggende faktorer for å utvikle på Ethereum",
+ "nav-docs-overview-description": "Ditt hjem for utviklere-dokumenter",
+ "nav-docs-stack-description": "Forstå alle detaljene av Ethereum-stabelen",
+ "nav-eip-description": "Standarder som angir nye funksjoner eller prosesser",
+ "nav-eip-label": "EIPs - Forslag til forbedringer for Ethereum",
+ "nav-emerging-description": "Bli kjent med andre nyere brukstilfeller for Ethereum",
+ "nav-enterprise-description": "Forretningsapplikasjoner for Ethereum",
+ "nav-ethereum-org-description": "Dette nettstedet er drevet av fellesskapet – bli med oss og bidra også",
+ "nav-ethereum-wallets-description": "En app for å samhandle med Ethereum-kontoen din",
+ "nav-events-description": "Desentralisering og frihet til å delta for alle",
+ "nav-events-irl-description": "Hver måned er det store Ethereum-arrangementer personlig og på nett",
+ "nav-events-label": "Fellesskap og arrangementer",
+ "nav-events-online-description": "Hundretusener av Ethereum-entusiaster samles i disse nettsamfunnene",
+ "nav-find-wallet-description": "Lommebøker lar deg bruke krypto",
+ "nav-find-wallet-label": "Velg din lommebok",
+ "nav-gas-fees-description": "Hvordan er ETH-transaksjonsgebyrer kalkulert",
+ "nav-get-eth-description": "Du trenger ether (ETH) for å bruke Ethereum-applikasjoner",
+ "nav-get-started-description": "Ditt første steg for å bruke Ethereum",
+ "nav-governance-description": "Prosessen involvert i oppgradering av Ethereum-protokollen",
+ "nav-governance-label": "Styring",
+ "nav-grants-description": "En kuratert liste av samfunnet vårt over prosjekter som gir tilskuddsfinansieringsprogrammer",
+ "nav-guide-create-account-description": "Hvem som helst kan skape en Ethereum-konto når som helst, helt gratis med en lommebok-app",
+ "nav-guide-revoke-access-description": "Vær trygg når du samhandler med smarte kontrakter og applikasjoner i Ethereum-økosystemet",
+ "nav-guide-revoke-access-label": "Hvordan tilbakekalle smart kontraktstilgang",
+ "nav-guide-use-wallet-description": "Lær hvordan du bruker alle de grunnleggende funksjonene til en lommebok",
+ "nav-guide-use-wallet-label": "Slik bruker du en lommebok",
+ "nav-guides-description": "Praktiske trinnvise veiledninger for å hjelpe deg i gang",
+ "nav-guides-label": "Hvordan bruke veiledere",
+ "nav-history-description": "En tidslinje for alle de store forgrene og oppdateringene",
+ "nav-history-label": "Ethereums tekniske historie",
+ "nav-layer-2-description": "Billigere og raskere transaksjoner for Ethereum",
+ "nav-learn-by-coding-description": "Verktøy som hjelper deg å eksperimentere med Ethereum",
+ "nav-local-env-description": "Velg og sett opp Ethereum-utviklingsstabelen din",
+ "nav-mainnet-description": "Enterprise blokkjede-applikasjoner kan bygges på det offentlige Ethereum Mainnet",
+ "nav-nft-description": "En måte å representere noe unikt som en Ethereum-basert eiendel",
+ "nav-open-research-description": "En av de viktigste styrkene til Ethereum er det aktive forskningsmiljøet",
+ "nav-open-research-label": "Åpen forskning",
+ "nav-overview-description": "Alt om Ethereum-utdanning",
+ "nav-participate-overview-description": "Oversikt over hvordan du deltar",
+ "nav-primary": "Primær",
+ "nav-quizzes-description": "Finn ut hvor godt du forstår Ethereum og kryptovalutaer",
+ "nav-quizzes-label": "Test kunnskapen din",
+ "nav-refi-description": "Et alternativt økonomisk system bygget på regenerative prinsipper",
+ "nav-research-description": "Prosesser som brukes til å forbedre Ethereum",
+ "nav-research-label": "Forskning og utvikling",
+ "nav-roadmap-description": "Veien til mer skalerbarhet, sikkerhet og bærekraft for Ethereum",
+ "nav-roadmap-future-description": "Styrking av Ethereum som et robust og desentralisert nettverk",
+ "nav-roadmap-future-label": "Fremtidssikring",
+ "nav-roadmap-label": "Veikart",
+ "nav-roadmap-scaling-description": "Nettverksoppdateringer for å redusere transaksjonskostnader og hastighet ytterligere",
+ "nav-roadmap-security-description": "Sørge for at Ethereum forblir motstandsdyktig mot alle slags angrep i fremtiden",
+ "nav-roadmap-security-label": "Forbedret sikkerhet",
+ "nav-roadmap-ux-description": "Bruk av Ethereum må forenkles",
+ "nav-run-a-node-description": "Bli fullstendig suveren samtidig som du bidrar til å sikre nettverket",
+ "nav-security-description": "Lær beste praksis når du bruker kryptovaluta",
+ "nav-smart-contracts-description": "De grunnleggende bulideringsblokkene i Ethereum-økosystemet",
+ "nav-stablecoins-description": "Stablecoins er Ethereum-tokens designet for å holde seg på en fast verdi",
+ "nav-stake-description": "Tjen belønninger for å sikre Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "En oversikt over ulike alternativer for staking",
+ "nav-staking-pool-description": "Stake og tjen belønninger med et hvilket som helst beløp av ETH ved å bli med andre",
+ "nav-staking-pool-label": "Samlet staking",
+ "nav-staking-saas-label": "Staking med en tjeneste",
+ "nav-staking-solo-label": "Solo-staking",
+ "nav-start-building-description": "Nyttig informasjon for nykommere",
+ "nav-translation-program-description": "Et samarbeid for å oversette ethereum.org til alle språk",
+ "nav-tutorials-description": "Kuratert liste over opplæringsprogrammer for fellesskapet",
+ "nav-use-cases-description": "Oppdag forskjellige ideer for bruk av Ethereum",
+ "nav-what-is-ether-description": "Valutaen til Ethereum-apper",
+ "nav-what-is-ethereum-description": "Forstå hva som gjør Ethereum spesielt",
+ "nav-what-is-web3-label": "Hva er Web3?",
+ "nav-what-is-web3-description": "Et alternativ til sentraliserte monopoler som dikterer reglene",
+ "nav-whitepaper-description": "Den originale Ethereum whitepaper skrevet av Vitalik Buterin i 2014",
+ "nav-zkp-description": "En måte å bevise gyldigheten av en uttalelse uten å avsløre selve uttalelsen",
+ "nft-page": "NFT - Ikke-ombyttelige tokener",
+ "nfts": "FTF-er",
+ "no": "Nei",
"on-this-page": "På denne siden",
+ "open-research": "Åpen forskning",
+ "page-developers-aria-label": "Utviklermeny",
+ "page-index-meta-title": "Startside",
"page-last-updated": "Siden sist oppdatert",
+ "participate-menu": "Delta-menyen",
+ "pbs": "Seperasjon av Forslag-bygger",
+ "pools": "Samlet staking",
"privacy-policy": "Retningslinjer for personvern",
"private-ethereum": "Privat Ethereum",
+ "product-disclaimer": "Produkter og tjenester er listet som en bekvemmelighet for Ethereum-samfunnet. Inkludering av produkter eller tjenester representerer ikke en anbefaling fra ethereum.org nettside-teamet, eller Ethereum Foundation.",
+ "quizzes-title": "Quiz-hub",
+ "quizzes": "Quizer",
"refresh": "Last inn siden på nytt.",
"return-home": "returner hjem",
- "run-a-node": "Kjør en node",
+ "roadmap": "Ethereum-veikart",
+ "research": "Forskning",
+ "research-menu": "Forskning-menyen",
+ "resources": "Oversettelsesressurser",
+ "run-a-node": "Kjøre en node",
"rollup-component-website": "Nettsted",
"rollup-component-developer-docs": "Dokumenter for utviklere",
"rollup-component-technology-and-risk-summary": "Teknologi- og risikosammendrag",
+ "scaling": "Skalering",
+ "saas": "Staking som en tjeneste",
"search": "Søk",
+ "search-ethereum-org": "Søk på ethereum.org",
+ "secret-leader-election": "Hemmelig valg av leder",
"search-box-blank-state-text": "Søk i vei!",
"search-eth-address": "Dette ser ut som en Ethereum adresse. Vi oppgir ikke data som er spesifikke for adresser. Prøv å søke på en blokkjedeutforsker som",
"search-no-results": "Ingen resultater for søket ditt",
+ "security": "Sikkerhet",
+ "single-slot-finality": "Enkeltsporsavslutning",
+ "statelessness": "Statelesshet",
"see-contributors": "Vis bidragsytere",
"set-up-local-env": "Sett opp lokalt miljø",
"sharding": "Sharding",
@@ -124,10 +286,9 @@
"smart-contracts": "Smarte kontrakter",
"stablecoins": "Stablecoins",
"staking": "Staking",
+ "start-here": "Start her",
"solo": "Solo-staking",
- "saas": "Staking som en tjeneste",
- "pools": "Samlet staking",
- "withdrawals": "Staking uttak",
+ "support": "Brukerstøtte",
"terms-of-use": "Vilkår for bruk",
"translation-banner-body-new": "Du ser på denne siden på engelsk fordi vi ikke har oversatt den ennå. Hjelp oss å oversette dette innholdet.",
"translation-banner-body-update": "Det finnes en ny versjon av denne siden, men den er bare på engelsk akkurat nå. Hjelp oss å oversette den nyeste versjonen.",
@@ -138,24 +299,23 @@
"translation-banner-no-bugs-title": "Ingen feil her!",
"translation-banner-no-bugs-content": "Denne siden oversettes ikke. Vi har med hensikt latt denne siden stå på engelsk så lenge.",
"translation-banner-no-bugs-dont-show-again": "Ikke vis igjen",
+ "translation-program": "Oversettelsesprogram",
"try-using-search": "Prøv å bruke søk for å finne det du leter etter eller",
"tutorials": "Veiledninger",
+ "up": "Opp",
+ "use": "Bruk",
"use-ethereum": "Bruke Ethereum",
"use-ethereum-menu": "Bruke Ethereum-meny",
- "wallets": "Lommebøker",
+ "use-menu": "Bruk-menyen",
+ "verkle-trees": "Verkle-trær",
+ "wallets": "Lommebok",
"we-couldnt-find-that-page": "Vi fant ikke den siden",
"web3": "Hva er Web3?",
"web3-title": "Web3",
"website-last-updated": "Nettsiden ble sist oppdatert",
"what-is-ether": "Hva er ether (ETH)?",
"what-is-ethereum": "Hva er Ethereum?",
- "defi-page": "Desentralisert finans (DeFi)",
- "dao-page": "Desentraliserte egenstyrte organisasjoner (DAO)",
- "nft-page": "Ikke-ombyttelige tokener (NFT)",
- "decentralized-social-networks": "Desentraliserte sosiale nettverk",
- "decentralized-identity": "Desentralisert identitet",
+ "withdrawals": "Staking uttak",
"yes": "Ja",
- "zero-knowledge-proofs": "Null-kunnskap bevis",
- "page-index-meta-title": "Hjem",
- "page-developers-aria-label": "Utviklermeny"
+ "zero-knowledge-proofs": "Null-kunnskap bevis"
}
diff --git a/src/intl/nb/page-languages.json b/src/intl/nb/page-languages.json
index ac07806a609..f2bbead3fe8 100644
--- a/src/intl/nb/page-languages.json
+++ b/src/intl/nb/page-languages.json
@@ -1,8 +1,26 @@
{
+ "page-languages-h1": "Støtte for språk",
+ "page-languages-interested": "Er du interessert i å bidra?",
+ "page-languages-learn-more": "Les mer om vårt oversettelsesprogram",
+ "page-languages-meta-title": "ethereum.org språkoversettelser",
+ "page-languages-translations-available": "ethereum.org er tilgjengelig på følgende språk",
+ "page-languages-resources-paragraph": "I tillegg til å oversette ethereum.org innhold, vedlikeholder vi også en",
+ "page-languages-want-more-header": "Ønsker du å se ethereum.org på et annet språk?",
+ "page-languages-want-more-link": "Oversettelseprogram",
+ "page-languages-want-more-paragraph": "ethereum.org-oversettere oversetter alltid sider på så mange språk som mulig. For å se hva de jobber med akkurat nå eller for å registrere deg for å bli med dem, les om vår",
+ "page-languages-filter-label": "Filtrer liste",
+ "page-languages-filter-placeholder": "Skriv for å filtrere",
+ "page-languages-browser-default": "Standard nettleser",
+ "page-languages-translated": "oversatt",
+ "page-languages-words": "ord",
+ "page-languages-recruit-community": "Hjelp oss med å oversette ethereum.org.",
+ "langauge-am": "Amharisk",
"language-ar": "Arabisk",
"language-az": "Aserbajdsjansk",
+ "langauge-be": "Hviterussisk",
"language-bg": "Bulgarsk",
"language-bn": "Bengalsk",
+ "language-bs": "Bosnisk",
"language-ca": "Katalansk",
"language-cs": "Tjekkisk",
"language-da": "Dansk",
@@ -15,9 +33,11 @@
"language-fr": "Fransk",
"language-gl": "Galisisk",
"language-gu": "Gujarati",
+ "language-he": "Hebraisk",
"language-hi": "Hindi",
"language-hr": "Kroatisk",
"language-hu": "Ungarsk",
+ "language-hy-am": "Armensk",
"language-id": "Indonesisk",
"language-ig": "Igbo",
"language-it": "Italiensk",
@@ -25,13 +45,16 @@
"language-ka": "Georgisk",
"language-kk": "Kasakhisk",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Koreansk",
"language-lt": "Litauisk",
"language-ml": "Malayalam",
"language-mr": "Maratii",
"language-ms": "Malaysisk",
"language-nb": "Norsk",
+ "language-ne-np": "Nepali",
"language-nl": "Nederlandsk",
+ "language-pcm": "Nigerianske Pidgin",
"language-fil": "Filippinsk",
"language-pl": "Polsk",
"language-pt": "Portugisisk",
@@ -43,9 +66,13 @@
"language-sl": "Slovensk",
"language-sr": "Serbisk",
"language-sw": "Swahili",
+ "language-ta": "Tamil",
"language-th": "Thai",
+ "language-tk": "Turkmensk",
"language-tr": "Tyrkisk",
"language-uk": "Ukrainsk",
+ "language-ur": "Urdu",
+ "language-uz": "Usbekisk",
"language-vi": "Vietnamesisk",
"language-zh": "Kinesisk (forenklet)",
"language-zh-tw": "Kinesisk (tradisjonell)"
diff --git a/src/intl/nb/page-stablecoins.json b/src/intl/nb/page-stablecoins.json
index 04e32e9a706..908c99b6037 100644
--- a/src/intl/nb/page-stablecoins.json
+++ b/src/intl/nb/page-stablecoins.json
@@ -10,5 +10,6 @@
"makerdao-logo": "MakerDao-logo",
"matcha-logo": "Matcha-logo",
"oasis-logo": "Oasis-logo",
- "uniswap-logo": "Uniswap-logo"
+ "uniswap-logo": "Uniswap-logo",
+ "page-stablecoins-category-dashboard-and-education": "Dashbord og utdanning"
}
diff --git a/src/intl/ne-np/common.json b/src/intl/ne-np/common.json
index 6e38c282f7b..46d2fe308d3 100644
--- a/src/intl/ne-np/common.json
+++ b/src/intl/ne-np/common.json
@@ -1,17 +1,27 @@
{
- "account-abstraction": "खाता अमूर्तता",
"about-ethereum-org": "ethereum.org को बारेमा",
"about-us": "हाम्रो बारेमा",
+ "adding-desci-projects": "डेस्की(Desci) परियोजनाहरू थप्दै",
+ "adding-developer-tools": "निर्माता उपकरणहरू थप्दै",
+ "adding-exchanges": "आदानप्रदानहरू थप्दै",
+ "adding-glossary-terms": "शब्दावली सर्तहरू थप्दै",
+ "adding-staking-products": "स्टेकिङ उत्पादनहरू थप्दै",
+ "adding-wallets": "वालेटहरू थप्दै",
+ "account-abstraction": "खाता अमूर्तता",
"aria-toggle-search-button": "खोज बटन टगल गर्नुहोस्",
"aria-toggle-menu-button": "मेनु बटन टगल गर्नुहोस्",
"beacon-chain": "बीकन चेन",
"bridges": "ब्लकचेन ब्रिज",
+ "build": "निर्माण",
+ "build-menu": "निर्माण मेनु",
"clear": "खाली गर्नुहोस्",
"close": "बन्द गर्नुहोस्",
"community": "समुदाय",
"community-hub": "सामुदायिक केन्द्र",
"community-menu": "समुदाय मेनु",
"contact": "सम्पर्क गर्नुहोस्",
+ "content-buckets": "विषयवस्तु बाल्टी",
+ "content-resources": "विषयवस्तुका स्रोतहरू",
"content-standardization": "विषयवस्तु मानकीकरण",
"contributing": "योगदान गर्दै",
"contributors": "योगदानकर्ताहरू",
@@ -20,14 +30,17 @@
"copied": "प्रतिलिपि गरिएको",
"copy": "प्रतिलिपि बनाउनुहोस्",
"danksharding": "डैंकसार्डिङ",
- "dao-page": "विकेन्द्रीकृत स्वायत्त संस्थाहरू (DAOs)",
+ "dao-page": "DAOs - विकेन्द्रीकृत स्वायत्त संस्थाहरू",
"dark-mode": "अँध्यारो",
"data-provided-by": "डाटाको स्रोत:",
- "decentralized-applications-dapps": "विकेन्द्रीकृत एप्पहरू (dapps)",
+ "decentralized-applications-dapps": "Dapps - विकेन्द्रीकृत एप्पहरू",
"decentralized-identity": "विकेन्द्रीकृत पहिचान",
"decentralized-social-networks": "विकेन्द्रीकृत सामाजिक सञ्जाल",
- "decentralized-science": "विकेन्द्रीकृत विज्ञान (DeSci)",
- "defi-page": "विकेन्द्रीकृत वित्त (DeFi)",
+ "decentralized-science": "DeSci - विकेन्द्रीकृत विज्ञान",
+ "description": "न्याभ सामग्रीको विवरण",
+ "defi-page": "DeFi - विकेन्द्रीकृत वित्त",
+ "design": "डिजाइन",
+ "design-principles": "डिजाइनका सिद्धान्तहरू",
"devcon": "डेवकन",
"developers": "निर्माताहरु",
"developers-home": "निर्माताको गृहपृष्ठ",
@@ -51,7 +64,6 @@
"documentation": "कागजात",
"down": "तल",
"ecosystem": "इकोसिस्टम",
- "edit-page": "Edit page",
"ef-blog": "इथेरियम प्रतिष्ठान ब्लग",
"eips": "इथेरियम सुधार प्रस्तावहरू",
"energy-consumption": "इथेरियम ऊर्जा खपत",
@@ -59,11 +71,9 @@
"enterprise-menu": "उद्यम मेनु",
"esp": "इकोसिस्टम समर्थन कार्यक्रम",
"eth-current-price": "ETH को वर्तमान मूल्य (अमेरिकी डलर)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "इथेरियम बग बाउन्टी कार्यक्रम",
"consensus-when-shipping": "यो कहिले ढुवानी हुदैछ?",
"ethereum-upgrades": "इथेरियम अपग्रेडहरू",
- "ethereum-brand-assets": "Ethereum brand assets",
"ethereum-online": "अनलाइन समुदायहरू",
"ethereum-events": "इथरियम कार्यक्रमहरू",
"ethereum-foundation": "इथेरियम प्रतिष्ठान",
@@ -75,7 +85,6 @@
"ethereum-protocol": "इथेरियम प्रोटोकल",
"ethereum-security": "इथेरियम सुरक्षा र घोटाला रोकथाम",
"ethereum-support": "इथेरियम समर्थन",
- "ethereum-wallets": "Ethereum wallets",
"ethereum-whitepaper": "इथेरियम वाहिटपेपर",
"feedback-widget-prompt": "के यो पृष्ठ उपयोगी छ?",
"feedback-card-prompt-page": "के यो पृष्ठ उपयोगी थियो?",
@@ -83,10 +92,9 @@
"feedback-card-prompt-tutorial": "के यो ट्यूटोरियल उपयोगी थियो?",
"feedback-widget-thank-you-title": "तपाईंको प्रतिक्रियाको लागि धन्यवाद!",
"feedback-widget-thank-you-subtitle": "केहि प्रश्नहरूका जवाफ दिएर यो पृष्ठ अझ राम्रो बनाउनुहोस्।",
- "feedback-widget-thank-you-subtitle-ext": "तपाईंलाई मद्दत चाहिन्छ भने, तपाईंले हाम्रो डिस्कर्ड समुदायमा सम्पर्क गर्न सक्नुहुन्छ।",
+ "feedback-widget-thank-you-subtitle-ext": "तपाईंलाई मद्दत चाहिन्छ भने, तपाईं हाम्रो कलह समुदायलाई सम्पर्क गर्न सक्नुहुन्छ।",
"feedback-widget-thank-you-timing": "२-३ मिनेट",
"feedback-widget-thank-you-cta": "छोटो सर्वेक्षण खोल्नुहोस्",
- "find-wallet": "Find wallet",
"future-proofing": "भविष्यका लागि सुरक्षित गर्दै",
"get-eth": "ETH प्राप्त गर्नुहोस्",
"get-involved": "संलग्न हुनुहोस्",
@@ -94,11 +102,10 @@
"grants": "अनुदान",
"grant-programs": "इकोसिस्टम अनुदान कार्यक्रम",
"guides": "मार्गदर्शनहरू",
- "guides-hub": "मार्गदर्शनहरूका केन्द्र",
+ "guides-hub": "कसरी मार्गदर्शन गर्ने",
"history-of-ethereum": "इथेरियमको इतिहास",
"home": "गृहपृष्ठ",
"how-ethereum-works": "इथेरियमले कसरी काम गर्छ",
- "how-to-register-an-ethereum-account": "इथेरियम खाता कसरी \"दर्ता गर्ने\"",
"how-to-revoke-token-access": "स्मार्ट सम्झौताको क्रिप्टो कोषमा पहुँच कसरी रद्द गर्ने",
"how-to-swap-tokens": "टोकनहरू कसरी साटासाट गर्ने",
"how-to-use-a-bridge": "टोकनहरुलाई तह २ मा कसरी ब्रिज गर्ने",
@@ -115,11 +122,9 @@
"last-edit": "पछिल्लो सम्पादन",
"layer-2": "तह २",
"learn": "सिक्नुहोस्",
- "learn-by-coding": "Learn by coding",
"learn-hub": "सिक्ने केन्द्र",
"learn-menu": "सिक्ने मेनु",
"learn-more": "थप जान्नुहोस्",
- "less": "Less",
"light-mode": "उज्यालो",
"listing-policy-disclaimer": "यस पृष्ठमा सूचीबद्ध कुनैपनि उत्पादनहरू आधिकारिक अनुमोदन होइनन् र केवल सूचना उद्देश्यका लागि प्रदान गरिएका हुन्। तपाईं उत्पादन थप्न वा नीतिमा प्रतिक्रिया दिन चाहनुहुन्छ भने GitHub मा मुद्दा उठाउनुहोस्।",
"loading": "लोड हुँदै...",
@@ -128,11 +133,101 @@
"loading-error-try-again-later": "डाटा लोड गर्न असमर्थ। केहि समय पछि पुन: प्रयास गर्नुहोस्।",
"logo": "लोगो",
"mainnet-ethereum": "इथेरियमको मुख्य नेटवर्क",
- "more": "More",
- "nav-developers": "निर्माताहरु",
+ "merge": "एउटैमा मिलाउनु",
+ "nav-about-description": "इथेरियम समुदायको लागि एउटा सार्वजनिक, ओपन-सोर्स परियोजना",
+ "nav-advanced-description": "जटिल विषयहरू बारे जान्नुहोस्",
+ "nav-basics-description": "इथेरियमको आधारभूत कुराहरू बुझ्नुहोस्",
+ "nav-basics-label": "आधारभूत कुराहरू",
+ "nav-bridges-description": "Web3 को विकास एउटा त्यस्तो इकोसिस्टमको रुपमा भइसकेको छ जसमा आधारभूत L1 ब्लकचेनहरू र L2 स्केलिङ सोलुशनहरू समावेश रहेको छ",
+ "nav-builders-home-description": "इथेरियमको लागि एउटा निर्माणकर्ता म्यानुअल- निर्माणकर्ताहरूबाट निर्माणकर्ताहरूका निम्ति",
+ "nav-builders-home-label": "निर्माणकर्ता गृहपृष्ठ",
+ "nav-contribute-description": "तपाईं मद्दत गर्न चाहनुहुन्छ भने, यसले तपाईंलाई मार्गदर्शन प्रदान गर्नेछ",
+ "nav-contribute-label": "ethereum.org मा योगदान गर्दै",
+ "nav-dao-description": "केन्द्रीकृत अधिकार बिना सदस्य-स्वामित्व समुदायहरू",
+ "nav-dapps-description": "इथेरियम प्रयोग गर्ने एपहरूका एउटा प्रचुर इकोसिस्टमको अन्वेषण गर्नुहोस्",
+ "nav-defi-description": "पारम्परिक वित्तीय बजारको सट्टा एउटा विश्वव्यापी, खुला विकल्प",
+ "nav-desci-description": "वर्तमान वैज्ञानिक प्रणालीको सट्टा एउटा विश्वव्यापी, खुला विकल्प",
+ "nav-desoc-description": "सामाजिक अन्तरक्रिया र सामग्री सिर्जनाको लागि ब्लकचेन-आधारित प्लेटफर्महरू",
"nav-developers-docs": "निर्माताको कागजात",
+ "nav-developers": "निर्माताहरु",
+ "nav-did-description": "तपाईंको अद्वितीय विकेन्द्रीकृत पहिचानकर्ताहरू जारी गर्नुहोस् र स्वामित्व लिनुहोस्",
+ "nav-docs-description": "तपाईंलाई इथेरियम बुझ्न र निर्माण गर्न मद्दत गर्ने कागजातहरू",
+ "nav-docs-design-description": "विशिष्ट web3 डिजाइन चुनौतीहरू, उत्कृष्ट अभ्यासहरू र प्रयोगकर्ता अनुसन्धान अन्तर्दृष्टिहरूका विवरण",
+ "nav-docs-design-label": "UX/UI डिजाइनका आधारभूत कुराहरू",
+ "nav-docs-foundation-description": "इथेरियममा विकास गर्ने मुख्य आधारभूत कुराहरू",
+ "nav-docs-overview-description": "डेभेलपर कागजातहरूका लागि तपाईंको गृहपृष्ठ",
+ "nav-docs-stack-description": "इथेरियम स्ट्याकको सबै विवरणहरू बुझ्नुहोस्",
+ "nav-eip-description": "नयाँ विशेषताहरू वा प्रक्रियाहरू निर्दिष्ट गर्ने मानकहरू",
+ "nav-eip-label": "EIPs - इथेरियम सुधार प्रस्तावहरू",
+ "nav-emerging-description": "इथेरियमको लागि अन्य नयाँ प्रयोग मामिलाहरू बारेमा थाहा पाउनुहोस्",
+ "nav-enterprise-description": "इथेरियमको लागि व्यापारिक एप्लिकेशनहरू",
+ "nav-ethereum-org-description": "यो वेबसाइट समुदाय सञ्चालित हो—हामीसँग जोडिनुहोस् र योगदान पनि गर्नुहोस्",
+ "nav-ethereum-wallets-description": "तपाईंको इथेरियम खातासँग अन्तरक्रिया गर्नको लागि एउटा एप",
+ "nav-events-description": "विकेन्द्रीकरण र सबैलाई सहभागी हुने स्वतन्त्रता",
+ "nav-events-irl-description": "हरेक महिना प्रत्यक्ष तथा अनलाइन माध्यमबाट विशेष इथेरियम आयोजनाहरू भइरहेका हुन्छन्",
+ "nav-events-label": "समुदायहरू र आयोजनाहरू",
+ "nav-events-online-description": "यी अनलाइन समुदायहरूका अभिभावकत्व सयौँ हजारौँ इथेरियम उत्साहीहरूले लिन्छन्",
+ "nav-find-wallet-description": "तपाईंलाई क्रिप्टो प्रयोग गर्न वालेटले अनुमति दिन्छ",
+ "nav-find-wallet-label": "तपाईंको वालेट छान्नुहोस्",
+ "nav-gas-fees-description": "ETH कारोवार शुल्कहरू कसरी हिसाब गरिन्छन्",
+ "nav-get-eth-description": "इथेरियम एप्लिकेशनहरूका प्रयोग गर्न तपाईंलाई इथर (ETH) आवश्यक पर्छ",
+ "nav-get-started-description": "तपाईंले इथेरियम प्रयोग गर्ने सुरुवाती कदमहरू",
+ "nav-governance-description": "इथेरियम प्रोटोकललाई अद्यावदिक गर्ने सम्मिलित प्रक्रिया",
+ "nav-grants-description": "अनुदान कोष कार्यक्रम प्रदान गर्ने परियोजनाहरू बारेमा हाम्रो समुदायबाट क्युरेट गरिएको सूची",
+ "nav-guide-create-account-description": "कसैले पनि वालेट एपको साथ कुनै पनि समयमा निःशुल्क इथेरियम खाता सिर्जना गर्न सक्दछन्",
+ "nav-guide-revoke-access-description": "इथेरियम इकोसिस्टम भित्र स्मार्ट सम्झौताहरू र एप्लिकेशनहरूसँग अन्तरक्रिया गर्दा सुरक्षित बस्नुहोस्",
+ "nav-guide-revoke-access-label": "स्मार्ट सम्झौताको पहुँचलाई कसरी रद्द गर्ने",
+ "nav-guide-use-wallet-description": "वालेटका सबै आधारभूत कार्यहरू कसरी सञ्चालन गर्ने भनेर सिक्नुहोस्",
+ "nav-guide-use-wallet-label": "वालेट कसरी प्रयोग गर्ने",
+ "nav-guides-description": "तपाईंलाई सुरुवात गर्न मद्दत गर्नको लागि व्यवहारिक चरण-दर-चरण मार्गदर्शकहरू",
+ "nav-guides-label": "कसरी भन्ने मार्गदर्शकहरू",
+ "nav-history-description": "सबै मूख्य फोर्कहरू र अपडेटका समय रेखा",
+ "nav-history-label": "इथेरियमको प्राविधिक इतिहास",
+ "nav-layer-2-description": "इथेरियमको लागि सस्तो र छिटो कारोवारहरू",
+ "nav-learn-by-coding-description": "तपाईंलाई इथेरियमसँग प्रयोग गर्न मद्दत गर्ने उपकरणहरू",
+ "nav-local-env-description": "तपाईंको इथेरियम विकास स्ट्याकलाई छान्नुहोस् र सेट अप गर्नुहोस्",
+ "nav-mainnet-description": "व्यापार ब्लकचेन एप्लिकेशनहरू सार्वजनिक इथेरियम मेइन्नेटमा निर्माण गर्न सकिन्छ",
+ "nav-nft-description": "इथेरियम-आधारित सम्पत्तिको रूपमा कुनै पनि अद्वितीय प्रतिनिधित्व गर्ने एउटा तरिका",
+ "nav-open-research-description": "इथेरियमको एउटा मुख्य शक्ति यसको सक्रिय अनुसन्धान समुदाय हो",
+ "nav-open-research-label": "अनुसन्धान खोल्नुहोस्",
+ "nav-overview-description": "इथेरियम शिक्षाको सबै कुरा",
+ "nav-participate-overview-description": "कसरी सहभागी भन्ने बारेमा एउटा अवलोकन",
"nav-primary": "प्राथमिक",
- "nft-page": "नन-फन्जिबल टोकन (NFTs)",
+ "nav-quizzes-description": "तपाईंले इथेरियम र क्रिप्टोकरेन्सीहरू कत्तिको राम्ररी बुझ्नु भएको छ भन्ने कुरा थाहा पाउनुहोस्",
+ "nav-quizzes-label": "आफ्नो ज्ञानको परीक्षण गर्नुहोस्",
+ "nav-refi-description": "पुनरुत्पादक सिद्धान्तहरूमा आधारित वैकल्पिक आर्थिक प्रणाली",
+ "nav-research-description": "इथेरियमलाई सुधार गर्ने प्रक्रियाहरू",
+ "nav-research-label": "अनुसन्धान र विकास",
+ "nav-roadmap-description": "इथेरियमको लागि थप स्केलेबिलिटि, सुरक्षा र दीगोपनाको मार्ग",
+ "nav-roadmap-future-description": "इथेरियमलाई एउटा सुदृढ तथा विकेन्द्रीकृत सञ्जालको रुपमा ठोस बनाउने",
+ "nav-roadmap-future-label": "भविष्यका लागि सुरक्षित गर्दै",
+ "nav-roadmap-label": "मार्गचित्र",
+ "nav-roadmap-scaling-description": "कारोवार खर्चहरू र गतिलाई थप घटाउने नेटवर्क अपडेटहरू",
+ "nav-roadmap-security-description": "भविष्यमा कुनै पनि किसिमको हमला विरुद्ध इथेरियम सबल रहेको कुरा सुनिश्चित गर्ने",
+ "nav-roadmap-security-label": "सुधारिएको सुरक्षा",
+ "nav-roadmap-ux-description": "इथेरियमको प्रयोगलाई सरल गर्नु आवश्यक रहेको छ",
+ "nav-run-a-node-description": "नेटवर्कलाई सुरक्षित बनाउन मद्दत गर्दै पूर्ण रुपमा सार्वभौम बन्ने",
+ "nav-security-description": "क्रिप्टोकरेन्सी प्रयोग गर्दा उत्कृष्ट अभ्यासहरू सिक्नुहोस्",
+ "nav-smart-contracts-description": "इथेरियम इकोसिस्टमका प्राथमिक निर्माण ब्कलहरू",
+ "nav-stablecoins-description": "स्टेबलकोइनहरू त्यस्ता इथेरियम टोकनहरू हुन् जसलाई स्थिर मूल्यमा रहनको लागि डिजाइन गरिएको छ",
+ "nav-stake-description": "इथेरियमलाई सुरक्षित बनाउँदा पुरस्कार कमाउनुहोस्",
+ "nav-stake-label": "स्टेक",
+ "nav-staking-home-description": "स्टेकिङ गर्नको लागि विभिन्न विकल्पहरूको एक अवलोकन",
+ "nav-staking-pool-description": "अरूहरूसँग सम्मिलित भएर कुनै पनि मात्राको ETHबाट स्टेक गर्नुहोस् र पुरस्कार कमाउनुहोस्",
+ "nav-staking-pool-label": "जम्मा गरिएको स्टेकिंग",
+ "nav-staking-saas-label": "एउटा सेवासँग स्ट्याकिङ गर्दै",
+ "nav-staking-solo-label": "एकल स्टेकिंग",
+ "nav-start-building-description": "नवागन्तुकहरूका लागि उपयोगी जानकारी",
+ "nav-translation-program-description": "सबै भाषाहरूमा ethereum.org लाई अनुवाद गर्ने एउटा सहकार्यात्मक प्रयास",
+ "nav-tutorials-description": "सामुदायिक ट्युटोरियलहरूका क्युरेट गरिएको सूची",
+ "nav-use-cases-description": "इथेरियम प्रयोगको लागि विभिन्न विचारहरू",
+ "nav-what-is-ether-description": "इथेरियम एपहरूका मुद्रा",
+ "nav-what-is-ethereum-description": "इथेरियमलाई के कुराले विशेष बनाउँछ भन्ने कुरा बुझ्नुहोस्",
+ "nav-what-is-web3-label": "Web3 के हो?",
+ "nav-what-is-web3-description": "नियमहरू निर्देशन गर्ने केन्द्रीकृत एकाधिकारहरूका एउटा विकल्प",
+ "nav-whitepaper-description": "सबैभन्दा पहिलो इथेरियम स्वेतपत्रलाई भिटालिक बुटेरिनले 2014मा लेखेका हुन्",
+ "nav-zkp-description": "बयानलाई खुलासा नगरिकन त्यस बयानको वैधतालाई प्रमाणित गर्ने एउटा तरिका",
+ "nft-page": "NFTs - नन-फन्जिबल टोकन",
"nfts": "NFTs",
"no": "होइन",
"on-this-page": "यस पृष्ठमा",
@@ -140,6 +235,7 @@
"page-developers-aria-label": "निर्माताको मेनु",
"page-index-meta-title": "गृहपृष्ठ",
"page-last-updated": "पृष्ठ अन्तिम पटक अद्यावधिक गरिएको",
+ "participate-menu": "सहभागी मेनु",
"pbs": "प्रस्तावक-निर्माता विभाजन",
"pools": "जम्मा गरिएको स्टेकिंग",
"privacy-policy": "गोपनीयता नीति",
@@ -150,13 +246,11 @@
"refresh": "कृपया पृष्ठलाई रिफ्रेस गर्नुहोस।",
"return-home": "गृहपृष्ठमा फर्कनुहोस",
"roadmap": "इथेरियम रोडम्याप",
+ "research": "अनुसन्धान",
+ "research-menu": "अनुसन्धान मेनु",
"resources": "अनुवादका स्रोतहरू",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Run a node",
- "rollup-component-website": "Website",
"rollup-component-developer-docs": "निर्माताको कागजात",
"rollup-component-technology-and-risk-summary": "प्रविधि र जोखिमको सारांश",
- "scaling": "Scaling",
"saas": "सेवाको रूपमा स्टेकिंग",
"search": "खोज्नुहोस्",
"search-ethereum-org": "ethereum.orgमा खोज्नुहोस्",
@@ -167,19 +261,12 @@
"single-slot-finality": "एकल-स्लट फाइनालिटि",
"statelessness": "स्तिथिविहीनता",
"see-contributors": "योगदानकर्ताहरु हेर्नुहोस्",
- "set-up-local-env": "Set up local environment",
- "sharding": "Sharding",
"show-all": "सबै देखाउनुहोस",
"show-less": "कम देखाउनुहोस",
"site-description": "ईथेरियम एक विश्वव्यापी, विकेन्द्रित प्लेटफर्म हो जुन वित्तिय तथा अन्य प्रयोगका लागि बनाइएको हो। ईथेरियममा तपाईंले विश्वभरबाट पहुँच हुने पैसा नियन्त्रण गर्ने कोड लेख्न र एप्पहरु बनाउन सक्नुहुनेछ।",
- "site-title": "ethereum.org",
"skip-to-main-content": "सिधै मुख्य विषयवस्तुमा जानुहोस्",
- "smart-contracts": "Smart contracts",
- "stablecoins": "Stablecoins",
- "stake-eth": "Stake ETH",
"staking": "स्टेकिंग",
"start-here": "यहाँबाट सुरु गर्नुहोस्",
- "style-guide": "Style guide",
"solo": "एकल स्टेकिंग",
"terms-of-use": "उपयोगका सर्तहरु",
"translation-banner-body-new": "तपाईंले यो पृष्ठ अंग्रेजीमा हेर्दै हुनुहुन्छ किनभने हामीले यसलाई अझै अनुवाद गरेका छैनौं। हामीलाई यो विषयवस्तु अनुवाद गर्न सहयोग गर्नुहोस्।",
@@ -191,19 +278,19 @@
"translation-banner-no-bugs-title": "यहाँ कुनै बगहरू छैनन्!",
"translation-banner-no-bugs-content": "यो पृष्ठ अनुवाद भइरहेको छैन। हामीले जानाजानी यो पृष्ठ अहिलेको लागि अंग्रेजीमा छोडेका छौं।",
"translation-banner-no-bugs-dont-show-again": "फेरि नदेखाउनुहोस्",
+ "translation-program": "अनुवाद कार्यक्रम",
"try-using-search": "तपाईंले जुन चिज खोजिरहनु भएको छ, त्यसकोलागि खोज्नको प्रयोग गर्ने प्रयास गर्नुहोस् वा",
"tutorials": "ट्यूटोरियलहरू",
"up": "माथि",
+ "use": "प्रयोग",
"use-ethereum": "इथेरियम प्रयोग गर्नुहोस",
"use-ethereum-menu": "इथेरियम मेनु प्रयोग गर्नुहोस",
- "user-experience": "User experience",
+ "use-menu": "प्रयोग मेनु",
"verkle-trees": "भर्कल ट्रिहरु",
"wallets": "वालेटहरु",
"we-couldnt-find-that-page": "हामीले त्यो पृष्ठ फेला पार्न सकेनौं",
"web3": "Web3 के हो?",
- "web3-title": "Web3",
"website-last-updated": "वेबसाइट अन्तिम पटक अद्यावधिक गरिएको",
- "what-is-ether": "What is ether (ETH)?",
"what-is-ethereum": "इथरियम के हो?",
"withdrawals": "स्टेकिंग निकासी",
"yes": "हो",
diff --git a/src/intl/ne-np/page-languages.json b/src/intl/ne-np/page-languages.json
new file mode 100644
index 00000000000..1e3c6d7daae
--- /dev/null
+++ b/src/intl/ne-np/page-languages.json
@@ -0,0 +1,8 @@
+{
+ "page-languages-filter-label": "फिल्टर सूची",
+ "page-languages-filter-placeholder": "फिल्टर गर्न टाइप गर्नुहोस्",
+ "page-languages-browser-default": "ब्राउजर डिफल्ट",
+ "page-languages-translated": "अनुवाद गरिएको",
+ "page-languages-words": "शब्दहरू",
+ "page-languages-recruit-community": "हामीलाई ethereum.org अनुवाद गर्न मद्दत गर्नुहोस्।"
+}
diff --git a/src/intl/nl/common.json b/src/intl/nl/common.json
index 338be03ed4d..2642fb818e6 100644
--- a/src/intl/nl/common.json
+++ b/src/intl/nl/common.json
@@ -1,17 +1,28 @@
{
- "account-abstraction": "Accountabstractie",
"about-ethereum-org": "Over ethereum.org",
"about-us": "Over ons",
+ "adding-desci-projects": "Desci-projecten toevoegen",
+ "adding-developer-tools": "Tools voor ontwikkelaars toevoegen",
+ "adding-exchanges": "Uitwisselingskantoor toevoegen",
+ "adding-glossary-terms": "Nieuwe woorden toevoegen",
+ "adding-products": "Producten toevoegen",
+ "adding-staking-products": "Staking-producten toevoegen",
+ "adding-wallets": "Portemonnees toevoegen",
+ "account-abstraction": "Accountabstractie",
+ "acknowledgements": "Erkenningen",
"aria-toggle-search-button": "Toon/verberg zoekknop",
"aria-toggle-menu-button": "Toon/verberg menuknop",
"beacon-chain": "Beacon Chain",
"bridges": "Blockchain-bruggen",
+ "build": "Bouwen",
+ "build-menu": "Bouwmenu",
"clear": "Wissen",
"close": "Sluiten",
"community": "Community",
"community-hub": "Community hub",
"community-menu": "Community-menu",
"contact": "Contact",
+ "content-resources": "Inhoudelijke bronnen",
"content-standardization": "Inhoudsstandaardisering",
"contributing": "Bijdragen",
"contributors": "Bijdragers",
@@ -20,14 +31,17 @@
"copied": "Gekopieerd",
"copy": "Kopiëren",
"danksharding": "Danksharding",
- "dao-page": "Gedecentraliseerde autonome organisaties (DAO's)",
+ "dao-page": "DAO's - Gedecentraliseerde autonome organisaties",
"dark-mode": "Donker",
"data-provided-by": "Gegevensbron:",
- "decentralized-applications-dapps": "Gedecentraliseerde toepassingen (dapps)",
+ "decentralized-applications-dapps": "Dapps - Gedecentraliseerde toepassingen",
"decentralized-identity": "Gedecentraliseerde identiteit",
"decentralized-social-networks": "Gedecentraliseerde sociale netwerken",
- "decentralized-science": "Gedecentraliseerde wetenschap (DeSci)",
- "defi-page": "Gedecentraliseerde financiën (DeFi)",
+ "decentralized-science": "DeSci - Gedecentraliseerde wetenschap",
+ "description": "Beschrijving voor nav.item",
+ "defi-page": "DeFi - Gedecentraliseerde financiën",
+ "design": "Ontwerp",
+ "design-principles": "Ontwerpprincipes",
"devcon": "Devcon",
"developers": "Ontwikkelaars",
"developers-home": "Startpagina voor ontwikkelaars",
@@ -51,7 +65,7 @@
"documentation": "Documentatie",
"down": "Naar beneden",
"ecosystem": "Ecosysteem",
- "edit-page": "Pagina bewerken",
+ "edit-page": "Bewerk pagina",
"ef-blog": "Ethereum Foundation-blog",
"eips": "Voorstellen voor verbetering van Ethereum",
"energy-consumption": "Ethereum-energieverbruik",
@@ -63,7 +77,7 @@
"ethereum-bug-bounty": "Ethereum bug bounty-programma",
"consensus-when-shipping": "Wanneer wordt het verstuurd?",
"ethereum-upgrades": "Ethereum-upgrades",
- "ethereum-brand-assets": "Ethereum-merkcontent",
+ "ethereum-brand-assets": "Merkactiva van Ethereum",
"ethereum-online": "Online gemeenschappen",
"ethereum-events": "Ethereum-evenementen",
"ethereum-foundation": "Ethereum Foundation",
@@ -75,7 +89,7 @@
"ethereum-protocol": "Ethereum-protocol",
"ethereum-security": "Ethereum-beveiliging en -scampreventie",
"ethereum-support": "Ethereum-ondersteuning",
- "ethereum-wallets": "Ethereum Wallets",
+ "ethereum-wallets": "Ethereum wallets",
"ethereum-whitepaper": "Ethereum-whitepaper",
"feedback-widget-prompt": "Vond u deze pagina nuttig?",
"feedback-card-prompt-page": "Was deze pagina behulpzaam?",
@@ -83,22 +97,22 @@
"feedback-card-prompt-tutorial": "Was deze tutorial nuttig?",
"feedback-widget-thank-you-title": "Bedankt voor je feedback!",
"feedback-widget-thank-you-subtitle": "Maak deze pagina nog beter door enkele vragen te beantwoorden.",
- "feedback-widget-thank-you-subtitle-ext": "Als u hulp nodig heeft, kunt u contact opnemen met de community op ons Discord-kanaal.",
+ "feedback-widget-thank-you-subtitle-ext": "Als je hulp nodig hebt, kun je contact opnemen met de gemeenschap op onze Discord.",
"feedback-widget-thank-you-timing": "2-3 minuten",
"feedback-widget-thank-you-cta": "Open korte enquête",
- "find-wallet": "Zoek wallet",
+ "find-wallet": "Zoek een wallet",
"future-proofing": "Toekomstbestendigheid",
- "get-eth": "ETH verkrijgen",
+ "get-eth": "Verkrijg ETH",
"get-involved": "Help mee",
"get-started": "Aan de slag",
"grants": "Subsidies",
"grant-programs": "Ecosysteem-subsidieprogramma's",
"guides": "Gidsen",
- "guides-hub": "Hub voor handleidingen",
+ "guides-hub": "Handleidingen",
"history-of-ethereum": "Geschiedenis van Ethereum",
"home": "Home",
"how-ethereum-works": "Hoe Ethereum werkt",
- "how-to-register-an-ethereum-account": "Hoe een Ethereum-account registreren",
+ "how-to-create-an-ethereum-account": "Hoe een Ethereum-account \"creëren\"",
"how-to-revoke-token-access": "Hoe toegang via slimme contracten tot uw cryptofondsen herroepen",
"how-to-swap-tokens": "Hoe tokens wisselen",
"how-to-use-a-bridge": "Hoe tokens naar laag 2 bridgen",
@@ -115,7 +129,7 @@
"last-edit": "Laatst bewerkt",
"layer-2": "Laag 2",
"learn": "Info",
- "learn-by-coding": "Leer door coderen",
+ "learn-by-coding": "Leer door te coderen",
"learn-hub": "Hub leren",
"learn-menu": "Leer menu",
"learn-more": "Meer informatie",
@@ -128,18 +142,121 @@
"loading-error-try-again-later": "Kan gegevens niet laden. Probeer het later nog eens.",
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Samenvoegen",
"more": "Meer",
- "nav-developers": "Ontwikkelaars",
+ "nav-about-description": "Een openbaar, open-source project voor de Ethereum-gemeenschap",
+ "nav-advanced-description": "Leer de complexere onderwerpen",
+ "nav-advanced-label": "Geavanceerd",
+ "nav-basics-description": "Begrijp de fundamenten van Ethereum",
+ "nav-basics-label": "Basisbeginselen",
+ "nav-bridges-description": "Web3 is geëvolueerd naar een ecosysteem van primaire L1-blockchains en L2-schaaloplossingen",
+ "nav-builders-home-description": "Een bouwhandleiding voor Ethereum – door bouwers, voor bouwers",
+ "nav-builders-home-label": "Startpagina bouwers",
+ "nav-contribute-description": "Als je wilt helpen, zal dit je leidraad zijn",
+ "nav-contribute-label": "Bijdragen aan ethereum.org",
+ "nav-dao-description": "Gemeenschappen die eigendom zijn van leden, zonder gecentraliseerd gezag",
+ "nav-dapps-description": "Ontdek een rijk ecosysteem van apps met behulp van Ethereum",
+ "nav-defi-description": "Een wereldwijd, open alternatief voor de traditionele financiële markt",
+ "nav-desci-description": "Een wereldwijd, open alternatief voor het huidige wetenschappelijke systeem",
+ "nav-desoc-description": "Op blockchain gebaseerde platforms voor sociale interactie en contentcreatie",
"nav-developers-docs": "Ontwikkelaarsdocumenten",
+ "nav-developers": "Ontwikkelaars",
+ "nav-did-description": "Geef je unieke gedecentraliseerde identifiers uit en beheer deze",
+ "nav-docs-description": "Documenten om je te helpen Ethereum te begrijpen en ermee te bouwen",
+ "nav-docs-design-description": "Beschrijving van unieke uitdagingen op het gebied van web3-ontwerp, best practices en inzichten uit gebruikersonderzoeken",
+ "nav-docs-design-label": "Basisbeginselen voor UX/UI-ontwerp",
+ "nav-docs-foundation-description": "Kernfundamenten om te ontwikkelen op Ethereum",
+ "nav-docs-foundation-label": "Fundamentele onderwerpen",
+ "nav-docs-overview-description": "Je thuisbasis voor ontwikkelaarsdocumenten",
+ "nav-docs-stack-description": "Begrijp alle details van de Ethereum stack",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Normen die nieuwe functies of processen specificeren",
+ "nav-eip-label": "EIP's - Ethereum-verbeteringsvoorstellen",
+ "nav-emerging-description": "Maak kennis met andere nieuwere gebruiksscenario's voor Ethereum",
+ "nav-enterprise-description": "Zakelijke toepassingen voor Ethereum",
+ "nav-ethereum-org-description": "Deze website wordt door de gemeenschap aangestuurd — doe mee en draag ook bij",
+ "nav-ethereum-wallets-description": "Een app om te communiceren met je Ethereum-account",
+ "nav-events-description": "Decentralisatie en vrijheid om te participeren voor iedereen",
+ "nav-events-irl-description": "Elke maand zijn er grote Ethereum-evenementen, zowel persoonlijk als online",
+ "nav-events-label": "Gemeenschappen en evenementen",
+ "nav-events-online-description": "Honderdduizenden Ethereum-enthousiastelingen zijn actief in deze online gemeenschappen",
+ "nav-find-wallet-description": "Met portemonnees kun je crypto gebruiken",
+ "nav-find-wallet-label": "Kies je portemonnee",
+ "nav-gas-fees-description": "Hoe worden ETH-transactiekosten berekend",
+ "nav-gas-fees-label": "Gas kosten",
+ "nav-get-eth-description": "Je hebt ether (ETH) nodig om Ethereum-applicaties te gebruiken",
+ "nav-get-started-description": "Je eerste stappen om Ethereum te gebruiken",
+ "nav-governance-description": "Het proces dat betrokken is bij het upgraden van het Ethereum-protocol",
+ "nav-governance-label": "Bestuur",
+ "nav-grants-description": "Een door onze gemeenschap samengestelde lijst met projecten die subsidieprogramma's aanbieden",
+ "nav-guide-create-account-description": "Iedereen kan op elk moment gratis een Ethereum-account aanmaken met een portemonnee-app",
+ "nav-guide-create-account-label": "Een Ethereum-account maken",
+ "nav-guide-revoke-access-description": "Blijf veilig tijdens de interactie met slimme contracten en applicaties in het Ethereum-ecosysteem",
+ "nav-guide-revoke-access-label": "Hoe je de toegang tot slimme contracten kunt intrekken",
+ "nav-guide-use-wallet-description": "Leer hoe je alle basisfuncties van een portemonnee gebruikt",
+ "nav-guide-use-wallet-label": "Hoe een wallet gebruiken",
+ "nav-guides-description": "Praktische stap-voor-stap handleidingen om je op weg te helpen",
+ "nav-guides-label": "Handleidingen",
+ "nav-history-description": "Een tijdlijn van alle belangrijke vorken en updates",
+ "nav-history-label": "Technische geschiedenis van Ethereum",
+ "nav-layer-2-description": "Goedkopere en snellere transacties voor Ethereum",
+ "nav-learn-by-coding-description": "Tools die je helpen met Ethereum te experimenteren",
+ "nav-local-env-description": "Kies en configureer je Ethereum-ontwikkelstack",
+ "nav-mainnet-description": "Enterprise blockchain-applicaties kunnen worden gebouwd op het openbare Ethereum Mainnet",
+ "nav-nft-description": "Een manier om iets unieks te vertegenwoordigen als een op Ethereum gebaseerd activum",
+ "nav-open-research-description": "Een van de belangrijkste sterke punten van Ethereum is de actieve onderzoeksgemeenschap",
+ "nav-open-research-label": "Onderzoek openen",
+ "nav-overview-description": "Alles wat met Ethereum-voorlichting te maken heeft",
+ "nav-overview-label": "Overzicht",
+ "nav-participate-overview-description": "Overzicht van hoe je kunt deelnemen",
"nav-primary": "Primair",
- "nft-page": "Niet-vervangbare tokens (NFT's)",
+ "nav-quizzes-description": "Ontdek hoe goed je Ethereum en cryptocurrencies begrijpt",
+ "nav-quizzes-label": "Test je kennis",
+ "nav-refi-description": "Een alternatief economisch systeem dat voortbouwt op regeneratieve principes",
+ "nav-research-description": "Processen die gebruikt worden om Ethereum te verbeteren",
+ "nav-research-label": "Onderzoek en ontwikkeling",
+ "nav-roadmap-description": "Het traject naar meer schaalbaarheid, veiligheid en duurzaamheid voor Ethereum",
+ "nav-roadmap-future-description": "Ethereum versterken als een robuust en gedecentraliseerd netwerk",
+ "nav-roadmap-future-label": "Toekomstbestendigheid",
+ "nav-roadmap-label": "Routekaart",
+ "nav-roadmap-scaling-description": "Netwerkupdates om de transactiekosten en snelheid verder te verlagen",
+ "nav-roadmap-security-description": "Ervoor zorgen dat Ethereum ook in de toekomst bestand blijft tegen allerlei soorten aanvallen",
+ "nav-roadmap-security-label": "Verbeterde beveiliging",
+ "nav-roadmap-ux-description": "Het gebruik van Ethereum moet worden vereenvoudigd",
+ "nav-run-a-node-description": "Word volledig soeverein en help tegelijkertijd het netwerk te beveiligen",
+ "nav-security-description": "Leer best practices bij het gebruik van cryptocurrency",
+ "nav-smart-contracts-description": "De fundamentele bouwstenen van het Ethereum-ecosysteem",
+ "nav-stablecoins-description": "Stablecoins zijn Ethereum-tokens die zijn ontworpen om een vaste waarde te behouden",
+ "nav-stake-description": "Verdien beloningen voor het veiligstellen van Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "Een overzicht van verschillende opties voor staking",
+ "nav-staking-home-label": "Staking-startpagina",
+ "nav-staking-pool-description": "Stake en verdien beloningen met elk willekeurig ETH-bedrag door samen te werken met anderen",
+ "nav-staking-pool-label": "Gepoolde staking",
+ "nav-staking-saas-description": "Node operators van derden beheren de werking van uw validator-client",
+ "nav-staking-saas-label": "Staking met een service",
+ "nav-staking-solo-description": "Voer home-hardware uit en voeg persoonlijk toe aan de beveiliging en decentralisatie van het Ethereum-netwerk",
+ "nav-staking-solo-label": "Solo staking",
+ "nav-start-building-description": "Nuttige informatie voor nieuwkomers",
+ "nav-translation-program-description": "Een collaboratieve inspanning om ethereum.org in alle talen te vertalen",
+ "nav-tutorials-description": "Samengestelde lijst van gemeenschapstutorials",
+ "nav-use-cases-description": "Ontdek verschillende ideeën voor het gebruik van Ethereum",
+ "nav-what-is-ether-description": "De valuta van Ethereum-apps",
+ "nav-what-is-ethereum-description": "Begrijp wat Ethereum speciaal maakt",
+ "nav-what-is-web3-label": "Wat is Web3?",
+ "nav-what-is-web3-description": "Een alternatief voor gecentraliseerde monopolies die de regels dicteren",
+ "nav-whitepaper-description": "Het oorspronkelijke Ethereum-whitepaper geschreven door Vitalik Buterin in 2014",
+ "nav-zkp-description": "Een manier om de geldigheid van een verklaring te bewijzen zonder de verklaring zelf te onthullen",
+ "nft-page": "NFT's - Niet-vervangbare tokens",
"nfts": "NFT's",
"no": "Nee",
"on-this-page": "Op deze pagina",
"open-research": "Onderzoek openen",
- "page-developers-aria-label": "Ontwikkelaarsmenu",
+ "page-developers-aria-label": "Menu voor ontwikkelaars",
"page-index-meta-title": "Home",
"page-last-updated": "Pagina laatst bijgewerkt",
+ "participate": "Doe mee",
+ "participate-menu": "Deelnamemenu",
"pbs": "Scheiding proposer-builder",
"pools": "Gepoolde staking",
"privacy-policy": "Privacybeleid",
@@ -150,8 +267,10 @@
"refresh": "Ververs de pagina.",
"return-home": "terug naar startpagina",
"roadmap": "Ethereum-roadmap",
+ "research": "Onderzoek",
+ "research-menu": "Onderzoeksmenu",
"resources": "Vertaalbronnen",
- "regenerative-finance": "Regeneratieve financiering (ReFi)",
+ "regenerative-finance": "ReFi - Regeneratieve financiering",
"run-a-node": "Run een node",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Ontwikkelaarsdocumenten",
@@ -164,6 +283,7 @@
"search-box-blank-state-text": "Zoeken maar!",
"search-eth-address": "Dit lijkt op een Ethereum-adres. We verstrekken geen specifieke gegevens. Probeer het te zoeken op een block explorer zoals",
"search-no-results": "Geen zoekresulaten",
+ "security": "Beveiliging",
"single-slot-finality": "Single-slot finaliteit",
"statelessness": "Statelessness",
"see-contributors": "Bekijk bijdragers",
@@ -181,6 +301,7 @@
"start-here": "Start hier",
"style-guide": "Stijlgids",
"solo": "Solo staking",
+ "support": "Ondersteuning",
"terms-of-use": "Gebruiksvoorwaarden",
"translation-banner-body-new": "Je bekijkt deze pagina in het Engels omdat we hem nog niet hebben vertaald. Help ons deze inhoud te vertalen.",
"translation-banner-body-update": "Er is een nieuwe versie van deze pagina, maar die is momenteel alleen in het Engels. Help ons de nieuwste versie te vertalen.",
@@ -191,11 +312,14 @@
"translation-banner-no-bugs-title": "Geen bugs hier!",
"translation-banner-no-bugs-content": "Deze pagina wordt niet vertaald. We hebben deze pagina voorlopig bewust in het Engels laten staan.",
"translation-banner-no-bugs-dont-show-again": "Niet meer tonen",
+ "translation-program": "Vertalingsprogramma",
"try-using-search": "Gebruik zoekopdracht om te vinden waar u naar op zoek bent",
"tutorials": "Tutorials",
"up": "Naar boven",
+ "use": "Gebruik",
"use-ethereum": "Ethereum gebruiken",
"use-ethereum-menu": "Ethereum-menu gebruiken",
+ "use-menu": "Gebruiksmenu",
"user-experience": "Gebruikerservaring",
"verkle-trees": "Verkle-bomen",
"wallets": "Wallets",
diff --git a/src/intl/nl/page-dapps.json b/src/intl/nl/page-dapps.json
index 24c4abba04f..7bb7406f755 100644
--- a/src/intl/nl/page-dapps.json
+++ b/src/intl/nl/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Stream geld in real-time.",
"page-dapps-dapp-description-superrare": "Koop digitale kunstwerken rechtsreeks van kunstenaars of op secundaire markten.",
"page-dapps-dapp-description-token-sets": "Crypto-beleggingsstrategieën die automatisch opnieuw in evenwicht worden gebracht.",
- "page-dapps-dapp-description-tornado-cash": "Stuur anonieme transacties op Ethereum.",
"page-dapps-dapp-description-uniswap": "Wissel simpelweg tokens of leen tokens uit voor % beloningen.",
"page-dapps-dapp-description-dexguru": "Niet-custodiale handelsterminal voor DeFi-handelaren",
"page-dapps-dapp-description-synthetix": "Synthetix is een protocol voor de uitgifte en verhandeling van synthetische activa",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Dit zijn toepassingen die zich richten op het decentraliseren van ontwikkelaarstools, het integreren van cryptoeconomische systemen in bestaande technologiën en het creëren van marktplaatsen voor opensource ontwikkelingswerk.",
"page-dapps-technology-title": "Gedecentraliseerde technologie",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Zoek een wallet",
"page-dapps-wallet-callout-description": "Wallets zijn ook dapps. Zoek er een op basis van de functies die bij u passen.",
diff --git a/src/intl/nl/page-languages.json b/src/intl/nl/page-languages.json
index 151b71673f3..0d1026c769d 100644
--- a/src/intl/nl/page-languages.json
+++ b/src/intl/nl/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Wilt u ethereum.org weergeven in een andere taal?",
"page-languages-want-more-link": "Vertalingsprogramma",
"page-languages-want-more-paragraph": "Vertalers van ethereum.org vertalen altijd pagina's in zoveel mogelijk talen als mogelijk. Om te zien waar ze nu aan werken of om ze te helpen, lees meer over onze",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Lijst filteren",
+ "page-languages-filter-placeholder": "Type om te filteren",
+ "page-languages-browser-default": "Browserstandaard",
+ "page-languages-translated": "vertaald",
+ "page-languages-words": "woorden",
+ "page-languages-recruit-community": "Help ons ethereum.org te vertalen.",
+ "langauge-am": "Amhaars",
"language-ar": "Arabisch",
"language-az": "Azerbaidzjaans",
+ "langauge-be": "Belarussisch",
"language-bg": "Bulgaars",
"language-bn": "Bengaals",
+ "language-bs": "Bosnisch",
"language-ca": "Catalaans",
"language-cs": "Tsjechisch",
"language-da": "Deens",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Kroatisch",
"language-hu": "Hongaars",
+ "language-hy-am": "Armeens",
"language-id": "Indonesisch",
"language-ig": "Igbo",
"language-it": "Italiaans",
@@ -39,12 +48,14 @@
"language-ka": "Georgisch",
"language-kk": "Kazachs",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Koreaans",
"language-lt": "Litouws",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Maleis",
"language-nb": "Noors",
+ "language-ne-np": "Nepali",
"language-nl": "Nederlands",
"language-pcm": "Nigeriaans Pidgin",
"language-fil": "Filipijns",
@@ -58,8 +69,9 @@
"language-sl": "Sloveens",
"language-sr": "Servisch",
"language-sw": "Swahili",
- "language-th": "Thais",
"language-ta": "Tamil",
+ "language-th": "Thais",
+ "language-tk": "Turkmeens",
"language-tr": "Turks",
"language-uk": "Oekraïens",
"language-ur": "Urdu",
diff --git a/src/intl/nl/page-stablecoins.json b/src/intl/nl/page-stablecoins.json
index 96a8ed8b769..aa4af78e749 100644
--- a/src/intl/nl/page-stablecoins.json
+++ b/src/intl/nl/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Bron",
"page-stablecoins-bitcoin-pizza": "De beruchte Bitcoin pizza",
"page-stablecoins-bitcoin-pizza-body": "In 2010 kocht iemand 2 pizzas voor 10.000 bitcoin. Op dat moment was dit ongeveer $ 41 dollar waard. Op de markt van vandaag zijn dat miljoenen dollars. Er zijn veel soortgelijke betreurenswaardige transacties in de geschiedenis van Ethereum. Stablecoins lossen dit probleem op, zodat u van uw pizza kunt genieten en uw ETH kunt behouden.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Onderwijs",
"page-stablecoins-coin-price-change": "Muntprijswijziging (laatste 30 dagen)",
"page-stablecoins-crypto-backed": "Door crypto ondersteund",
"page-stablecoins-crypto-backed-con-1": "Minder stabiel dan stabiele, door fiat ondersteunde stablecoins.",
diff --git a/src/intl/pcm/common.json b/src/intl/pcm/common.json
index edf1faa5c6e..8cf9840adb6 100644
--- a/src/intl/pcm/common.json
+++ b/src/intl/pcm/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Akant abstashon",
"about-ethereum-org": "Abou ethereum.org",
"about-us": "Abou us",
+ "adding-desci-projects": "To dey add Desci Projects",
+ "adding-developer-tools": "To dey add Divelopa Tools",
+ "adding-exchanges": "To dey add ekshanjis",
+ "adding-glossary-terms": "To dey add Glossary Terms",
+ "adding-staking-products": "To dey add Staking Products",
+ "adding-wallets": "To dey add Wallets",
+ "account-abstraction": "Akant abstashon",
+ "acknowledgements": "Acknowledgements",
"aria-toggle-search-button": "Press searsh buton",
"aria-toggle-menu-button": "Press menu buton",
"beacon-chain": "Beacon Chain",
"bridges": "Blokchain bridges",
+ "bug-bounty": "Bug bounty",
+ "build": "Build",
+ "build-menu": "Build menu",
"clear": "Klear",
"close": "Klose",
"community": "Komunity",
"community-hub": "Komunity hub",
"community-menu": "Komunity menu",
"contact": "Kontact",
+ "content-buckets": "Kontents Buckets",
+ "content-resources": "Kontent Risorsis",
"content-standardization": "Di Koret standad for D way kontent supose dey",
"contributing": "Dey kontribut",
"contributors": "Kontributor",
@@ -20,14 +32,17 @@
"copied": "Kopied",
"copy": "Kopy",
"danksharding": "Dankshardin",
- "dao-page": "Disentralized autonomous organisashon (DAOs)",
+ "dao-page": "DAOs - Disentralized autonomous organisashon",
"dark-mode": "Dark",
"data-provided-by": "Data sorse:",
- "decentralized-applications-dapps": "Disentralized aplikashons (dapps)",
+ "decentralized-applications-dapps": "Dapps - Disentralized aplikashons",
"decentralized-identity": "Disentralized identity",
"decentralized-social-networks": "Disentralized soshia netwoks",
- "decentralized-science": "Disentralized sayens (DeSci)",
- "defi-page": "Disentralized finans (Defi)",
+ "decentralized-science": "DeSci - Disentralized sayens",
+ "description": "Desikripshon for nav item",
+ "defi-page": "Defi - Disentralized finans",
+ "design": "Disign",
+ "design-principles": "Disign Prinsipol",
"devcon": "Devkon",
"developers": "Divelopas",
"developers-home": "Divelopas haus",
@@ -59,7 +74,6 @@
"enterprise-menu": "Entaprise menu",
"esp": "Ekosystem Suport programme",
"eth-current-price": "Kurrent ETH price (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Ethereum bug bounty program",
"consensus-when-shipping": "Wen e go ship?",
"ethereum-upgrades": "Ethereum upgrades",
@@ -83,7 +97,7 @@
"feedback-card-prompt-tutorial": "Shey dis tutorial dey helep?",
"feedback-widget-thank-you-title": "Tank yu for wetin yu tell us!",
"feedback-widget-thank-you-subtitle": "Make dis page betta as yu dey ansa few kweshons.",
- "feedback-widget-thank-you-subtitle-ext": "If yu nid any helep, yu fit tok to di komunity on top awa Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "If yu nid helep, yu fit rish out to di komunity on awa Discord.",
"feedback-widget-thank-you-timing": "2-3 min",
"feedback-widget-thank-you-cta": "Make yu open short survey",
"find-wallet": "Find wallet",
@@ -94,11 +108,10 @@
"grants": "Grants",
"grant-programs": "Ecosystem Grant programs",
"guides": "Guides",
- "guides-hub": "Guides hub",
+ "guides-hub": "Hau to dey guide",
"history-of-ethereum": "Ethereum history",
"home": "Haus",
"how-ethereum-works": "Hau ethereum dey work",
- "how-to-register-an-ethereum-account": "Hau yu fit regista ethereum akant",
"how-to-revoke-token-access": "Hau yu fit komot smart kontract wey get asess to yor crypto funds",
"how-to-swap-tokens": "Hau yu fit take swap tokens",
"how-to-use-a-bridge": "Hau yu fit bridge tokens to layer2",
@@ -115,7 +128,7 @@
"last-edit": "Last edit",
"layer-2": "Layer 2",
"learn": "Make yu Learn",
- "learn-by-coding": "Learn by coding",
+ "learn-by-coding": "Learn by kodin",
"learn-hub": "Learn Hub",
"learn-menu": "Learn menu",
"learn-more": "Make yu learn more",
@@ -128,11 +141,105 @@
"loading-error-try-again-later": "Di tin wey yu dey find nor gri load. Yu fit try am again later.",
"logo": "logo",
"mainnet-ethereum": "Ethereum mainnet",
- "more": "More",
- "nav-developers": "Developers",
+ "merge": "Merge am",
+ "more": "Show more",
+ "nav-about-description": "A publik, projet wey dey open for di Ethereum komunity",
+ "nav-advanced-description": "Learn topiks wey dey kompleks pass welu welu",
+ "nav-advanced-label": "Waya Pass",
+ "nav-basics-description": "Undastand di fundamentals of Ethereum",
+ "nav-basics-label": "Basiks",
+ "nav-bridges-description": "Web3 don dey evolve into ekosystem of primary L1 blokchains andi L2 solushons wey dey skale",
+ "nav-builders-home-description": "One buildas manual wey dey for Ethereum—by pipo wey dey build, for pipo wey dey build",
+ "nav-builders-home-label": "Buildas home",
+ "nav-contribute-description": "If yu wont helep, dis go guide yu",
+ "nav-contribute-label": "To dey kontribute to ethereum.org",
+ "nav-dao-description": "Komunitis wey memba own witout authority wey dem sentralize",
+ "nav-dapps-description": "Eksplor one rish ekosystem of apps wey dey yus Ethereum",
+ "nav-defi-description": "One global, open altanative wey dey di tradishonal finanshia market",
+ "nav-desci-description": "One global, open altanative wey dey di kurent sayentifik system",
+ "nav-desoc-description": "Platfoms wey base on blokchain for soshia interakshon and kontent kreashon",
"nav-developers-docs": "Diveloas docs",
+ "nav-developers": "Divelopas",
+ "nav-did-description": "Isshiu make yu get your own unik desentralized identifiers",
+ "nav-docs-description": "Docs to helep yu ondastand andi build wit Ethereum",
+ "nav-docs-design-description": "Desikripshon of unik web3 disign shalengis, ogbonge praktis andi user researsh insights",
+ "nav-docs-design-label": "UX/UI disign fundamentals",
+ "nav-docs-foundation-description": "Core fundamental wey go divelop on Ethereum",
+ "nav-docs-overview-description": "Yor home for divelopa docs",
+ "nav-docs-stack-description": "Ondastand all di details wey dey for di Ethereum stack",
+ "nav-eip-description": "Standards wey spesify new fitures abi processes",
+ "nav-eip-label": "EIPs - Ethereum improvement proposal",
+ "nav-emerging-description": "Mak yu sabi oda case for Ethereum wey new pass",
+ "nav-enterprise-description": "Biznes aplikashons wey dey for Ethereum",
+ "nav-ethereum-org-description": "Dis website na wetin komunity dey drive—make yu join us andi kontribute too",
+ "nav-ethereum-wallets-description": "App wey yu fit yus interat wit yor Ethereum akant",
+ "nav-events-description": "Disentralizashon and fridom to artisipate for anybodi",
+ "nav-events-irl-description": "Efri month major Ethereum events dey for in-pesin andi online",
+ "nav-events-label": "Komunitis andi events",
+ "nav-events-online-description": "Plenti pipol wey bi Ethereum supporta papa for dis online komunitis",
+ "nav-find-wallet-description": "Wallets dey alow yu to yus krypto",
+ "nav-find-wallet-label": "Mak yu shuse yor wallet",
+ "nav-gas-fees-description": "Hau dem dey kalkulate ETH transakshon fees",
+ "nav-gas-fees-label": "Gas fee",
+ "nav-get-eth-description": "Yu go nid ether (ETH) to yus Ethereum aplikashons",
+ "nav-get-started-description": "Yor first steps to sabi yus Ethereum",
+ "nav-governance-description": "Di process wey dey involve to dey upgrade di Ethereum protokol",
+ "nav-governance-label": "Governance",
+ "nav-grants-description": "List wey wi kurate by awa komunity for projets wey provide grant wey dey fund programs",
+ "nav-guide-create-account-description": "Anybodi fit kreate one Ethereum akant at any taim, for fri wit one wallet app",
+ "nav-guide-revoke-access-description": "Mak yu stay safe wen yu dey rilate wit smat kontrats and aplikashons for di Ethereum ekosystem",
+ "nav-guide-revoke-access-label": "Hau yu go sabi rivoke smat kontrat access",
+ "nav-guide-use-wallet-description": "Mak yu sabi hau to operate all di basik funkshons of one wallet",
+ "nav-guide-use-wallet-label": "Hau to yus wallet",
+ "nav-guides-description": "Pratika step-by-step dey guide to helep yu stat",
+ "nav-guides-label": "Hau-to-sabi guides",
+ "nav-history-description": "One timeline for all di major forks and updates",
+ "nav-history-label": "Teknikal histori ofi Ethereum",
+ "nav-layer-2-description": "Sheapa andi fasta transakshon for Ethereum",
+ "nav-learn-by-coding-description": "Tools wey fit helep yu eksperiment wit Ethereum",
+ "nav-local-env-description": "Shuse andi set up yor Ethereum divelopment stak",
+ "nav-mainnet-description": "Wi sabi fit build enterprise blokchain aplikashons on di publik Ethereum Mainnet",
+ "nav-nft-description": "Na one way to reprisent anytin wey dey unik as Ethereum-based asset",
+ "nav-open-research-description": "One of di primary pawa of Ethereum na im aktive risearsh komunity",
+ "nav-open-research-label": "Open risearsh",
+ "nav-overview-description": "All tins wey consign Ethereum edukashon",
+ "nav-participate-overview-description": "Ovaview on hau yu go fit patisipate",
"nav-primary": "Primary",
- "nft-page": "Non-fungibol tokens (NFTs)",
+ "nav-quizzes-description": "Mak yu find out hau welu yu ondastand Ethereum and kryptokurensis",
+ "nav-quizzes-label": "Make yu test yor knowlege",
+ "nav-refi-description": "One alternative ekonomik system wey dem build on regenerative prinsipol",
+ "nav-research-description": "Processes wey dem yus to impruf Ethereum",
+ "nav-research-label": "Risearsh andi divelopment",
+ "nav-roadmap-description": "Di path wey folow to more skalability, sekurity andi sustainability for Ethereum",
+ "nav-roadmap-future-description": "Make Ethereum gidigba as one bigi andi disentralize netwok",
+ "nav-roadmap-future-label": "Fushure-prufin",
+ "nav-roadmap-label": "Roadmap",
+ "nav-roadmap-scaling-description": "Netwok updates to kontinu dey ridus trasakshon cost and speed",
+ "nav-roadmap-security-description": "To dey make sure Ethereum stand gidigba to all kain attaks into di fushure",
+ "nav-roadmap-security-label": "Sikurity wey don impruf",
+ "nav-roadmap-ux-description": "To dey yus Ethereum nid to dey simpol",
+ "nav-run-a-node-description": "Mak yu dey fully sovereign as yu dey helep sikure di netwok",
+ "nav-security-description": "Learn di ogbonge praktis wen yu dey yus kryptokurensis",
+ "nav-smart-contracts-description": "Di fundamental buildin bloks ofi Ethereum ekosystem",
+ "nav-stablecoins-description": "Stabolcoins na Ethereum tokens wey dem disign to stay for value wey nor dey shanj",
+ "nav-stake-description": "Mak yu earn riwods for yu to sikure Ethereum",
+ "nav-stake-label": "Stake",
+ "nav-staking-home-description": "One ovaview of difrent opshon for stakin",
+ "nav-staking-pool-description": "Stake andi earn riwods wit any amount of ETH by to join wit odas",
+ "nav-staking-pool-label": "Pooled stakin",
+ "nav-staking-saas-label": "To dey stake wit one sarvis",
+ "nav-staking-solo-label": "Solo Stakin",
+ "nav-start-building-description": "Informashon wey dey yusful for otondo",
+ "nav-translation-program-description": "One joint effoti to make sure dem translate ethereum.org to all di languages",
+ "nav-tutorials-description": "List wey dem kurate for komunity tutorials",
+ "nav-use-cases-description": "Diskova difrent idias wey dem fit use Ethereum for",
+ "nav-what-is-ether-description": "Di kurrensy wey dem dey use for Ethereum apps",
+ "nav-what-is-ethereum-description": "Mak yu ondastand wetin make Ethereum dey speshia",
+ "nav-what-is-web3-label": "Wetin bi web3?",
+ "nav-what-is-web3-description": "One alternativ to sentranliz monopoliz to dey diktate di rules",
+ "nav-whitepaper-description": "Di orijina Ethereum whitepaper wey Vitalik Buterin write for 2014",
+ "nav-zkp-description": "One way yu fit yus pruf di validity of one statement witout make yu show di statement imsef",
+ "nft-page": "NFTs - Non-fungibol tokens",
"nfts": "NFTs",
"no": "No",
"on-this-page": "On dis page",
@@ -140,6 +247,7 @@
"page-developers-aria-label": "Divelopas' Menu",
"page-index-meta-title": "Haus",
"page-last-updated": "Last taim wey dem update dis page",
+ "participate-menu": "Patisipate menu",
"pbs": "Proposa-builda seperashon",
"pools": "Pooled stakin",
"privacy-policy": "Privacy policy",
@@ -150,8 +258,10 @@
"refresh": "Abeg rifresh dis page.",
"return-home": "Make yu riturn haus",
"roadmap": "Ethereum roadmap",
+ "research": "Risearsh",
+ "research-menu": "Risearsh menu",
"resources": "Translashon risorsis",
- "regenerative-finance": "Regenerative finans (ReFi)",
+ "regenerative-finance": "ReFi - Regenerative finans",
"run-a-node": "Run node",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Divelopa docs",
@@ -164,23 +274,23 @@
"search-box-blank-state-text": "Searsh away!",
"search-eth-address": "E be like ethereum address. Wi nor dey provide info to address. Try to dey find am on top blok explorer like",
"search-no-results": "Nor rizut for wetin you dey find",
+ "security": "Security",
"single-slot-finality": "Singol slot finality",
"statelessness": "Statelessnes",
"see-contributors": "Si kontributors",
- "set-up-local-env": "Set up your local level",
+ "set-up-local-env": "Set up yor local level",
"sharding": "Sharding",
"show-all": "Show mi evrytin",
"show-less": "Show mi smoll",
"site-description": "Ethereum na one global, disentrlize platfom for money and new kain aplikashon. For Ethereum, yu fit write kode wey det kontrol money, and dey build aplikashon wey yu fir yus anywia in di world.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Skip go main kontent",
"smart-contracts": "Smart contracts",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Stabolcoins",
"stake-eth": "Stake ETH",
"staking": "To dey stake",
"start-here": "Make yu stat here",
- "style-guide": "Style guide",
"solo": "Solo Stakin",
+ "support": "Support",
"terms-of-use": "Terms of yus",
"translation-banner-body-new": "Yu dey look dis page in English bikos wi neva tranlate am. Helep us translate dis kontent.",
"translation-banner-body-update": "Dis na di new vashon of di page but im dey only English for nau. Helep us translate di latest vashon.",
@@ -191,11 +301,14 @@
"translation-banner-no-bugs-title": "No bugs for here!",
"translation-banner-no-bugs-content": "Wi nor dey translate dis page as wi leave am for english by pupose.",
"translation-banner-no-bugs-dont-show-again": "Nor show am again",
+ "translation-program": "Translashon program",
"try-using-search": "Try to dey yus di searsh take find wetin yu dey find",
"tutorials": "Tutorials",
"up": "Up",
- "use-ethereum": "Yus Ethereum",
+ "use": "Yus",
+ "use-ethereum": "Yus Ethreum",
"use-ethereum-menu": "Yus ethereum menu",
+ "use-menu": "Yus menu",
"user-experience": "User experience",
"verkle-trees": "Verkle trees",
"wallets": "Wallets",
@@ -203,8 +316,8 @@
"web3": "Wetin bi web3?",
"web3-title": "Web3",
"website-last-updated": "Website last update",
- "what-is-ether": "Wetin be ether (ETH)?",
- "what-is-ethereum": "What is Ethereum?",
+ "what-is-ether": "Wetin bi ether (ETH)?",
+ "what-is-ethereum": "Wetin bi Ethereum?",
"withdrawals": "To dey stake witdrawals",
"yes": "Yes",
"zero-knowledge-proofs": "Zero-knowledge prufs"
diff --git a/src/intl/pcm/page-dapps.json b/src/intl/pcm/page-dapps.json
index 3e17e3068db..72f4b393c7d 100644
--- a/src/intl/pcm/page-dapps.json
+++ b/src/intl/pcm/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Stream moni for real-taim.",
"page-dapps-dapp-description-superrare": "Buy digital artworks diret from artists dem or in sekondri markets.",
"page-dapps-dapp-description-token-sets": "Crypto investment strategis wey dey automatically rebalans.",
- "page-dapps-dapp-description-tornado-cash": "Send coded transashons ontop Ethereum.",
"page-dapps-dapp-description-uniswap": "Yu fit to swap tokens abi make you provide tokens for % benefits.",
"page-dapps-dapp-description-dexguru": "Non-kustodial trading terminal dey for DeFi traders",
"page-dapps-dapp-description-synthetix": "Synthetix na protokol wey dey for giving and trading assets wey dey synthetik",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Dis na aplikashons wey dey fokus on decentralizin divelopa tools, e dey kombine cryptoekonomik systems into teknologi wey dey exist, and e dey create marketplaces for open source divelopment work.",
"page-dapps-technology-title": "Decentralized teknologi",
"page-dapps-token-sets-logo-alt": "Token Sets Logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Find wallet",
"page-dapps-wallet-callout-description": "Wallets na dapps too. Find one wey dey based on di features wey yu like.",
diff --git a/src/intl/pcm/page-gas.json b/src/intl/pcm/page-gas.json
new file mode 100644
index 00000000000..77c8df3e6bd
--- /dev/null
+++ b/src/intl/pcm/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Gas fees on Ethereum: how dem dey wok?",
+ "page-gas-meta-description": "Make yu learn about gas on Ethereum: how dem dey wok and how to pay less for gas fees",
+ "page-gas-hero-title": "Gas fee",
+ "page-gas-hero-header": "Netwok fee",
+ "page-gas-hero-button-1-content": "Wetin bi gas?",
+ "page-gas-hero-subtitle-1": "Netwok fees on Ethereum na im dem dey koll gas.",
+ "page-gas-hero-subtitle-2": "Gas na di fuel wey dey make Ethereum wok.",
+ "page-gas-summary-title": "Summary",
+ "page-gas-summary-item-1": "Every transacshon on Ethereum nid one smoll type of payment to process am",
+ "page-gas-summary-item-2": "Na dis fees dem dey koll 'gas' fee",
+ "page-gas-summary-item-3": "Gas fees dey shanj base on netwok palava",
+ "page-gas-what-are-gas-fees-header": "Wetin bi gas fees?",
+ "page-gas-what-are-gas-fees-text-1": "Make yu tink of Ethereum as one big komputa netwok wia pipol fit dey do tins like send mesaj abi dey run programs. Just like for real world, dis dem wok nid enagi to do dem.",
+ "page-gas-what-are-gas-fees-text-2": "For Ethereum, ish komputashonal akshon get one set \"gas\" price. Yor gas fees na di total cost for di akshon for yor transakshon. Wen you send one transakshon abi run one smart kontract, yu go pay gas fees to process am.",
+ "page-gas-how-do-i-pay-less-gas-header": "How I go pay smoll gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "As pesin nor fit afoid higher fees for Ethereum sometaims, e get some ways yu fit yus ridus di cost:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Make yu taim yor transakshons",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Just like pesin wey dey travel off-peak nor get plenti pipol and nor too cost, Ethereum dey generally cheap to wella wen pipol for North America dey sleep.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Make yu wait for gas to go down",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Gas price dey go upandan for every twelve seconds base on e dey busy rish for Ethereum. Wen gas prices dey high, to dey wait just for few minute bifor makin transakshon fit make yu si big drop in wetin yu pay.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Make yu yus Layer 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Dem build Ethereum ontop Layer-2 chains, e dey give very smoll fees and dey handol more transakshons. Dem be gud shoise to save on fees for transakshons wey nor nid to hapun on di main Ethereum netwok.",
+ "page-gas-try-layer-2": "Make yu try layer 2",
+ "page-gas-what-causes-high-gas-fees-header": "Wetin dey kause high gas fees?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Weneva di kalkulashon (gas) for Ethereum dey pass one kain level, gas fees go start to dey rise. Di more di gas go pass dis level, de faster gas fees dey inkrease.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Popular dapps abi NFTs fit make fees dey higher, everytaim inkrease for trade on DEXs, abi one kain plenti numba of pipol wey dey yus am for di peak times.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Pipol wey divelop Ethereum supose take kia to make dia smart contracts wok wella bifor dem bring am komot. If plenti pipol de yus smart contract wey dem nor write wella, im go chop more gas and im fit kause netwok palava kwik-kwik.",
+ "page-gas-want-to-dive-deeper": "Shey yu want enta wella?",
+ "page-gas-check-out-the-developer-docs": "Make yu shek di divelopa dokument.",
+ "page-gas-attack-of-the-cryptokitties-header": "Atak of di Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "For november 2017, dem launch di pupola CryptoKitties project. Di kain pipol wey like am make am get plenti netwok palava and make am get high gas fees. Di shalenj wey CryptoKitties kause speed am up to dey find solushon to make Ethereum grow wella.",
+ "page-gas-why-do-we-need-gas-header": "Why wi nid gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas na one ogbonge element to dey yus kip Ethereum and dey process transakshons. Gas dey helep for many ways:",
+ "page-gas-benefits-1-description": "Gas dey kip Ethereum safe as im dey prevent wayo pipol from enterin di netwok wella wit dem korup aktivitis.",
+ "page-gas-benefits-2-description": "Bikos kalkulashon dey make gas cost plenti, and dey make Ethereum get transakshons wey dey too high, weda by asident abi by wayo, e nor dey enkoraj finanshialy.",
+ "page-gas-benefits-3-description": "One hard-limit for di amount to dey kalkulate dat fit hapun at any taim dey prevent pipol to dey ova yus Ethereum, as im dey helep to make sure sey pipol fit yus di netwok always.",
+ "page-gas-how-is-gas-calculated-header": "How dem dey kalkulate gas?",
+ "page-gas-advanced": "Waya Pass",
+ "page-gas-how-is-gas-calculated-text-1": "Di total gas fee yu dey pay is made up of few pats:",
+ "page-gas-how-is-gas-calculated-item-1": "Base fee: one fee set by di netwok wey pipol fit yus pay for transakshon",
+ "page-gas-how-is-gas-calculated-item-2": "Priority fee: one opshon tip to dey incentiviz node operators to add yor transakshon",
+ "page-gas-how-is-gas-calculated-item-3": "Units of gas dem don yus*: shey yu rimemba wi tok sey gas reprisent komputashon? Plenti akshons wey hard, like to dey meet wit one smart contract, dey yus more gas pass simpol ones, like to dey send one transakshon.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* Make yu si Figor 1 to si how much gas difrent types of transakshon dey yus",
+ "page-gas-how-is-gas-calculated-text-2": "Di formula wen kalkulatin one gas fee na units for gas yuse * (base fee + priority fee). All wallets go kalkulate gas yus and show am for inside diret way.",
+ "page-gas-table-figure": "Figor 1: Gas yus by transakshon type",
+ "page-gas-table-header-1": "Transakshon type",
+ "page-gas-table-header-2": "Units of gas yus",
+ "page-gas-table-item-1-transaction-type": "To dey send ETH",
+ "page-gas-table-item-2-transaction-type": "To dey send ERC-20 tokens",
+ "page-gas-table-item-3-transaction-type": "To dey transfer and NFT",
+ "page-gas-table-item-4-transaction-type": "To dey swap on Uniswap",
+ "page-gas-faq-header": "Kweshon wey pipol dey ask",
+ "page-gas-faq-question-1-q": "Who dem pay di gas fee for mai transakshon?",
+ "page-gas-faq-question-1-a-1": "Di maority na gas fee—di base fee— dey distroy by di protokol (burned). Di priority fee, if dem add am for yor transakshon, dem go give am for de validator wey propose yor transakshon.",
+ "page-gas-faq-question-1-a-2": "You fit rid detail diskripshon of di process inside di gas divelopa dokument.",
+ "page-gas-faq-question-2-q": "Shey I supose pay gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Yes. Yu supose pay all gas fees on Ethereum in di native ETH currency.",
+ "page-gas-faq-question-2-a-2": "More on ETH",
+ "page-gas-faq-question-3-q": "Wetin bi gwei?",
+ "page-gas-faq-question-3-a-1": "For plenti wallets abi gas trackas, yu go si gas price denominated as 'gwei'.",
+ "page-gas-faq-question-3-a-2": "Gwei na just one smolla unit of ETH, just as pennies bi to dollars, wit di difrens wey bi 1 ETH ekwols 1 billion gwei. Gwei dey yusful wen wi dey tok about amounts of ETH wey smoll wella.",
+ "page-gas-use-layer-2": "Make yu yus Layer 2"
+}
diff --git a/src/intl/pcm/page-get-eth.json b/src/intl/pcm/page-get-eth.json
index 7422356f8ff..490334aa769 100644
--- a/src/intl/pcm/page-get-eth.json
+++ b/src/intl/pcm/page-get-eth.json
@@ -9,21 +9,30 @@
"page-get-eth-cex-desc": "Ekshanj na biznes wey go alow yu buy crypto wit normal money. Dem get pawa on top any ETH wey yu buy ontil yu send am go yor own wallet.",
"page-get-eth-checkout-dapps-btn": "Shek dem dapps",
"page-get-eth-community-safety": "Komunity posts on sekurity",
- "page-get-eth-description": "Gofament of kompany nor dey kontrol Ethereum abi ETH - dem dey desentralize. E mean say ETH's dey open for evryone to yus.",
+ "page-get-eth-description": "Any singol organizashon nor dey Ethereum - im dey desentralize.",
"page-get-eth-dex": "Desentralize ekshanj (DEXs)",
- "page-get-eth-dex-desc": "If yu wont dey kontrol, make yu buy ETH peer to peer. Wit DEX yu fit trade am and yu nor go give any kompany yor money.",
+ "page-get-eth-dex-desc": "If you wont more control join, buy ETH make yu yus smart kontrats. Wit one DEX yu fit trade digital assets witout givin kontrol of yor money to one sentralize kompany.",
+ "page-get-eth-peers": "Make yu risiv ETH from una peers",
+ "page-get-eth-peers-desc": "Wons yu don get one Ethereum akant, all yu nid do na make yu shia yor address to bigin dey send and to dey risiv ETH (and oda tokens) peer-to-peer.",
+ "page-get-eth-staking": "Staking rewards",
+ "page-get-eth-staking-desc": "If yu don get som ETH bifor, yu fit dey make more money as yu dey run one validator node join. Dem go pay yu for doing dis verifikashon wok for ETH.",
+ "page-get-eth-earn": "Mak yu earn ETH",
+ "page-get-eth-earn-desc": "Yu fit dey earn ETH if yu dey wok for DAOs abi kompany wey dey pay crypto, dey win bounties, dey find software bugs and more join.",
+ "page-get-eth-daos-link-desc": "Make yu learn about DAOs",
+ "page-get-eth-cex-link-desc": "See one list for ekshanj",
+ "page-get-eth-staking-link-desc": "Make yu learn more on how to dey stak",
"page-get-eth-dexs": "Decentralized exchanges (DEXs)",
"page-get-eth-dexs-desc": "Desentralize ekshanj na open market for ETH and oda tokens. Dem dey konet buyers and sellers straight.",
"page-get-eth-dexs-desc-2": "Insted make yu yus anoda pesin to safeguard funds on top yor transakshons, dem dey yus kode. De seller ETH go komot wen de payment don konfam. Na dis kain kode dem dey koll smart kontract.",
- "page-get-eth-dexs-desc-3": "E mean say dem nor dey look yor lokashon. If pesin dey sell wetin yu wont buy and dem fit kolet money wey yu fit pay, una go run di transakshon. DEXs fit let yu buy ETH wit oda tokens, Papal abi even if na kash you hold.",
+ "page-get-eth-dexs-desc-3": "Dis mean sey small geographical blokaj fit dey pass sentralize alternatives. If one person dey sell wetin yu wont and gri for one payment metod yu fit provide, yu fit kontinu.",
"page-get-eth-do-not-copy": "Eksampol: Nor kopy am",
"page-get-eth-exchanges-disclaimer": "Na hand wi take kolet dis info. If yu si say somtin nor koret, let us sabi for",
- "page-get-eth-exchanges-empty-state-text": "Enta di kountry wey yu dey stay to si one list of wallets and ekshanjis wey yu fit yus buy ETH",
+ "page-get-eth-exchanges-empty-state-text": "Enta yor kountry wey yu dey stay to see list of ekshanj wey yu fit yus",
"page-get-eth-exchanges-except": "Eksept",
"page-get-eth-exchanges-header": "Wich kountry you dey stay?",
"page-get-eth-exchanges-header-exchanges": "Eshanjis",
"page-get-eth-exchanges-header-wallets": "Wallets",
- "page-get-eth-exchanges-intro": "Ekshanjis and wallets get som place wia dem fit sell crypto.",
+ "page-get-eth-exchanges-intro": "Ekshanj get some places yu nor fit sell crypto to. Dis na na list wey dey show savis wey dey operate for ish kountry. Endorsement nor dey inside hia - make yu do yor own research!",
"page-get-eth-exchanges-no-exchanges": "Nor vex, wi nor sabi any ekshanjis wey fit alow yu buy ETH from dis kountry. If yu sabi, make wi sabi",
"page-get-eth-exchanges-no-exchanges-or-wallets": "Nor vex, wi nor sabi any ekshanjis wey fit alow yu buy ETH from dis kountry. If yu sabi, make wi sabi",
"page-get-eth-exchanges-no-wallets": "Nor vex, wi nor sabi any wallets wey fit alow yu buy ETH from dis kountry. If yu do, make wi sabi",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Make yu get ETH hero imaj",
"page-get-eth-keep-it-safe": "Make yu kip yor ETH safe",
"page-get-eth-meta-description": "Hau yu fit buy ETH based on wia yu dey live and hau yu go take kip am.",
- "page-get-eth-meta-title": "Hau yu fit buy ETH",
+ "page-get-eth-meta-title": "How yu fit get ETH",
"page-get-eth-need-wallet": "Yu go nid wallet to yus one DEX.",
"page-get-eth-new-to-eth": "Yu dey new to ETH? Here na wetin fit make yu stat.",
"page-get-eth-other-cryptos": "Make yu buy wit oda crypto",
- "page-get-eth-protect-eth-desc": "If yu get plan to buy plenty ETH yu go wont kip am for wallet wey yu get kontrol ova, nor bi ekshanj. Bikos hackers dey target ekshanj. If dem enta, yu fit luz yor money. But na only yu get kontrol of yor wallet.",
- "page-get-eth-protect-eth-in-wallet": "Protet yor ETH inside wallet",
+ "page-get-eth-protect-eth-desc": "One of di ogbonge features for Ethereum bi sey yu go dey kontrol yor own asset as yu dey manaj yor own akant. Dis mean sey yu nor nid trust anoda person wit yor asset, and yu dey safe from anoda person wey want do wayo, goin luzin everytin wey yu get. Howeva, im also mean sey na yu dey in sharge for yor own sekurity.",
+ "page-get-eth-protect-eth-in-wallet": "Make yu kip yor ETH for yor own wallet",
"page-get-eth-search-by-country": "Mak yu search by kountry",
- "page-get-eth-security": "But e mean say yu gat take di sekurity of yor money sirios. Wit ETH, yu nor dey trust bank to helep yu look afta yor money, na yorsef yu go trust.",
+ "page-get-eth-security": "Dis mean sey yu nid to take di sekurity for yor money wella. Wit ETH, yu nor dey trust bank abi kompany to look afta yor assset, na yu dey do dat for yorsef.",
"page-get-eth-smart-contract-link": "More on smart kontracts",
"page-get-eth-swapping": "Swap yor tokens for anoda pesin ETH. And vice versa.",
"page-get-eth-try-dex": "Try one DEX",
"page-get-eth-use-your-eth": "Yus yor ETH",
"page-get-eth-use-your-eth-dapps": "Nau wey yu get some ETH, shek some Ethereum aplikashon (dapps). Dem bi dapps for finans, soshial media, gamin and plenti difren kategoris.",
"page-get-eth-wallet-instructions": "Folow wallet instrushon",
- "page-get-eth-wallet-instructions-lost": "If yu luz asess to yor wallet, yu go luz all yor money. Yor wallet supose to give yu instrukshon on hau yu fit take afoid dis. Make sure say yu folow doz instrukshons well -- norbody gor fit helep yu if yu luz asess to yor wallet.",
+ "page-get-eth-wallet-instructions-lost": "If yu luz kontrol of yor akant, yu go luz yor money. Yor wallet supose tell yu how to dey protect am. Make yu dey folow dem kiafuly - for plenti cases, nor one fit helep yu if yu nor fit enta yor akant.",
"page-get-eth-wallets": "Wallets",
"page-get-eth-wallets-link": "More on wallets",
"page-get-eth-wallets-purchasing": "Some wallet fit alow yu buy crypto wit yor debit/credit kard, even bank transfer abi Apple Pay. Im dipend on wia yu dey live.",
- "page-get-eth-warning": "Dis DEXs nor bi for beginnas as yu go nid some ETH to yus dem.",
+ "page-get-eth-warning": "Dis dem DEXs nor dey for biginas as yu go nid some ETH to yus dem. Dis na just eksampols, nor bi products wey wi don stamp. Make yu do yor own research!",
"page-get-eth-what-are-DEX's": "Wetin bi DEXs?",
"page-get-eth-whats-eth-link": "Wetin bi ETH?",
- "page-get-eth-where-to-buy-desc": "Yu fit buy ETH from ekshanjis abi from wallets diret.",
+ "page-get-eth-where-to-buy-desc": "Yu fit earn ETH, risiv am from yor peers, abi buy am from ekshanjis and apps.",
"page-get-eth-where-to-buy-desc-2": "Shek wich savis yu fit yus based on wia yu dey live.",
- "page-get-eth-where-to-buy-title": "Wia yu go buy ETH",
+ "page-get-eth-where-to-buy-title": "Wia to get ETH",
"page-get-eth-your-address": "Yor ETH address",
"page-get-eth-your-address-desc": "Wen yu download wallet, e go kreate publik ETH address for yu. Si hau dis go look like:",
"page-get-eth-your-address-desc-3": "Rizin am like yu email address, but insted make yu risiv mail, yu go risiv ETH. If yu wan transfa ETH from ekshanj to yor wallet, yus yor address as di destinashon. Make sure say yu shek am wella bifor yu send am o!",
diff --git a/src/intl/pcm/page-languages.json b/src/intl/pcm/page-languages.json
index 8984b7559bc..fb51e1e3783 100644
--- a/src/intl/pcm/page-languages.json
+++ b/src/intl/pcm/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Yu wan si ethereum.org for difren language?",
"page-languages-want-more-link": "Translashon program",
"page-languages-want-more-paragraph": "ethereum.org transalators dey always dey trasnlate different oages for different languages. to see wetin dem dey work on right now or to join them make you read about our",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Mak yu filter di list",
+ "page-languages-filter-placeholder": "Mak yu type to filter",
+ "page-languages-browser-default": "Di Browsa default",
+ "page-languages-translated": "translated",
+ "page-languages-words": "wods",
+ "page-languages-recruit-community": "Helep us translat ethereum.org.",
+ "langauge-am": "Amharic",
"language-ar": "Arabic",
"language-az": "Azerbaijani",
+ "langauge-be": "Belarusian",
"language-bg": "Bulgarian",
"language-bn": "Bengali",
+ "language-bs": "Bosnian",
"language-ca": "Catalan",
"language-cs": "Czech",
"language-da": "Danish",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Croatian",
"language-hu": "Hungarian",
+ "language-hy-am": "Armenian",
"language-id": "Indonesian",
"language-ig": "Igbo",
"language-it": "Italian",
@@ -39,12 +48,14 @@
"language-ka": "Georgian",
"language-kk": "Kazakh",
"language-km": "Khmer",
+ "language-kn": "Kannada",
"language-ko": "Korean",
"language-lt": "Lithuanian",
"language-ml": "Malayalam",
"language-mr": "Marathi",
"language-ms": "Malay",
"language-nb": "Norwegian",
+ "language-ne-np": "Nepali",
"language-nl": "Dutch",
"language-pcm": "Nigerian pidgin",
"language-fil": "Filipino",
@@ -58,8 +69,9 @@
"language-sl": "Slovenian",
"language-sr": "Serbian",
"language-sw": "Swahili",
- "language-th": "Thai",
"language-ta": "Tamil",
+ "language-th": "Thai",
+ "language-tk": "Turkmen",
"language-tr": "Turkish",
"language-uk": "Ukranian",
"language-ur": "Urdu",
diff --git a/src/intl/pcm/page-stablecoins.json b/src/intl/pcm/page-stablecoins.json
index 694632493fe..7fcf16aa21b 100644
--- a/src/intl/pcm/page-stablecoins.json
+++ b/src/intl/pcm/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Source",
"page-stablecoins-bitcoin-pizza": "Di Bitcoin pizza wey nor popula",
"page-stablecoins-bitcoin-pizza-body": "For 2010, one pesin buy 2 pizza for 10,000 bitcoin. For dat taim, di 10,000 worth ~$41 USD. For tuday's market, e dey worth millions of dollars. E get plenti similar transakshons wey pipol rigret for Ethereum's history too. Stabolcoins find solushon to all dis palava, wit stabolcoins yu go fit chop yor pizza and hold yor ETH witout regreting anytin later.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Education",
"page-stablecoins-coin-price-change": "Coin price shange (for di last 30 days)",
"page-stablecoins-crypto-backed": "Wey crypto dey back",
"page-stablecoins-crypto-backed-con-1": "E nor too stabol like stabolcoins wey fiat dey back.",
diff --git a/src/intl/pcm/page-wallets-find-wallet.json b/src/intl/pcm/page-wallets-find-wallet.json
index 502fe5ebf0d..7da6e81dbcb 100644
--- a/src/intl/pcm/page-wallets-find-wallet.json
+++ b/src/intl/pcm/page-wallets-find-wallet.json
@@ -49,8 +49,8 @@
"page-find-wallet-token-support": "Token suport",
"page-find-wallet-features": "Features",
"page-find-wallet-security": "Security",
- "page-find-wallet-smart-contract": "Smart contract",
- "page-find-wallet-check-out": "Check out",
+ "page-find-wallet-smart-contract": "Smart kontrat",
+ "page-find-wallet-check-out": "Shek out",
"page-find-wallet-info-updated-on": "info wey dey updated on",
"page-find-wallet-showing-all-wallets": "To dey show all di wallets",
"page-find-wallet-showing": "As e dey show",
@@ -81,7 +81,7 @@
"page-find-wallet-feature-filters": "Feature filtas",
"page-find-wallet-footnote-1": "Wallets wey dem list for dis page nor get official endorsements, and dem dey provided only for informashional purposes.",
"page-find-wallet-footnote-2": "Di wallet projects don already provide dia diskripshon demsefs.",
- "page-find-wallet-footnote-3": "Wi add prodcuts to dis page based on di kriteria wey dey awa listin policy. If yu go like add new wallet, you fit raise issue for di GitHub.",
+ "page-find-wallet-footnote-3": "Wi add products to dis page based on di kriteria wey dey inside awa listin policy. If yu go like add new wallet, yu fit raise issue for di GitHub.",
"page-find-wallet-mobile": "Mobile",
"page-find-wallet-mobile-desc": "Wallet wey get mobile apps",
"page-find-wallet-desktop": "Desktop",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Wallets wey get browser Eksepshon",
"page-find-wallet-device": "Device",
"page-find-choose-to-compare": "Make yu shuse to kompia",
- "page-find-wallet-choose-features": "Shuse features"
+ "page-find-wallet-choose-features": "Shuse features",
+ "page-find-wallet-reset-filters": "Make yu reset filters"
}
diff --git a/src/intl/pcm/page-what-is-ethereum.json b/src/intl/pcm/page-what-is-ethereum.json
index db9b5287c5e..b6edcc2345f 100644
--- a/src/intl/pcm/page-what-is-ethereum.json
+++ b/src/intl/pcm/page-what-is-ethereum.json
@@ -65,7 +65,7 @@
"page-what-is-ethereum-explore-applications": "Kome shek aplikashons",
"page-what-is-ethereum-learn-defi": "Kom learn about DeFi",
"page-what-is-ethereum-who-runs-ethereum-title": "Who dey run Ethereum?",
- "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum nor dey unda di kontrol of any paticula pipol abi tin. E dey exist anytaim wen komputas wey konet dey run software wey dey follow d Ethereum protocol and dey add to di Ethereum blockchain. Ish of dis komputas dem sabi as node. Anybody fit run nodes, aldoh if yu wont patisipate for sikurin di netwok, yu go nid stake ETH (Ethereum’s native token). Anybody wey get 32 ETH fit do dis without any pamishon.",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum nor dey unda di kontrol of any paticula pipol abi tin. E dey exist anytaim wen komputas wey konet dey run software wey dey follow d Etereum protocol and dey add to di Ethereum blockchain. Ish of dis komputas dem sabi as node. Anybody fit run nodes, aldoh if yu wont patisipate for sikurin di netwok, yu go nid stake ETH (Ethereum’s native token). Anybody wey get 32 ETH fit do dis without any pamishon.",
"page-what-is-ethereum-who-runs-ethereum-desc-2": "Even di Ethereum sorse kode nor dey kome from one singol entity. Anybody fit sujest shanges to di protokol and diskus upgrades. Dem get plenti implimentashon of di Ethereum protocol wey dey come from independent organizashons for diferen programin languaj, and dem usually dey built for di open and dey enkoraj kontribushons from di komunity.",
"page-what-is-ethereum-run-a-node": "Run node",
"page-what-is-ethereum-smart-contract-title": "What are smart contracts?",
diff --git a/src/intl/pl/common.json b/src/intl/pl/common.json
index 790e36f3b1c..99864fc4670 100644
--- a/src/intl/pl/common.json
+++ b/src/intl/pl/common.json
@@ -1,33 +1,48 @@
{
- "account-abstraction": "Abstrakcja konta",
"about-ethereum-org": "Informacje o ethereum.org",
"about-us": "O nas",
+ "adding-desci-projects": "Dodawanie projektów Desci",
+ "adding-developer-tools": "Dodawanie narzędzi deweloperskich",
+ "adding-exchanges": "Dodawanie giełd",
+ "adding-glossary-terms": "Dodawanie terminów glosariusza",
+ "adding-staking-products": "Dodawanie produktów stakingowych",
+ "adding-wallets": "Dodawanie portfeli",
+ "account-abstraction": "Abstrakcja konta",
+ "acknowledgements": "Podziękowania",
"aria-toggle-search-button": "Włącz przycisk szukania",
"aria-toggle-menu-button": "Włącz przycisk menu",
"beacon-chain": "Łańcuch śledzący",
"bridges": "Mosty blockchain",
+ "bug-bounty": "Nagrody za błędy",
+ "build": "Wybuduj",
+ "build-menu": "Menu budowania",
"clear": "Wyczyść",
"close": "Zamknij",
"community": "Społeczność",
"community-hub": "Centrum społeczności",
"community-menu": "Menu społeczności",
"contact": "Kontakt",
+ "content-buckets": "Zestawy treści",
+ "content-resources": "Zasoby treści",
"content-standardization": "Normalizacja treści",
"contributing": "Współpraca",
- "contributors": "Współpracownicy",
+ "contributors": "Współtwórcy",
"contributors-thanks": "Dziękujemy wszystkim, którzy przyczynili się do powstania tej strony!",
"cookie-policy": "Polityka dotycząca plików cookie",
"copied": "Skopiowane",
"copy": "Kopiuj",
"danksharding": "Danksharding",
- "dao-page": "Zdecentralizowane autonomiczne organizacje (DAO)",
+ "dao-page": "DAO - Zdecentralizowane autonomiczne organizacje",
"dark-mode": "Ciemny",
"data-provided-by": "Źródło danych:",
- "decentralized-applications-dapps": "Aplikacje zdecentralizowane (dapps)",
+ "decentralized-applications-dapps": "Dapps - Aplikacje zdecentralizowane",
"decentralized-identity": "Zdecentralizowana tożsamość",
"decentralized-social-networks": "Zdecentralizowane sieci społecznościowe",
- "decentralized-science": "Zdecentralizowana nauka (DeSci)",
- "defi-page": "Zdecentralizowane finanse (DeFi)",
+ "decentralized-science": "DeSci - Zdecentralizowana nauka",
+ "description": "Opis elementu nawigacyjnego",
+ "defi-page": "DeFi - Zdecentralizowane finanse",
+ "design": "Projekt",
+ "design-principles": "Zasady projektowania",
"devcon": "Devcon",
"developers": "Deweloperzy",
"developers-home": "Strona główna dla deweloperów",
@@ -63,7 +78,7 @@
"ethereum-bug-bounty": "Program nagród za błędy Ethereum",
"consensus-when-shipping": "Kiedy to się stanie?",
"ethereum-upgrades": "Uaktualnienia Ethereum",
- "ethereum-brand-assets": "Aktywa marki Ethereum",
+ "ethereum-brand-assets": "Zasoby marki Ethereum",
"ethereum-online": "Społeczności internetowe",
"ethereum-events": "Wydarzenia Ethereum",
"ethereum-foundation": "Fundacja Ethereum",
@@ -83,7 +98,7 @@
"feedback-card-prompt-tutorial": "Czy ten samouczek był pomocny?",
"feedback-widget-thank-you-title": "Dziękujemy za opinię!",
"feedback-widget-thank-you-subtitle": "Spraw, aby ta strona była jeszcze lepsza, odpowiadając na kilka pytań.",
- "feedback-widget-thank-you-subtitle-ext": "Jeśli potrzebujesz pomocy, możesz skontaktować się ze społecznością na naszym kanale Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Jeśli potrzebujesz pomocy, możesz skontaktować się ze społecznością na naszym serwerze Discord.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Otwórz krótką ankietę",
"find-wallet": "Znajdź portfel",
@@ -94,11 +109,11 @@
"grants": "Granty",
"grant-programs": "Programy grantów dla ekosystemów",
"guides": "Przewodniki",
- "guides-hub": "Centrum przewodników",
+ "guides-hub": "Przewodniki",
"history-of-ethereum": "Historia Ethereum",
"home": "Strona główna",
"how-ethereum-works": "Jak działa Ethereum",
- "how-to-register-an-ethereum-account": "Jak „zarejestrować” konto Ethereum",
+ "how-to-create-an-ethereum-account": "Jak „stworzyć” konto Ethereum",
"how-to-revoke-token-access": "Jak unieważnić dostęp inteligentnych kontraktów do środków kryptowaluty",
"how-to-swap-tokens": "Jak zamienić tokeny",
"how-to-use-a-bridge": "Jak zmostkować tokeny do warstwy 2",
@@ -128,11 +143,115 @@
"loading-error-try-again-later": "Nie udało się załadować danych. Spróbuj ponownie później.",
"logo": "logo",
"mainnet-ethereum": "Sieć główna Ethereum",
+ "merge": "Połącz",
"more": "Więcej",
- "nav-developers": "Autorzy",
+ "nav-about-description": "Publiczny projekt open-source dla społeczności Ethereum",
+ "nav-advanced-description": "Poznaj bardziej złożone zagadnienia",
+ "nav-advanced-label": "Zaawansowane",
+ "nav-basics-description": "Poznaj podstawy Ethereum",
+ "nav-basics-label": "Podstawy",
+ "nav-bridges-description": "Web3 przekształcił się w ekosystem podstawowych łańcuchów bloków L1 i rozwiązań skalowania L2",
+ "nav-builders-home-description": "Podręcznik twórców Ethereum — stworzony przez twórców dla twórców",
+ "nav-builders-home-label": "Strona główna twórcy",
+ "nav-contribute-description": "Jeśli chcesz pomóc, to Cię poprowadzi",
+ "nav-contribute-label": "Przyczynianie się do rozwoju ethereum.org",
+ "nav-dao-description": "Należące do członków społeczności bez scentralizowanej władzy",
+ "nav-dapps-description": "Poznaj bogaty ekosystem aplikacji korzystających z Ethereum",
+ "nav-defi-description": "Globalna, otwarta alternatywa dla tradycyjnego rynku finansowego",
+ "nav-desci-description": "Globalna, otwarta alternatywa dla obecnego systemu naukowego",
+ "nav-desoc-description": "Oparte na łańcuchu bloków platformy umożliwiające interakcje społeczne oraz tworzenie treści",
"nav-developers-docs": "Dokumentacja deweloperów",
+ "nav-developers": "Deweloperzy",
+ "nav-did-description": "Wydawaj i posiadaj swoje unikalne zdecentralizowane identyfikatory",
+ "nav-docs-description": "Dokumenty, które pomogą Ci zrozumieć Ethereum i tworzyć za jego pomocą",
+ "nav-docs-design-description": "Opis unikalnych wyzwań związanych z projektowaniem web3, najlepsze praktyki i wnioski z badań użytkowników",
+ "nav-docs-design-label": "Podstawy projektowania UX/UI",
+ "nav-docs-foundation-description": "Główne podstawy programowania w sieci Ethereum",
+ "nav-docs-foundation-label": "Zagadnienia podstawowe",
+ "nav-docs-overview-description": "Twoja strona główna dokumentów programistycznych",
+ "nav-docs-stack-description": "Poznaj wszystkie szczegóły stosu Ethereum",
+ "nav-docs-stack-label": "Stos Ethereum",
+ "nav-eip-description": "Standardy określające nowe funkcje lub procesy",
+ "nav-eip-label": "EIP - Wnioski dotyczące ulepszenia Ethereum",
+ "nav-emerging-description": "Poznaj inne, nowsze przypadki użycia Ethereum",
+ "nav-emerging-label": "Pojawiające się przypadki użycia",
+ "nav-enterprise-description": "Zastosowania biznesowe Ethereum",
+ "nav-ethereum-org-description": "Ta witryna internetowa jest prowadzona przez społeczność — dołącz do nas i również wnieś swój wkład",
+ "nav-ethereum-wallets-description": "Aplikacja do interakcji z Twoim kontem Ethereum",
+ "nav-events-description": "Decentralizacja i swoboda uczestnictwa dla każdego",
+ "nav-events-irl-description": "Każdego miesiąca odbywają się ważne wydarzenia związane z Ethereum, zarówno osobiste, jak i online",
+ "nav-events-label": "Społeczności i wydarzenia",
+ "nav-events-online-description": "W tych społecznościach internetowych zrzeszone są setki tysięcy entuzjastów Ethereum",
+ "nav-find-wallet-description": "Portfele umożliwiają korzystanie z kryptowalut",
+ "nav-find-wallet-label": "Wybierz swój portfel",
+ "nav-gas-fees-description": "Jak obliczane są opłaty transakcyjne ETH",
+ "nav-gas-fees-label": "Opłaty za gaz",
+ "nav-get-eth-description": "Do korzystania z aplikacji Ethereum niezbędny jest Ether (ETH)",
+ "nav-get-started-description": "Twoje pierwsze kroki w używaniu Ethereum",
+ "nav-governance-description": "Proces związany z aktualizacją protokołu Ethereum",
+ "nav-governance-label": "Zarządzanie",
+ "nav-grants-description": "Wyselekcjonowana przez naszą społeczność lista projektów, które zapewniają programy grantów finansowych",
+ "nav-guide-create-account-description": "Każdy może utworzyć konto Ethereum w dowolnym momencie, za darmo i z aplikacją portfela",
+ "nav-guide-create-account-label": "Jak stworzyć konto Ethereum",
+ "nav-guide-revoke-access-description": "Zachowaj bezpieczeństwo podczas interakcji z inteligentnymi kontraktami i aplikacjami w ekosystemie Ethereum",
+ "nav-guide-revoke-access-label": "Jak cofnąć dostęp do inteligentnego kontraktu",
+ "nav-guide-use-wallet-description": "Dowiedz się, jak obsługiwać wszystkie podstawowe funkcje portfela",
+ "nav-guide-use-wallet-label": "Jak używać portfela",
+ "nav-guides-description": "Praktyczne przewodniki krok po kroku, które pomogą Ci zacząć",
+ "nav-guides-label": "Przewodniki",
+ "nav-history-description": "Oś czasu wszystkich głównych forków i aktualizacji",
+ "nav-history-label": "Historia techniczna Ethereum",
+ "nav-layer-2-description": "Tańsze i szybsze transakcje w Ethereum",
+ "nav-learn-by-coding-description": "Narzędzia, które pomogą Ci eksperymentować z Ethereum",
+ "nav-local-env-description": "Wybierz i skonfiguruj swój stos programistyczny Ethereum",
+ "nav-mainnet-description": "Aplikacje blockchain dla przedsiębiorstw można tworzyć w publicznej sieci głównej Ethereum",
+ "nav-nft-description": "Sposób reprezentowania czegoś wyjątkowego jako aktywu na blockchainie Ethereum",
+ "nav-open-research-description": "Jedną z głównych zalet Ethereum jest jego aktywna społeczność badawcza",
+ "nav-open-research-label": "Otwarte badania",
+ "nav-overview-description": "Edukacją na temat wszystkiego, co związane z Ethereum",
+ "nav-overview-label": "Przegląd",
+ "nav-participate-overview-description": "Informacje o tym, jak wziąć udział",
"nav-primary": "Podstawowe",
- "nft-page": "Tokeny niewymienialne (NFT)",
+ "nav-private-description": "Zasoby deweloperskie dla prywatnego przedsiębiorstwa Ethereum",
+ "nav-quizzes-description": "Sprawdź, jak dobrze rozumiesz Ethereum i kryptowaluty",
+ "nav-quizzes-label": "Przetestuj swoją wiedzę",
+ "nav-refi-description": "Alternatywny system ekonomiczny oparty na zasadach regeneracji",
+ "nav-research-description": "Procesy stosowane w celu ulepszenia Ethereum",
+ "nav-research-label": "Badania i rozwój",
+ "nav-roadmap-description": "Droga do zwiększenia skalowalności, bezpieczeństwa i stabilności Ethereum",
+ "nav-roadmap-future-description": "Umacnianie Ethereum jako niezawodnej sieci zdecentralizowanej",
+ "nav-roadmap-future-label": "Zabezpieczenie na przyszłość",
+ "nav-roadmap-label": "Plan działania",
+ "nav-roadmap-scaling-description": "Aktualizacje sieci, mające na celu dalsze obniżenie kosztów i zwiększenie szybkości transakcji",
+ "nav-roadmap-scaling-label": "Tańsze transakcje",
+ "nav-roadmap-security-description": "Dbanie o to, aby sieć Ethereum pozostała odporna na wszelkiego rodzaju ataki w przyszłości",
+ "nav-roadmap-security-label": "Zwiększone bezpieczeństwo",
+ "nav-roadmap-ux-description": "Korzystanie z Ethereum wymaga uproszczenia",
+ "nav-run-a-node-description": "Zapewnij sobie pełną suwerenność, zarazem pomagając w zabezpieczeniu sieci",
+ "nav-security-description": "Poznaj najlepsze praktyki dotyczące korzystania z kryptowalut",
+ "nav-smart-contracts-description": "Podstawowe elementy składowe ekosystemu Ethereum",
+ "nav-stablecoins-description": "Stablecoiny to tokeny Ethereum zaprojektowane tak, aby utrzymywały stałą wartość",
+ "nav-stake-description": "Zdobywaj nagrody za zabezpieczanie Ethereum",
+ "nav-stake-label": "Stakuj",
+ "nav-staking-home-description": "Omówienie różnych opcji stakingu",
+ "nav-staking-home-label": "Strona główna stakingu",
+ "nav-staking-pool-description": "Stakuj i zdobywaj nagrody z dowolną ilością ETH, łącząc siły z innymi",
+ "nav-staking-pool-label": "Stakowanie w puli",
+ "nav-staking-saas-description": "Działanie Twojego walidatora zapewniają zewnętrzni operatorzy węzłów",
+ "nav-staking-saas-label": "Staking za pomocą usługi",
+ "nav-staking-solo-description": "Uruchamiaj sprzęt domowy i osobiście zwiększaj bezpieczeństwo i decentralizację sieci Ethereum",
+ "nav-staking-solo-label": "Stakowanie solo",
+ "nav-start-building-description": "Przydatne informacje dla nowych użytkowników",
+ "nav-translation-program-description": "Wspólny wysiłek na rzecz przetłumaczenia ethereum.org na wszystkie języki",
+ "nav-tutorials-description": "Wyselekcjonowana lista samouczków społeczności",
+ "nav-use-cases-description": "Odkryj różne pomysły na wykorzystanie Ethereum",
+ "nav-what-is-ether-description": "Waluta aplikacji Ethereum",
+ "nav-what-is-ethereum-description": "Dowiedz się, co wyróżnia Ethereum",
+ "nav-what-is-web3-label": "Co to jest Web3?",
+ "nav-what-is-web3-description": "Alternatywa dla scentralizowanych monopoli dyktujących zasady",
+ "nav-whitepaper-description": "Oryginalna dokumentacja Ethereum napisana przez Vitalika Buterina w roku 2014",
+ "nav-zkp-description": "Sposób na udowodnienie prawdziwości stwierdzenia bez ujawniania samego stwierdzenia",
+ "nft-page": "NFT - Tokeny niewymienialne",
"nfts": "Tokeny NFT",
"no": "Nie",
"on-this-page": "Na tej stronie",
@@ -140,6 +259,8 @@
"page-developers-aria-label": "Menu dewelopera",
"page-index-meta-title": "Strona główna",
"page-last-updated": "Strona ostatnio zaktualizowana",
+ "participate": "Uczestnictwo",
+ "participate-menu": "Menu Uczestnictwo",
"pbs": "Separacja proponujący-budujący",
"pools": "Stakowanie w puli",
"privacy-policy": "Polityka prywatności",
@@ -150,9 +271,11 @@
"refresh": "Odśwież stronę.",
"return-home": "wróć do strony głównej",
"roadmap": "Mapa drogowa Ethereum",
+ "research": "Badania",
+ "research-menu": "Menu Badania",
"resources": "Zasoby do tłumaczenia",
- "regenerative-finance": "Finanse regeneracyjne (ReFi)",
- "run-a-node": "Dodaj węzeł",
+ "regenerative-finance": "ReFi - Finanse regeneracyjne",
+ "run-a-node": "Uruchom węzeł",
"rollup-component-website": "Strona internetowa",
"rollup-component-developer-docs": "Dokumentacja dewelopera",
"rollup-component-technology-and-risk-summary": "Technologia i podsumowanie ryzyka",
@@ -164,7 +287,8 @@
"search-box-blank-state-text": "Szukaj!",
"search-eth-address": "Wygląda to na adres Ethereum. Nie udostępniamy danych specyficznych dla adresów. Spróbuj wyszukać go na eksploratorze bloków, takim jak",
"search-no-results": "Brak wyników wyszukiwania",
- "single-slot-finality": "Nieodwołalność pojedynczego slotu",
+ "security": "Bezpieczeństwo",
+ "single-slot-finality": "Finalizacja pojedynczego slotu",
"statelessness": "Bezstanowość",
"see-contributors": "Zobacz współtwórców",
"set-up-local-env": "Konfiguracja środowiska lokalnego",
@@ -181,6 +305,7 @@
"start-here": "Zacznij tutaj",
"style-guide": "Przewodnik stylu",
"solo": "Stakowanie solo",
+ "support": "Wsparcie",
"terms-of-use": "Warunki użytkowania",
"translation-banner-body-new": "Widzisz tę stronę w języku angielskim, ponieważ jeszcze nie została przetłumaczona. Pomóż nam ją przetłumaczyć.",
"translation-banner-body-update": "Dostępna jest nowsza wersja tej strony, ale tylko w języku angielskim. Pomóż nam przetłumaczyć najnowszą wersję.",
@@ -191,20 +316,23 @@
"translation-banner-no-bugs-title": "Brak błędów!",
"translation-banner-no-bugs-content": "Ta strona nie jest tłumaczona. Na razie celowo zostawiliśmy tę stronę w języku angielskim.",
"translation-banner-no-bugs-dont-show-again": "Nie wyświetlaj ponownie",
+ "translation-program": "programie tłumaczenia",
"try-using-search": "Aby znaleźć to, czego szukasz, spróbuj użyć wyszukiwania lub",
"tutorials": "Samouczki",
"up": "W górę",
+ "use": "Zastosowania",
"use-ethereum": "Korzystanie z Ethereum",
"use-ethereum-menu": "Menu korzystania z Ethereum",
- "user-experience": "Doświadczenia użytkownika",
+ "use-menu": "Menu Zastosowania",
+ "user-experience": "Doświadczenie użytkownika",
"verkle-trees": "Drzewa Verkle",
"wallets": "Portfele",
"we-couldnt-find-that-page": "Nie udało się odnaleźć tej strony",
"web3": "Co to jest Web3?",
"web3-title": "Web3",
"website-last-updated": "Data ostatniej aktualizacji strony",
- "what-is-ether": "Czym jest ether (ETH)?",
- "what-is-ethereum": "Co to jest Ethereum?",
+ "what-is-ether": "Czym jest eter (ETH)?",
+ "what-is-ethereum": "Czym jest Ethereum?",
"withdrawals": "Wypłaty ze stakingu",
"yes": "Tak",
"zero-knowledge-proofs": "Pakiety zbiorcze o wiedzy zerowej"
diff --git a/src/intl/pl/learn-quizzes.json b/src/intl/pl/learn-quizzes.json
index 2f4c247b3ef..5a8530cfed6 100644
--- a/src/intl/pl/learn-quizzes.json
+++ b/src/intl/pl/learn-quizzes.json
@@ -15,7 +15,7 @@
"questions": "Pytania",
"questions-answered": "Pytania, na które odpowiedziano:",
"quizzes-subtitle": "Dowiedz się, jak dobrze rozumiesz Ethereum i kryptowaluty. Czy jesteś gotów stać się ekspertem?",
- "retry": "Ponów próbę:",
+ "retry": "Wskaźnik ponownych prób:",
"score": "Wynik",
"see-results": "Zobacz wyniki",
"share-results": "Udostępnij wyniki",
@@ -37,7 +37,7 @@
"a001-c-explanation": "W przeciwieństwie do Ethereum, Bitcoin nie jest programowalny i nie może uruchamiać dowolnych programów komputerowych.",
"a001-d-label": "Mają inne logo",
"a001-d-explanation": "Mają inne logo! Jednak nie jest to największa różnica między nimi.",
- "a002-prompt": "Natywna kryptowaluta Ethereum jest nazywana:",
+ "a002-prompt": "Natywna kryptowaluta Ethereum to:",
"a002-a-label": "Ether",
"a002-a-explanation": "Ether jest natywną kryptowalutą dla sieci Ethereum.",
"a002-b-label": "Ethereum",
@@ -155,7 +155,7 @@
"d001-a-label": "Portfel mobilny",
"d001-a-explanation": "Portfele mobilne przechowują klucze prywatne na urządzeniu mobilnym, które zazwyczaj posiada połączenie z internetem i może być zagrożone przez inne oprogramowanie.",
"d001-b-label": "Portfel sprzętowy",
- "d001-b-explanation": "Klucze prywatne portfela sprzętowego są przechowywane na dedykowanym urządzeniu, które może być przechowywane bez internetu oraz są odizolowane od innych aplikacji na twoich urządzeniach.",
+ "d001-b-explanation": "Klucze prywatne portfela sprzętowego są przechowywane na przeznaczonym do tego urządzeniu, które może być odcięte od internetu, oraz są odizolowane od innych aplikacji na Twoich urządzeniach.",
"d001-c-label": "Portfel internetowy",
"d001-c-explanation": "Portfele internetowe są mniej bezpieczne niż portfele sprzętowe, ponieważ klucze prywatne są przechowywane na urządzeniu podłączonym do internetu.",
"d001-d-label": "Portfel komputerowy",
@@ -241,7 +241,7 @@
"f004-b-explanation": "NFT pomogły stworzyć nową gospodarkę dla twórców, a nie emisyjną.",
"f004-c-label": "gospodarkę twórców",
"f004-c-explanation": "NFT przyczyniły się do powstania gospodarki twórców.",
- "f004-d-label": "gospodarki doge",
+ "f004-d-label": "gospodarkę doge",
"f004-d-explanation": "NFT pomogły stworzyć nową gospodarkę dla twórców, a nie gospodarkę doge 🐶.",
"f005-prompt": "NFT na Ethereum są szkodliwe dla środowiska",
"f005-a-label": "Prawda",
diff --git a/src/intl/pl/page-dapps.json b/src/intl/pl/page-dapps.json
index 1386f87d14f..f2ca1805fd7 100644
--- a/src/intl/pl/page-dapps.json
+++ b/src/intl/pl/page-dapps.json
@@ -1,32 +1,48 @@
{
"page-dapps-1inch-logo-alt": "1-calowe logo",
- "page-dapps-dexguru-logo-alt": "Logo DexGuru",
"page-dapps-aave-logo-alt": "Logo Aave",
"page-dapps-add-button": "Zasugeruj dapp",
"page-dapps-add-title": "Dodaj dapp",
+ "page-dapps-ankr-logo-alt": "Logo Ankr",
+ "page-dapps-api3-logo-alt": "Logo API3",
+ "page-dapps-arweave-logo-alt": "Logo ARweave",
"page-dapps-audius-logo-alt": "Logo Audius",
"page-dapps-augur-logo-alt": "Logo Augur",
"page-dapps-axie-infinity-logo-alt": "Logo Axie Infinity",
"page-dapps-balancer-logo-alt": "Logo Balancer",
"page-dapps-brave-logo-alt": "Logo Brave",
+ "page-dapps-beginner-friendly-description": "Klika zdecentralizowanych aplikacji dobrych dla początkujących. Odkryj więcej poniżej.",
+ "page-dapps-beginner-friendly-header": "Przyjazne dla początkujących",
"page-dapps-category-arts": "Sztuka i moda",
"page-dapps-category-browsers": "Przeglądarki",
+ "page-dapps-category-code-marketplaces": "Rynki kodów",
"page-dapps-category-collectibles": "Cyfrowe artykuły kolekcjonerskie",
- "page-dapps-category-competitive": "Konkurencja",
+ "page-dapps-category-competitive": "Gry Web3",
"page-dapps-category-computing": "Narzędzia deweloperskie",
- "page-dapps-category-dex": "Zamiana tokenów",
- "page-dapps-category-investments": "Inwestycje",
+ "page-dapps-category-dex": "Giełdy",
+ "page-dapps-category-investments": "Fundusze inwestycyjne",
"page-dapps-category-lending": "Kredyty i pożyczki",
"page-dapps-category-lottery": "Fundusze społecznościowe",
"page-dapps-category-marketplaces": "Rynki",
"page-dapps-category-music": "Muzyka",
"page-dapps-category-payments": "Płatności",
"page-dapps-category-insurance": "Ubezpieczenie",
- "page-dapps-category-portfolios": "Portfolia",
- "page-dapps-category-trading": "Rynki handlowe i prognostyczne",
+ "page-dapps-category-portfolios": "Zarządzanie portfolio",
+ "page-dapps-category-trading": "Rynki prognostyczne",
"page-dapps-category-utilities": "Narzędzia",
"page-dapps-category-worlds": "Wirtualne światy",
+ "page-dapps-category-demand-aggregator": "Agregatory popytu",
+ "page-dapps-category-derivatives": "Pochodne",
+ "page-dapps-category-liquid-staking": "Płynny staking",
+ "page-dapps-category-bridges": "Mosty",
+ "page-dapps-category-experiences": "Wspólne doświadczenia",
+ "page-dapps-category-guilds": "Gildie zysków",
+ "page-dapps-category-avatar": "Awatary",
"page-dapps-choose-category": "Wybierz kategorię",
+ "page-dapps-category-social": "Media społecznościowe",
+ "page-dapps-category-content": "Treść",
+ "page-dapps-category-messaging": "Wiadomości",
+ "page-dapps-category-identity": "Tożsamość",
"page-dapps-collectibles-benefits-1-description": "Gdy dzieło sztuki jest tokenizowane na Ethereum, można udowodnić jego własność w sposób widoczny dla wszystkich. Można prześledzić drogę dzieła sztuki od momentu jego stworzenia do obecnego posiadacza. Zapobiega to fałszerstwom.",
"page-dapps-collectibles-benefits-1-title": "Można udowodnić własność",
"page-dapps-collectibles-benefits-2-description": "Płacenie za streaming muzyki lub zakup dzieł sztuki jest o wiele bardziej sprawiedliwe dla artystów. Dzięki Ethereum nie ma potrzeby korzystania z pośredników. A jeśli pośrednicy są potrzebni, ich koszty nie są tak wysokie, ponieważ platformy nie muszą płacić za infrastrukturę sieci.",
@@ -41,10 +57,15 @@
"page-dapps-collectibles-description": "Są to aplikacje, które skupiają się na własności cyfrowej, zwiększaniu potencjału zarobkowego twórców oraz wymyślaniu nowych sposobów inwestowania w ulubionych twórców i ich pracę.",
"page-dapps-collectibles-title": "Zdecentralizowane przedmioty artystyczne i kolekcjonerskie",
"page-dapps-compound-logo-alt": "Logo Compound",
+ "page-dapps-convex-logo-alt": "Logo Convex",
"page-dapps-cryptopunks-logo-alt": "Logo CryptoPunks",
"page-dapps-cryptovoxels-logo-alt": "Logo Cryptovoxels",
+ "page-dapps-cyberconnect-logo-alt": "Logo CyberConnect",
"page-dapps-dapp-description-1inch": "Pomaga uniknąć znaczących poślizgów cenowych dzięki agregacji najlepszych cen.",
"page-dapps-dapp-description-aave": "Wypożycz swoje tokeny, aby zarobić odsetki i wypłacić je w dowolnym czasie.",
+ "page-dapps-dapp-description-ankr": "Zestaw różnych produktów infrastruktury Web3 do budowania, zarabiania, grania i nie tylko — wszystko na blockchainie.",
+ "page-dapps-dapp-description-api3": "Kanały referencyjne danych first-party cen, które umożliwiają zdecentralizowanym aplikacjom w 10 sieciach (a ich liczba stale rośnie) łączenie się z danymi cen aktywów w czasie rzeczywistym, w tym cenami kryptowalut oraz forexów.",
+ "page-dapps-dapp-description-arweave": "Przechowuj dane permanentnie, w sposób zrównoważony, za jedną opłatą z góry.",
"page-dapps-dapp-description-async-art": "Twórz, zbieraj i handluj #ProgrammableArt - obrazami cyfrowymi podzielonymi na \"Warstwy\", które możesz wykorzystać, aby wpłynąć na ogólny obraz. Każdy mistrz i warstwa jest tokenem ERC721.",
"page-dapps-dapp-description-audius": "Zdecentralizowana platforma streamingowa. Słuchanie = pieniądze dla twórców, a nie etykiet.",
"page-dapps-dapp-description-augur": "Obstawiaj wyniki sportowe, ekonomiczne i inne wydarzenia na świecie.",
@@ -53,24 +74,34 @@
"page-dapps-dapp-description-brave": "Zarabiaj tokeny za przeglądanie i wspieraj swoich ulubionych twórców.",
"page-dapps-dapp-description-cent": "Sieć społecznościowa, w której zarabiasz poprzez umieszczenie NFT.",
"page-dapps-dapp-description-compound": "Wypożycz swoje tokeny, aby zarobić odsetki i wypłacić je w dowolnym czasie.",
+ "page-dapps-dapp-description-convex": "Convex pozwala dostawcom płynności Curve zarabiać na opłatach transakcyjnych i ubiegać się o zwiększone CRV bez blokowania ich CRV.",
"page-dapps-dapp-description-cryptopunks": "Kupuj, licytuj i oferuj punki na sprzedaż — jeden z pierwszych tokenów kolekcjonerskich na Ethereum.",
"page-dapps-dapp-description-cryptovoxels": "Stwórz galerię sztuki, buduj sklepy i kup ziemię — wirtualny świat Ethereum.",
+ "page-dapps-dapp-description-cyberconnect": "Zdecentralizowany protokół grafu społecznościowego, który pomaga zdecentralizowanym aplikacjom w uruchamianiu efektów sieciowych i budowaniu spersonalizowanych doświadczeń społecznościowych",
"page-dapps-dapp-description-dark-forest": "Podbijaj planety w nieskończonym, proceduralnie generowanym, kryptograficznie określonym wszechświecie.",
"page-dapps-dapp-description-decentraland": "Zbieraj, handluj wirtualną ziemią w wirtualnym świecie, który możesz odkrywać.",
"page-dapps-dapp-description-ens": "Przyjazne dla użytkowników nazwy adresów Ethereum i zdecentralizowanych stron.",
"page-dapps-dapp-description-foundation": "Inwestuj w unikalne edycje sztuki cyfrowej i handluj z innymi nabywcami.",
"page-dapps-dapp-description-gitcoin": "Zarabiaj kryptowaluty, pracując nad oprogramowaniem open-source.",
"page-dapps-dapp-description-gitcoin-grants": "Finansowanie społecznościowe projektów społeczności Ethereum ze zwiększonym wkładem finansowym",
+ "page-dapps-dapp-description-gm": "Uniwersalna platforma do czatu, forów i komunikacji głosowej, która dzieli się przychodami ze swoimi twórcami",
"page-dapps-dapp-description-gods-unchained": "Strategiczna handlowa gra karciana. Grając, zdobywaj karty, które możesz sprzedać w prawdziwym życiu.",
"page-dapps-dapp-description-golem": "Uzyskaj dostęp do współdzielonej mocy obliczeniowej lub wynajmuj własne zasoby.",
+ "page-dapps-dapp-description-graph": "Protokół indeksujący do zapytań w sieciach takich jak Ethereum i IPFS.",
+ "page-dapps-dapp-description-ipfs": "Protokół hipermedialny peer-to-peer zaprojektowany w celu zachowania i rozwoju wiedzy ludzkości poprzez uczynienie sieci możliwą do aktualizacji, odporną i bardziej otwartą.",
"page-dapps-dapp-description-radicle": "Bezpieczna współpraca z kodem peer-to-peer bez pośredników.",
+ "page-dapps-dapp-description-kyberswap": "Wymieniaj i zarabiaj po najlepszych kursach.",
+ "page-dapps-dapp-description-lido": "Uproszczony i bezpieczny staking dla aktywów cyfrowych.",
"page-dapps-dapp-description-loopring": "Platforma handlowa peer-to-peer stworzona z myślą o szybkości.",
"page-dapps-dapp-description-marble-cards": "Twórz unikalne karty cyfrowe oparte na adresach URL i handluj nimi.",
"page-dapps-dapp-description-matcha": "Wyszukuje wiele giełd, aby pomóc Ci znaleźć najlepsze ceny.",
+ "page-dapps-dapp-description-mirror": "Zbudowana na web3 dla web3, solidna platforma wydawnicza Mirror przesuwa granice pisania online",
+ "page-dapps-dapp-description-multichain": "Najlepszy router dla web3. Jest to infrastruktura stworzona do dowolnych interakcji międzyłańcuchowych.",
"page-dapps-dapp-description-nifty-gateway": "Kupuj prace w łańcuchu od najlepszych artystów, sportowców, marek i twórców.",
"page-dapps-dapp-description-oasis": "Handluj, pożyczaj i oszczędzaj z Dai, stablecoinem Ethereum.",
"page-dapps-dapp-description-opensea": "Kupuj, sprzedawaj, odkrywaj i wymieniaj rzeczami z limitowanych edycji.",
"page-dapps-dapp-description-opera": "Wyślij kryptowaluty ze swojej przeglądarki do sprzedawców, innych użytkowników i aplikacji.",
+ "page-dapps-dapp-description-osuvox": "Awatary 3D żyjące na blockchainie",
"page-dapps-dapp-description-poap": "Zbieraj NFT potwierdzające, że brałeś udział w różnych wirtualnych lub stacjonarnych wydarzeniach. Użyj ich, aby dołączyć do loterii, głosować, współpracować lub po prostu móc się pochwalić.",
"page-dapps-dapp-description-polymarket": "Postaw na wyniki. Handluj na rynkach informacji.",
"page-dapps-dapp-description-pooltogether": "Loteria, w której nie można przegrać. Nagrody co tydzień.",
@@ -82,13 +113,18 @@
"page-dapps-dapp-description-rotki": "Narzędzie open source do śledzenia portfela, analizy, księgowości i raportowania podatkowego, które szanuje Twoją prywatność.",
"page-dapps-dapp-description-krystal": "Kompleksowa platforma umożliwiająca dostęp do wszystkich Twoich ulubionych usług DeFi.",
"page-dapps-dapp-description-rarible": "Twórz, sprzedawaj i kupuj tokenizowane przedmioty kolekcjonerskie.",
+ "page-dapps-dapp-description-rubic": "Międzyłańcuchowy agregator technologii dla użytkowników i zdecentralizowanych aplikacji.",
"page-dapps-dapp-description-sablier": "Przesyłaj pieniądze w czasie rzeczywistym.",
+ "page-dapps-dapp-description-skiff": "Całkowicie szyfrowana poczta e-mail, kalendarz, dokumenty i pliki, które umożliwiają swobodną komunikację.",
+ "page-dapps-dapp-description-spatial": "Stwórz swój własny awatar i światy 3D",
+ "page-dapps-dapp-description-spruce": "Stos open-source pozostawiający kontrolę nad tożsamością i danymi tam, gdzie powinna być — z użytkownikami.",
+ "page-dapps-dapp-description-status": "Zaprojektowany, aby umożliwić swobodny przepływ informacji, chronić prawo do prywatnych, bezpiecznych rozmów i promować suwerenność jednostek.",
"page-dapps-dapp-description-superrare": "Kupuj dzieła cyfrowe bezpośrednio od artystów lub na rynkach wtórnych.",
+ "page-dapps-dapp-description-synthetix": "Synthetix to protokół do emisji i handlu aktywami syntetycznymi",
"page-dapps-dapp-description-token-sets": "Strategie kryptowalutowych inwestycji, które automatycznie przywracają równowagę.",
- "page-dapps-dapp-description-tornado-cash": "Wysyłaj anonimowe transakcje na Ethereum.",
"page-dapps-dapp-description-uniswap": "Wymieniaj tokeny w prosty sposób lub dostarczaj tokeny w zamian za % nagrody.",
- "page-dapps-dapp-description-dexguru": "Terminal handlowy bez ograniczeń dla traderów DeFi",
- "page-dapps-dapp-description-synthetix": "Synthetix to protokół do emisji i handlu aktywami syntetycznymi",
+ "page-dapps-dapp-description-xmtp": "Wysyłaj wiadomości między kontami blockchain, w tym wiadomości prywatne, alerty, ogłoszenia i nie tylko.",
+ "page-dapps-dapp-description-yearn": "Yearn Finance to agregator zysków. Daje osobom fizycznym, DAO i innym protokołom sposób na wpłacenie zasobów cyfrowych i otrzymywanie zysków.",
"page-dapps-docklink-dapps": "Wprowadzenie do dapps",
"page-dapps-docklink-smart-contracts": "Inteligentne kontrakty",
"page-dapps-dark-forest-logo-alt": "Logo Dark Forest",
@@ -104,9 +140,7 @@
"page-dapps-desc": "Znajdź aplikację Ethereum, aby wypróbować.",
"page-dapps-doge-img-alt": "Ilustracja pieseła siedzącego przy komputerze",
"page-dapps-editors-choice-dark-forest": "Graj przeciwko innym, aby podbijać planety i wypróbować najnowocześniejszą technologię skalowania/prywatności Ethereum. Być może dla tych, którzy są już zaznajomieni z Ethereum.",
- "page-dapps-editors-choice-description": "Kilka zdecentralizowanych aplikacji, które zespół ethereum.org uwielbia w tej chwili. Odkryj więcej zdecentralizowanych aplikacji poniżej.",
"page-dapps-editors-choice-foundation": "Zainwestuj w kulturę. Kupuj, wymieniaj i sprzedawaj unikalne cyfrowe dzieła sztuki i modę od niesamowitych artystów, muzyków i marek.",
- "page-dapps-editors-choice-header": "Wybór redakcji",
"page-dapps-editors-choice-pooltogether": "Kup bilet na loterię bez przegranych. Co tydzień, odsetki wygenerowane z całej puli losów trafiają do jednego szczęśliwego zwycięzcy. Odzyskaj swoje pieniądze, kiedy tylko zechcesz.",
"page-dapps-editors-choice-uniswap": "Z łatwością zamieniaj tokeny. Ulubiona aplikacja społeczności pozwalająca na handel tokenami z ludźmi w całej sieci.",
"page-dapps-ens-logo-alt": "Logo Ethereum Name Service",
@@ -156,8 +190,10 @@
"page-dapps-get-started-title": "Rozpocznij",
"page-dapps-gitcoin-grants-logo-alt": "Logo Gitcoin Grants",
"page-dapps-gitcoin-logo-alt": "Logo Gitcoin",
+ "page-dapps-gm-logo-alt": "Logo gm.xyz",
"page-dapps-gods-unchained-logo-alt": "Logo Gods Unchained",
"page-dapps-golem-logo-alt": "Logo Golem",
+ "page-dapps-graph-logo-alt": "Logo Graph",
"page-dapps-radicle-logo-alt": "Logo Radicle",
"page-dapps-hero-header": "Narzędzia i usługi oparte na Ethereum",
"page-dapps-hero-subtitle": "Aplikacje zdecentralizowane stanowią rosnący trend wśród aplikacji wykorzystujących Ethereum do przekształcania modeli biznesowych lub tworzenia nowych.",
@@ -165,10 +201,13 @@
"page-dapps-how-dapps-work-p2": "Inteligentny kontrakt jest jak zestaw reguł, które są widoczne dla wszystkich w łańcuchu i działają dokładnie według tych reguł. Wyobraź sobie automat sprzedający: jeśli dostarczysz mu wystarczającą ilość środków i dokonasz właściwego wyboru, otrzymasz żądany przedmiot. Podobnie jak automaty sprzedające, inteligentne kontrakty mogą przechowywać środki, podobnie jak Twoje konto Ethereum. Pozwala to kodowi pośredniczyć w umowach i transakcjach.",
"page-dapps-how-dapps-work-p3": "Gdy zdecentralizowane aplikacje zostaną wdrożone do sieci Ethereum, nie można ich zmienić. Aplikacje mogą być zdecentralizowane, ponieważ są kontrolowane przez logikę zapisaną w kontrakcie, a nie przez osobę czy firmę.",
"page-dapps-how-dapps-work-title": "Jak działają aplikacje zdecentralizowane",
+ "page-dapps-ipfs-logo-alt": "Logo IPFS",
+ "page-dapps-kyberswap-logo-alt": "Logo KyberSwap",
"page-dapps-learn-callout-button": "Zacznij tworzenie",
- "page-dapps-learn-callout-description": "Nasz portal społeczności deweloperów zawiera dokumenty, narzędzia i ramy, które pomogą Ci rozpocząć tworzenie zdecentralizowanej aplikacji.",
+ "page-dapps-learn-callout-description": "Nasz portal społeczności deweloperów zawiera dokumenty, narzędzia i frameworki, które pomogą Ci rozpocząć tworzenie zdecentralizowanej aplikacji.",
"page-dapps-learn-callout-image-alt": "Ilustracja przedstawiająca dłoń tworzącą symbol ETH z klocków lego.",
"page-dapps-learn-callout-title": "Naucz się tworzyć zdecentralizowane aplikacje",
+ "page-dapps-lido-logo-alt": "Logo Lido",
"page-dapps-loopring-logo-alt": "Logo Loopring",
"page-dapps-magic-behind-dapps-description": "Aplikacje zdecentralizowane mogą wydawać się zwykłymi aplikacjami. Mają jednak pewne specjalne cechy, ponieważ dziedziczą wszystkie supermoce Ethereum. Dzięki temu aplikacje zdecentralizowane różnią się od zwykłych aplikacji.",
"page-dapps-magic-behind-dapps-link": "Co decyduje o wspaniałości Ethereum?",
@@ -179,11 +218,23 @@
"page-dapps-marble-cards-logo-alt": "Logo marble.cards",
"page-dapps-async-logo-alt": "Logo Async",
"page-dapps-matcha-logo-alt": "Logo Matcha",
+ "page-dapps-metaverse-benefits-title": "metaverse",
+ "page-dapps-metaverse-benefits-description": "Co takiego jest w Ethereum, że pozwala metaverse rozwijać się?",
+ "page-dapps-metaverse-benefits-1-title": "Tokeny NFT",
+ "page-dapps-metaverse-benefits-1-description": "Unikalne przedmioty w grze, które są własnością użytkowników i są interoperacyjne między wirtualnymi światami i rynkami obsługującymi te same standardy.",
+ "page-dapps-metaverse-benefits-2-title": "Społeczności należące do użytkowników",
+ "page-dapps-metaverse-benefits-2-description": "Tożsamości są własnością użytkowników z nieskończonymi możliwościami odkrywania i tworzenia sieci społecznościowych w wielu wirtualnych światach.",
+ "page-dapps-metaverse-button": "Metaverse",
+ "page-dapps-metaverse-title": "Metaverse",
+ "page-dapps-metaverse-description": "Są to aplikacje, które umożliwiają użytkownikom na swobodne uczestnictwo w wirtualnych światach. Użytkownicy mogą tworzyć osobiste sieci i przejmować na własność cyfrowe zasoby",
+ "page-dapps-mirror-logo-alt": "Logo Mirror",
"page-dapps-mobile-options-header": "Przeglądaj inne kategorie",
+ "page-dapps-multichain-logo-alt": "Logo Multichain",
"page-dapps-nifty-gateway-logo-alt": "Logo Nifty Gateway",
"page-dapps-oasis-logo-alt": "Logo Oasis",
"page-dapps-opensea-logo-alt": "Logo OpenSea",
"page-dapps-opera-logo-alt": "Logo Opera",
+ "page-dapps-osuvox-logo-alt": "Logo OSUVOX",
"page-dapps-polymarket-logo-alt": "Logo Polymarket",
"page-dapps-poap-logo-alt": "Logo protokołu potwierdzającego obecność",
"page-dapps-pooltogether-logo-alt": "Logo PoolTogether",
@@ -191,16 +242,23 @@
"page-dapps-ready-button": "Przejdź",
"page-dapps-ready-description": "Wybierz aplikację, aby wypróbować",
"page-dapps-ready-title": "Gotów?",
+ "page-dapps-rubic-logo-alt": "Logo Rubic",
"page-dapps-sablier-logo-alt": "Logo Sablier",
"page-dapps-set-up-a-wallet-button": "Znajdź portfel",
"page-dapps-set-up-a-wallet-description": "Portfel jest twoim „loginem” dla zdecentralizowanych aplikacji",
"page-dapps-set-up-a-wallet-title": "Konfiguracja portfela",
+ "page-dapps-skiff-logo-alt": "Logo Skiff",
+ "page-dapps-social-button": "Społeczność",
+ "page-dapps-social-description": "Są to aplikacje, które koncentrują się na tworzeniu zdecentralizowanych sieci społecznościowych wykorzystujących zdecentralizowane technologie tożsamości, w których cyfrowe tożsamości i wykresy społecznościowe są własnością użytkowników.",
+ "page-dapps-social-title": "Społeczność",
+ "page-dapps-spatial-logo-alt": "Logo Spatial",
+ "page-dapps-spruce-logo-alt": "Logo Spruce",
+ "page-dapps-status-logo-alt": "Logo statusu",
"page-dapps-superrare-logo-alt": "Logo SuperRare",
"page-dapps-technology-button": "Technologia",
"page-dapps-technology-description": "Są to aplikacje, które koncentrują się na decentralizacji narzędzi deweloperskich, włączaniu systemów kryptoekonomicznych do istniejących technologii oraz tworzeniu rynków dla prac rozwojowych typu open source.",
"page-dapps-technology-title": "Technologia zdecentralizowana",
"page-dapps-token-sets-logo-alt": "Logo Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo Uniswap",
"page-dapps-wallet-callout-button": "Znajdź portfel",
"page-dapps-wallet-callout-description": "Portfele są również zdecentralizowanymi aplikacjami. Znajdź jeden na podstawie funkcji, które Ci odpowiadają.",
@@ -214,11 +272,17 @@
"page-dapps-more-on-nft-gaming-button": "Więcej o tokenizowanych przedmiotach w grze",
"page-dapps-dapp-description-pwn": "Łatwe pożyczki zabezpieczone dowolnym tokenem lub NFT w Ethereum.",
"page-dapps-pwn-image-alt": "Logo PWN",
- "page-dapps-dapp-description-yearn": "Yearn Finance to agregator zysków. Daje osobom fizycznym, DAO i innym protokołom sposób na wpłacenie zasobów cyfrowych i otrzymywanie zysków.",
+ "page-dapps-xmtp-logo-alt": "Logo XMTP",
+ "opage-dapps-yearn-logo-alt": "Logo Yearn",
"page-dapps-yearn-image-alt": "Logo Yearn",
- "page-dapps-dapp-description-convex": "Convex pozwala dostawcom płynności Curve zarabiać na opłatach transakcyjnych i ubiegać się o zwiększone CRV bez blokowania ich CRV.",
"page-dapps-convex-image-alt": "Logo Convex",
"foundation": "Fundacja",
"transaction-fees": "Co to są opłaty transakcyjne?",
- "page-wallets-get-some": "Weź trochę ETH"
+ "page-wallets-get-some": "Zdobądź trochę ETH",
+ "page-dapps-dapp-description-curve": "Curve to zdecentralizowana giełda skupiająca się na stablecoinach",
+ "page-dapps-curve-image-alt": "Logo Curve",
+ "page-dapps-dapp-description-dodo": "DODO jest dostawcą płynności w łańcuchu, który wykorzystuje algorytm Proactive Market Maker (PMM)",
+ "page-dapps-dodo-image-alt": "Logo DODO",
+ "page-dapps-dapp-description-artblocks": "Art Blocks zajmuje się ożywianiem fascynujących dzieł współczesnej sztuki generatywnej",
+ "page-dapps-artblocks-image-alt": "Logo Art Blocks"
}
diff --git a/src/intl/pl/page-developers-index.json b/src/intl/pl/page-developers-index.json
index 205fbe377d0..d27c1ba8dc9 100644
--- a/src/intl/pl/page-developers-index.json
+++ b/src/intl/pl/page-developers-index.json
@@ -24,7 +24,7 @@
"page-developers-explore-documentation": "Przejrzyj dokumentację",
"page-developers-feedback": "Jeśli chcesz nam przekazać swoją opinię, jesteśmy dostępni poprzez GitHub lub na serwerze Discord.",
"page-developers-frameworks-desc": "Narzędzia służące przyspieszeniu rozwoju",
- "page-developers-frameworks-link": "Ramy rozwojowe",
+ "page-developers-frameworks-link": "Frameworki programistyczne",
"page-developers-fundamentals": "Podstawy",
"page-developers-gas-desc": "Ether potrzebny do zasilania transakcji",
"page-developers-gas-link": "Paliwo",
diff --git a/src/intl/pl/page-gas.json b/src/intl/pl/page-gas.json
new file mode 100644
index 00000000000..47e6ce3a664
--- /dev/null
+++ b/src/intl/pl/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Opłaty za gaz w Ethereum: jak działają?",
+ "page-gas-meta-description": "Dowiedz się więcej o gazie w Ethereum: jak działa i jak płacić za niego mniejsze opłaty",
+ "page-gas-hero-title": "Opłaty za gaz",
+ "page-gas-hero-header": "Opłaty sieciowe",
+ "page-gas-hero-button-1-content": "Co to jest gaz?",
+ "page-gas-hero-subtitle-1": "Opłaty sieciowe w Ethereum nazywane są gazem.",
+ "page-gas-hero-subtitle-2": "Gaz jest paliwem zasilającym Ethereum.",
+ "page-gas-summary-title": "Podsumowanie",
+ "page-gas-summary-item-1": "Każda transakcja na Ethereum wymaga niewielkiej płatności, aby została przetworzona",
+ "page-gas-summary-item-2": "Te opłaty są znane jako opłaty za „gaz”",
+ "page-gas-summary-item-3": "Opłaty za gaz zmieniają się w zależności od przeciążenia sieci",
+ "page-gas-what-are-gas-fees-header": "Czym są opłaty za gaz?",
+ "page-gas-what-are-gas-fees-text-1": "Pomyśl o Ethereum jak o dużej sieci komputerowej, w której ludzie mogą wykonywać zadania, np. wysyłać wiadomości lub uruchamiać programy. Podobnie jak w prawdziwym świecie wykonanie tych zadań wymaga energii.",
+ "page-gas-what-are-gas-fees-text-2": "W Ethereum każde działanie obliczeniowe ma ustaloną cenę „gazu”. Twoja opłata za gaz to całkowity koszt działań w Twojej transakcji. Kiedy wysyłasz transakcję lub uruchamiasz inteligentny kontrakt, uiszczasz opłatę za gaz, aby działanie zostało przetworzone.",
+ "page-gas-how-do-i-pay-less-gas-header": "Jak płacić mniej za gaz?",
+ "page-gas-how-do-i-pay-less-gas-text": "Chociaż wyższe opłaty w Ethereum są czasami nieuniknione, istnieją strategie, które pozwalają obniżyć koszty:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Planuj czas transakcji",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Podobnie jak podróżowanie poza sezonem wiąże się z mniejszym tłokiem i bardziej przystępnymi cenami, tak Ethereum jest generalnie tańsze w użyciu, gdy Ameryka Północna śpi.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Poczekaj na spadek cen gazu",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Ceny gazu rosną i spadają co dwanaście sekund w zależności od ruchu w Ethereum. Gdy są wysokie, zaledwie kilka minut odczekania przed dokonaniem transakcji może wystarczyć, by znacząco spadły.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Używanie warstwy 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Łańcuchy warstwy 2 są zbudowane na Ethereum, oferując niższe opłaty i obsługując więcej transakcji. Są dobrym wyborem, aby zaoszczędzić na opłatach za transakcje, które nie muszą odbywać się w głównej sieci Ethereum.",
+ "page-gas-try-layer-2": "Wypróbuj warstwę 2",
+ "page-gas-what-causes-high-gas-fees-header": "Co powoduje wysokie ceny za gaz?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Gdy tylko ilość obliczeń (gazu) w Ethereum przekroczy określony próg, opłaty za gaz zaczynają rosnąć. Im bardziej ten próg jest przekroczony, tym szybciej rosną opłaty za gaz.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Wyższe opłaty mogą być spowodowane przez takie rzeczy jak popularne zdecentralizowane aplikacje lub NFT, okresowo zwiększony handel na DEX lub przytłaczającą liczbę aktywności użytkowników w godzinach szczytu.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Deweloperzy w Ethereum powinni zadbać o optymalizację wykorzystania swoich inteligentnych kontraktów przed ich wdrożeniem. Jeśli wiele osób korzysta ze słabo napisanego inteligentnego kontraktu, będzie on zużywał więcej gazu i może nieumyślnie spowodować przeciążenie sieci.",
+ "page-gas-want-to-dive-deeper": "Chcesz zagłębić się w temat?",
+ "page-gas-check-out-the-developer-docs": "Zapoznaj się z dokumentacją dla deweloperów.",
+ "page-gas-attack-of-the-cryptokitties-header": "Atak Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "W listopadzie 2017 r. wystartował popularny projekt CryptoKitties. Gwałtowny wzrost jego popularności spowodował znaczne przeciążenie sieci i niezwykle wysokie opłaty za gaz. Wyzwania stawiane przez CryptoKitties zwiększyły potrzebę znalezienia rozwiązań do skalowania Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Dlaczego potrzebujemy gazu?",
+ "page-gas-why-do-we-need-gas-text": "Gaz jest kluczowym elementem zapewniającym bezpieczeństwo Ethereum i przetwarzanie transakcji. Pomaga na wiele sposobów:",
+ "page-gas-benefits-1-description": "Gaz sprawia, że Ethereum jest odporne na atak Sybil, uniemożliwiając złośliwym podmiotom przeciążanie sieci nieuczciwymi aktywnościami.",
+ "page-gas-benefits-2-description": "Ponieważ obliczenia kosztują gaz, spamowanie Ethereum drogimi transakcjami, zarówno przypadkowo, jak i złośliwie, jest finansowo utrudnione.",
+ "page-gas-benefits-3-description": "Twardy limit ilości obliczeń, które można wykonać w danym momencie, zapobiega przeciążaniu Ethereum, pomagając zapewnić stałą dostępność sieci.",
+ "page-gas-how-is-gas-calculated-header": "Jak obliczany jest gaz?",
+ "page-gas-advanced": "Zaawansowane",
+ "page-gas-how-is-gas-calculated-text-1": "Całkowita opłata za gaz składa się z kilku części:",
+ "page-gas-how-is-gas-calculated-item-1": "Opłata podstawowa: ustalana przez sieć opłata, którą należy uiścić za transakcję",
+ "page-gas-how-is-gas-calculated-item-2": "Opłata priorytetowa: opcjonalny napiwek zachęcający operatorów węzłów do uwzględnienia Twojej transakcji",
+ "page-gas-how-is-gas-calculated-item-3": "Ilość zużytego gazu*: pamiętasz, jak mówiliśmy, że gaz reprezentuje obliczenia? Bardziej złożone działania, takie jak interakcja z inteligentnym kontraktem, zużywają więcej gazu niż te proste, takie jak wysłanie transakcji.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* W Tabeli 1 możesz sprawdzić, ile gazu zużywają różne rodzaje transakcji",
+ "page-gas-how-is-gas-calculated-text-2": "Wzór na obliczenie opłaty za gaz to: ilość zużytego gazu * (opłata podstawowa + opłata priorytetowa). Większość portfeli oblicza zużycie gazu i wyświetla je w prostszy sposób.",
+ "page-gas-table-figure": "Tabela 1: Zużycie gazu według rodzaju transakcji",
+ "page-gas-table-header-1": "Rodzaj transakcji",
+ "page-gas-table-header-2": "Ilość zużytego gazu",
+ "page-gas-table-item-1-transaction-type": "Wysyłanie ETH",
+ "page-gas-table-item-2-transaction-type": "Wysyłanie tokenów ERC-20",
+ "page-gas-table-item-3-transaction-type": "Transfer NFT",
+ "page-gas-table-item-4-transaction-type": "Zamiana na Uniswap",
+ "page-gas-faq-header": "Najczęściej zadawane pytania",
+ "page-gas-faq-question-1-q": "Kto otrzymuje opłatę za gaz w mojej transakcji?",
+ "page-gas-faq-question-1-a-1": "Większość opłaty za gaz — opłata podstawowa — jest niszczona (spalana) przez protokół. Opłata priorytetowa, jeśli została uwzględniona w Twojej transakcji, zostanie przekazana walidatorowi, który zaproponował Twoją transakcję.",
+ "page-gas-faq-question-1-a-2": "Szczegółowy opis tego procesu można znaleźć w dokumentach dla deweloperów gazu.",
+ "page-gas-faq-question-2-q": "Czy muszę płacić za gaz w ETH?",
+ "page-gas-faq-question-2-a-1": "Tak. Wszystkie opłaty za gaz w Ethereum muszą być uiszczane w natywnej walucie ETH.",
+ "page-gas-faq-question-2-a-2": "Więcej na temat ETH",
+ "page-gas-faq-question-3-q": "Czym jest gwei?",
+ "page-gas-faq-question-3-a-1": "W większości portfeli lub modułów do śledzenia gazu można zobaczyć ceny gazu wyrażone w „gwei”.",
+ "page-gas-faq-question-3-a-2": "Gwei to po prostu mniejsza jednostka ETH, podobnie jak grosze dla złotówek, z tą różnicą, że 1 ETH równa się 1 miliardowi gwei. Gwei jest przydatne, gdy mówimy o bardzo małych ilościach ETH.",
+ "page-gas-use-layer-2": "Używanie warstwy 2"
+}
diff --git a/src/intl/pl/page-get-eth.json b/src/intl/pl/page-get-eth.json
index 772f893c7ad..054937f992c 100644
--- a/src/intl/pl/page-get-eth.json
+++ b/src/intl/pl/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Giełdy to firmy, które pozwalają kupować kryptowaluty za pomocą tradycyjnych walut. Mają pieczę nad każdym zakupionym ETH, dopóki nie wyślesz go do portfela, który kontrolujesz.",
"page-get-eth-checkout-dapps-btn": "Wypróbuj zdecentralizowane aplikacje",
"page-get-eth-community-safety": "Posty społeczności dotyczące bezpieczeństwa",
- "page-get-eth-description": "Ethereum i ETH nie są kontrolowane przez żaden rząd ani firmę — są zdecentralizowane. Oznacza to, że ETH jest dostępne dla każdego.",
+ "page-get-eth-description": "Ethereum nie jest kontrolowane przez żadną pojedynczą organizację — jest zdecentralizowane.",
"page-get-eth-dex": "Giełdy zdecentralizowane (DEX)",
- "page-get-eth-dex-desc": "Jeśli chcesz mieć większą kontrolę, kup ETH peer-to-peer. Dzięki DEX możesz handlować bez oddawania kontroli nad swoimi środkami scentralizowanej firmie.",
+ "page-get-eth-dex-desc": "Jeśli chcesz mieć większą kontrolę, kup ETH za pomocą inteligentnych kontraktów. Dzięki DEX możesz handlować cyfrowymi zasobami bez oddawania kontroli nad swoimi środkami scentralizowanej firmie.",
+ "page-get-eth-peers": "Otrzymuj ETH od innych użytkowników",
+ "page-get-eth-peers-desc": "Gdy już będziesz mieć konto Ethereum, wystarczy udostępnić swój adres, aby rozpocząć wysyłanie i odbieranie ETH (i innych tokenów) peer-to-peer.",
+ "page-get-eth-staking": "Nagrody ze stakingu",
+ "page-get-eth-staking-desc": "Jeśli masz już trochę ETH, możesz zarobić więcej, uruchamiając węzeł walidatora. Otrzymujesz wynagrodzenie w ETH za wykonanie tej pracy weryfikacyjnej.",
+ "page-get-eth-earn": "Zarób ETH",
+ "page-get-eth-earn-desc": "Możesz zarabiać ETH, pracując dla DAO lub firm, które płacą w kryptowalutach, wygrywając nagrody, znajdując błędy w oprogramowaniu i nie tylko.",
+ "page-get-eth-daos-link-desc": "Dowiedz się o DAO",
+ "page-get-eth-cex-link-desc": "Zobacz listę giełd",
+ "page-get-eth-staking-link-desc": "Dowiedz się więcej o stakingu",
"page-get-eth-dexs": "Giełdy zdecentralizowane (DEX)",
"page-get-eth-dexs-desc": "Zdecentralizowane giełdy to otwarte rynki dla ETH i innych tokenów. Łączą bezpośrednio kupujących i sprzedających.",
"page-get-eth-dexs-desc-2": "Zamiast korzystać z zaufanej strony trzeciej do zabezpieczenia środków w transakcji, używają kodu. ETH sprzedającego zostanie przeniesiony tylko wtedy, gdy płatność jest gwarantowana. Ten rodzaj kodu jest znany jako inteligentny kontrakt.",
- "page-get-eth-dexs-desc-3": "Oznacza to, że istnieje mniej ograniczeń geograficznych niż w przypadku scentralizowanych alternatyw. Jeśli ktoś sprzedaje to, co chcesz, i akceptuje metodę płatności, którą możesz zapewnić, możesz działać. DEX pozwalają kupować ETH za pomocą innych tokenów, PayPala, a nawet osobiście dostarczać gotówkę.",
+ "page-get-eth-dexs-desc-3": "Oznacza to, że istnieje mniej ograniczeń geograficznych niż w przypadku scentralizowanych alternatyw. Jeśli ktoś sprzedaje to, co chcesz, i akceptuje metodę płatności, którą możesz zapewnić, możesz działać.",
"page-get-eth-do-not-copy": "Przykład: Nie kopiuj",
"page-get-eth-exchanges-disclaimer": "Zebraliśmy te informacje ręcznie. Jeśli zauważysz, że coś jest nie tak, daj nam znać",
- "page-get-eth-exchanges-empty-state-text": "Wprowadź swój kraj zamieszkania, aby zobaczyć listę portfeli i giełd, których możesz użyć do zakupu ETH",
+ "page-get-eth-exchanges-empty-state-text": "Wprowadź swój kraj zamieszkania, aby zobaczyć listę giełd, z których możesz skorzystać",
"page-get-eth-exchanges-except": "Z wyjątkiem",
"page-get-eth-exchanges-header": "W jakim kraju mieszkasz?",
"page-get-eth-exchanges-header-exchanges": "Giełdy",
"page-get-eth-exchanges-header-wallets": "Portfele",
- "page-get-eth-exchanges-intro": "Giełdy i portfele mają ograniczenia co do tego, gdzie mogą sprzedawać kryptowalutę.",
+ "page-get-eth-exchanges-intro": "Giełdy mają ograniczenia dotyczące tego, gdzie mogą sprzedawać kryptowaluty. Jest to orientacyjna lista usług, o których sądzi się, że działają w każdym kraju. Umieszczenie ich tutaj nie stanowi poparcia — należy przeprowadzić własny research!",
"page-get-eth-exchanges-no-exchanges": "Przepraszamy, nie znamy żadnej giełdy, która pozwoli Ci kupić ETH w tym kraju. Jeśli zrobisz, powiedz nam na",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Przepraszamy, nie znamy żadnych giełd ani portfeli, które pozwalają Ci kupić ETH w tym kraju. Jeśli to zrobisz, powiedz nam na",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Przepraszamy, nie znamy żadnej giełdy, która pozwoli Ci kupić ETH w tym kraju. Jeśli zrobisz, powiedz nam na",
"page-get-eth-exchanges-no-wallets": "Przepraszamy, nie znamy żadnych portfeli, które pozwolą Ci kupić ETH w tym kraju. Jeśli to zrobisz, powiedz nam na",
"page-get-eth-exchanges-search": "Wpisz miejsce zamieszkania...",
"page-get-eth-exchanges-success-exchange": "Rejestracja na giełdzie może potrwać kilka dni ze względu na ich prawne kontrole.",
@@ -36,33 +45,33 @@
"page-get-eth-hero-image-alt": "Pobierz obraz główny ETH",
"page-get-eth-keep-it-safe": "Dbanie o bezpieczeństwo ETH",
"page-get-eth-meta-description": "Jak kupować ETH w zależności od miejsca zamieszkania i porady, jak się nim zajmować.",
- "page-get-eth-meta-title": "Jak kupić ETH",
+ "page-get-eth-meta-title": "Jak zdobyć ETH",
"page-get-eth-need-wallet": "Będziesz potrzebować portfela, aby korzystać ze zdecentralizowanej giełdy.",
"page-get-eth-new-to-eth": "ETH jest dla Ciebie nowością? Oto przegląd na początek.",
"page-get-eth-other-cryptos": "Kupuj za inne kryptowaluty",
- "page-get-eth-protect-eth-desc": "Jeśli planujesz kupić dużo ETH, możesz chcieć trzymać go w portfelu, który kontrolujesz, a nie na giełdzie. To dlatego, że giełda jest prawdopodobnym celem hakerów. Jeśli haker uzyska dostęp, możesz stracić swoje środki. Alternatywnie tylko Ty masz kontrolę nad swoim portfelem.",
- "page-get-eth-protect-eth-in-wallet": "Zabezpiecz swój ETH w portfelu",
+ "page-get-eth-protect-eth-desc": "Jedną z głównych funkcji Ethereum jest to, że użytkownik zachowuje kontrolę nad własnymi aktywami, zarządzając własnym kontem. Oznacza to, że użytkownik nie musi ufać żadnej stronie trzeciej w kwestii swoich aktywów i jest chroniony przed nieuczciwym działaniem, bankructwem lub włamaniem. Oznacza to jednak również, że bierze odpowiedzialność za własne bezpieczeństwo.",
+ "page-get-eth-protect-eth-in-wallet": "Przechowuj swoje ETH we własnym portfelu",
"page-get-eth-search-by-country": "Szukaj według kraju",
- "page-get-eth-security": "Ale oznacza to również, że musisz poważnie traktować bezpieczeństwo swoich funduszy. Dzięki ETH nie ufasz bankowi, że zajmie się Twoimi pieniędzmi, ufasz sobie.",
+ "page-get-eth-security": "Oznacza to, że musisz poważnie traktować bezpieczeństwo swoich środków. Dzięki ETH nie ufasz bankowi lub firmie, że zajmie się Twoimi aktywami, ale bierzesz odpowiedzialność za siebie.",
"page-get-eth-smart-contract-link": "Więcej na temat inteligentnych kontraktów",
"page-get-eth-swapping": "Zamień swoje tokeny na ETH innych osób. I wzajemnie.",
"page-get-eth-try-dex": "Wypróbuj DEX",
"page-get-eth-use-your-eth": "Użyj swojego ETH",
"page-get-eth-use-your-eth-dapps": "Teraz, gdy jesteś właścicielem ETH, sprawdź niektóre aplikacje Ethereum (aplikacje zdecentralizowane). Istnieją aplikacje dla finansów, mediów społecznościowych, gier i wielu innych kategorii.",
"page-get-eth-wallet-instructions": "Postępuj zgodnie z instrukcją portfela",
- "page-get-eth-wallet-instructions-lost": "Jeśli utracisz dostęp do swojego portfela, stracisz dostęp do swoich środków. Twój portfel powinien zawierać instrukcje dotyczące ochrony przed tym. Pamiętaj, aby dokładnie ich przestrzegać — w większości przypadków nikt nie może Ci pomóc, jeśli stracisz dostęp do swojego portfela.",
+ "page-get-eth-wallet-instructions-lost": "Jeśli utracisz dostęp do swojego konta, stracisz dostęp do swoich środków. Twój portfel powinien zawierać instrukcje dotyczące ochrony przed tym. Pamiętaj, aby dokładnie ich przestrzegać — w większości przypadków nikt nie może Ci pomóc, jeśli stracisz dostęp do swojego konta.",
"page-get-eth-wallets": "Portfele",
"page-get-eth-wallets-link": "Więcej o portfelach",
- "page-get-eth-wallets-purchasing": "Niektóre portfele pozwalają na zakup kryptowalut za pomocą karty debetowej/kredytowej, przelew bankowy lub nawet Apple Pay. Zastosowanie mają ograniczenia geograficzne.",
- "page-get-eth-warning": "Te DEXy nie są dla początkujących, ponieważ będziesz potrzebować ETH, aby z nich korzystać.",
+ "page-get-eth-wallets-purchasing": "Niektóre portfele pozwalają na zakup kryptowalut za pomocą karty debetowej/kredytowej, przelewu bankowego lub nawet Apple Pay. Obowiązują ograniczenia geograficzne.",
+ "page-get-eth-warning": "Te DEX-y nie są przeznaczone dla początkujących, ponieważ do ich używania potrzebne jest trochę ETH. To tylko przykłady, a nie rekomendowane produkty. Przeprowadź własną analizę!",
"page-get-eth-what-are-DEX's": "Czym jest DEX?",
"page-get-eth-whats-eth-link": "Co to jest ETH?",
- "page-get-eth-where-to-buy-desc": "Możesz kupić ETH bezpośrednio z giełd lub z portfeli.",
+ "page-get-eth-where-to-buy-desc": "Możesz zarabiać ETH, otrzymywać je od innych użytkowników lub kupować je na giełdach i w aplikacjach.",
"page-get-eth-where-to-buy-desc-2": "Sprawdź usługi, z których możesz korzystać w miejscu zamieszkania.",
"page-get-eth-where-to-buy-title": "Gdzie uzyskać ETH",
"page-get-eth-your-address": "Twój adres ETH",
"page-get-eth-your-address-desc": "Kiedy pobierzesz portfel, stworzy dla Ciebie publiczny adres ETH. Oto jak wygląda:",
- "page-get-eth-your-address-desc-3": "To coś podobnego do adresu e-mail, ale zamiast wysyłać wiadomość, możesz odbierać ETH. Jeśli chcesz przenieść ETH z giełdy do swojego portfela, użyj swojego adresu jako miejsca docelowego. Upewnij się, że zawsze sprawdzasz dokładnie przed wysłaniem!",
+ "page-get-eth-your-address-desc-3": "Pomyśl o tym, jak o swoim adresie e-mail, ale zamiast poczty, możesz odbierać ETH. Jeśli chcesz przesłać ETH z giełdy do swojego portfela, użyj swojego adresu jako miejsca docelowego. Pamiętaj, aby zawsze dokładnie sprawdzić przed wysłaniem!",
"page-get-eth-your-address-wallet-link": "Sprawdź portfele",
"listing-policy-raise-issue-link": "Zgłoś problem",
"page-find-wallet-last-updated": "Ostatnia aktualizacja"
diff --git a/src/intl/pl/page-index.json b/src/intl/pl/page-index.json
index b51a9d02ac9..c26b296c986 100644
--- a/src/intl/pl/page-index.json
+++ b/src/intl/pl/page-index.json
@@ -41,7 +41,7 @@
"page-index-developers-code-example-title-0": "Twój własny bank",
"page-index-developers-code-example-description-0": "Możesz stworzyć bank zasilany przez zaprogramowaną przez Ciebie logikę.",
"page-index-developers-code-example-title-1": "Twoja własna waluta",
- "page-index-developers-code-example-description-1": "Twórz tokeny, które możesz transferować i wykorzystywać w innych aplikacjach.",
+ "page-index-developers-code-example-description-1": "Twórz tokeny, które możesz przesyłać i wykorzystywać w innych aplikacjach.",
"page-index-developers-code-example-title-2": "Portfel JavaScript Ethereum",
"page-index-developers-code-example-description-2": "Możesz użyć istniejących języków do interakcji z Ethereum i innymi aplikacjami.",
"page-index-developers-code-example-title-3": "Otwarty, niewymagający uprawnień DNS",
@@ -50,7 +50,7 @@
"page-index-network-stats-subtitle": "Najnowsze statystyki sieciowe",
"page-index-network-stats-total-eth-staked": "Całkowite zestakowane ETH",
"page-index-network-stats-eth-price-description": "Cena ETH (USD)",
- "page-index-network-stats-eth-price-explainer": "Najnowsza cena za 1 ether. Możesz kupić nawet 0,000000000000001 – nie musisz kupować całego ETH.",
+ "page-index-network-stats-eth-price-explainer": "Najnowsza cena za 1 ether. Możesz kupić nawet 0,000000000000000001 – nie musisz kupować całego 1 ETH.",
"page-index-network-stats-total-eth-staked-explainer": "Całkowita ilość ETH, która jest obecnie stakowana i zabezpiecza sieć.",
"page-index-network-stats-tx-day-description": "Dzisiejsze transakcje",
"page-index-network-stats-tx-day-explainer": "Liczba pozytywnie przetworzonych transakcji w sieci w ciągu ostatnich 24 godzin.",
@@ -64,16 +64,16 @@
"page-index-contribution-banner-image-alt": "Logo ETH wykonane z klocków lego.",
"page-index-contribution-banner-button": "Więcej o wsparciu",
"page-index-tout-upgrades-title": "Dowiedz się więcej o aktualizacjach",
- "page-index-tout-upgrades-description": "Ethereum składa się ze wzajemnie połączonych modernizacji zaprojektowanych tak, aby sieć była bardziej skalowana, bezpieczniejsza i zrównoważona.",
- "page-index-tout-upgrades-image-alt": "Ilustracja statku kosmicznego przedstawiającego zwiększoną moc po ulepszeniu Ethereum.",
+ "page-index-tout-upgrades-description": "Plan działania Ethereum składa się z połączonych ze sobą aktualizacji zaprojektowanych w celu zwiększenia skalowalności, bezpieczeństwa i zrównoważenia sieci.",
+ "page-index-tout-upgrades-image-alt": "Ilustracja statku kosmicznego przedstawiającego zwiększoną moc po aktualizacji Ethereum.",
"page-index-tout-enterprise-title": "Ethereum dla przedsiębiorstw",
"page-index-tout-enterprise-description": "Zobacz, w jaki sposób Ethereum może tworzyć nowe modele biznesowe, obniżać koszty i zabezpieczać działalność na potrzeby rozwoju w przyszłości.",
"page-index-tout-enterprise-image-alt": "Ilustracja futurystycznego komputera lub urządzenia.",
"page-index-tout-community-title": "Społeczność Ethereum",
"page-index-tout-community-description": "W Ethereum najważniejsza jest społeczność. Tworzą ją ludzie z wielu środowisk o różnych zainteresowaniach. Zobacz, jak możesz do niej dołączyć.",
- "page-index-tout-community-image-alt": "Ilustracja grupy konstruktorów pracujących razem.",
+ "page-index-tout-community-image-alt": "Ilustracja grupy budowlańców pracujących razem.",
"page-index-nft": "Internet zasobów",
- "page-index-nft-description": "W Ethereum nie chodzi jedynie o cyfrowe pieniądze. Wszystko, co posiadasz, może być reprezentowane, wymienione lub używane jako niewymienialne tokeny (NFT). Możesz stokenizować swoją sztukę i uzyskać tantiemy za każdym razem, gdy zostanie ona odsprzedana. Albo użyć tokenu do zaciągnięcia pożyczki. Co rusz pojawiają się nowe możliwości.",
+ "page-index-nft-description": "W Ethereum nie chodzi jedynie o cyfrowe pieniądze. Wszystko, co można posiadać, można reprezentować, handlować i wykorzystywać w postaci niewymienialnych tokenów (NFT). Możesz tokenizować swoją sztukę i automatycznie otrzymywać tantiemy za każdym razem, gdy jest odsprzedawana. Można też użyć tokena do zaciągnięcia pożyczki. Możliwości cały czas rosną.",
"page-index-nft-button": "Więcej na temat niewymienialnych tokenów (NFT)",
"page-index-nft-alt": "Logo ETH wyświetlane za pomocą hologramu.",
"community-events-content-heading": "Dołącz do społeczności ethereum.org",
diff --git a/src/intl/pl/page-languages.json b/src/intl/pl/page-languages.json
index bd37d65137d..7ab7d1e4f7b 100644
--- a/src/intl/pl/page-languages.json
+++ b/src/intl/pl/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Chcesz zobaczyć ethereum.org w innym języku?",
"page-languages-want-more-link": "programie tłumaczenia",
"page-languages-want-more-paragraph": "Tłumacze ethereum.org zawsze tłumaczą strony na jak najwięcej języków. Aby zobaczyć, nad czym teraz pracują, lub aby się zarejestrować, aby dołączyć do nich, przeczytaj o naszym",
- "page-languages-filter-placeholder": "Filtr",
+ "page-languages-filter-label": "Lista filtrów",
+ "page-languages-filter-placeholder": "Wpisz, aby filtrować",
+ "page-languages-browser-default": "Ustawienie domyślne przeglądarki",
+ "page-languages-translated": "przetłumaczono",
+ "page-languages-words": "słowa",
+ "page-languages-recruit-community": "Pomóż nam tłumaczyć ethereum.org.",
+ "langauge-am": "Amharski",
"language-ar": "Arabski",
"language-az": "Azerski",
+ "langauge-be": "Białoruski",
"language-bg": "Bułgarski",
"language-bn": "Bengali",
+ "language-bs": "Bośniacki",
"language-ca": "Kataloński",
"language-cs": "Czeski",
"language-da": "Duński",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Chorwacki",
"language-hu": "Węgierski",
+ "language-hy-am": "Armeński",
"language-id": "Indonezyjski",
"language-ig": "Igbo",
"language-it": "Włoski",
@@ -39,12 +48,14 @@
"language-ka": "Gruziński",
"language-kk": "Kazachski",
"language-km": "Khmerski",
+ "language-kn": "Kannada",
"language-ko": "Koreański",
"language-lt": "Litewski",
"language-ml": "Malajalam",
"language-mr": "Marathi",
"language-ms": "Malajski",
"language-nb": "Norweski",
+ "language-ne-np": "Nepalski",
"language-nl": "Holenderski",
"language-pcm": "Pidżyn nigeryjski",
"language-fil": "Filipiński",
@@ -58,8 +69,9 @@
"language-sl": "Słoweński",
"language-sr": "Serbski",
"language-sw": "Suahili",
- "language-th": "Tajski",
"language-ta": "Tamilski",
+ "language-th": "Tajski",
+ "language-tk": "Turkmeński",
"language-tr": "Turecki",
"language-uk": "Ukraiński",
"language-ur": "Urdu",
diff --git a/src/intl/pl/page-layer-2.json b/src/intl/pl/page-layer-2.json
index 5bf0c4bd08c..a7afb4e69d3 100644
--- a/src/intl/pl/page-layer-2.json
+++ b/src/intl/pl/page-layer-2.json
@@ -123,6 +123,7 @@
"zksync-description": "zkSync jest platformą rollup zk zorientowaną na użytkownika z Matter Labs. Jest to rozwiązanie skalujące dla Ethereum, już obecne w sieci głównej Ethereum. Obsługuje płatności, wymianę tokenów i kopanie NFT.",
"zkspace-description": "Platforma ZKSpace składa się z trzech głównych części: warstwy 2 AMM DEX wykorzystującej technologię pakietów zbiorczych o wiedzy zerowej o nazwie ZKSwap, usługi płatniczej o nazwie ZKSquare oraz rynku NFT o nazwie ZKSea.",
"aztec-description": "Aztec Network to pierwszy prywatny zk rollup na Ethereum, umożliwiający zdecentralizowanym aplikacjom dostęp do prywatności i skali.",
+ "starknet-description": "Starknet to rozwiązanie warstwy 2 walidujących pakietów zbiorczych. Zapewnia wysoką przepustowość, niskie koszty gazu i zachowuje poziom bezpieczeństwa warstwy 1 Ethereum.",
"layer-2-note": "Uwaga:",
"layer-2-ecosystem-portal": "Portal ekosystemu",
"layer-2-token-lists": "Lista tokenów",
diff --git a/src/intl/pl/page-learn.json b/src/intl/pl/page-learn.json
index 1e3c4fb6e21..75f01097f00 100644
--- a/src/intl/pl/page-learn.json
+++ b/src/intl/pl/page-learn.json
@@ -11,7 +11,7 @@
"hero-subtitle": "Twój edukacyjny przewodnik po świecie Ethereum. Dowiedz się, jak działa Ethereum i jak się z nim połączyć. Ta strona zawiera techniczne i nietechniczne artykuły, przewodniki i zasoby.",
"hero-button-lets-get-started": "Zaczynajmy",
"what-is-crypto-1": "Być może słyszałeś o kryptowalutach, blockchainach i Bitcoinie. Poniższe linki pomogą Ci dowiedzieć się, czym one są i w jaki sposób są powiązane z Ethereum.",
- "what-is-crypto-2": "Kryptowaluty, takie jak Bitcoin, umożliwiają każdemu przesyłanie pieniędzy na całym świecie. Ethereum również to pozwala, ale może również uruchamiać kod, który umożliwia ludziom tworzenie aplikacji i organizacji. Jest zarówno odporny, jak i elastyczny: każdy program komputerowy może działać na Ethereum. Dowiedz się więcej i zobacz jak zacząć:",
+ "what-is-crypto-2": "Kryptowaluty, takie jak bitcoin, umożliwiają każdemu przesyłanie pieniędzy na całym świecie. Ethereum również na to pozwala, ale może również uruchamiać kod, który umożliwia ludziom tworzenie aplikacji i organizacji. Jest zarówno odporne, jak i elastyczne: każdy program komputerowy może działać na Ethereum. Dowiedz się więcej i zobacz, jak zacząć:",
"what-is-ethereum-card-title": "Co to jest Ethereum?",
"what-is-ethereum-card-description": "Jeśli jesteś nowy, zacznij tutaj, aby dowiedzieć się, dlaczego Ethereum ma znaczenie.",
"what-is-ethereum-card-image-alt": "Ilustracja osoby przyglądającej się bazarowi, który ma reprezentować Ethereum.",
diff --git a/src/intl/pl/page-stablecoins.json b/src/intl/pl/page-stablecoins.json
index b0ebfd932ab..91b5b37faf9 100644
--- a/src/intl/pl/page-stablecoins.json
+++ b/src/intl/pl/page-stablecoins.json
@@ -4,26 +4,26 @@
"page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "Ale ponieważ cena ETH jest zmienna, będziesz musiał zawyżać zabezpieczenie. Oznacza to, że jeśli chcesz pożyczyć 100 stabicoinów, prawdopodobnie potrzebujesz co najmniej 150 dolarów ETH. To chroni system i kredytodawców.",
"page-stablecoins-accordion-borrow-crypto-collateral-link": "Więcej o stablecoinach zabezpieczonych kryptowalutami",
"page-stablecoins-accordion-borrow-pill": "Zaawansowane",
- "page-stablecoins-accordion-borrow-places-intro": "Te aplikacje pozwalają pożyczać stablecoiny za pomocą kryptowalut. Niektóre z nich akceptują inne tokeny, jak również ETH.",
- "page-stablecoins-accordion-borrow-places-title": "Miejsca do pożyczenia stablecoinów",
+ "page-stablecoins-accordion-borrow-places-intro": "Te zdecentralizowane aplikacje pozwalają pożyczać stablecoiny za pomocą kryptowalut jako zabezpieczenia. Niektóre z nich akceptują inne tokeny, jak również ETH.",
+ "page-stablecoins-accordion-borrow-places-title": "Miejsca, w których można pożyczyć stablecoiny",
"page-stablecoins-accordion-borrow-requirement-1": "Portfel Ethereum",
- "page-stablecoins-accordion-borrow-requirement-1-description": "Będziesz potrzebował portfela aby korzystać z decentralizowanej aplikacji",
+ "page-stablecoins-accordion-borrow-requirement-1-description": "Będziesz potrzebował portfela, aby korzystać z decentralizowanej aplikacji",
"page-stablecoins-accordion-borrow-requirement-2": "Ether (ETH)",
"page-stablecoins-accordion-borrow-requirement-2-description": "Będziesz potrzebował ETH do zabezpieczenia i/lub opłat transakcyjnych",
"page-stablecoins-accordion-borrow-requirements-description": "Aby pożyczyć stablecoiny, musisz użyć odpowiedniej zdecentralizowanej aplikacji. Będziesz również potrzebował portfela i trochę ETH.",
- "page-stablecoins-accordion-borrow-risks-copy": "Jeśli użyjesz ETH jako zabezpieczenia, a jego wartość spadnie, Twoje zabezpieczenie nie pokryje wygenerowanych stablecoinów. Spowoduje to zlikwidowanie ETH i może grozić Ci kara. Więc jeśli pożyczysz stablecoiny, będziesz musiał obserwować cenę ETH.",
+ "page-stablecoins-accordion-borrow-risks-copy": "Jeśli użyjesz ETH jako zabezpieczenia, a jego wartość spadnie, Twoje zabezpieczenie nie pokryje wygenerowanych stablecoinów. Spowoduje to likwidację Twojego ETH i może grozić Ci kara. Jeśli więc pożyczasz stablecoiny, musisz obserwować cenę ETH.",
"page-stablecoins-accordion-borrow-risks-link": "Najnowsza cena ETH",
"page-stablecoins-accordion-borrow-risks-title": "Ryzyko",
"page-stablecoins-accordion-borrow-text-preview": "Możesz pożyczyć trochę stablecoinów, używając kryptowaluty jako zabezpieczenia, które musisz spłacić.",
"page-stablecoins-accordion-borrow-title": "Pożyczaj",
"page-stablecoins-accordion-buy-exchanges-title": "Popularne giełdy",
- "page-stablecoins-accordion-buy-requirement-1": "Wymiana kryptowalut i portfele",
+ "page-stablecoins-accordion-buy-requirement-1": "Giełdy kryptowalut i portfele",
"page-stablecoins-accordion-buy-requirement-1-description": "Sprawdź usługi, z których możesz korzystać w miejscu zamieszkania",
- "page-stablecoins-accordion-buy-requirements-description": "Konto z giełdą lub portfelem, z którego możesz kupić kryptowalutę bezpośrednio. Być może użyłeś już jednego, aby uzyskać trochę ETH. Sprawdź, z jakich usług możesz korzystać w swojej okolicy.",
+ "page-stablecoins-accordion-buy-requirements-description": "Konto z giełdą lub portfelem, z którego możesz kupić kryptowalutę bezpośrednio. Być może użyłeś już jednego, aby uzyskać trochę ETH. Sprawdź, z jakich usług możesz korzystać w miejscu swojego zamieszkania.",
"page-stablecoins-accordion-buy-text-preview": "Wiele giełd i portfeli pozwala kupować stablecoiny bezpośrednio. Obowiązują ograniczenia geograficzne.",
"page-stablecoins-accordion-buy-title": "Kup",
- "page-stablecoins-accordion-buy-warning": "Scentralizowane giełdy mogą wymieniać tylko stablecoiny wspierane przez pieniądz fiducjarny oparty na złocie, takie jak USDC, Tether i inne. Możesz nie być w stanie ich kupić bezpośrednio, ale powinieneś być w stanie wymienić je na ETH lub inne kryptowaluty, które możesz kupić na platformie.",
- "page-stablecoins-accordion-earn-project-1-description": "Głównie prace techniczne dla ruchu oprogramowania open source.",
+ "page-stablecoins-accordion-buy-warning": "Scentralizowane giełdy mogą zawierać jedynie stablecoiny zabezpieczone pieniądzem fiducjarnym, takie jak USDC, Tether i inne. Możesz nie być w stanie kupić ich bezpośrednio, ale powinieneś być w stanie wymienić je z ETH lub innych kryptowalut, które możesz kupić na platformie.",
+ "page-stablecoins-accordion-earn-project-1-description": "Głównie prace techniczne dla ruchu oprogramowania open-source.",
"page-stablecoins-accordion-earn-project-2-description": "Technologia, treść i inne prace dla społeczności MakerDao (zespół, który przyniósł Ci Dai).",
"page-stablecoins-accordion-earn-project-3-description": "Jeśli naprawdę znasz się na rzeczy, znajdź błędy, aby zarobić Dai.",
"page-stablecoins-accordion-earn-project-bounties": "Nagrody Gitcoin",
@@ -33,41 +33,42 @@
"page-stablecoins-accordion-earn-projects-title": "Gdzie zarabiać stablecoiny",
"page-stablecoins-accordion-earn-requirement-1": "Portfel Ethereum",
"page-stablecoins-accordion-earn-requirement-1-description": "Będziesz potrzebować portfela, aby otrzymać zarobione stablecoiny",
- "page-stablecoins-accordion-earn-requirements-description": "Stablecoiny są świetną metodą płatności za pracę i usługi, ponieważ wartość jest stabilna. Jednak potrzebujesz portfela do zapłaty.",
+ "page-stablecoins-accordion-earn-requirements-description": "Stablecoiny są świetną metodą płatności za pracę i usługi, ponieważ ich wartość jest stabilna. Jednak potrzebujesz portfela, aby otrzymać zapłatę.",
"page-stablecoins-accordion-earn-text-preview": "Możesz zarabiać stablecoiny, pracując nad projektami w ramach ekosystemu Ethereum.",
"page-stablecoins-accordion-earn-title": "Zarabiaj",
"page-stablecoins-accordion-less": "Mniej",
"page-stablecoins-accordion-more": "Więcej",
"page-stablecoins-accordion-requirements": "Czego będziesz potrzebować",
- "page-stablecoins-accordion-swap-dapp-intro": "Jeśli masz już ETH i portfel, możesz użyć tych aplikacji do wymiany na stablecoiny.",
+ "page-stablecoins-accordion-swap-dapp-intro": "Jeśli masz już ETH i portfel, możesz użyć tych zdecentralizowanych aplikacji do wymiany na stablecoiny.",
"page-stablecoins-accordion-swap-dapp-link": "Więcej na temat zdecentralizowanych giełd",
"page-stablecoins-accordion-swap-dapp-title": "Zdecentralizowane aplikacje do wymiany tokenów",
"page-stablecoins-accordion-swap-editors-tip": "Wskazówka redaktora",
"page-stablecoins-accordion-swap-editors-tip-button": "Znajdź portfel",
"page-stablecoins-accordion-swap-editors-tip-copy": "Zdobądź portfel, który pozwoli Ci kupić ETH i zamienić go bezpośrednio na tokeny, w tym na stablecoiny.",
- "page-stablecoins-accordion-swap-pill": "Rekomendowane",
+ "page-stablecoins-accordion-swap-pill": "Zalecane",
"page-stablecoins-accordion-swap-requirement-1": "Portfel Ethereum",
"page-stablecoins-accordion-swap-requirement-1-description": "Będziesz potrzebował portfela aby autoryzować wymianę i przechowywać swoje monety",
"page-stablecoins-accordion-swap-requirement-2": "Ether (ETH)",
- "page-stablecoins-accordion-swap-requirement-2-description": "Zapłać za wymianę",
+ "page-stablecoins-accordion-swap-requirement-2-description": "Aby zapłacić za zamianę",
"page-stablecoins-accordion-swap-text-preview": "Większość stablecoinów możesz odebrać na zdecentralizowanych giełdach. Możesz więc zamienić dowolne posiadane tokeny na żądany stablecoin.",
"page-stablecoins-accordion-swap-title": "Zamień",
"page-stablecoins-algorithmic": "Algorytmicznie",
"page-stablecoins-algorithmic-con-1": "Musisz zaufać algorytmowi (lub być w stanie go odczytać).",
"page-stablecoins-algorithmic-con-2": "Twoje saldo monet zmieni się w zależności od całkowitej podaży.",
- "page-stablecoins-algorithmic-description": "Te stablecoiny nie są wspierane żadnymi innymi aktywami. Zamiast tego algorytm będzie sprzedawał tokeny, jeśli cena spadnie poniżej pożądanej wartości, i dostarczy tokeny, jeśli wartość przekroczy pożądaną kwotę. Ponieważ liczba tych tokenów w obiegu zmienia się regularnie, liczba posiadanych przez Ciebie tokenów będzie się zmieniać, ale zawsze będzie odzwierciedlać Twój udział.",
+ "page-stablecoins-algorithmic-description": "Te stablecoiny nie są zabezpieczone żadnym innym aktywem. Zamiast tego algorytm sprzedaje tokeny, jeśli cena spadnie poniżej żądanej wartości i dostarcza tokeny, jeśli wartość przekroczy żądaną kwotę. Ponieważ liczba tych tokenów w obiegu zmienia się regularnie, liczba posiadanych przez Ciebie tokenów będzie się zmieniać, ale zawsze będzie odzwierciedlać Twój udział.",
"page-stablecoins-algorithmic-pro-1": "Zabezpieczenie nie jest wymagane.",
"page-stablecoins-algorithmic-pro-2": "Kontrolowany przez algorytm publiczny.",
"page-stablecoins-bank-apy": "0,05%",
- "page-stablecoins-bank-apy-source": "Średnia stawka płacona przez banki na podstawie rachunków oszczędnościowych ubezpieczonych federalnie, w USA.",
+ "page-stablecoins-bank-apy-source": "Średnie oprocentowanie płacone przez banki na podstawowych, ubezpieczonych federalnie kontach oszczędnościowych w USA.",
"page-stablecoins-bank-apy-source-link": "Źródło",
"page-stablecoins-bitcoin-pizza": "Niesamowita pizza bitcoin",
"page-stablecoins-bitcoin-pizza-body": "W 2010 roku ktoś kupił 2 pizze za 10 000 bitcoinów. W tamtym czasie były one warte ~41 USD. Na dzisiejszym rynku to miliony dolarów. W historii Ethereum jest wiele podobnych żałosnych transakcji. Stablecoins rozwiązują ten problem, dzięki czemu możesz cieszyć się pizzą i trzymać się ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Pulpit & Edukacja",
"page-stablecoins-coin-price-change": "Zmiana cen monet (ostatnie 30 dni)",
"page-stablecoins-crypto-backed": "Zabezpieczone kryptowalutą",
"page-stablecoins-crypto-backed-con-1": "Mniej stabilne niż stablecoiny wspierane przez pieniądz fiducjarny.",
"page-stablecoins-crypto-backed-con-2": "Musisz przyglądać się wartości zabezpieczenia kryptowalutą.",
- "page-stablecoins-crypto-backed-description": "Te stablecoiny są wspierane przez inne aktywa kryptowalutowe, takie jak ETH. Ich cena zależy od wartości aktywów bazowych (lub zabezpieczenia), które mogą być zmienne. Ponieważ wartość ETH może ulegać wahaniom, te stablecoiny są zabezpieczane, aby zapewnić jak najbardziej stabilną cenę. Oznacza to, że bliższe jest stwierdzenie, że stablecoin wspierany kryptowalutą o wartości 1 USD ma bazowy zasób kryptowalutowy o wartości co najmniej 2 USD. Więc jeśli cena ETH spadnie, więcej ETH musi zostać wykorzystane do wsparcia stablecoina, w przeciwnym razie stablecoiny stracą swoją wartość.",
+ "page-stablecoins-crypto-backed-description": "Te stablecoiny są zabezpieczone innymi aktywami kryptograficznymi, takimi jak ETH. Ich cena zależy od wartości aktywów bazowych (lub zabezpieczenia), które mogą być zmienne. Ponieważ wartość ETH może się wahać, te stablecoiny są nadmiernie zabezpieczone, aby zapewnić, że cena pozostanie tak stabilna, jak to tylko możliwe. Oznacza to, że stablecoin zabezpieczony kryptowalutą o wartości 1 USD ma bazowe aktywo kryptograficzne o wartości co najmniej 2 USD. Jeśli więc cena ETH spadnie, do zabezpieczenia stablecoina należy użyć więcej ETH, w przeciwnym razie stablecoiny stracą na wartości.",
"page-stablecoins-crypto-backed-pro-1": "Przejrzysty i w pełni zdecentralizowany.",
"page-stablecoins-crypto-backed-pro-2": "Szybko zamieni się w inne aktywa kryptowalutowe.",
"page-stablecoins-crypto-backed-pro-3": "Brak zewnętrznych powierników – wszystkie aktywa są kontrolowane przez konta Ethereum.",
@@ -82,7 +83,7 @@
"page-stablecoins-fiat-backed": "Zabezpieczone pieniądzem fiducjarnym",
"page-stablecoins-fiat-backed-con-1": "Centralizacja – ktoś musi wydać tokeny.",
"page-stablecoins-fiat-backed-con-2": "Wymaga audytu, aby zapewnić posiadanie przez przedsiębiorstwo wystarczających rezerw.",
- "page-stablecoins-fiat-backed-description": "Zasadniczo tokeny IOU (I owe you) za tradycyjną walutę fiducjarną (zwykle dolary). Używasz swojej waluty fiducjarnej do zakupu stablecoina, który możesz później spieniężyć i wymienić na oryginalną walutę.",
+ "page-stablecoins-fiat-backed-description": "Zasadniczo IOU (I owe you) za tradycyjną walutę fiducjarną (zwykle dolary). Używasz swojej waluty fiducjarnej do zakupu stablecoinów, które możesz później spieniężyć i wymienić na oryginalną walutę.",
"page-stablecoins-fiat-backed-pro-1": "Bezpieczny przed zmiennością kryptowalut.",
"page-stablecoins-fiat-backed-pro-2": "Zmiany w cenie są minimalne.",
"page-stablecoins-find-stablecoin": "Znajdź stablecoina",
@@ -93,7 +94,7 @@
"page-stablecoins-hero-alt": "Trzy największe stablecoiny według kapitalizacji rynkowej: Dai, USDC i Tether.",
"page-stablecoins-hero-button": "Zdobądź stablecoiny",
"page-stablecoins-hero-header": "Pieniądze cyfrowe do codziennego użytku",
- "page-stablecoins-hero-subtitle": "Stablecoins to tokeny Ethereum zaprojektowane tak, aby utrzymywać stałą wartość, nawet gdy zmienia się cena ETH.",
+ "page-stablecoins-hero-subtitle": "Stablecoiny to tokeny Ethereum zaprojektowane tak, aby utrzymywać stałą wartość, nawet gdy zmienia się cena ETH.",
"page-stablecoins-interest-earning-dapps": "Zdecentralizowane aplikacje przynoszące odsetki",
"page-stablecoins-meta-description": "Wprowadzenie do stablecoinów Ethereum: czym są, jak je zdobyć i dlaczego są ważne.",
"page-stablecoins-precious-metals": "Metale szlachetne",
@@ -102,19 +103,19 @@
"page-stablecoins-precious-metals-description": "Podobnie jak pieniądze fiducjarne oparte na złocie, te stablecoiny wykorzystują zasoby takie jak złoto, aby utrzymać swoją wartość.",
"page-stablecoins-precious-metals-pro-1": "Bezpieczny przed zmiennością kryptowalut.",
"page-stablecoins-prices": "Ceny stablecoinów",
- "page-stablecoins-prices-definition": "Stablecoiny to kryptowaluty bez zmienności. Mają wiele takich samych właściwości jak ETH, ale ich wartość jest stała, bardziej jak tradycyjna waluta. Masz więc dostęp do stabilnych pieniędzy, które możesz wykorzystać na Ethereum. ",
+ "page-stablecoins-prices-definition": "Stablecoiny to kryptowaluty bez zmienności. Mają wiele takich samych mocy jak ETH, ale ich wartość jest stabilna, bardziej przypomina tradycyjną walutę. Masz więc dostęp do stabilnych pieniędzy, które możesz wykorzystać na Ethereum. ",
"page-stablecoins-prices-definition-how": "Jak stablecoiny zyskują stabilność",
"page-stablecoins-research-warning": "Ethereum to nowa technologia i większość aplikacji jest nowa. Upewnij się, że jesteś świadomy ryzyka i deponuj tylko tyle, ile możesz stracić.",
- "page-stablecoins-research-warning-title": "Zawsze wykonuj własne wyszukiwania",
+ "page-stablecoins-research-warning-title": "Zawsze przeprowadzaj własne badania",
"page-stablecoins-save-stablecoins": "Oszczędzaj za pomocą stablecoinów",
"page-stablecoins-save-stablecoins-body": "Stablecoiny często mają ponadprzeciętne oprocentowanie, ponieważ istnieje duże zapotrzebowanie na ich pożyczanie. Istnieją zdecentralizowane aplikacje, które pozwalają zarabiać odsetki na stablecoinach w czasie rzeczywistym, deponując je w puli pożyczek. Podobnie jak w świecie bankowym, dostarczasz tokeny dla pożyczkobiorców, ale w każdej chwili możesz wypłacić swoje tokeny i odsetki.",
- "page-stablecoins-saving": "Umieść swoje oszczędności w stablecoinach i zarób trochę odsetek. Jak wszystko w kryptowalutach, przewidywane roczne zyski procentowe (APY) mogą zmieniać się z dnia na dzień w zależności od podaży/popytu w czasie rzeczywistym.",
+ "page-stablecoins-saving": "Wykorzystaj swoje oszczędności w stablecoinach i zarób trochę odsetek. Jak wszystko w kryptowalutach, przewidywane roczne zyski procentowe (APY) mogą zmieniać się z dnia na dzień w zależności od podaży/popytu w czasie rzeczywistym.",
"page-stablecoins-stablecoins-dapp-callout-description": "Sprawdź zdecentralizowane aplikacje Ethereum – stablecoiny są często bardziej przydatne do codziennych transakcji.",
"page-stablecoins-stablecoins-dapp-callout-image-alt": "Ilustracja pieseła.",
"page-stablecoins-stablecoins-dapp-callout-title": "Użyj swoich stablecoinów",
"page-stablecoins-stablecoins-dapp-description-1": "Rynki dla wielu stablecoinów, w tym Dai, USDC, TUSD, USDT i innych. ",
"page-stablecoins-stablecoins-dapp-description-2": "Pożyczaj stablecoiny i zarabiaj odsetki oraz $COMP, własny token Compound.",
- "page-stablecoins-stablecoins-dapp-description-3": "Platforma handlowa, na której możesz zarabiać na swoich Dai i USDC.",
+ "page-stablecoins-stablecoins-dapp-description-3": "Platforma handlowa, na której możesz zarabiać odsetki od swoich Dai i USDC.",
"page-stablecoins-stablecoins-dapp-description-4": "Aplikacja zaprojektowana do oszczędzania Dai.",
"page-stablecoins-stablecoins-feature-1": "Stablecoiny są globalne i można je wysyłać przez Internet. Łatwo je otrzymać lub wysłać, gdy masz konto Ethereum.",
"page-stablecoins-stablecoins-feature-2": "Popyt na stablecoiny jest wysoki, więc możesz zarabiać odsetki za pożyczanie swoich. Upewnij się, że jesteś świadomy ryzyka przed pożyczeniem.",
@@ -128,6 +129,7 @@
"page-stablecoins-stablecoins-table-type-fiat-backed": "Waluta fiducjarna",
"page-stablecoins-stablecoins-table-type-precious-metals-backed": "Metale szlachetne",
"page-stablecoins-table-error": "Nie udało się wczytać stablecoinów. Spróbuj odświeżyć stronę.",
+ "page-stablecoins-table-loading": "Ładowanie danych stablecoina...",
"page-stablecoins-title": "Stablecoiny",
"page-stablecoins-top-coins": "Najlepsze stablecoiny według kapitalizacji rynkowej",
"page-stablecoins-top-coins-intro": "Kapitalizacja rynkowa to",
diff --git a/src/intl/pl/page-staking.json b/src/intl/pl/page-staking.json
index 0a2e60ece67..6090d278f3c 100644
--- a/src/intl/pl/page-staking.json
+++ b/src/intl/pl/page-staking.json
@@ -23,7 +23,7 @@
"page-staking-benefits-1-description": "Nagrody są przyznawane za działania, które pomagają sieci osiągnąć konsensus. Zostaniesz wynagrodzony za uruchomienie oprogramowania, które prawidłowo grupuje transakcje w nowe bloki i sprawdza pracę innych walidatorów, ponieważ dzięki temu łańcuch działa bezpiecznie.",
"page-staking-benefits-2-title": "Lepsze bezpieczeństwo",
"page-staking-benefits-2-description": "Sieć staje się silniejsza przed atakami w miarę stakowania większej ilości ETH, ponieważ wymaga wtedy więcej ETH do kontrolowania większości sieci. Aby stać się zagrożeniem, musiałbyś posiadać większość walidatorów, co oznacza, że musiałbyś kontrolować większość ETH w systemie — to dużo!",
- "page-staking-benefits-3-title": "Bardziej zrównoważony",
+ "page-staking-benefits-3-title": "Większe zrównoważenie",
"page-staking-benefits-3-description": "Stakerzy nie muszą wykonywać energochłonnych obliczeń proof-of-work, aby uczestniczyć w zabezpieczaniu sieci, co oznacza, że węzły stakujące mogą działać na stosunkowo skromnym sprzęcie, zużywając bardzo mało energii.",
"page-staking-benefits-3-link": "Więcej o zużyciu energii przez Ethereum",
"page-staking-description": "Staking to akt zdeponowania 32 ETH w celu aktywacji oprogramowania walidatora. Jako walidator będziesz odpowiedzialny za przechowywanie danych, przetwarzanie transakcji i dodawanie nowych bloków do blockchainu. Dzięki temu Ethereum będzie bezpieczne dla wszystkich, a przy okazji zarobisz nowe ETH.",
diff --git a/src/intl/pl/page-wallets-find-wallet.json b/src/intl/pl/page-wallets-find-wallet.json
index 13e4c6fe684..124da75e16d 100644
--- a/src/intl/pl/page-wallets-find-wallet.json
+++ b/src/intl/pl/page-wallets-find-wallet.json
@@ -1,16 +1,16 @@
{
"page-find-wallet-clear": "Wyczyść filtry",
- "page-find-wallet-desc-2": "Wybierz więc portfel w oparciu o żądane funkcje.",
+ "page-find-wallet-desc-2": "Wybierz więc portfel w oparciu o funkcje, których potrzebujesz.",
"page-find-wallet-description": "Portfele mają wiele opcjonalnych funkcji, które mogą Ci się spodobać.",
"page-find-wallet-last-updated": "Ostatnia aktualizacja",
- "page-find-wallet-meta-description": "Znajdź i porównaj portfele Ethereum w oparciu o pożądane funkcje.",
+ "page-find-wallet-meta-description": "Znajdź i porównaj portfele Ethereum w oparciu o funkcje, których potrzebujesz.",
"page-find-wallet-meta-title": "Znajdź portfel Ethereum",
"page-find-wallet-title": "Znajdź portfel",
"page-find-wallet-try-removing": "Spróbuj usunąć jedną lub dwie funkcje",
"page-find-wallet-choose-to-compare": "Wybierz, aby porównać",
"page-stake-eth": "Stakuj ETH",
"page-find-wallet-open-source": "Otwarte źródło",
- "page-find-wallet-open-source-desc": "Oprogramowanie open-source pozwala każdemu kontrolować integralność i zabezpieczenia aplikacji",
+ "page-find-wallet-open-source-desc": "Oprogramowanie open-source pozwala każdemu kontrolować uczciwość i bezpieczeństwo aplikacji",
"page-find-wallet-self-custody": "Samodzielny nadzór",
"page-find-wallet-non-custodial": "Niepowiernicze",
"page-find-wallet-non-custodial-desc": "Portfele niekontrolujące Twoich kluczy prywatnych",
@@ -29,9 +29,9 @@
"page-find-wallet-swaps": "Zamiany",
"page-find-wallet-swaps-desc": "Zamiana tokenów ERC-20 bezpośrednio w portfelu",
"page-find-wallet-layer-2": "Warstwa 2",
- "page-find-wallet-layer-2-desc": "Portfele obsługujące warstwę 2s Ethereum",
+ "page-find-wallet-layer-2-desc": "Portfele obsługujące warstwę 2 Ethereum",
"page-find-wallet-gas-fee-customization": "Dostosowanie opłat za gaz",
- "page-find-wallet-gas-fee-customization-desc": "Personalizacja swoich ilości gazu (opłaty bazowej, priorytetowej i maksymalnej)",
+ "page-find-wallet-gas-fee-customization-desc": "Personalizuj swoje ilości gazu (opłaty bazowej, priorytetowej i maksymalnej)",
"page-find-wallet-ens-support": "Obsługa ENS",
"page-find-wallet-ens-support-desc": "Portfele obsługujące Ethereum Name Service (ENS)",
"page-find-wallet-token-importing": "Importowanie tokenów",
@@ -78,10 +78,10 @@
"page-find-wallet-filters": "Filtry",
"page-find-wallet-active": "aktywny",
"page-find-wallet-profile-filters": "Filtry profilów",
- "page-find-wallet-feature-filters": "Filtry cech",
+ "page-find-wallet-feature-filters": "Filtry funkcji",
"page-find-wallet-footnote-1": "Wyszczególnienie portfeli na tej stronie nie stanowi ich oficjalnej aprobaty i portfele te podano wyłącznie do celów informacyjnych.",
"page-find-wallet-footnote-2": "Ich opisy zostały dostarczone przez projekty portfelowe.",
- "page-find-wallet-footnote-3": "Produkty dodajemy do tej strony na podstawie kryteriów określonych w naszych zasadach . Jeśli chcesz, abyśmy dodali jakiś portfel, prześlij zgłoszenie w GitHub.",
+ "page-find-wallet-footnote-3": "Produkty dodajemy do tej strony na podstawie kryteriów określonych w naszych zasadach . Jeśli chcesz, abyśmy dodali jakiś portfel, prześlij zgłoszenie w GitHub.",
"page-find-wallet-mobile": "Mobilny",
"page-find-wallet-mobile-desc": "Portfele z aplikacjami mobilnymi",
"page-find-wallet-desktop": "Desktopowe",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Portfele z rozszerzeniami przeglądarki",
"page-find-wallet-device": "Urządzenie",
"page-find-choose-to-compare": "Wybierz, aby porównać",
- "page-find-wallet-choose-features": "Wybierz funkcje"
+ "page-find-wallet-choose-features": "Wybierz funkcje",
+ "page-find-wallet-reset-filters": "Zresetuj filtry"
}
diff --git a/src/intl/pl/page-wallets.json b/src/intl/pl/page-wallets.json
index 9b106b847c5..a35c25785ca 100644
--- a/src/intl/pl/page-wallets.json
+++ b/src/intl/pl/page-wallets.json
@@ -13,29 +13,29 @@
"page-wallets-desc-3": "Twój portfel jest narzędziem do interakcji z kontem Ethereum. Oznacza to, że w każdej chwili możesz zmieniać dostawców portfeli. Wiele portfeli umożliwia również zarządzanie kilkoma kontami Ethereum z jednej aplikacji.",
"page-wallets-desc-4": "Dostawcy portfeli nie mają dostępu do Twoich środków. Zapewniają jedynie okno do przeglądania aktywów na Ethereum i narzędzia do łatwego zarządzania nimi.",
"page-wallets-description": "Portfele Ethereum to aplikacje, które dają kontrolę nad kontem. Podobnie jak fizyczny portfel, zawierają wszystko, czego potrzebujesz, aby potwierdzić swoją tożsamość i obsługiwać swoje aktywa. Portfel umożliwia logowanie się do aplikacji, odczytywanie salda, wysyłanie transakcji i weryfikację tożsamości.",
- "page-wallets-desktop": "Aplikacje stacjonarne, jeśli wolisz zarządzać środkami za pośrednictwem MacOS, Windows lub linux",
+ "page-wallets-desktop": "Aplikacje komputerowe, jeśli wolisz zarządzać środkami za pośrednictwem MacOS, Windows lub Linux",
"page-wallets-ethereum-wallet": "Portfel jest narzędziem, które pozwala Ci zarządzać Twoim kontem Ethereum przy użyciu kluczy. Umożliwia on wyświetlanie salda konta, wysyłanie transakcji i wiele więcej.",
"page-wallets-explore": "Odkryj Ethereum",
"page-wallets-features-desc": "Możemy pomóc Ci wybrać Twój portfel w oparciu o funkcje, których potrzebujesz.",
"page-wallets-features-title": "Porównaj portfele na podstawie funkcji",
"page-wallets-find-wallet-btn": "Znajdź portfel",
"page-wallets-find-wallet-link": "Znajdź portfel",
- "page-wallets-get-some": "Weź trochę ETH",
+ "page-wallets-get-some": "Zdobądź trochę ETH",
"page-wallets-get-some-alt": "Ilustracja przedstawiająca dłoń tworzącą logo ETH z klocków lego",
"page-wallets-get-some-btn": "Weź trochę ETH",
"page-wallets-get-some-desc": "ETH to natywna kryptowaluta Ethereum. Aby korzystać z aplikacji Ethereum, będziesz potrzebować trochę ETH w portfelu.",
"page-wallets-how-to-store": "Jak przechowywać aktywa cyfrowe na Ethereum",
"page-wallets-keys-to-safety": "Klucze do zachowania bezpieczeństwa kryptowalut",
"page-wallets-manage-funds": "Aplikacja do zarządzania Twoimi środkami",
- "page-wallets-manage-funds-desc": "Twój portfel pokazuje salda, historię transakcji i umożliwia wysyłanie / otrzymywanie środków. Niektóre portfele mogą oferować więcej.",
+ "page-wallets-manage-funds-desc": "Twój portfel pokazuje salda, historię transakcji i umożliwia wysyłanie/otrzymywanie środków. Niektóre portfele mogą oferować więcej.",
"page-wallets-meta-description": "Co musisz wiedzieć, aby korzystać z portfeli Ethereum.",
"page-wallets-meta-title": "Portfele Ethereum",
"page-wallets-mobile": "Aplikacje mobilne, dzięki którym Twoje środki są dostępne z dowolnego miejsca",
"page-wallets-more-on-dapps-btn": "Więcej na temat aplikacji zdecentralizowanych",
"page-wallets-most-wallets": "Większość portfeli umożliwia wygenerowanie konta Ethereum. Więc nie potrzebujesz go przed pobraniem portfela.",
"page-wallets-protecting-yourself": "Chroń siebie i swoje fundusze",
- "page-wallets-seed-phrase": "Zapisz swoją frazę seed",
- "page-wallets-seed-phrase-desc": "Portfele często zawierają frazę seed, którą musisz zapisać w bezpiecznym miejscu. Tylko w ten sposób odzyskasz swój portfel.",
+ "page-wallets-seed-phrase": "Zapisz swoją frazę ziarna",
+ "page-wallets-seed-phrase-desc": "Portfele często zawierają frazę ziarna, którą musisz zapisać w bezpiecznym miejscu. Tylko w ten sposób odzyskasz swój portfel.",
"page-wallets-seed-phrase-example": "Tutaj jest przykład:",
"page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp",
"page-wallets-seed-phrase-write-down": "Nie przechowuj go na komputerze. Zapisz go i przechowuj w bezpiecznym miejscu.",
@@ -54,12 +54,12 @@
"page-wallets-try-dapps-alt": "Ilustracja przedstawiająca współpracujących ze sobą członków społeczności Ethereum",
"page-wallets-try-dapps-desc": "Aplikacje zdecentralizowane (dapps) są aplikacjami zbudowanymi na Ethereum. Są tańsze, bardziej sprawiedliwe i bardziej przyjazne dla Twoich danych niż większość tradycyjnych aplikacji.",
"page-wallets-types": "Typy portfeli",
- "page-wallets-types-desc": "Istnieje kilka sposobów na interfejs i interakcję z kontem:",
- "page-wallets-web-browser": "Portfele przeglądarki to aplikacje internetowe, które pozwalają na interakcję z kontem bezpośrednio w przeglądarce",
+ "page-wallets-types-desc": "Istnieje kilka sposobów łączenia się i interakcji z kontem:",
+ "page-wallets-web-browser": "Portfele przeglądarkowe to aplikacje internetowe, które pozwalają na interakcję z kontem bezpośrednio w przeglądarce",
"page-wallets-web-browser-extension": "Portfele rozszerzeń przeglądarki to pobierane rozszerzenia, które pozwalają na interakcję z kontem i aplikacjami przez przeglądarkę",
"page-wallets-whats-a-wallet": "Czym jest portfel Ethereum?",
"page-wallets-your-ethereum-account": "Twoje konto Ethereum",
- "page-wallets-your-ethereum-account-desc": "Twój portfel to okno na konto Ethereum - Twoje saldo konta, historia transakcji i inne. Możesz jednak zmienić dostawców portfela w dowolnym momencie.",
+ "page-wallets-your-ethereum-account-desc": "Twój portfel to okno na konto Ethereum — saldo, historię transakcji i nie tylko. Możesz jednak zmienić dostawcę portfela w dowolnym momencie.",
"page-wallets-your-login": "Twój login dla aplikacji Ethereum",
"page-wallets-your-login-desc": "Twój portfel pozwala Ci połączyć się z aplikacją przy użyciu konta Ethereum. Jest to jak login, którego możesz używać w wielu aplikacjach.",
"additional-reading-how-to-create-an-ethereum-account": "Jak stworzyć konto Ethereum",
diff --git a/src/intl/pt-br/common.json b/src/intl/pt-br/common.json
index 521721f4b67..ac5e901a555 100644
--- a/src/intl/pt-br/common.json
+++ b/src/intl/pt-br/common.json
@@ -1,17 +1,31 @@
{
+ "about-ethereum-org": "Sobre o ethereum.org ",
+ "about-us": "Quem somos",
+ "adding-desci-projects": "Adicionar projetos DeSci",
+ "adding-developer-tools": "Adicionando ferramentas de desenvolvedor",
+ "adding-exchanges": "Adicionando corretoras",
+ "adding-glossary-terms": "Adicionando termos do glossário",
+ "adding-layer-2s": "Adicionando Camada 2S",
+ "adding-products": "Adicionando produtos",
+ "adding-staking-products": "Sobre nós",
+ "adding-wallets": "Adicionando carteiras",
"account-abstraction": "Abstração de conta",
- "about-ethereum-org": "Sobre o ethereum.org",
- "about-us": "Sobre nós",
+ "acknowledgements": "Agradecimentos",
"aria-toggle-search-button": "Alternar botão de pesquisa",
"aria-toggle-menu-button": "Alternar botão de menu",
"beacon-chain": "Beacon Chain",
"bridges": "Pontes de “Blockchains”",
+ "bug-bounty": "Recompensa por bugs",
+ "build": "Criar",
+ "build-menu": "Menu Criar",
"clear": "Limpar",
"close": "Fechar",
"community": "Comunidade",
"community-hub": "Centro comunitário",
"community-menu": "Comunidade",
"contact": "Contato",
+ "content-buckets": "Sobre nós",
+ "content-resources": "Recursos de conteúdo",
"content-standardization": "Padronização do conteúdo",
"contributing": "Contribuições",
"contributors": "Colaboradores",
@@ -20,14 +34,17 @@
"copied": "Copiado",
"copy": "Copiar",
"danksharding": "Danksharding",
- "dao-page": "Organizações autônomas descentralizadas (DAOs)",
+ "dao-page": "DAOs - Organizações autônomas descentralizadas",
"dark-mode": "Escuro",
"data-provided-by": "Fonte de dados:",
- "decentralized-applications-dapps": "Aplicativos descentralizados (dapps)",
+ "decentralized-applications-dapps": "Dapps - Aplicativos descentralizados",
"decentralized-identity": "Identidade descentralizada",
"decentralized-social-networks": "Redes sociais descentralizadas",
- "decentralized-science": "Ciência descentralizada (DeSci)",
- "defi-page": "Finanças descentralizadas (DeFi)",
+ "decentralized-science": "DeSci - Ciência descentralizada",
+ "description": "Descrição do item de navegação",
+ "defi-page": "DeFi - Finanças descentralizadas",
+ "design": "Visual",
+ "design-principles": "Princípios do design",
"devcon": "Devcon",
"developers": "Desenvolvedores",
"developers-home": "Página inicial dos desenvolvedores",
@@ -51,7 +68,7 @@
"documentation": "Documentação",
"down": "Abaixo",
"ecosystem": "Ecossistema",
- "edit-page": "Editar Página",
+ "edit-page": "Editar página",
"ef-blog": "Blog da Fundação Ethereum",
"eips": "Propostas de melhorias no Ethereum",
"energy-consumption": "Consumo energético do Ethereum",
@@ -59,11 +76,11 @@
"enterprise-menu": "Menu Empresarial",
"esp": "Programa de suporte do Ecossistema",
"eth-current-price": "Preço atual do ETH (USD)",
- "ethereum-basics": "Informações básicas da Ethereum",
+ "ethereum-basics": "Fundamentos básicos do Ethereum",
"ethereum-bug-bounty": "Plano de recompensas à caça a erros de programação",
"consensus-when-shipping": "Quando estará disponível?",
"ethereum-upgrades": "Melhorias no Ethereum",
- "ethereum-brand-assets": "Ativos da marca Ethereum",
+ "ethereum-brand-assets": "Ativos de marca Ethereum",
"ethereum-online": "Comunidades on-line",
"ethereum-events": "Eventos Ethereum",
"ethereum-foundation": "Fundação Ethereum",
@@ -71,7 +88,7 @@
"ethereum-glossary": "Glossário de Ethereum",
"ethereum-governance": "Governança da Ethereum",
"ethereum-logo": "Logotipo da Ethereum",
- "ethereum-roadmap": "Roteiro Ethereum",
+ "ethereum-roadmap": "Planejamento Ethereum",
"ethereum-protocol": "Protocolo Ethereum",
"ethereum-security": "Segurança e prevenção de fraude da Ethereum",
"ethereum-support": "Suporte do Ethereum",
@@ -83,22 +100,22 @@
"feedback-card-prompt-tutorial": "Este tutorial foi útil?",
"feedback-widget-thank-you-title": "Agradecemos o seu feedback!",
"feedback-widget-thank-you-subtitle": "Torne esta página ainda melhor respondendo a estas perguntas.",
- "feedback-widget-thank-you-subtitle-ext": "Se precisar de ajuda, entre em contato com a comunidade em nosso Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Se precisar de ajuda, você pode entrar em contato com a comunidade em nosso Discord.",
"feedback-widget-thank-you-timing": "2 – 3 minutos",
"feedback-widget-thank-you-cta": "Abrir pesquisa rápida",
"find-wallet": "Buscar carteira",
"future-proofing": "À prova de futuro",
- "get-eth": "Compre ETH",
+ "get-eth": "Obtenha ETH",
"get-involved": "Participe",
"get-started": "Introdução",
"grants": "Recompensas",
"grant-programs": "Programas de recompensas do ecossistema",
"guides": "Guias",
- "guides-hub": "Central de guias",
+ "guides-hub": "Guias práticos",
"history-of-ethereum": "História do Ethereum",
"home": "Início",
"how-ethereum-works": "Como Ethereum funciona",
- "how-to-register-an-ethereum-account": "Como \"registrar\" uma conta Ethereum",
+ "how-to-create-an-ethereum-account": "Como \"criar\" uma conta Ethereum",
"how-to-revoke-token-access": "Como revogar o acesso ao contrato inteligente aos seus fundos cripto",
"how-to-swap-tokens": "Como trocar tokens",
"how-to-use-a-bridge": "Como fazer transferir tokens para a camada 2",
@@ -128,11 +145,117 @@
"loading-error-try-again-later": "Não foi possível carregar os dados. Tente novamente mais tarde.",
"logo": "logotipo",
"mainnet-ethereum": "Rede principal da Ethereum",
+ "merge": "Integração",
"more": "Mais",
- "nav-developers": "Desenvolvedores",
+ "nav-about-description": "Um projeto público e de código aberto para a comunidade Ethereum",
+ "nav-advanced-description": "Fique por dentro dos tópicos mais complexos",
+ "nav-advanced-label": "Avançado",
+ "nav-basics-description": "Entenda os fundamentos do Ethereum",
+ "nav-basics-label": "Fundamentos",
+ "nav-bridges-description": "Web3 passou a ser um ecossistema de blockchains L1 primárias e soluções de escalabilidade L2",
+ "nav-builders-home-description": "Um manual para desenvolvedores de Ethereum: de desenvolvedores para desenvolvedores",
+ "nav-builders-home-label": "Página inicial para desenvolvedores",
+ "nav-contribute-description": "Use este material, caso queira ajudar",
+ "nav-contribute-label": "Contribua com ethereum.org",
+ "nav-dao-description": "Comunidades de membros sem liderança centralizada",
+ "nav-dapps-description": "Conheça o amplo ecossistema de apps que usam Ethereum",
+ "nav-defi-description": "Uma alternativa aberta e global ao mercado financeiro tradicional",
+ "nav-desci-description": "Uma alternativa global e aberta ao sistema científico atual",
+ "nav-desoc-description": "Plataformas baseadas em blockchain para interação social e criação de conteúdo",
"nav-developers-docs": "Documentação para o desenvolvedor",
+ "nav-developers": "Desenvolvedores",
+ "nav-did-description": "Emita e seja o proprietário de seus identificadores descentralizados exclusivos",
+ "nav-docs-description": "Documentos que o ajudam a entender e criar com Ethereum",
+ "nav-docs-design-description": "Descrição dos desafios de design únicos do Web3, práticas recomendadas e informações de pesquisa para o usuário",
+ "nav-docs-design-label": "Fundamentos de design de UX/UI",
+ "nav-docs-foundation-description": "Principais fundamentos para desenvolver usando Ethereum",
+ "nav-docs-foundation-label": "Tópicos fundamentais",
+ "nav-docs-overview-description": "Seu repositório de documentos para o desenvolvedor",
+ "nav-docs-stack-description": "Entenda todos os detalhes da pilha do Ethereum",
+ "nav-docs-stack-label": "Pilha de Ethereum",
+ "nav-eip-description": "Padrões que especificam novos recursos ou processos",
+ "nav-eip-label": "EIPs - Propostas de melhorias do Ethereum",
+ "nav-emerging-description": "Conheça outros casos de uso mais recentes do Ethereum",
+ "nav-emerging-label": "Casos de uso emergentes",
+ "nav-enterprise-description": "Aplicações de negócios para o Ethereum",
+ "nav-ethereum-org-description": "Este website é dedicado à comunidade: participe e contribua",
+ "nav-ethereum-wallets-description": "Um app para interagir com sua conta Ethereum",
+ "nav-events-description": "Descentralização e liberdade para participar",
+ "nav-events-irl-description": "Há eventos importantes, presenciais e online, sobre o Ethereum todos os meses",
+ "nav-events-label": "Comunidades e eventos",
+ "nav-events-online-description": "Milhares de entusiastas do Ethereum nestas comunidades online",
+ "nav-find-wallet-description": "As carteiras permitem que você use criptomoedas",
+ "nav-find-wallet-label": "Escolha sua carteira",
+ "nav-gas-fees-description": "Como as taxas de transação de ETH são calculadas",
+ "nav-gas-fees-label": "Taxas de gás",
+ "nav-get-eth-description": "Você precisa de ethers (ETH) para usar aplicações Ethereum",
+ "nav-get-started-description": "Sua porta de entrada para usar Ethereum",
+ "nav-governance-description": "O processo o upgrade do protocolo Ethereum",
+ "nav-governance-label": "Governança",
+ "nav-grants-description": "Uma lista selecionada por nossa comunidade sobre projetos que oferecem programas de financiamento",
+ "nav-guide-create-account-description": "Com uma carteira digital, qualquer pessoa pode criar uma conta Ethereum de forma gratuita e a qualquer momento",
+ "nav-guide-create-account-label": "Como criar uma conta Ethereum",
+ "nav-guide-revoke-access-description": "Proteja-se ao interagir com contratos inteligentes e aplicações no ecossistema Ethereum",
+ "nav-guide-revoke-access-label": "Como revogar o acesso a contratos inteligentes",
+ "nav-guide-use-wallet-description": "Aprenda como operar todas as funções básicas de uma carteira",
+ "nav-guide-use-wallet-label": "Como usar uma carteira",
+ "nav-guides-description": "Guias detalhados e práticos para ajudá-lo a começar",
+ "nav-guides-label": "Guias explicativos",
+ "nav-history-description": "Uma linha do tempo de todos os forks e atualizações mais importantes",
+ "nav-history-label": "História técnica do Ethereum",
+ "nav-layer-2-description": "Transações mais rápidas e econômicas para Ethereum",
+ "nav-learn-by-coding-description": "Ferramentas que o ajudam a usar Ethereum",
+ "nav-local-env-description": "Escolha e configure sua pilha de desenvolvimento Ethereum",
+ "nav-mainnet-description": "É possível criar aplicações blockchain empresariais na rede principal pública do Ethereum",
+ "nav-nft-description": "Uma forma de representar qualquer coisa única como um ativo baseado no Ethereum",
+ "nav-open-research-description": "Um dos pontos fortes do Ethereum é sua comunidade ativa de pesquisa",
+ "nav-open-research-label": "Pesquisa aberta",
+ "nav-overview-description": "Tudo sobre o Ethereum: informações",
+ "nav-overview-label": "Visão geral",
+ "nav-participate-overview-description": "Descrição geral de como participar",
"nav-primary": "Principal",
- "nft-page": "Tokens não fungíveis (NFTs)",
+ "nav-private-description": "Recursos de desenvolvedor Ethereum para empresas privadas",
+ "nav-quizzes-description": "Comprove seus conhecimentos sobre Ethereum e criptomoedas",
+ "nav-quizzes-label": "Teste seus conhecimentos",
+ "nav-refi-description": "Um sistema econômico alternativo criado com vase em princípios regenerativos",
+ "nav-research-description": "Processos usados para melhorar o Ethereum",
+ "nav-research-label": "Pesquisa e desenvolvimento",
+ "nav-roadmap-description": "O caminho para mais escalabilidade, segurança e sustentabilidade no Ethereum",
+ "nav-roadmap-future-description": "Fortalecimento do Ethereum como uma rede robusta e descentralizada",
+ "nav-roadmap-future-label": "À prova de futuro",
+ "nav-roadmap-label": "Planejamento",
+ "nav-roadmap-scaling-description": "Atualizações de rede para reduzir ainda mais os custos e aumentar a rapidez das transações",
+ "nav-roadmap-scaling-label": "Transações mais baratas",
+ "nav-roadmap-security-description": "Como garantir a resiliência do Ethereum face a todos os tipos de ataques no futuro",
+ "nav-roadmap-security-label": "Segurança reforçada",
+ "nav-roadmap-ux-description": "O uso do Ethereum precisa ser mais simples",
+ "nav-roadmap-ux-label": "Melhor experiência do usuário",
+ "nav-run-a-node-description": "Torne-se totalmente soberano enquanto ajuda a proteger a rede",
+ "nav-security-description": "Aprenda as práticas recomendadas ao usar criptomoedas",
+ "nav-smart-contracts-description": "Os elementos básicos do ecossistema Ethereum",
+ "nav-stablecoins-description": "Stablecoins são tokens Ethereum criadas para que se mantenham em um valor estável",
+ "nav-stake-description": "Ganhe recompensas para proteger o Ethereum",
+ "nav-stake-label": "Participe",
+ "nav-staking-home-description": "Uma descrição geral das diferentes opções de participação",
+ "nav-staking-home-label": "Staking de casa",
+ "nav-staking-pool-description": "Participe com outros e ganhe recompensas com qualquer quantidade de ETH",
+ "nav-staking-pool-label": "Staking em pool (combinado)",
+ "nav-staking-saas-description": "Operadores de nó terceirizados lidam com a operação de seu cliente validador",
+ "nav-staking-saas-label": "Participação com um serviço",
+ "nav-staking-solo-description": "Execute o hardware local e adicione pessoalmente à segurança e descentralização da rede Ethereum",
+ "nav-staking-solo-label": "Participação individual",
+ "nav-start-building-description": "Informações úteis para principiantes",
+ "nav-translation-program-description": "Um esforço colaborativo para traduzir o site ethereum.org para todos os idiomas",
+ "nav-tutorials-description": "Lista selecionada de tutoriais da comunidade",
+ "nav-use-cases-description": "Descubra como usar o Ethereum de diferentes formas",
+ "nav-use-cases-label": "Casos de uso",
+ "nav-what-is-ether-description": "A moeda dos aplicativos Ethereum",
+ "nav-what-is-ethereum-description": "Entenda o que torna o Ethereum especial",
+ "nav-what-is-web3-label": "O que é Web3?",
+ "nav-what-is-web3-description": "Uma alternativa aos monopólios centralizados que ditam as regras",
+ "nav-whitepaper-description": "A proposta original do Ethereum, escrita por Vitalik Buterin em 2014",
+ "nav-zkp-description": "Uma forma de provar a validade de uma afirmação sem a revelar",
+ "nft-page": "NFTs - Tokens não fungíveis",
"nfts": "NFTs (Tokens Não Fungíveis)",
"no": "Não",
"on-this-page": "Nesta página",
@@ -140,6 +263,8 @@
"page-developers-aria-label": "Menu dos Desenvolvedores",
"page-index-meta-title": "Início",
"page-last-updated": "Última atualização da página",
+ "participate": "Participar",
+ "participate-menu": "Menu Participe",
"pbs": "Separação de Proponente-Construtor",
"pools": "Staking em pool (combinado)",
"privacy-policy": "Política de privacidade",
@@ -150,13 +275,15 @@
"refresh": "Atualize a página.",
"return-home": "Voltar ao início",
"roadmap": "Planejamento Ethereum",
+ "research": "Pesquisa",
+ "research-menu": "Menu Pesquisa",
"resources": "Recursos de tradução",
- "regenerative-finance": "Finanças regenerativas (ReFi)",
+ "regenerative-finance": "ReFi - Finanças regenerativas",
"run-a-node": "Executar um nó",
- "rollup-component-website": "Site",
+ "rollup-component-website": "Website",
"rollup-component-developer-docs": "Documentação para o desenvolvedor",
"rollup-component-technology-and-risk-summary": "Resumo da tecnologia e riscos",
- "scaling": "Escalabilidade",
+ "scaling": "Dimensionamento",
"saas": "Participação como serviço",
"search": "Pesquisar",
"search-ethereum-org": "Buscar no ethereum.org",
@@ -164,6 +291,7 @@
"search-box-blank-state-text": "Procurar em outro lugar",
"search-eth-address": "Esse parece um endereço Ethereum. Nós não fornecemos dados específicos para endereços. Tente procurá-lo em um explorador de blocos como",
"search-no-results": "A pesquisa não retornou nenhum resultado",
+ "security": "Segurança",
"single-slot-finality": "Finalidade do espaço único",
"statelessness": "Sem estado",
"see-contributors": "Ver colaboradores",
@@ -181,6 +309,7 @@
"start-here": "Comece aqui",
"style-guide": "Guia de estilo",
"solo": "Participação individual",
+ "support": "Suporte",
"terms-of-use": "Termos de uso",
"translation-banner-body-new": "Você está visualizando esta página em inglês porque ainda não foi traduzida. Ajude-nos a traduzir o conteúdo.",
"translation-banner-body-update": "Há uma nova versão desta página mas, no momento, ela está apenas em inglês. Ajude-nos a traduzir a última versão.",
@@ -191,12 +320,15 @@
"translation-banner-no-bugs-title": "Não há bugs aqui!",
"translation-banner-no-bugs-content": "Esta página não está sendo traduzida. Ela foi intencionalmente deixada em inglês, por enquanto.",
"translation-banner-no-bugs-dont-show-again": "Não mostrar novamente",
+ "translation-program": "Programa de tradução",
"try-using-search": "Tente usar a pesquisa para encontrar o que está procurando ou",
"tutorials": "Tutoriais",
"up": "Acima",
+ "use": "Uso",
"use-ethereum": "Usar Ethereum",
"use-ethereum-menu": "Menu Usar Ethereum",
- "user-experience": "Experiência do Usuário",
+ "use-menu": "Menu Uso",
+ "user-experience": "Experiência do usuário",
"verkle-trees": "Árvores de Verkle",
"wallets": "Carteiras",
"we-couldnt-find-that-page": "Não foi possível encontrar essa página",
@@ -204,7 +336,7 @@
"web3-title": "Web3",
"website-last-updated": "Última atualização do site",
"what-is-ether": "O que é ether (ETH)?",
- "what-is-ethereum": "O que é Ethereum?",
+ "what-is-ethereum": "O que é o Ethereum?",
"withdrawals": "Saque de staking",
"yes": "Sim",
"zero-knowledge-proofs": "Prova de conhecimento zero"
diff --git a/src/intl/pt-br/page-about.json b/src/intl/pt-br/page-about.json
index f94657a9d20..011b31dff25 100644
--- a/src/intl/pt-br/page-about.json
+++ b/src/intl/pt-br/page-about.json
@@ -9,11 +9,11 @@
"page-about-li-4": "implementado",
"page-about-link-1": "O código fonte deste repositório está licenciado sob a Licença MIT",
"page-about-link-2": "GitHub",
- "page-about-link-3": "Ver a lista completa de tarefas em andamento no GitHub",
+ "page-about-link-3": "Ver a lista completa de tarefas em andamento no Github",
"page-about-link-4": "Entre no nosso servidor do Discord",
"page-about-link-5": "Encontre-nos no Twitter",
- "page-about-link-6": "Ver a lista completa de tarefas implementadas no GitHub",
- "page-about-link-7": "Levantar uma questão no GitHub",
+ "page-about-link-6": "Ver a lista completa de tarefas implementadas no Github",
+ "page-about-link-7": "Levantar uma questão no Github",
"page-about-p-1": "Desde o lançamento da ethereum.org, esforçamo-nos para ser transparentes na forma como operamos. Este é um dos nossos valores principais porque acreditamos que a transparência é crucial para o sucesso do Ethereum.",
"page-about-p-2": "Nós utilizamos",
"page-about-p-3": "como nossa principal ferramenta de gerenciamento de projeto. Organizamos nossas tarefas em 3 categorias:",
@@ -24,10 +24,9 @@
"page-about-p-8": "Você tem alguma ideia de como podemos melhorar a ethereum.org? Nós adoraríamos colaborar com você!",
"page-what-is-ethereum-energy-consumption-chart-legend": "Consumo anual de energia em TWH/ano",
"page-upgrades-post-merge-banner-governance-ood": "Alguns conteúdos nesta página estão desatualizados após a fusão. Por favor, faça um PR se você deseja contribuir.",
- "energy-consumption-chart-youtube-label": "YouTube",
- "energy-consumption-chart-gold-mining-galaxy-label": "Mineração de ouro (Galáxia Digital)",
"energy-consumption-chart-global-data-centers-label": "Centros de dados globais",
- "energy-consumption-chart-gold-mining-cbeci-label": "Mineração de ouro (CBECI)",
+ "energy-consumption-chart-airbnb-label": "AirBnB",
+ "energy-consumption-gold-mining-cbeci-label": "Mineração de ouro",
"energy-consumption-chart-btc-pow-label": "BTC PoW",
"energy-consumption-chart-netflix-label": "Netflix",
"energy-consumption-chart-eth-pow-label": "BTC PoW",
diff --git a/src/intl/pt-br/page-bug-bounty.json b/src/intl/pt-br/page-bug-bounty.json
index d9b2e5a34ae..bbef9185a8b 100644
--- a/src/intl/pt-br/page-bug-bounty.json
+++ b/src/intl/pt-br/page-bug-bounty.json
@@ -3,7 +3,7 @@
"page-upgrades-bug-bounty-annotations": "Pode ser útil conferir as seguintes anotações:",
"page-upgrades-bug-bounty-client-bugs": "Bugs do cliente",
"page-upgrades-bug-bounty-client-bugs-desc": "Os clientes executam a rede Ethereum e precisam seguir a lógica estabelecida na especificação e estar seguros contra possíveis ataques. Os bugs que queremos encontrar estão relacionados à implementação do protocolo.",
- "page-upgrades-bug-bounty-client-bugs-desc-2": "Atualmente, clientes da camada de execução (Besu, Erigon, Geth e Nethermind) e clientes da camada de consenso (Lighthouse, Lodestar, Nimbus, Teku e Prysm) estão incluídos no programa Bug Bounty. Mais clientes podem ser adicionados à medida que completam as auditorias e ficam prontos para a produção.",
+ "page-upgrades-bug-bounty-client-bugs-desc-2": "Currently execution layer clients (Besu, Erigon, Geth and Nethermind) and consensus layer clients (Lighthouse, Lodestar, Nimbus, Teku and Prysm) are included in the Bug Bounty Program. More clients may be added as they complete audits and become production ready. Currently, c-kzg-4844 and go-kzg-4844 are also included in the bug bounty program.",
"page-upgrades-bug-bounty-clients": "Clientes em destaque nas recompensas",
"page-upgrades-bug-bounty-clients-type-1": "Problemas de não conformidade de especificação",
"page-upgrades-bug-bounty-clients-type-2": "Falhas inesperadas, vulnerabilidades RCE ou de negação de serviço (DOS)",
@@ -17,17 +17,17 @@
"page-upgrades-bug-bounty-email-us": "Envie-nos um e-mail:",
"page-upgrades-bug-bounty-help-links": "Links úteis",
"page-upgrades-bug-bounty-hunting": "Regras de caça a bugs",
- "page-upgrades-bug-bounty-hunting-desc": "O programa bug bounty é um programa de recompensas experimental e discricionário destinado à ativa comunidade do Ethereum, visando incentivar e recompensar aqueles que estão ajudando a melhorar a plataforma. Isso não é uma competição. É importante saber que podemos cancelar o programa a qualquer momento, e os prêmios ficam a critério exclusivo do painel de recompensa por bugs da Ethereum Foundation. Além disso, não podemos conceder prêmios a indivíduos que estejam nas listas de sanções ou que estejam em países nas listas de sanções (por exemplo, Coreia do Norte, Irã etc.). As leis locais exigem que solicitemos prova de sua identidade. Você é responsável por todos os impostos. Todos os prêmios estão sujeitos à lei aplicável. Por fim, seu teste não deve violar nenhuma lei ou comprometer quaisquer dados que não sejam seus e deve ocorrer em redes de teste locais em execução.",
- "page-upgrades-bug-bounty-hunting-leaderboard": "Tabela de classificação de recompensas por bugs da camada de consenso",
- "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Tabela de classificação de recompensas por bugs da camada de execução",
- "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Encontre bugs na camada de consenso para serem adicionados a esta tabela de classificação",
- "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Encontre bugs da camada de execução para ser adicionado a esta tabela de classificação",
+ "page-upgrades-bug-bounty-hunting-desc": "O programa de caça a bugs é um programa de recompensas experimental e discricionário destinado à comunidade ativa do Ethereum, visando incentivar e recompensar aqueles que estão ajudando a melhorar a plataforma. Não se trata de uma competição. É importante saber que podemos cancelar o programa a qualquer momento, e os prêmios ficam a critério exclusivo do painel de recompensas por bugs da Ethereum Foundation. Além disso, não podemos conceder prêmios a indivíduos que estejam nas listas de sanções ou que estejam em países nas listas de sanções (por exemplo, Coreia do Norte, Irã, etc.). As leis locais exigem que solicitemos prova de sua identidade. Você é responsável por todos os impostos. Todos os prêmios estão sujeitos à lei aplicável. Por fim, seu teste não deve violar nenhuma lei ou comprometer quaisquer dados que não sejam seus e deve ocorrer em redes de teste locais em execução.",
+ "page-upgrades-bug-bounty-hunting-leaderboard": "Placar de recompensas por bugs da camada de consenso",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Placar de recompensas por bugs da camada de execução",
+ "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Encontre bugs da camada de consenso para serem adicionados a este placar",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Encontre bugs da camada de execução para ser adicionado a este placar",
"page-upgrades-bug-bounty-hunting-li-1": "Tickets sem um POC que já tenham sido submetidos por outro usuário ou que já sejam conhecidos por mantenedores de especificações e clientes não são elegíveis para o programa de recompensas.",
"page-upgrades-bug-bounty-hunting-li-2": "A divulgação pública de uma vulnerabilidade a torna inelegível para uma recompensa.",
"page-upgrades-bug-bounty-hunting-li-3": "Funcionários e contratados da Ethereum Foundation ou equipes de clientes no escopo do programa de recompensas podem participar do programa apenas no acúmulo de pontos e não receberão recompensas monetárias.",
"page-upgrades-bug-bounty-hunting-li-4": "O programa de recompensas de Ethereum considera um número de variáveis na determinação de recompensas. Determinações de elegibilidade, pontuação e todos os termos relacionados a um prêmio são a critério único e final do painel de recompensas da Fundação Ethereum.",
- "page-upgrades-bug-bounty-leaderboard": "Ver a tabela de classificação completa",
- "page-upgrades-bug-bounty-leaderboard-list": "Placar de recompensa por caça a bugs",
+ "page-upgrades-bug-bounty-leaderboard": "Ver o placar completo",
+ "page-upgrades-bug-bounty-leaderboard-list": "Placar de recompensas por caça a bugs",
"page-upgrades-bug-bounty-leaderboard-points": "pontos",
"page-upgrades-bug-bounty-ledger-desc": "As especificações do Ethereum detalham a lógica do design para a Camada de Execução e a Camada de Consenso.",
"page-upgrades-bug-bounty-ledger-title": "Especificação de bugs",
@@ -56,8 +56,8 @@
"page-upgrades-bug-bounty-execution-specs": "Especificações da Camada de Execução",
"page-upgrades-bug-bounty-specs-docs": "Documentos da especificação",
"page-upgrades-bug-bounty-submit": "Enviar um bug",
- "page-upgrades-bug-bounty-submit-desc": "Para cada bug válido que você encontrar você receberá recompensas. A quantidade de recompensas concedidas variará conforme a severidade. A severidade é calculada de acordo com o modelo de classificação de risco da OWASP com base no impacto na Rede Ethereum e na Probabilidade.",
- "page-upgrades-bug-bounty-subtitle": "Ganhe até US$250.000 e um lugar na tabela de classificação ao encontrar bugs no protocolo, cliente e Solidity que afete a rede Ethereum.",
+ "page-upgrades-bug-bounty-submit-desc": "Para cada bug válido que você encontrar, receberá recompensas. A quantidade de recompensas concedidas variará conforme a gravidade. A gravidade é calculada segundo o modelo de classificação de risco da OWASP, com base no impacto na Rede Ethereum e na Probabilidade.",
+ "page-upgrades-bug-bounty-subtitle": "Ganhe até US$ 250.000 e uma posição na tabela de classificação ao encontrar bugs no protocolo, no cliente e no Solidity que afetem a rede Ethereum.",
"page-upgrades-bug-bounty-title": "Aberto para inscrições",
"page-upgrades-bug-bounty-title-1": "Beacon Chain",
"page-upgrades-bug-bounty-title-2": "Escolha do fork",
@@ -83,7 +83,7 @@
"page-upgrades-bug-bounty-card-label-6": "Até 50.000 dólares",
"page-upgrades-bug-bounty-card-label-7": "Até 25.000 pontos",
"page-upgrades-bug-bounty-card-label-8": "Até 250.000 dólares",
- "page-upgrades-bug-bounty-card-li-1": "Impacto baixo, probabilidade media",
+ "page-upgrades-bug-bounty-card-li-1": "Impacto baixo, probabilidade média",
"page-upgrades-bug-bounty-card-li-2": "Impacto médio, probabilidade baixa",
"page-upgrades-bug-bounty-card-li-3": "Impacto alto, probabilidade baixa",
"page-upgrades-bug-bounty-card-li-4": "Impacto médio, probabilidade média",
@@ -122,7 +122,7 @@
"bug-bounty-faq-q5-title": "Informei um problema / vulnerabilidade, mas não recebi nenhuma resposta!",
"bug-bounty-faq-q5-contentPreview": "Por favor, aguarde alguns dias para que alguém responda ao seu envio.",
"bug-bounty-faq-q5-content-1": "Nosso objetivo é responder aos envios o mais rápido possível. Envie-nos um e-mail para bounty@ethereum.org se você não tiver recebido uma resposta em um dia ou dois.",
- "bug-bounty-faq-q6-title": "Eu quero ser anônimo / Eu não quero meu nome no painel de líderes.",
+ "bug-bounty-faq-q6-title": "Quero ser anônimo / Não quero meu nome no placar.",
"bug-bounty-faq-q6-contentPreview": "Você pode fazer isso, mas isso pode torná-lo inelegível para ganhar recompensas.",
"bug-bounty-faq-q6-content-1": "Você pode fazer um envio anonimamente ou com um pseudônimo, mas ficará inelegível para recompensas ETH/DAI. Para se candidatar a recompensas ETH/DAI, precisamos do seu nome verdadeiro e uma prova de sua identidade. Doar sua recompensa para caridade não requer sua identidade.",
"bug-bounty-faq-q6-content-2": "Avise-nos caso não queira seu nome/apelido exibido no placar.",
diff --git a/src/intl/pt-br/page-dapps.json b/src/intl/pt-br/page-dapps.json
index da1b10374d8..b1ae0e23e95 100644
--- a/src/intl/pt-br/page-dapps.json
+++ b/src/intl/pt-br/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Transmita dinheiro em tempo real.",
"page-dapps-dapp-description-superrare": "Compre obras de arte digitais diretamente dos artistas ou em mercados secundários.",
"page-dapps-dapp-description-token-sets": "Estratégias de investimento em criptomoedas que se reequilibram automaticamente.",
- "page-dapps-dapp-description-tornado-cash": "Envie transações anônimas na Ethereum.",
"page-dapps-dapp-description-uniswap": "Troque tokens de forma simples ou forneça tokens por % de recompensa.",
"page-dapps-dapp-description-dexguru": "Terminal de negociação sem custódia para traders DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix é um protocolo de emissão e negociação de ativos sintéticos",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Esses são aplicativos que se concentram na descentralização das ferramentas de desenvolvedores, incorporando sistemas cripto-econômicos na tecnologia existente e criando mercados para o trabalho de desenvolvimento de código aberto.",
"page-dapps-technology-title": "Tecnologia descentralizada",
"page-dapps-token-sets-logo-alt": "Logotipo do Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logotipo do Tornado Cash",
"page-dapps-uniswap-logo-alt": "Logotipo Uniswap",
"page-dapps-wallet-callout-button": "Encontre uma carteira",
"page-dapps-wallet-callout-description": "As carteiras também são dapps. Encontre uma com base nos recursos que são importantes para você.",
diff --git a/src/intl/pt-br/page-developers-tutorials.json b/src/intl/pt-br/page-developers-tutorials.json
index f7995a82d04..96098845ee3 100644
--- a/src/intl/pt-br/page-developers-tutorials.json
+++ b/src/intl/pt-br/page-developers-tutorials.json
@@ -24,5 +24,6 @@
"page-tutorial-intermediate": "Intermediário",
"page-tutorial-advanced": "Avançado",
"page-find-wallet-try-removing": "Tente remover um ou dois recursos",
- "page-find-wallet-clear": "Limpar filtros"
+ "page-find-wallet-clear": "Limpar filtros",
+ "page-tutorials-env-banner": "Não comprometa o .env! Certifique-se de nunca compartilhar ou explicar o seu . arquivo nv com qualquer pessoa, pois você estará comprometendo seus segredos ao fazê-lo. Se você estiver usando o controle de versão, adicione seu .env a um arquivo gitignore."
}
diff --git a/src/intl/pt-br/page-gas.json b/src/intl/pt-br/page-gas.json
new file mode 100644
index 00000000000..d715bf33e9b
--- /dev/null
+++ b/src/intl/pt-br/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Gas fees on Ethereum: how do they work?",
+ "page-gas-meta-description": "Learn about gas on Ethereum: how they work and how to pay less in gas fees",
+ "page-gas-hero-title": "Gas fees",
+ "page-gas-hero-header": "Network fees",
+ "page-gas-hero-button-1-content": "O que é gás?",
+ "page-gas-hero-subtitle-1": "Network fees on Ethereum are called gas.",
+ "page-gas-hero-subtitle-2": "Gas is the fuel that powers Ethereum.",
+ "page-gas-summary-title": "Resumo",
+ "page-gas-summary-item-1": "Every transaction on Ethereum requires a small form of payment to process",
+ "page-gas-summary-item-2": "These fees are known as ‘gas’ fee",
+ "page-gas-summary-item-3": "Gas fees change based on network congestion",
+ "page-gas-what-are-gas-fees-header": "What are gas fees?",
+ "page-gas-what-are-gas-fees-text-1": "Think of Ethereum as a large computer network where people can do tasks like sending messages or running programs. Just like in the real world, these tasks require energy to get done.",
+ "page-gas-what-are-gas-fees-text-2": "In Ethereum, each computational action has a set \"gas\" price. Your gas fees are the total cost of the actions in your transaction. When you send a transaction or run a smart contract, you pay in gas fees to process it.",
+ "page-gas-how-do-i-pay-less-gas-header": "How do I pay less gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "While higher fees on Ethereum are sometimes inevitable, there are strategies you can use to reduce the cost:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Time your transactions",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Just like travelling off-peak is less crowded and more affordable, Ethereum is generally cheaper to use when North America is asleep.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Wait for gas to go down",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Gas prices go up and down every twelve seconds based on how congested Ethereum is. When gas prices are high, waiting just a few minutes before making a transaction could see a significant drop in what you pay.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Usar a camada 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Layer-2 chains are built atop Ethereum, offering lower fees and handling more transactions. They're a good choice to save on fees for transactions that don't need to happen on the main Ethereum network.",
+ "page-gas-try-layer-2": "Try layer 2",
+ "page-gas-what-causes-high-gas-fees-header": "What causes high gas fees?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Whenever the amount of computation (gas) on Ethereum exceeds a certain threshold, gas fees begin to rise. The more the gas exceeds this threshold, the quicker gas fees increase.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Higher fees could be caused by things like popular dapps or NFTs, periodically increased trading on DEXs, or an overwhelming number of user activity at peak times.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Developers on Ethereum should take care to optimise their smart contracts usage before deploying. If lots of people are using a poorly written smart contract, it will consume more gas and could inadvertently cause network congestion.",
+ "page-gas-want-to-dive-deeper": "Quer mais detalhes?",
+ "page-gas-check-out-the-developer-docs": "Check out the developer docs.",
+ "page-gas-attack-of-the-cryptokitties-header": "Attack of the Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "In November 2017, the popular CryptoKitties project was launched. Its rapid spike in popularity caused significant network congestion and extremely high gas fees. The challenges posed by CryptoKitties accelerated the urgency of finding solutions for scaling Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Why do we need gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas is a critical element in keeping Ethereum secure and processing transactions. Gas helps in many ways:",
+ "page-gas-benefits-1-description": "Gas keeps Ethereum sybil-resistant by preventing malicious actors from overwhelming the network with fraudulent activities.",
+ "page-gas-benefits-2-description": "Because computation costs gas, spamming Ethereum with expensive transactions, either accidentally and maliciously, is financially disencentivised.",
+ "page-gas-benefits-3-description": "A hard-limit on the amount of computation that can be done at any one time prevents Ethereum from being overwhelmed, helping to ensure the network is always accessible.",
+ "page-gas-how-is-gas-calculated-header": "How is gas calculated?",
+ "page-gas-advanced": "Avançado",
+ "page-gas-how-is-gas-calculated-text-1": "The total gas fee you pay is made up of a few parts:",
+ "page-gas-how-is-gas-calculated-item-1": "Base fee: a fee set by the network that has to be paid for a transaction",
+ "page-gas-how-is-gas-calculated-item-2": "Priority fee: an optional tip to incentivise node operators to include your transaction",
+ "page-gas-how-is-gas-calculated-item-3": "Units of gas used*: remember we said gas represented computation? More complex actions, like interacting with a smart contract, use more gas than simple ones, such as sending a transaction.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* See Figure 1 to see how much gas different types of transactions use",
+ "page-gas-how-is-gas-calculated-text-2": "The formula for calculating a gas fee is units of gas used * (base fee + priority fee). Most wallets will calculate gas usage and display it in a more straight-forward way.",
+ "page-gas-table-figure": "Figure 1: Gas used by transaction type",
+ "page-gas-table-header-1": "Transaction type",
+ "page-gas-table-header-2": "Units of gas used",
+ "page-gas-table-item-1-transaction-type": "Sending ETH",
+ "page-gas-table-item-2-transaction-type": "Sending ERC-20 tokens",
+ "page-gas-table-item-3-transaction-type": "Transferring and NFT",
+ "page-gas-table-item-4-transaction-type": "Swapping on Uniswap",
+ "page-gas-faq-header": "Frequency asked questions",
+ "page-gas-faq-question-1-q": "Who gets paid the gas fee in my transaction?",
+ "page-gas-faq-question-1-a-1": "The majority is gas fee—the base fee— is destroyed by the protocol (burned). The priority fee, if included in your transaction, will be given to the validator who proposed your transaction.",
+ "page-gas-faq-question-1-a-2": "You can read a detailed description of the process in the gas developer docs.",
+ "page-gas-faq-question-2-q": "Do I need to pay gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Yes. All gas fees on Ethereum must be paid in the native ETH currency.",
+ "page-gas-faq-question-2-a-2": "Mais sobre ETH",
+ "page-gas-faq-question-3-q": "What is gwei?",
+ "page-gas-faq-question-3-a-1": "In most wallets or gas trackers, you will see gas prices denominated as ‘gwei’.",
+ "page-gas-faq-question-3-a-2": "Gwei is just a smaller unit of ETH, just as pennies are to dollars, with the difference being that 1 ETH equals 1 billion gwei. Gwei is useful when talking about very small amounts of ETH.",
+ "page-gas-use-layer-2": "Usar a camada 2"
+}
diff --git a/src/intl/pt-br/page-get-eth.json b/src/intl/pt-br/page-get-eth.json
index d981ca45e10..35eab997a5a 100644
--- a/src/intl/pt-br/page-get-eth.json
+++ b/src/intl/pt-br/page-get-eth.json
@@ -9,26 +9,35 @@
"page-get-eth-cex-desc": "Corretoras são negócios que permitem que você compre criptomoedas usando moedas tradicionais. Elas têm custódia sobre qualquer ETH que você comprar até que você a envie para uma carteira que você controla.",
"page-get-eth-checkout-dapps-btn": "Confira os dapps",
"page-get-eth-community-safety": "Publicações da comunidade sobre segurança",
- "page-get-eth-description": "Ethereum e ETH não são controlados por nenhum governo ou empresa: são descentralizados. Isso significa que os ETH estão abertos para que todos usem.",
+ "page-get-eth-description": "Ethereum não é controlado por nenhuma organização - ele é descentralizado.",
"page-get-eth-dex": "Corretoras descentralizadas (DEXs)",
- "page-get-eth-dex-desc": "Se você quiser um maior controle, compre ETH ponto a ponto. Com uma DEX você pode operar sem dar controle de seus fundos a uma empresa centralizada.",
+ "page-get-eth-dex-desc": "Se você deseja mais controle, compre ETH utilizando smart contracts. Com DEX você pode ter mais controle nas trocas de ativos digitais sem depender de uma companhia centralizada para gerir seus fundos.",
+ "page-get-eth-peers": "Receba ETH das suas conexões",
+ "page-get-eth-peers-desc": "Uma vez que você tenha uma conta Ethereum, tudo que você precisa fazer é compartilhar seu endereço para começar a receber e enviar ETC (e outros tokens) peer-to-peer.",
+ "page-get-eth-staking": "Recompensas de staking",
+ "page-get-eth-staking-desc": "Se você já tem uma conta ETH, você pode ganhar mais executando um nódulo validador. Você é pago em ETH para realizar essa verificação.",
+ "page-get-eth-earn": "Receber ETH",
+ "page-get-eth-earn-desc": "Você pode receber ETH trabalhando para DAOs ou companhias que pagam em crypto, ganhando recompensas, encontrando erros de software e mais.",
+ "page-get-eth-daos-link-desc": "Aprenda mais sobre DAOs",
+ "page-get-eth-cex-link-desc": "Veja uma lista de corretoras de câmbio",
+ "page-get-eth-staking-link-desc": "Aprenda mais sobre staking",
"page-get-eth-dexs": "Corretoras descentralizadas (DEXs)",
- "page-get-eth-dexs-desc": "Corretoras descentralizadas são mercados abertos para ETH e outros tokens. Elas conectam diretamente compradores e vendedores.",
+ "page-get-eth-dexs-desc": "Exchanges descentralizadas são mercados abertos para ETH e outros tokens. Elas conectam diretamente compradores e vendedores.",
"page-get-eth-dexs-desc-2": "Em vez de usar uma corretora de confiança para proteger fundos na transação, eles usam código. O ETH do vendedor só será transferido quando o pagamento for garantido. Esse tipo de código é conhecido como um contrato inteligente.",
- "page-get-eth-dexs-desc-3": "Isto significa que há menos restrições geográficas do que com alternativas centralizadas. Se alguém está vendendo o que você quer e aceitando um método de pagamento que você pode fornecer, vocês podem fazer negócio. Os DEXs podem permitir que você compre ETH com outros tokens, PayPal ou inclusive entregas em dinheiro pessoalmente.",
+ "page-get-eth-dexs-desc-3": "Isso significa que há menos restrições geográficas do que com alternativas centralizadas. Se alguém vende o que você quer e aceita um método de pagamento que você pode fornecer, é um bom negócio.",
"page-get-eth-do-not-copy": "Não copiar",
"page-get-eth-exchanges-disclaimer": "Nós coletamos essas informações manualmente. Se você encontrar algum erro, nos informe em",
- "page-get-eth-exchanges-empty-state-text": "Digite o país em que você vive para ver uma lista de carteiras e exchanges que você pode usar para comprar ETH",
+ "page-get-eth-exchanges-empty-state-text": "Informe seu país de residência para ter acesso à lista de corretoras de câmbio que você pode utilizar",
"page-get-eth-exchanges-except": "Exceto",
"page-get-eth-exchanges-header": "Em qual país você mora?",
"page-get-eth-exchanges-header-exchanges": "Corretoras",
"page-get-eth-exchanges-header-wallets": "Carteiras",
- "page-get-eth-exchanges-intro": "Exchanges e carteiras têm restrições sobre onde podem vender cripto.",
- "page-get-eth-exchanges-no-exchanges": "Desculpe, não conhecemos nenhum exchange que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Desculpe, não conhecemos nenhum exchange ou carteira que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
- "page-get-eth-exchanges-no-wallets": "Desculpe, não conhecemos nenhuma carteira que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-intro": "Corretoras possuem restrições de lugares onde podem comercializar crypto. Essa lista é um indicativo de serviços que podem operar em cada país. Estar na lista não é um endosso - realize sua própria pesquisa!",
+ "page-get-eth-exchanges-no-exchanges": "Desculpe, não conhecemos nenhuma corretora que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Desculpe, não conhecemos nenhuma corretora que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-no-wallets": "Desculpe, não conhecemos nenhuma carteira que lhe permita comprar ETH neste país. Se você sabe de alguma, informe-nos em",
"page-get-eth-exchanges-search": "Digite onde você mora...",
- "page-get-eth-exchanges-success-exchange": "Pode demorar vários dias para se inscrever em uma exchange devido aos controles jurídicos.",
+ "page-get-eth-exchanges-success-exchange": "Pode demorar vários dias para se inscrever em uma corretora devido aos controles jurídicos.",
"page-get-eth-exchanges-success-wallet-link": "carteiras",
"page-get-eth-exchanges-success-wallet-paragraph": "Onde você mora, é possível comprar ETH diretamente destas carteiras. Saiba mais",
"page-get-eth-exchanges-usa": "Estados Unidos da América (EUA)",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Imagem de Get ETH hero",
"page-get-eth-keep-it-safe": "Mantenha seus ETH seguros",
"page-get-eth-meta-description": "Como comprar ETH com base no local onde você vive e conselhos sobre como cuidar dele.",
- "page-get-eth-meta-title": "Como comprar ETH",
+ "page-get-eth-meta-title": "Como obter ETH",
"page-get-eth-need-wallet": "Você precisará de uma carteira para usar uma DEX.",
"page-get-eth-new-to-eth": "Novo em ETH? Aqui está uma visão geral para você começar.",
"page-get-eth-other-cryptos": "Compre com outras criptomoedas",
- "page-get-eth-protect-eth-desc": "Se você planeja comprar uma grande quantidade de ETH, você pode querer mantê-los em uma carteira que você controla, não em uma exchange. O motivo é que uma exchange é um alvo provável de hackers. Se um hacker ganha acesso, você pode perder seus fundos. Já com a carteira, você é o único a ter controle total dela.",
- "page-get-eth-protect-eth-in-wallet": "Proteja seus ETH em uma carteira",
+ "page-get-eth-protect-eth-desc": "Uma das principais características do Ethereum é que você mantém o controle de seus próprios ativos gerenciando sua própria conta. Isso significa que você não precisa confiar seus ativos a terceiros e está protegido contra qualquer custodiante que aja desonestamente, vá à falência ou seja hackeado. No entanto, também significa que você assume a responsabilidade por sua própria segurança.",
+ "page-get-eth-protect-eth-in-wallet": "Mantenha seu ETH na sua carteira",
"page-get-eth-search-by-country": "Procurar por país",
- "page-get-eth-security": "Mas isso também significa que você precisa levar a sério a segurança dos seus fundos. Com ETH, você não confia em um banco para cuidar do seu dinheiro, você está confiando em você mesmo.",
+ "page-get-eth-security": "Isso significa que você precisa tomar cuidado com a segurança dos seus fundos. Com ETH, você não tem um banco ou companhia para validar suas ações, você tem total responsabilidade por suas transações.",
"page-get-eth-smart-contract-link": "Mais sobre contratos inteligentes",
"page-get-eth-swapping": "Troque seus tokens por ETH de outras pessoas. E vice-versa.",
"page-get-eth-try-dex": "Veja como funciona um DEX",
"page-get-eth-use-your-eth": "Use seu ETH",
"page-get-eth-use-your-eth-dapps": "Agora que você possui alguns ETH, confira alguns aplicativos Ethereum (dapps). Existem dapps para finanças, mídias sociais, jogos e muitas outras categorias.",
"page-get-eth-wallet-instructions": "Siga as instruções da carteira",
- "page-get-eth-wallet-instructions-lost": "Saiba que se você perder o acesso a sua carteira, estará perdendo o acesso a seus fundos. Sua carteira deverá dar a você instruções sobre como evitar que isso aconteça. Certifique-se de segui-las com cuidado. Na maioria dos casos, ninguém poderá ajudá-lo se você perder o acesso a sua carteira.",
+ "page-get-eth-wallet-instructions-lost": "Se você perder acesso a sua conta, irá perder todos os seus fundos. Sua carteira tem informações sobre proteção nesses casos. Tenha certeza que está seguindo tudo corretamente - geralmente, ninguém poderá ajudá-lo se você perder acesso a sua conta.",
"page-get-eth-wallets": "Carteiras",
"page-get-eth-wallets-link": "Mais sobre carteiras",
"page-get-eth-wallets-purchasing": "Algumas carteiras permitem que você compre criptomoeda com um cartão de débito/crédito, por transferência bancária ou até mesmo via Apple Pay. Aplicam-se restrições geográficas.",
- "page-get-eth-warning": "Esses DEXs não são para iniciantes, já que você precisará de alguns ETH para usá-los.",
+ "page-get-eth-warning": "Estes DEXs não são para iniciantes, pois você precisa de algum ETH para utilizar. São apenas exemplos, não são recomendações. Você precisa pesquisar!",
"page-get-eth-what-are-DEX's": "O que são DEXs?",
"page-get-eth-whats-eth-link": "O que é ETH?",
- "page-get-eth-where-to-buy-desc": "Você pode comprar ETH de corretoras ou diretamente de carteiras.",
+ "page-get-eth-where-to-buy-desc": "Você pode receber ETH, receber ela dos seus pares, ou comprar em exchanges e apps.",
"page-get-eth-where-to-buy-desc-2": "Verifique quais serviços estão disponíveis onde você mora.",
- "page-get-eth-where-to-buy-title": "Onde comprar ETH",
+ "page-get-eth-where-to-buy-title": "Onde obter ETH",
"page-get-eth-your-address": "Seu endereço de ETH",
"page-get-eth-your-address-desc": "Quando você baixar uma carteira, ela criará um endereço ETH público para você. Ele se verá assim:",
"page-get-eth-your-address-desc-3": "Pense nele como seu endereço de e-mail, mas em vez de mensagem, ele pode receber ETH. Se você quiser transferir ETH de uma exchange para sua carteira, use seu endereço como o destino. Não deixe de verificar o endereço antes de enviar!",
diff --git a/src/intl/pt-br/page-languages.json b/src/intl/pt-br/page-languages.json
index e0e80ec99a8..e36288f3a11 100644
--- a/src/intl/pt-br/page-languages.json
+++ b/src/intl/pt-br/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Quer ver o ethereum.org em um idioma diferente?",
"page-languages-want-more-link": "Programa de tradução",
"page-languages-want-more-paragraph": "Os tradutores do ethereum.org estão sempre traduzindo as páginas para a maior quantidade de idiomas possíveis. Para ver em que eles estão trabalhando agora ou inscrever-se para participar com eles, leia sobre nosso",
- "page-languages-filter-placeholder": "Filtro",
+ "page-languages-filter-label": "Lista de filtros",
+ "page-languages-filter-placeholder": "Digite para filtrar",
+ "page-languages-browser-default": "Navegador padrão",
+ "page-languages-translated": "traduzido",
+ "page-languages-words": "palavras",
+ "page-languages-recruit-community": "Ajude-nos a traduzir ethereum.org.",
+ "langauge-am": "Amárico",
"language-ar": "Árabe",
"language-az": "Azerbaidjano",
+ "langauge-be": "Bielorrusso",
"language-bg": "Búlgaro",
"language-bn": "Bengalês",
+ "language-bs": "Bósnio",
"language-ca": "Catalão",
"language-cs": "Tcheco",
"language-da": "Danês",
@@ -32,6 +40,7 @@
"language-hi": "Hindi",
"language-hr": "Croata",
"language-hu": "Húngaro",
+ "language-hy-am": "Armênio",
"language-id": "Indonésio",
"language-ig": "Igbo",
"language-it": "Italiano",
@@ -39,12 +48,14 @@
"language-ka": "Georgiano",
"language-kk": "Cazaquistanês",
"language-km": "Quemer (khmer)",
+ "language-kn": "Canarês",
"language-ko": "Coreano",
"language-lt": "Lituano",
"language-ml": "Malaiala",
"language-mr": "Marata",
"language-ms": "Malaio",
"language-nb": "Norueguês",
+ "language-ne-np": "Nepalês",
"language-nl": "Neerlandês",
"language-pcm": "Pidgin nigeriano",
"language-fil": "Filipino",
@@ -58,8 +69,9 @@
"language-sl": "Esloveno",
"language-sr": "Sérvio",
"language-sw": "Suaíli",
- "language-th": "Tailandês",
"language-ta": "Tâmil",
+ "language-th": "Tailandês",
+ "language-tk": "Turcomeno",
"language-tr": "Turco",
"language-uk": "Ucraniano",
"language-ur": "Urdu",
diff --git a/src/intl/pt-br/page-stablecoins.json b/src/intl/pt-br/page-stablecoins.json
index 01ebae92a2c..bd5b4bcb156 100644
--- a/src/intl/pt-br/page-stablecoins.json
+++ b/src/intl/pt-br/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Fonte",
"page-stablecoins-bitcoin-pizza": "A infame pizza de bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Em 2010, alguém comprou 2 pizzas por 10.000 bitcoins. Na época, eles valiam cerca de US$ 41. No mercado de hoje, isso vale milhões de dólares. Existem muitas transações lamentáveis semelhantes na história da Ethereum. As stablecoins resolvem este problema, para que você possa saborear a sua pizza e ficar com os seus ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Painel & Educação",
"page-stablecoins-coin-price-change": "Mudança de preço da moeda (últimos 30 dias)",
"page-stablecoins-crypto-backed": "Respaldada por cripto",
"page-stablecoins-crypto-backed-con-1": "Menos estável do que stablecoins respaldadas por moedas fiduciárias.",
diff --git a/src/intl/pt-br/page-upgrades-index.json b/src/intl/pt-br/page-upgrades-index.json
index 6bc77abef38..d75f7cba81b 100644
--- a/src/intl/pt-br/page-upgrades-index.json
+++ b/src/intl/pt-br/page-upgrades-index.json
@@ -9,8 +9,8 @@
"consensus-client-prysm-logo-alt": "Logotipo da Prysm",
"consensus-client-teku-logo-alt": "Logotipo da Teku",
"page-upgrades-answer-1": "A Beacon Chain foi usada como uma ferramenta para atualizar a Rede principal do Ethereum na Fusão.",
- "page-upgrades-answer-2": "Com A Fusão, o Ethereum teve a sua atualização mais substancial de todos os tempos, trocando a prova de trabalho por uma nova camada de consenso baseada em prova de participação.",
- "page-upgrades-answer-4": "A Beacon Chain foi usada para desenvolver o consenso baseado na prova de participação que o Ethereum usa atualmente. Ele foi executado separadamente na Rede principal do Ethereum para que os desenvolvedores pudessem observar o mecanismo de consenso isoladamente antes de usá-lo para coordenar a atividade real.",
+ "page-upgrades-answer-2": "Com a Fusão, o Ethereum teve a sua atualização mais substancial de todos os tempos, trocando a prova de trabalho por uma nova camada de consenso baseada em prova de participação.",
+ "page-upgrades-answer-4": "A Beacon Chain foi usada para desenvolver o consenso baseado na prova de participação que o Ethereum usa atualmente. Ela foi executada separadamente na Rede principal do Ethereum para que os desenvolvedores pudessem observar o mecanismo de consenso isoladamente antes de usá-lo para coordenar a atividade real.",
"page-upgrade-article-author-status": "Status",
"page-upgrade-article-author-ethmerge": "Ethmerge",
"page-upgrade-article-author-alchemy": "Alchemy",
@@ -22,32 +22,32 @@
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
"page-upgrade-article-title-two-point-oh": "Melhoria: a Beacon Chain",
"page-upgrade-article-title-beacon-chain-explainer": "A explicação sobre Beacon Chain Ethereum 2.0 que você deve ler primeiro",
- "page-upgrade-article-title-sharding-consensus": "Consenso de fragmentação (sharding)",
+ "page-upgrade-article-title-sharding-consensus": "Consenso de particionamento (sharding)",
"page-upgrade-article-title-sharding-is-great": "Por que o particionamento é ótimo: desmistificando as propriedades técnicas",
"page-upgrade-article-title-rollup-roadmap": "Um roadmap centrado em rollup",
"page-upgrade-article-title-hitchhikers-guide-to-ethereum": "O Guia do Mochileiro sobre o Ethereum",
- "page-upgrade-article-title-eip-4844": "EIP-4844: Transações de Blob de Fragmentos (Proto-Danksharding)",
- "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding – FAQ",
- "page-upgrade-article-title-sharding-das": "Uma explicação sobre a amostragem de fragmentação e disponibilidade de dados (DAS)",
+ "page-upgrade-article-title-eip-4844": "EIP-4844: Transações de blob de particionamento (Proto-Danksharding)",
+ "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding: perguntas frequentes",
+ "page-upgrade-article-title-sharding-das": "Uma explicação sobre a amostragem de particionamento e disponibilidade de dados (DAS)",
"page-upgrade-article-title-ethmerge": "Ethmerge",
"page-upgrade-article-title-merge-is-coming": "A Fusão está chegando",
- "page-upgrade-article-title-state-of-the-merge": "O Estado da Fusão: uma atualização sobre A Fusão do Ethereum para a prova de participação em 2022",
- "page-upgrade-article-title-ropsten-merge-testnet": "Anunciando a Rede de testes da Fusão do Ropsten",
+ "page-upgrade-article-title-state-of-the-merge": "O estado da Fusão: uma atualização sobre a Fusão do Ethereum para a prova de participação em 2022",
+ "page-upgrade-article-title-ropsten-merge-testnet": "Lançamento da Ropsten, a rede de testes para a Fusão",
"page-upgrade-article-title-execution-layer-specs": "Especificações da camada de execução",
"page-upgrade-article-title-consensus-layer-specs": "Especificações da camada de consenso",
"page-upgrade-article-title-engine-api-specs": "Especificações da Engine API",
"page-upgrades-beacon-chain-date": "A Beacon Chain foi lançada em 01 de dezembro de 2020",
- "page-upgrades-beacon-chain-desc": "A Beacon Chain trouxe a participação para o Ethereum e lançou as bases para futuras atualizações. Ela coordena a nova prova de participação do Ethereum.",
+ "page-upgrades-beacon-chain-desc": "A Beacon Chain trouxe a participação para o Ethereum e estabeleceu as bases para futuras melhorias. Ela coordena a nova prova de participação do Ethereum.",
"page-upgrades-beacon-chain-estimate": "A Beacon Chain está ativa",
"page-upgrades-beacon-chain-title": "A Beacon Chain",
"page-upgrades-bug-bounty": "Veja o programa de recompensas por caça aos bugs",
"page-upgrades-clients": "Confira os clientes de consenso (anteriormente conhecidos como clientes 'Eth2')",
"page-staking-deposit-contract-title": "Verifique o endereço do contrato de depósito",
- "page-upgrades-dive": "Aprofundando a visão",
- "page-upgrades-dive-desc": "Como podemos tornar o Ethereum mais escalável, seguro e sustentável? Mantendo a ética fundamental de descentralização do Ethereum.",
- "page-upgrades-docking": "A fusão",
- "page-upgrades-merge-answer-1": "A Fusão aconteceu quando a Ethereum fez a alteração para o consenso Prova de participação em 15 de setembro de 2022. A Beacon Chain se fundiu com a rede principal, tornando oficialmente obsoleta a Prova de trabalho e reduzindo o consumo de energia da Ethereum em ~99,95%.",
- "page-upgrades-merge-btn": "Mais sobre a fusão",
+ "page-upgrades-dive": "Mais detalhes sobre a visão",
+ "page-upgrades-dive-desc": "Como podemos tornar o Ethereum mais escalável, seguro e sustentável sem deixar de considerar a ética fundamental de descentralização do Ethereum?",
+ "page-upgrades-docking": "A integração",
+ "page-upgrades-merge-answer-1": "A Fusão ocorreu quando o Ethereum passou para o consenso de prova de participação em 15 de setembro de 2022. A Beacon Chain se fundiu com a rede principal, tornando a prova de trabalho oficialmente obsoleta e reduzindo o consumo de energia do Ethereum em cerca de 99,95%.",
+ "page-upgrades-merge-btn": "Mais sobre a integração",
"page-upgrades-merge-desc": "A Rede principal do Ethereum se fundiu com a prova de participação da Beacon Chain, marcando o fim da mineração de alto consumo energético.",
"page-upgrades-merge-estimate": "A Fusão chegou",
"page-upgrades-merge-mainnet": "O que é rede principal?",
@@ -59,13 +59,13 @@
"page-upgrades-help": "Quer fazer parte das melhorias no Ethereum?",
"page-upgrades-help-desc": "Há muitas oportunidades para contribuir com as melhorias do Ethereum, ajudar com testes e até ganhar recompensas.",
"page-upgrades-index-staking": "A participação está aqui",
- "page-upgrades-index-staking-desc": "A chave para as melhorias do Ethereum é a introdução do staking. Se você quiser usar o seu ETH para ajudar a proteger a rede Ethereum, certifique-se de seguir estas etapas.",
- "page-upgrades-index-staking-learn": "Saiba mais sobre participação",
+ "page-upgrades-index-staking-desc": "A chave para as melhorias do Ethereum é a introdução do staking (participação). Se você quiser usar o seu ETH para ajudar a proteger a rede Ethereum, certifique-se de seguir estas etapas.",
+ "page-upgrades-index-staking-learn": "Saiba mais sobre staking (participação)",
"page-upgrades-index-staking-learn-desc": "A Beacon Chain trouxe participação para o Ethereum. Se você tiver ETH, pode contribuir para um bem coletivo protegendo a rede e recebendo mais ETH por isso.",
"page-upgrades-index-staking-step-1": "1. Configuração com o launchpad",
"page-upgrades-index-staking-step-1-btn": "Acesse a plataforma Staking Launchpad",
"page-upgrades-index-staking-step-1-desc": "Para fazer staking no Ethereum, você precisará usar a plataforma launchpad, que o guiará pelo processo.",
- "page-upgrades-index-staking-step-2": "2. Confirme o endereço de participação",
+ "page-upgrades-index-staking-step-2": "2. Confirme o endereço de staking (participação)",
"page-upgrades-index-staking-step-2-btn": "Confirme o endereço do contrato de depósito",
"page-upgrades-index-staking-step-2-desc": "Antes de depositar seus ETH, certifique-se de que o endereço seja o correto. Você precisa ter acessado a plataforma Launchpad antes de fazer isso.",
"page-upgrades-index-staking-sustainability": "Mais sustentável",
@@ -75,8 +75,8 @@
"page-upgrades-question-1-title": "Quando as melhorias serão lançadas?",
"page-upgrades-question-1-desc": "O Ethereum está sendo atualizado progressivamente; as melhorias são distintas e têm diferentes datas de lançamento.",
"page-upgrades-question-2-title": "A Beacon Chain é uma blockchain separada?",
- "page-upgrades-question-2-desc": "Sim. A Beacon Chain foi o nome dado a uma cadeia de blocos de prova de participação paralela usada para atualizar a Rede principal do Ethereum. Agora existe apenas uma cadeia de blocos, formada pela fusão da cadeia de blocos original do Ethereum e da Beacon Chain juntas.",
- "page-upgrades-question-3-answer-2a": "A Fusão teve um impacto mínimo sobre os desenvolvedores de dapp — eles ainda interagem com a Ethereum da mesma maneira.",
+ "page-upgrades-question-2-desc": "Sim. A Beacon Chain foi o nome dado a uma blockchain de prova de participação paralela usada para atualizar a Rede principal do Ethereum. Agora existe apenas uma blockchain, formada pela fusão da blockchain original do Ethereum e da Beacon Chain juntas.",
+ "page-upgrades-question-3-answer-2a": "A Fusão teve um impacto mínimo sobre os desenvolvedores de dapp — eles ainda interagem com o Ethereum da mesma maneira.",
"page-upgrades-question-3-answer-2a-link": "A Fusão e os desenvolvedores de dapp",
"page-upgrades-question-3-answer-2b": "Os planos de fragmentação ainda estão sendo desenvolvidos, mas serão projetados tendo em mente os rollups de camada 2.",
"page-upgrades-layer-2-rollups": "Mais sobre rollups de camada 2",
@@ -85,21 +85,21 @@
"page-upgrades-question-3-title": "Como eu me preparo para as melhorias?",
"page-upgrades-question-4-answer-1": "Hoje em dia, sempre que você envia uma transação ou usa um dapp, está usando a camada de execução, também conhecida como Rede principal.",
"page-upgrades-question-4-answer-3": "Depois da Fusão, validadores protegerão toda a rede por meio da prova de participação.",
- "page-upgrades-question-4-answer-6": "Qualquer pessoa pode se tornar um validador através da participação (staking) dos respectivos ETH.",
+ "page-upgrades-question-4-answer-6": "Qualquer pessoa pode se tornar um validador através do staking (participação) dos respectivos ETH.",
"page-upgrades-question-4-answer-7": "Mais sobre participação",
"page-upgrades-question-4-title": "O que é a camada de execução?",
- "page-upgrades-question-4-desc": "Antes da Fusão, a cadeia de blocos do Ethereum era algumas vezes chamada de \"Eth1\". Este termo foi eliminado e substituído por \"camada de execução\".",
- "page-upgrades-question-5-answer-1": "Para se tornar um validador na rede, você precisará participar com 32 ETH. Se você não tem tanto, ou não está disposto a apostar essa quantia, você pode participar de participações compartilhadas. Esses compartilhamentos permitirão que você participe com menos e ganhe frações do total de recompensas.",
+ "page-upgrades-question-4-desc": "Antes da Fusão, a blockchain do Ethereum era algumas vezes chamada de \"Eth1\". Este termo foi eliminado e substituído por \"camada de execução\".",
+ "page-upgrades-question-5-answer-1": "Para se tornar um validador na rede, você precisará participar com 32 ETH. Se você não tem tanto, ou não está disposto a apostar essa quantia, você pode se unir a participações compartilhadas. Esses compartilhamentos permitirão que você participe com menos e ganhe frações do total de recompensas.",
"page-upgrades-question-5-desc": "Você precisará usar a plataforma Staking Launchpad ou entrar em um pool de participação.",
"page-upgrades-question-5-title": "Como faço staking?",
- "page-upgrades-question-6-answer-3": "Danny Ryan, da Fundação Ethereum, atualiza regularmente a comunidade:",
- "page-upgrades-question-6-answer-4": "Ben Edgington da ConsenSys tem uma newsletter semanal sobre as melhorias do Ethereum:",
+ "page-upgrades-question-6-answer-3": "Danny Ryan, da Ethereum Foundation, atualiza regularmente a comunidade:",
+ "page-upgrades-question-6-answer-4": "Ben Edgington, da ConsenSys, tem uma newsletter semanal sobre as melhorias no Ethereum:",
"page-upgrades-question-6-answer-5": "Você também pode participar da discussão sobre pesquisa e desenvolvimento no Ethereum em ethresear.ch.",
"page-upgrades-question-6-title": "O que eu preciso fazer com meu dapp?",
- "page-upgrades-question-6-desc": "A Fusão foi projetada para ter um impacto mínimo nos desenvolvedores de dapp, embora houvesse algumas pequenas mudanças que valem a pena apontar.",
+ "page-upgrades-question-6-desc": "A Fusão foi projetada para ter um impacto mínimo nos desenvolvedores de dapp, embora haja algumas pequenas mudanças que vale a pena apontar.",
"page-upgrades-question-6-answer-1": "Os desenvolvedores de dapp familiarizados com o Ethereum antes da fusão devem estar cientes de algumas mudanças. Essas mudanças incluem estrutura e tempo de bloco, algumas mudanças de opcode, fontes de aleatoriedade na cadeia e o conceito de finalização de época.",
"page-upgrades-question-6-answer-1-link": "Como A Fusão afeta a camada de aplicativos do Ethereum",
- "page-upgrades-question-6-answer-2": "As aplicações praticamente não foram afetadas.",
+ "page-upgrades-question-6-answer-2": "Os aplicativos praticamente não foram afetados.",
"page-upgrades-question-7-desc": "Muitas equipes diferentes de toda a comunidade estão trabalhando nas distantas melhorias do Ethereum.",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Implementação Rust)",
@@ -116,53 +116,53 @@
"page-upgrades-question-7-clients": "Saiba mais sobre clientes de Ethereum",
"page-upgrades-question-8-answer-1": "As melhorias do Ethereum ajudarão a dimensionar o Ethereum de forma descentralizada, mantendo a segurança e aumentando a sustentabilidade.",
"page-upgrades-question-8-answer-2": "Talvez o problema mais óbvio seja que o Ethereum precisa ser capaz de lidar com mais de 15-45 transações por segundo. Mas as melhorias também abordam alguns outros problemas atuais do Ethereum.",
- "page-upgrades-question-8-answer-3": "A rede está com uma demanda tão alta que está tornando o uso do Ethereum caro. Os nós da rede estão lutando com o tamanho da Ethereum e a quantidade de dados que seus computadores estão tendo que processar. O algoritmo original que sustentava a segurança e descentralização do Ethereum consome muita energia e precisa ser mais ecológico.",
+ "page-upgrades-question-8-answer-3": "A rede está com uma demanda tão alta que está tornando o uso do Ethereum caro. Os nós da rede estão lutando com o tamanho do Ethereum e a quantidade de dados que seus computadores estão tendo que processar. O algoritmo original que sustentava a segurança e descentralização do Ethereum consome muita energia e precisa ser mais ecológico.",
"page-upgrades-question-8-answer-4": "Muito do que está mudando sempre esteve nos planos do Ethereum desde 2015. Mas as condições atuais estão tornando essas melhorias cada vez mais necessárias.",
- "page-upgrades-question-8-answer-6": "Conheça a visão do Ethereum",
+ "page-upgrades-question-8-answer-6": "Conheça a visão sobre o Ethereum",
"page-upgrades-question-8-desc": "O Ethereum que utilizamos hoje precisa oferecer uma melhor experiência para usuários finais e participantes da rede.",
"page-upgrades-question-8-title": "Por que as melhorias são necessárias?",
- "page-upgrades-question-9-answer-1": "O papel mais ativo que você pode desempenhar é a participação com seus ETH.",
+ "page-upgrades-question-9-answer-1": "O papel mais ativo que você pode desempenhar é participar com seus ETH.",
"page-upgrades-question-9-answer-2": "Você também pode querer executar um segundo cliente para ajudar a melhorar a diversidade de clientes.",
"page-upgrades-question-9-answer-3": "Se você tem habilidades mais técnicas, pode ajudar a resolver bugs em novos clientes.",
"page-upgrades-question-9-answer-4": "Você também pode participar das discussões técnicas com pesquisadores do Ethereum em ethresear.ch.",
"page-upgrades-question-9-desc": "Você não precisa ser técnico para contribuir. A comunidade está procurando contribuições de todos os tipos de habilidades.",
"page-upgrades-question-9-stake-eth": "Participe com ETH",
"page-upgrades-question-9-title": "Como posso contribuir para melhorias no Ethereum?",
- "page-upgrades-question-9-more": "Encontre formas mais gerais de se envolver com Ethereum",
+ "page-upgrades-question-9-more": "Encontre formas mais gerais de se envolver com o Ethereum",
"page-upgrades-question-10-title": "Quais são as fases do Eth2?'",
"page-upgrades-question-10-desc": "Algumas coisas mudaram aqui.",
- "page-upgrades-question-10-answer-0": "O próprio termo \"Eth2\" está sendo eliminado, uma vez que não representa uma atualização única ou nova rede. É mais precisamente um conjunto de várias melhorias e todas fazem sua parte para tornar o Ethereum mais dimensionável, seguro e sustentável. A rede que você conhece e ama simplesmente será referida como Ethereum.",
+ "page-upgrades-question-10-answer-0": "O próprio termo \"Eth2\" está sendo eliminado, uma vez que não representa uma melhoria única ou nova rede. É mais precisamente um conjunto de várias melhorias e todas fazem sua parte para tornar o Ethereum mais dimensionável, seguro e sustentável. A rede que você conhece e ama simplesmente será referida como Ethereum.",
"page-upgrades-question-10-answer-1": "Somos relutantes em falar em termos de um roadmap técnico, porque é um software: as coisas podem mudar. Achamos que é mais fácil entender o que está acontecendo quando você lê sobre os resultados.",
"page-upgrades-question-10-answer-1-link": "Veja as melhorias",
"page-upgrades-question-10-answer-2": "Mas se você seguiu as discussões, esta é a maneira como as melhorias se encaixam nos roadmaps técnicos.",
"page-upgrades-question-10-answer-3": "A Fase 0 descreve o que é feito para manter a Beacon Chain funcionando.",
"page-upgrades-question-10-answer-5": "A fase 1 originalmente se concentrou na implementação das cadeias de fragmentos, mas a priorização mudou para A Fusão, lançada em 15 de setembro de 2022.",
- "page-upgrades-question-10-answer-6": "A fase 1.5 foi originalmente planejada para seguir as implementações de fragmentos quando a Rede principal fosse adicionada como o último fragmento à Beacon Chain. No entanto, à medida que a tecnologia de rollup progrediu, a comunidade do Ethereum acelerou a transição, afastando-se da prova de trabalho.",
- "page-upgrades-question-10-answer-7": "Os planos em torno da Fase 2 têm sido um ponto de intensa pesquisa e discussão. Com A Fusão por trás de nós e os avanços nas soluções de camada 2, os objetivos mudaram para fornecer uma forma mais simplificada de fragmentação de dados para maximizar a eficiência do rollup. A camada 2 atual permite a capacidade de dimensionar a execução da transação, e a fragmentação permitirá o armazenamento de provas para esses dados na camada 1 de maneira barata e escalável.",
+ "page-upgrades-question-10-answer-6": "A fase 1.5 foi originalmente planejada para seguir as implementações de fragmentos quando a Rede principal fosse adicionada como o último fragmento à Beacon Chain. No entanto, à medida que a tecnologia de rollup progrediu, a comunidade do Ethereum acelerou a transição, migrando da prova de trabalho.",
+ "page-upgrades-question-10-answer-7": "Os planos em torno da Fase 2 têm sido um ponto de intensa pesquisa e discussão. Com a implementação da Fusão e os avanços nas soluções de camada 2, os objetivos mudaram para fornecer uma forma mais simplificada de fragmentação de dados para maximizar a eficiência do rollup. A camada 2 atual permite a capacidade de dimensionar a execução da transação, e a fragmentação permitirá o armazenamento de provas para esses dados na camada 1 de maneira barata e escalável.",
"page-upgrades-question-10-answer-8": "Mais sobre o roadmap voltado a rollups",
"page-upgrades-question-11-title": "Posso comprar Eth2?",
- "page-upgrades-question-11-desc": "Não. Não há nenhum token Eth2 e seu ETH não mudou após A Fusão.",
- "page-upgrades-question-11-answer-1": "Um dos principais motivos por trás da alteração do termo Eth2 era o equívoco comum de que os detentores de ETH eram obrigados a migrar seu ETH para \"ETH 2.0\" após A Fusão ou qualquer outra atualização. Isso não é verdade e nunca foi.",
+ "page-upgrades-question-11-desc": "Não. Não há nenhum token Eth2, e seu ETH não mudou após a Fusão.",
+ "page-upgrades-question-11-answer-1": "Um dos principais motivos por trás da alteração do termo Eth2 era o equívoco comum de que os detentores de ETH eram obrigados a migrar seu ETH para \"ETH 2.0\" após a Fusão ou qualquer outra melhoria. Isso não é verdade e nunca foi.",
"page-upgrades-question-11-answer-2": " Essa confusão geralmente é explorada por golpistas.",
"page-upgrades-question-title": "Perguntas frequentes",
- "page-upgrades-question3-answer-1": "Os detentores de ETH certamente não necessitarão fazer nada. Seus ETH não precisarão de mudanças ou atualizações. Com certeza existirão fraudadores dizendo o contrário, então tenha cuidado.",
+ "page-upgrades-question3-answer-1": "Os detentores de ETH não necessitarão fazer nada. Seus ETH não precisarão de mudanças ou melhorias. Com certeza existirão golpistas dizendo o contrário, então tenha cuidado.",
"page-upgrades-scalable": "Mais dimensionável",
"page-upgrades-scalable-desc": "O Ethereum precisa lidar com milhares de transações por segundo, para tornar os aplicativos mais rápidos e mais baratos de usar.",
"page-upgrades-secure": "Mais seguro",
"page-upgrades-secure-desc": "O Ethereum precisa ser mais seguro. À medida que a adoção do Ethereum aumenta, o protocolo precisa ficar mais seguro contra todas as formas de ataque.",
- "page-upgrades-shard-date": "A fragmentação acompanhará A Fusão em várias fases, entre 2023 e 2024.",
- "page-upgrades-shard-desc": "O Danksharding ampliará a capacidade do Ethereum de armazenar dados e trabalhará em harmonia com as L2s para dimensionar a taxa de transferência e reduzir as taxas de rede. O Danksharding será implementado em diversas etapas, começando com o ProtoDanksharding.",
+ "page-upgrades-shard-date": "A fragmentação acompanhará a Fusão em várias fases, em algum momento entre 2023 e 2024.",
+ "page-upgrades-shard-desc": "O Danksharding ampliará a capacidade do Ethereum de armazenar dados e funcionará em harmonia com as L2s para dimensionar a taxa de transferência e reduzir as taxas de rede. Também será implementado em diversas etapas, começando com o ProtoDanksharding.",
"page-upgrades-shard-estimate": "Estimativa: 2023-2024",
"page-upgrades-shard-lower": "Mais sobre fragmentação",
"page-upgrades-shard-title": "Fragmentação",
"page-upgrades-stay-up-to-date": "Mantenha-se atualizado",
- "page-upgrades-stay-up-to-date-desc": "Fique por dentro das últimas notícias dos pesquisadores e desenvolvedores que trabalham nas atualizações do Ethereum.",
+ "page-upgrades-stay-up-to-date-desc": "Fique por dentro das últimas notícias dos pesquisadores e desenvolvedores que trabalham nas melhorias do Ethereum.",
"page-upgrades-sustainable-desc": "O consumo de energia do Ethereum era intenso até recentemente. A transição para a prova de participação trouxe uma redução de energia para a rede de mais de 99,9%.",
"page-upgrades-take-part": "Participe da pesquisa",
"page-upgrades-take-part-desc": "Os pesquisadores e entusiastas do Ethereum se encontram aqui para discutir os esforços de pesquisa, incluindo tudo sobre as melhorias do Ethereum.",
"page-upgrades-the-upgrades": "As melhorias do Ethereum",
- "page-upgrades-the-upgrades-desc": "As atualizações do Ethereum visam melhorar a escalabilidade, segurança e sustentabilidade da rede. O Ethereum passou recentemente por algumas grandes melhorias na segurança e sustentabilidade, e outras estão por vir, especialmente em relação à escalabilidade.",
- "page-upgrades-unofficial-roadmap": "Não se trata de um roteiro oficial. É assim que vemos o que está acontecendo com base nas informações disponíveis. Mas como isso é tecnologia, as coisas podem mudar rapidamente. Pedimos, então, que não veja isso como um processo imutável.",
+ "page-upgrades-the-upgrades-desc": "As melhorias do Ethereum visam aumentar o dimensionamento, a segurança e a sustentabilidade da rede. O Ethereum passou recentemente por algumas grandes melhorias na segurança e sustentabilidade, e outras estão por vir, especialmente em relação ao dimensionamento.",
+ "page-upgrades-unofficial-roadmap": "Não se trata de um roadmap oficial. É assim que vemos o que está acontecendo com base nas informações disponíveis. Mas como isso é tecnologia, as coisas podem mudar rapidamente. Pedimos, então, que não veja isso como um processo imutável.",
"page-upgrades-upgrade-desc": "O Ethereum que conhecemos e amamos, agora mais dimensionável, seguro e sustentável...",
"page-upgrades-upgrades": "As melhorias do Ethereum",
"page-upgrades-upgrades-aria-label": "Menu de melhorias do Ethereum",
@@ -172,33 +172,33 @@
"page-upgrades-energy-consumption": "Mais sobre o consumo energético do Ethereum",
"page-upgrades-upgrading": "Melhorias do Ethereum para níveis mais avançados",
"page-roadmap-vision": "A visão",
- "page-roadmap-vision-btn": "Mais sobre a visão Ethereum",
+ "page-roadmap-vision-btn": "Mais acerca da visão sobre o Ethereum",
"page-roadmap-vision-desc": "Para integrar o Ethereum e atender a toda a humanidade, precisamos torná-lo mais dimensionável, seguro e sustentável.",
- "page-upgrades-what-happened-to-eth2-title": "O que aconteceu com \"Eth2?\"",
+ "page-upgrades-what-happened-to-eth2-title": "O que aconteceu com o \"Eth2\"?",
"page-upgrades-what-happened-to-eth2-1": "O termo \"Eth2\" era comumente usado antes da Fusão, mas está sendo descontinuado e substituído por uma terminologia mais precisa.",
- "page-upgrades-what-happened-to-eth2-1-more": "Mais sobre a fusão.",
- "page-upgrades-what-happened-to-eth2-2": "Desde a fusão de \"Eth1\" e \"Eth2\", não há mais duas cadeias de blocos Ethereum distintas; existe apenas um Ethereum.",
+ "page-upgrades-what-happened-to-eth2-1-more": "Mais informações sobre a Fusão.",
+ "page-upgrades-what-happened-to-eth2-2": "Desde a fusão de \"Eth1\" e \"Eth2\", não há mais duas blockchains Ethereum distintas; existe apenas um Ethereum.",
"page-upgrades-what-happened-to-eth2-3": "Para diminuir a confusão, a comunidade atualizou estes termos:",
- "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" é agora a \"camada de execução\", que lida com transações e execução.",
+ "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" agora é a \"camada de execução\", que lida com transações e execução.",
"page-upgrades-what-happened-to-eth2-3-2": "O \"Eth2\" é agora a \"camada de consenso\", que lida com o consenso da prova de participação.",
- "page-upgrades-what-happened-to-eth2-4": "Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roadmap do Ethereum.",
- "page-upgrades-what-happened-to-eth2-5": "Saiba mais sobre a renomeação 'Eth2'",
+ "page-upgrades-what-happened-to-eth2-4": "Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roteiro do Ethereum.",
+ "page-upgrades-what-happened-to-eth2-5": "Saiba mais sobre a renomeação \"Eth2\"",
"page-upgrades-why-cant-we-just-use-eth2-title": "Por que não podemos simplesmente usar Eth2?",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "Modelos mentais",
- "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Um dos principais problemas com a marca Eth2 é que ela cria um modelo mental errado para novos usuários do Ethereum. Acreditam intuitivamente que Eth1 vem primeiro e Eth2 vem depois. Ou que a Eth1 deixa de existir uma vez que a Eth2 existe, nenhum deles é verdadeiro. Removendo a terminologia Eth2, evitamos que todos os futuros usuários naveguem por este modelo mental confuso.",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Um dos principais problemas com a marca Eth2 é que ela cria um modelo mental errado para novos usuários do Ethereum. Acreditam intuitivamente que Eth1 vem primeiro e Eth2 vem depois, ou que a Eth1 deixa de existir uma vez que a Eth2 existe. Mas nada disso é certo. Ao remover a terminologia Eth2, evitamos que todos os futuros usuários lidem com esse modelo mental confuso.",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "Inclusividade",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "À medida que o roteiro para o Ethereum evoluiu, o Ethereum 2.0 tornou-se uma representação imprecisa do roteiro do Ethereum. Sendo cuidadosos e precisos em nossa escolha de palavras permite que o conteúdo do Ethereum seja entendido pelo público mais amplo possível.",
"page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Prevenção contra golpes",
- "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Infelizmente, atores maliciosos tentaram usar o temo impróprio Eth2 para enganar usuários, dizendo a eles para trocar seus ETH por tokens \"ETH2\" ou que eles deveriam de alguma forma migrar seus ETH antes da atualização do Eth2. Esperamos que essa terminologia atualizada traga clareza para eliminar este vetor de fraude e ajudar a tornar o ecossistema mais seguro.",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Infelizmente, pessoas mal-intencionadas tentaram usar o termo incorreto Eth2 para enganar usuários, dizendo a eles para trocar seus ETH por tokens \"ETH2\" ou que eles deveriam de alguma forma migrar seus ETH antes da atualização do Eth2. Esperamos que essa terminologia atualizada traga clareza para eliminar este vetor de fraude e ajudar a tornar o ecossistema mais seguro.",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Transparência na participação",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Alguns operadores de participação também representaram ETH em participação na Beacon Chain com o rótulo de \"ETH2\". Isso gera uma potencial confusão, uma vez que os utilizadores desses serviços não recebem realmente um token \"ETH2\". Não existe um token \"ETH2\"; ele simplesmente representa a sua parte na participação de um provedor específico.",
"page-upgrades-what-to-do": "O que você precisa fazer?",
"page-upgrades-what-to-do-desc": "Se você é um usuário de dapps ou um detentor de ETH, não precisa fazer nada. Se você é um desenvolvedor ou quer começar a participar, existem formas de fazer isso hoje mesmo.",
"page-upgrades-whats-next": "Quais são as melhorias do Ethereum?",
- "page-upgrades-whats-next-desc": "O roadmap do Ethereum envolve melhorias de protocolo interconectadas que tornarão a rede mais dimensionável, mais segura e mais sustentável. Estas melhorias estão sendo desenvolvidas por várias equipes de todo o ecossistema do Ethereum.",
- "page-upgrades-whats-next-history": "Aprenda sobre melhorias anteriores do Ethereum",
+ "page-upgrades-whats-next-desc": "O roadmap do Ethereum envolve melhorias de protocolo interconectadas que tornarão a rede mais dimensionável, mais segura e mais sustentável. Essas melhorias estão sendo desenvolvidas por várias equipes de todo o ecossistema do Ethereum.",
+ "page-upgrades-whats-next-history": "Saiba mais sobre as melhorias anteriores do Ethereum",
"page-upgrades-whats-ethereum": "Um momento, o que é Ethereum?",
- "page-upgrades-whats-new": "Ethereum: próximos passos",
+ "page-upgrades-whats-new": "Ethereum: próximas etapas",
"page-upgrades-security-link": "Mais sobre segurança e prevenção de fraude",
"page-staking-deposit-contract-staking-more-link": "Mais sobre participação",
"docs-nav-proof-of-stake": "Prova de participação",
diff --git a/src/intl/pt-br/page-wallets-find-wallet.json b/src/intl/pt-br/page-wallets-find-wallet.json
index c6e7fb5ac2b..de451aecbfa 100644
--- a/src/intl/pt-br/page-wallets-find-wallet.json
+++ b/src/intl/pt-br/page-wallets-find-wallet.json
@@ -1,6 +1,6 @@
{
"page-find-wallet-clear": "Limpar filtros",
- "page-find-wallet-desc-2": "Então, escolha sua carteira com base nas características que você deseja.",
+ "page-find-wallet-desc-2": "Escolha sua carteira com base nas características que você deseja.",
"page-find-wallet-description": "As carteiras têm muitos recursos dos quais você pode gostar.",
"page-find-wallet-last-updated": "Última atualização",
"page-find-wallet-meta-description": "Encontre e compare carteiras Ethereum com base nos recursos que você deseja.",
@@ -30,8 +30,8 @@
"page-find-wallet-swaps-desc": "Trocar tokens ERC-20 diretamente na carteira",
"page-find-wallet-layer-2": "Camada 2",
"page-find-wallet-layer-2-desc": "Carteiras que suportam camadas 2 de Ethereum",
- "page-find-wallet-gas-fee-customization": "Personalização da taxa de gás",
- "page-find-wallet-gas-fee-customization-desc": "Personalize suas quantidades de gás (taxa base, taxa prioritária e taxa máxima)",
+ "page-find-wallet-gas-fee-customization": "Personalização da taxa Gas",
+ "page-find-wallet-gas-fee-customization-desc": "Personalize suas quantidades de Gas (taxa base, taxa prioritária e taxa máxima)",
"page-find-wallet-ens-support": "Suporte para ENS",
"page-find-wallet-ens-support-desc": "Carteiras que suportam o Ethereum Name Service (ENS)",
"page-find-wallet-token-importing": "Importação de token",
@@ -40,7 +40,7 @@
"page-find-wallet-fee-optimization-desc": "Suporte a transações tipo 2 para taxas de gás otimizadas e taxas de reembolso para gás não utilizado",
"page-find-wallet-buy-crypto": "Comprar cripto",
"page-find-wallet-buy-crypto-desc": "Compre cripto com fiat diretamente na carteira \n *Observação: comprar cripto pode ser específico da região",
- "page-find-wallet-sell-for-fiat": "Venda por fiat",
+ "page-find-wallet-sell-for-fiat": "Venda através de fiduciários",
"page-find-wallet-sell-for-fiat-desc": "Vender cripto para fiduciário diretamente na carteira\n *Observação: saque de cripto pode ser específico da região",
"page-find-wallet-multisig": "Multi-assinaturas",
"page-find-wallet-multisig-desc": "Carteiras que requerem múltiplas assinaturas para autorizar uma transação",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Carteiras com extensões de navegador",
"page-find-wallet-device": "Dispositivo",
"page-find-choose-to-compare": "Selecione para comparar",
- "page-find-wallet-choose-features": "Escolher recursos"
+ "page-find-wallet-choose-features": "Escolher recursos",
+ "page-find-wallet-reset-filters": "Redefinir filtros"
}
diff --git a/src/intl/pt-br/page-wallets.json b/src/intl/pt-br/page-wallets.json
index 438f33613e0..fe5ee2cb32b 100644
--- a/src/intl/pt-br/page-wallets.json
+++ b/src/intl/pt-br/page-wallets.json
@@ -3,7 +3,7 @@
"page-wallets-accounts-addresses-desc": "Vale a pena entender as diferenças entre alguns termos-chave.",
"page-wallets-accounts-ethereum-addresses": "Uma conta Ethereum tem um endereço, assim como um e-mail tem um endereço. Isso é utilizado para identificar os seus ativos digitais.",
"page-wallets-alt": "Ilustração de um robô com um corpo em forma de cofre, representando uma carteira Ethereum",
- "page-wallets-ethereum-account": "Uma conta Ethereum é um par de chaves. Uma chave é utilizada para criar o endereço e pode ser compartilhada livremente, enquanto a outra chave deverá ser mantida em segredo, pois é utilizada para assinar instrumentos. Juntas, essas chaves permitem manter ativos e realizar transações.",
+ "page-wallets-ethereum-account": "Uma conta Ethereum é um par de chaves. Uma chave é usada para criar o endereço que você pode compartilhar livremente, e a outra chave você precisa manter em segredo, pois é usada para assinar coisas. Juntas, essas chaves permitem que você detenha ativos e realize transações.",
"page-wallets-blog": "Blog da Coinbase",
"page-wallets-bookmarking": "Marque sua carteira nos Favoritos",
"page-wallets-bookmarking-desc": "Se você usar uma carteira web, coloque o site nos Favoritos para se proteger contra golpes de phishing.",
@@ -13,7 +13,7 @@
"page-wallets-desc-3": "A sua carteira é uma ferramenta para interagir com a sua conta Ethereum. Ou seja, você pode trocar de provedor de carteira a qualquer momento. Muitas carteiras também permitem gerenciar diversas contas Ethereum em um único aplicativo.",
"page-wallets-desc-4": "Os provedores de carteira não têm custódia sobre os seus fundos, apenas oferecem um espaço para visualização dos seus ativos no Ethereum e ferramentas para gerenciá-los facilmente.",
"page-wallets-description": "As carteiras Ethereum são aplicativos que permitem que você controle a sua conta. Assim como uma carteira física, ela contém tudo o que você precisa para comprovar a sua identidade e gerenciar os seus ativos. A sua carteira permite fazer login em aplicativos, ver saldos, enviar transações e verificar a sua identidade.",
- "page-wallets-desktop": "Aplicativos desktop, se você preferir gerenciar seus fundos via MacOS, Windows ou Linux",
+ "page-wallets-desktop": "Aplicativos desktop, se você prefere gerenciar seus fundos via MacOS, Windows ou Linux",
"page-wallets-ethereum-wallet": "Uma carteira é uma ferramenta que permite a interação com a sua conta por meio de chaves, bem como ver o saldo da conta, enviar transações e muito mais.",
"page-wallets-explore": "Conheça Ethereum",
"page-wallets-features-desc": "Nós podemos ajudá-lo a escolher sua carteira com base nos recursos que são mais importantes para você.",
@@ -38,8 +38,8 @@
"page-wallets-seed-phrase-desc": "As carteiras geralmente darão a você uma frase \"semente\" que você deve escrever em algum lugar seguro. Esta é a única maneira para você recuperar sua carteira.",
"page-wallets-seed-phrase-example": "Aqui está um exemplo:",
"page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp",
- "page-wallets-seed-phrase-write-down": "Não a armazene em um computador. Anote-a e mantenha-a segura.",
- "page-wallets-slogan": "Controle as chaves do seu futuro digital",
+ "page-wallets-seed-phrase-write-down": "Não a armazene no computador. Anote e mantenha-a em segurança.",
+ "page-wallets-slogan": "Mantendo as chaves para o seu futuro digital",
"page-wallets-stay-safe": "Como se manter seguro",
"page-wallets-stay-safe-desc": "Para ter liberdade financeira e a capacidade de acessar e utilizar fundos em qualquer lugar envolve responsabilidades – não há atendimento ao cliente no espaço cripto. Você é responsável por manter as suas chaves seguras e protegidas.",
"page-wallets-subtitle": "As carteiras ajudam você a acessar os seus ativos digitais e fazer login em aplicativos.",
@@ -61,7 +61,7 @@
"page-wallets-your-ethereum-account": "Sua conta Ethereum",
"page-wallets-your-ethereum-account-desc": "A sua carteira é a janela para a sua conta Ethereum – o seu saldo, histórico de transações e muito mais. Mas você pode trocar os provedores de carteira a qualquer momento.",
"page-wallets-your-login": "Seu login para aplicativos Ethereum",
- "page-wallets-your-login-desc": "A sua carteira permite a conexão a aplicativos por meio da sua conta Ethereum. Serve como credenciais de login que você pode utilizar em diversos aplicativos.",
+ "page-wallets-your-login-desc": "Sua carteira permite que você se conecte a aplicativos usando a sua conta Ethereum. É como um login que você pode usar em vários aplicativos.",
"additional-reading-how-to-create-an-ethereum-account": "Como criar uma conta Ethereum",
"additional-reading-how-to-use-a-wallet": "Como usar uma carteira"
}
diff --git a/src/intl/pt-br/page-what-is-ethereum.json b/src/intl/pt-br/page-what-is-ethereum.json
index b38ca941f87..9e610911cb2 100644
--- a/src/intl/pt-br/page-what-is-ethereum.json
+++ b/src/intl/pt-br/page-what-is-ethereum.json
@@ -57,15 +57,15 @@
"page-what-is-ethereum-slide-4-title": "Empoderando gamers",
"page-what-is-ethereum-slide-4-desc-1": "Jogos Play-to-Earn (onde os jogadores são de fato recompensados por jogar os jogos) surgiram recentemente e estão transformando a indústria de jogos. Tradicionalmente, muitas vezes é proibido negociar ou transferir ativos do jogo para outros jogadores com dinheiro real. Isso força os jogadores a usar sites do mercado negro que geralmente são um risco de segurança. Os jogos Blockchain abraçam a economia do jogo e promovem esse comportamento de maneira confiável.",
"page-what-is-ethereum-slide-4-desc-2": "Além disso, os jogadores são incentivados pela possibilidade de trocar os tokens do jogo por dinheiro real e, assim, serem verdadeiramente recompensados pelo tempo que jogaram.",
- "page-what-is-ethereum-meet-ether-title": "Conheça o ether, a criptomoeda da Ethereum",
- "page-what-is-ethereum-meet-ether-desc-1": "Muitas ações na rede Ethereum exigem que algum trabalho seja feito no computador embutido do Ethereum (conhecido como Ethereum Virtual Machine). Esta computação não é gratuita; é paga usando a criptomoeda nativa do Ethereum chamada ether (ETH). Isso significa que você precisa de pelo menos uma pequena quantidade de ether para usar a rede.",
- "page-what-is-ethereum-meet-ether-desc-2": "O Ether é puramente digital e você pode enviá-lo para qualquer pessoa em qualquer lugar do mundo instantaneamente. O fornecimento de ether não é controlado por nenhum governo ou empresa — ele é descentralizado e totalmente transparente. O Ether é emitido de maneira precisa, e de acordo com o protocolo, apenas aos participantes que protegem a rede.",
+ "page-what-is-ethereum-meet-ether-title": "Conheça o Ether, a criptomoeda da Ethereum",
+ "page-what-is-ethereum-meet-ether-desc-1": "Muitas ações na rede Ethereum exigem que algum trabalho seja feito no computador embutido do Ethereum (conhecido como Ethereum Virtual Machine). Esta computação não é gratuita; é paga usando a criptomoeda nativa do Ethereum chamada Ether (ETH). Isso significa que você precisa de pelo menos uma pequena quantidade de Ether para usar a rede.",
+ "page-what-is-ethereum-meet-ether-desc-2": "O Ether é puramente digital e você pode enviá-lo para qualquer pessoa em qualquer lugar do mundo instantaneamente. O fornecimento de ether não é controlado por nenhum governo ou empresa - ele é descentralizado e totalmente transparente. O Ether é emitido de maneira precisa de acordo com o protocolo, apenas aos participantes que protegem a rede.",
"page-what-is-ethereum-what-is-ether": "O que é ether?",
"page-what-is-ethereum-get-eth": "Compre ETH",
"page-what-is-ethereum-explore-applications": "Conheça as aplicações",
"page-what-is-ethereum-learn-defi": "Saiba mais sobre DeFi",
"page-what-is-ethereum-who-runs-ethereum-title": "Quem executa o Ethereum?",
- "page-what-is-ethereum-who-runs-ethereum-desc-1": "O Ethereum não é controlado por nenhuma entidade em particular. Ele existe sempre que há computadores conectados executando software seguindo o protocolo Ethereum e adicionando à blockchain Ethereum. Cada um desses computadores é conhecido como um nó. Os nós podem ser executados por qualquer pessoa, embora, para participar da proteção da rede, você precisa colocar ETH (token nativo do Ethereum). Qualquer pessoa com 32 ETH pode fazer isso sem precisar de permissão.",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "O Ethereum não é controlado por nenhuma entidade em particular. Ele existe sempre que há computadores conectados executando software seguindo o protocolo Ethereum e adicionando ao blockchain Ethereum. Cada um desses computadores é conhecido como um nó. Os nós podem ser executados por qualquer pessoa, embora, para participar da proteção da rede, você precisa colocar ETH (token nativo do Ethereum). Qualquer pessoa com 32 ETH pode fazer isso sem precisar de permissão.",
"page-what-is-ethereum-who-runs-ethereum-desc-2": "Até mesmo o código-fonte do Ethereum não é produzido por uma única entidade. Qualquer um pode sugerir mudanças no protocolo e discutir atualizações. Existem várias implementações do protocolo Ethereum que são produzidas por organizações independentes em várias linguagens de programação, e elas geralmente são construídas de forma aberta e encorajam as contribuições da comunidade.",
"page-what-is-ethereum-run-a-node": "Execute um nó",
"page-what-is-ethereum-smart-contract-title": "O que são contratos inteligentes?",
diff --git a/src/intl/pt/common.json b/src/intl/pt/common.json
index d31426c166c..57b6bcb6e36 100644
--- a/src/intl/pt/common.json
+++ b/src/intl/pt/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Abstração da conta",
"about-ethereum-org": "Acerca do ethereum.org",
"about-us": "Quem somos",
+ "adding-desci-projects": "Adicionar projetos Desci",
+ "adding-developer-tools": "Adicionar ferramentas de programador",
+ "adding-exchanges": "Adicionar câmbios",
+ "adding-glossary-terms": "Adicionar termos do glossário",
+ "adding-staking-products": "Adicionar produtos de implantação",
+ "adding-wallets": "Adicionar carteiras",
+ "account-abstraction": "Abstração da conta",
+ "acknowledgements": "Reconhecimentos",
"aria-toggle-search-button": "Alternar botão de pesquisa",
"aria-toggle-menu-button": "Botão menu alternativo",
"beacon-chain": "Cadeia sinalizadora",
"bridges": "Pontes de Blockchain",
+ "bug-bounty": "Recompensa por bugs",
+ "build": "Construir",
+ "build-menu": "Menu de construção",
"clear": "Limpar",
"close": "Fechar",
"community": "Comunidade",
"community-hub": "Centro de Comunidade",
"community-menu": "Menu de comunidade",
"contact": "Contacto",
+ "content-buckets": "Buckets de conteúdo",
+ "content-resources": "Recursos de conteúdo",
"content-standardization": "Normalização de conteúdos",
"contributing": "Contribuir",
"contributors": "Contribuidores",
@@ -20,14 +32,16 @@
"copied": "Copiado",
"copy": "Copiar",
"danksharding": "Danksharding",
- "dao-page": "Organizações Autónomas Descentralizadas (DAO)",
+ "dao-page": "DAO - Organizações Autónomas Descentralizadas",
"dark-mode": "Escuro",
"data-provided-by": "Origem dos dados:",
- "decentralized-applications-dapps": "Aplicações descentralizadas (dapps)",
+ "decentralized-applications-dapps": "Dapps - Aplicações descentralizadas",
"decentralized-identity": "Identidade descentralizada",
"decentralized-social-networks": "Redes sociais descentralizadas",
- "decentralized-science": "Ciência Descentralizada (DeSci)",
- "defi-page": "Finanças descentralizadas (DeFi)",
+ "decentralized-science": "DeSci - Ciência Descentralizada",
+ "description": "Descrição do item de navegação",
+ "defi-page": "DeFi - Finanças descentralizadas",
+ "design-principles": "Princípios do design",
"devcon": "Devcon",
"developers": "Programadores",
"developers-home": "Menu para Programadores",
@@ -63,7 +77,7 @@
"ethereum-bug-bounty": "Programa de recompensas de bug de Ethereum",
"consensus-when-shipping": "Quando é que é enviado?",
"ethereum-upgrades": "Atualizações do Ethereum",
- "ethereum-brand-assets": "Ativos da Marca Ethereum",
+ "ethereum-brand-assets": "Recursos de marca Ethereum",
"ethereum-online": "Comunidades online",
"ethereum-events": "Eventos Ethereum",
"ethereum-foundation": "Fundação Ethereum",
@@ -86,19 +100,19 @@
"feedback-widget-thank-you-subtitle-ext": "Se precisar de ajuda, pode entrar em contacto com a comunidade no nosso Discord.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Abrir um inquérito rápido",
- "find-wallet": "Procurar carteira",
+ "find-wallet": "Encontrar carteira",
"future-proofing": "À prova de futuro",
- "get-eth": "Obtenha o ETH",
+ "get-eth": "Obter ETH",
"get-involved": "Envolva-se",
- "get-started": "Começar",
+ "get-started": "Introdução",
"grants": "Permissões",
"grant-programs": "Programas de concessão do ecossistema",
"guides": "Guias",
- "guides-hub": "Central de guias",
+ "guides-hub": "Tutoriais",
"history-of-ethereum": "A história do Ethereum",
"home": "Início",
"how-ethereum-works": "Como funciona o Ethereum",
- "how-to-register-an-ethereum-account": "Como \"registar\" uma conta Ethereum",
+ "how-to-create-an-ethereum-account": "Como \"registar\" uma conta Ethereum",
"how-to-revoke-token-access": "Como revogar o acesso de contratos inteligentes aos seus fundos digitais",
"how-to-swap-tokens": "Como trocar tokens",
"how-to-use-a-bridge": "Como conectar tokens à camada 2",
@@ -115,7 +129,7 @@
"last-edit": "Última edição",
"layer-2": "Camada 2",
"learn": "Aprender",
- "learn-by-coding": "Aprenda usando programação",
+ "learn-by-coding": "Aprenda programando",
"learn-hub": "Centro de Aprendizagem",
"learn-menu": "Menu aprender",
"learn-more": "Saber mais",
@@ -128,11 +142,109 @@
"loading-error-try-again-later": "Não foi possível carregar os dados. Tente novamente mais tarde.",
"logo": "logótipo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Fusão",
"more": "Mais",
- "nav-developers": "Programadores",
+ "nav-about-description": "Um projeto público e open-source para a comunidade Ethereum",
+ "nav-advanced-description": "Aprenda os tópicos mais complexos",
+ "nav-advanced-label": "Avançado",
+ "nav-basics-description": "Compreenda os princípios básicos do Ethereum",
+ "nav-basics-label": "Informações básicas",
+ "nav-bridges-description": "A Web3 evoluiu para um ecossistema de blockchains L1 primárias e soluções de dimensionamento L2",
+ "nav-builders-home-description": "Um manual para construtores Ethereum—de construtores para construtores",
+ "nav-builders-home-label": "Página inicial do construtor",
+ "nav-contribute-description": "Se quiser ajudar, isto irá guiá-lo",
+ "nav-contribute-label": "Contribuir para ethereum.org",
+ "nav-dao-description": "Comunidades pertencentes aos membros, sem autoridade centralizada",
+ "nav-dapps-description": "Explore um rico ecossistema de aplicações que utilizam Ethereum",
+ "nav-defi-description": "Uma alternativa global e aberta ao mercado financeiro tradicional",
+ "nav-desci-description": "Uma alternativa global e aberta ao atual sistema científico",
+ "nav-desoc-description": "Plataformas baseadas em blockchain para interação social e criação de conteúdos",
"nav-developers-docs": "Documentos de programadores",
+ "nav-developers": "Programadores",
+ "nav-did-description": "Emita e possua os seus identificadores descentralizados únicos",
+ "nav-docs-description": "Documentos para o ajudar a compreender e a construir com o Ethereum",
+ "nav-docs-design-description": "Descrição de desafios únicos de design web3, melhores práticas e conhecimentos de pesquisas de utilizadores",
+ "nav-docs-design-label": "Princípios básicos de design UX/UI",
+ "nav-docs-foundation-description": "Fundamentos básicos para desenvolver em Ethereum",
+ "nav-docs-foundation-label": "Tópicos fundamentais",
+ "nav-docs-overview-description": "O seu lar para documentos de programador",
+ "nav-docs-stack-description": "Compreenda todos os detalhes da pilha de Ethereum",
+ "nav-docs-stack-label": "Pilha de Ethereum",
+ "nav-eip-description": "Padrões que especificam novos recursos ou processos",
+ "nav-eip-label": "EIPs - Propostas de Melhoramentos do Ethereum",
+ "nav-emerging-description": "Conheça outros casos de utilização mais recentes para o Ethereum",
+ "nav-enterprise-description": "Aplicações comerciais para o Ethereum",
+ "nav-ethereum-org-description": "Este website é orientado para a comunidade - junte-se a nós e contribua também",
+ "nav-ethereum-wallets-description": "Uma aplicação para interagir com a sua conta Ethereum",
+ "nav-events-description": "Descentralização e liberdade de participação para todos",
+ "nav-events-irl-description": "Todos os meses há grandes eventos Ethereum presenciais e online",
+ "nav-events-label": "Comunidades e eventos",
+ "nav-events-online-description": "Centenas de milhares de entusiastas do Ethereum participam nestas comunidades online",
+ "nav-find-wallet-description": "As carteiras permitem-lhe utilizar criptomoedas",
+ "nav-find-wallet-label": "Escolha a sua carteira",
+ "nav-gas-fees-description": "Como são calculadas as taxas de transação de ETH",
+ "nav-gas-fees-label": "Taxas de gas",
+ "nav-get-eth-description": "Precisa de ether (ETH) para utilizar as aplicações Ethereum",
+ "nav-get-started-description": "Os seus primeiros passos para utilizar o Ethereum",
+ "nav-governance-description": "O processo envolvido na atualização do protocolo Ethereum",
+ "nav-governance-label": "Governação",
+ "nav-grants-description": "Uma lista selecionada pela nossa comunidade sobre projetos que fornecem programas de financiamento de subsídios",
+ "nav-guide-create-account-description": "Qualquer pessoa pode criar uma conta Ethereum em qualquer altura, gratuitamente com uma aplicação de carteira",
+ "nav-guide-revoke-access-description": "Mantenha-se em segurança ao interagir com contratos inteligentes e aplicações no ecossistema Ethereum",
+ "nav-guide-revoke-access-label": "Como revogar o acesso a um contrato inteligente",
+ "nav-guide-use-wallet-description": "Aprenda a operar todas as funções básicas de uma carteira",
+ "nav-guide-use-wallet-label": "Como usar uma carteira",
+ "nav-guides-description": "Guias práticos passo-a-passo para o ajudar a começar",
+ "nav-guides-label": "Tutoriais",
+ "nav-history-description": "Uma cronologia de todos os principais forks e atualizações",
+ "nav-history-label": "História técnica do Ethereum",
+ "nav-layer-2-description": "Transações mais baratas e mais rápidas para o Ethereum",
+ "nav-learn-by-coding-description": "Ferramentas que o ajudam a experimentar com Ethereum",
+ "nav-local-env-description": "Escolher e configurar a sua pilha de desenvolvimento Ethereum",
+ "nav-mainnet-description": "As aplicações de blockchain empresariais podem ser construídas na rede pública Ethereum principal",
+ "nav-nft-description": "Uma forma de representar algo único como um ativo baseado na Ethereum",
+ "nav-open-research-description": "Um dos principais pontos fortes do Ethereum é a sua comunidade de investigação ativa",
+ "nav-open-research-label": "Pesquisa aberta",
+ "nav-overview-description": "Tudo sobre a formação Ethereum",
+ "nav-participate-overview-description": "Visão geral sobre como participar",
"nav-primary": "Principal",
- "nft-page": "Tokens não fungíveis (NFTs)",
+ "nav-quizzes-description": "Descubra até que ponto compreende o Ethereum e as criptomoedas",
+ "nav-quizzes-label": "Teste os seus conhecimentos",
+ "nav-refi-description": "Um sistema económico alternativo baseado em princípios regenerativos",
+ "nav-research-description": "Processos utilizados para melhorar o Ethereum",
+ "nav-research-label": "Investigação e desenvolvimento",
+ "nav-roadmap-description": "O caminho para uma maior escalabilidade, segurança e sustentabilidade do Ethereum",
+ "nav-roadmap-future-description": "Solidificar o Ethereum como uma rede robusta e descentralizada",
+ "nav-roadmap-future-label": "À prova de futuro",
+ "nav-roadmap-label": "Roteiro",
+ "nav-roadmap-scaling-description": "Atualizações de rede para reduzir ainda mais os custos e a velocidade das transações",
+ "nav-roadmap-security-description": "Garantir a resiliência do Ethereum a todos os tipos de ataques no futuro",
+ "nav-roadmap-security-label": "Segurança melhorada",
+ "nav-roadmap-ux-description": "A utilização do Ethereum tem de ser simplificada",
+ "nav-run-a-node-description": "Torne-se totalmente independente enquanto ajuda a proteger a rede",
+ "nav-security-description": "Aprenda as melhores práticas ao utilizar criptomoedas",
+ "nav-smart-contracts-description": "Os blocos de construção fundamentais do ecossistema Ethereum",
+ "nav-stablecoins-description": "Stablecoins são tokens Ethereum concebidos para se manterem num valor fixo",
+ "nav-stake-description": "Ganhar recompensas por proteger o Ethereum",
+ "nav-stake-label": "Investir",
+ "nav-staking-home-description": "Uma visão geral das diferentes opções de implantação",
+ "nav-staking-pool-description": "Participe e ganhe recompensas com qualquer quantidade de ETH unindo-se a outros",
+ "nav-staking-pool-label": "Participação agrupada",
+ "nav-staking-saas-description": "Os operadores de nós de terceiros tratam do funcionamento do seu cliente validador",
+ "nav-staking-saas-label": "Staking com um serviço",
+ "nav-staking-solo-description": "Opere hardware doméstico e contribua pessoalmente para a segurança e descentralização da rede Ethereum",
+ "nav-staking-solo-label": "Participação individual",
+ "nav-start-building-description": "Informações úteis para os principiantes",
+ "nav-translation-program-description": "Um esforço de colaboração para traduzir o ethereum.org para todas as línguas",
+ "nav-tutorials-description": "Lista selecionada de tutoriais da comunidade",
+ "nav-use-cases-description": "Descubra ideias distintas para a utilização do Ethereum",
+ "nav-what-is-ether-description": "A moeda das aplicações na blockchain Ethereum",
+ "nav-what-is-ethereum-description": "Compreenda o que torna o Ethereum especial",
+ "nav-what-is-web3-label": "O que é Web3?",
+ "nav-what-is-web3-description": "Uma alternativa aos monopólios centralizados que ditam as regras",
+ "nav-whitepaper-description": "O documento técnico original do Ethereum escrito por Vitalik Buterin em 2014",
+ "nav-zkp-description": "Uma forma de provar a validade de uma afirmação sem revelar a própria afirmação",
+ "nft-page": "NFTs - Tokens não fungíveis",
"nfts": "NFT",
"no": "Não",
"on-this-page": "Nesta página",
@@ -140,6 +252,8 @@
"page-developers-aria-label": "Menu para Programadores",
"page-index-meta-title": "Início",
"page-last-updated": "Última atualização da página",
+ "participate": "Participar",
+ "participate-menu": "Menu de participação",
"pbs": "Separação proponente-construtor",
"pools": "Participação agrupada",
"privacy-policy": "Política de privacidade",
@@ -150,10 +264,12 @@
"refresh": "Atualize a página.",
"return-home": "voltar à página principal",
"roadmap": "Roteiro Ethereum",
+ "research": "Pesquisa",
+ "research-menu": "Menu de pesquisa",
"resources": "Recursos de tradução",
- "regenerative-finance": "Finanças regenerativas (ReFi)",
+ "regenerative-finance": "ReFi - Finanças regenerativas",
"run-a-node": "Executar um nó",
- "rollup-component-website": "Website",
+ "rollup-component-website": "Sítio web",
"rollup-component-developer-docs": "Documentos de programadores",
"rollup-component-technology-and-risk-summary": "Tecnologia e resumo de riscos",
"scaling": "Dimensionamento",
@@ -164,6 +280,7 @@
"search-box-blank-state-text": "Procure!",
"search-eth-address": "Isto parece um endereço Ethereum. Nós não fornecemos dados específicos para endereços. Tente procurá-lo num explorador de blocos como",
"search-no-results": "Nenhum resultado para a sua pesquisa",
+ "security": "Segurança",
"single-slot-finality": "Finalidade de slot único",
"statelessness": "Apatridia",
"see-contributors": "Ver colaboradores",
@@ -179,8 +296,8 @@
"stake-eth": "Bloquear ETH",
"staking": "Implantação",
"start-here": "Comece aqui",
- "style-guide": "Style guide",
"solo": "Participação individual",
+ "support": "Apoio",
"terms-of-use": "Termos de Utilização",
"translation-banner-body-new": "Está a ver esta página em inglês porque ainda não a traduzimos. Ajude-nos a traduzir este conteúdo.",
"translation-banner-body-update": "Existe uma nova versão desta página, mas por enquanto só existe em inglês. Ajude-nos a traduzir a versão mais recente.",
@@ -191,19 +308,20 @@
"translation-banner-no-bugs-title": "Nenhum bug aqui!",
"translation-banner-no-bugs-content": "Esta página não está a ser traduzida. Deixamos intencionalmente esta página em Inglês por enquanto.",
"translation-banner-no-bugs-dont-show-again": "Não mostrar novamente",
+ "translation-program": "Programa de tradução",
"try-using-search": "Tente utilizar a pesquisa para encontrar o que está à procura ou",
"tutorials": "Tutoriais",
"up": "Para cima",
+ "use": "Utilizar",
"use-ethereum": "Usar o Ethereum",
"use-ethereum-menu": "Usar o menu do Ethereum",
- "user-experience": "User experience",
+ "use-menu": "Menu de uso",
"verkle-trees": "Árvores Verkle",
"wallets": "Carteiras",
"we-couldnt-find-that-page": "Não conseguimos encontrar esta página",
"web3": "O que é Web3?",
- "web3-title": "Web3",
"website-last-updated": "Última atualização do site",
- "what-is-ether": "O que é o ether (ETH)?",
+ "what-is-ether": "O que é o Ether (ETH)?",
"what-is-ethereum": "O que é o Ethereum?",
"withdrawals": "Levantamentos de staking",
"yes": "Sim",
diff --git a/src/intl/pt/page-dapps.json b/src/intl/pt/page-dapps.json
index 8cb404c0b9b..9c489f9d6fb 100644
--- a/src/intl/pt/page-dapps.json
+++ b/src/intl/pt/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Transfira dinheiro em tempo real.",
"page-dapps-dapp-description-superrare": "Compre obras de arte digitais diretamente de artistas ou em mercados secundários.",
"page-dapps-dapp-description-token-sets": "Estratégias de investimento de criptomoedas que reequilibram automaticamente.",
- "page-dapps-dapp-description-tornado-cash": "Envie transações anónimas na Ethereum.",
"page-dapps-dapp-description-uniswap": "Troque tokens simplesmente ou forneça tokens por % de recompensas.",
"page-dapps-dapp-description-dexguru": "Terminal de negociação sem custódia para comerciantes DeFi",
"page-dapps-dapp-description-synthetix": "O Synthetix é um protocolo para emitir e negociar bens sintéticos",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Trata-se de aplicações que se centram na descentralização das ferramentas de desenvolvimento, na incorporação de sistemas criptoeconómicos na tecnologia existente e na criação de mercados para o trabalho de desenvolvimento de código aberto.",
"page-dapps-technology-title": "Tecnologia descentralizada",
"page-dapps-token-sets-logo-alt": "Logotipo Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logotipo Tornado cash",
"page-dapps-uniswap-logo-alt": "Logótipo Uniswap",
"page-dapps-wallet-callout-button": "Encontrar carteira",
"page-dapps-wallet-callout-description": "As carteiras também são dapps. Encontre uma baseada nos recursos que mais lhe convém.",
diff --git a/src/intl/pt/page-languages.json b/src/intl/pt/page-languages.json
index f258a793dfb..cdf796d7fcc 100644
--- a/src/intl/pt/page-languages.json
+++ b/src/intl/pt/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Quer ver o site ethereum.org numa língua diferente?",
"page-languages-want-more-link": "Programa de tradução",
"page-languages-want-more-paragraph": "Os tradutores da ethereum.org estão sempre a traduzir páginas em tantas línguas quanto possível. Para ver no que estão a trabalhar agora ou para se inscrever para se juntar a eles, leia sobre os nossos",
- "page-languages-filter-placeholder": "Filtrar",
+ "page-languages-filter-label": "Lista de filtros",
+ "page-languages-filter-placeholder": "Escreva para filtrar",
+ "page-languages-browser-default": "Navegador padrão",
+ "page-languages-translated": "traduzido",
+ "page-languages-words": "palavras",
+ "page-languages-recruit-community": "Ajude-nos a traduzir o ethereum.org.",
"language-ar": "Árabe",
"language-az": "Azerbaijanês",
"language-bg": "Búlgaro",
@@ -58,8 +63,8 @@
"language-sl": "Esloveno",
"language-sr": "Sérvio",
"language-sw": "Suaíli",
- "language-th": "Tailandês",
"language-ta": "Tamil",
+ "language-th": "Tailandês",
"language-tr": "Turco",
"language-uk": "Ucraniano",
"language-ur": "Urdu",
diff --git a/src/intl/pt/page-stablecoins.json b/src/intl/pt/page-stablecoins.json
index ed3626b159e..662668d0724 100644
--- a/src/intl/pt/page-stablecoins.json
+++ b/src/intl/pt/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Fonte",
"page-stablecoins-bitcoin-pizza": "A infame pizza Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Em 2010, alguém comprou 2 pizzas por 10 000 bitcoin. Na altura, estas valiam ~41 US$. No mercado atual, isso equivale a milhões de dólares. Existem muitas transações lamentáveis semelhantes na história da Ethereum. As stablecoins resolvem este problema, pelo que pode desfrutar da sua pizza e manter a sua ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Painel & Educação",
"page-stablecoins-coin-price-change": "Variação do preço da criptomoeda (últimos 30 dias)",
"page-stablecoins-crypto-backed": "Com suporte para criptomoedas",
"page-stablecoins-crypto-backed-con-1": "Menos estáveis do que as stablecoins apoiadas em moeda fiduciária.",
diff --git a/src/intl/ro/common.json b/src/intl/ro/common.json
index 47bf5795da8..b8fe5a14951 100644
--- a/src/intl/ro/common.json
+++ b/src/intl/ro/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Abstractizarea contului",
"about-ethereum-org": "Despre ethereum.org",
"about-us": "Despre noi",
+ "adding-desci-projects": "Adăugarea proiectelor Desci",
+ "adding-developer-tools": "Adăugarea instrumentelor de dezvoltator",
+ "adding-exchanges": "Adăugarea schimburilor",
+ "adding-glossary-terms": "Adăugarea termenilor de glosar",
+ "adding-staking-products": "Adăugarea produselor de mizare",
+ "adding-wallets": "Adăugarea portofelelor",
+ "account-abstraction": "Abstractizarea contului",
+ "acknowledgements": "Mulțumiri",
"aria-toggle-search-button": "Activează butonul de căutare",
"aria-toggle-menu-button": "Activați butonul pentru meniu",
"beacon-chain": "Lanțul Beacon",
"bridges": "Punți Blockchain",
+ "bug-bounty": "Recompensă pentru depistarea disfuncționalităților",
+ "build": "Versiune",
+ "build-menu": "Meniu Versiune",
"clear": "Eliminare",
"close": "Închidere",
"community": "Comunitatea",
"community-hub": "Centrul comunitar",
"community-menu": "Meniul pentru comunitate",
"contact": "Contact",
+ "content-buckets": "Categorii de conținut",
+ "content-resources": "Resurse conținut",
"content-standardization": "Standardizarea conținutului",
"contributing": "Contribuire",
"contributors": "Cine și-a adus contribuția",
@@ -20,14 +32,17 @@
"copied": "Copiat",
"copy": "Copiați",
"danksharding": "Danksharding",
- "dao-page": "Organizațiile autonome descentralizate (DAO)",
+ "dao-page": "DAO - Organizațiile autonome descentralizate",
"dark-mode": "Fundal întunecat",
"data-provided-by": "Sursa datelor:",
- "decentralized-applications-dapps": "Aplicații descentralizate (dapp)",
+ "decentralized-applications-dapps": "Dapp - Aplicații descentralizate",
"decentralized-identity": "Identitate descentralizată",
"decentralized-social-networks": "Rețele sociale descentralizate",
- "decentralized-science": "Știința descentralizată (DeSci)",
- "defi-page": "Finanțele descentralizate (DeFi)",
+ "decentralized-science": "DeSci - Știința descentralizată",
+ "description": "Descriere articol nav",
+ "defi-page": "DeFi - Finanțele descentralizate",
+ "design": "Design",
+ "design-principles": "Principii de concepție",
"devcon": "Devcon",
"developers": "Dezvoltatori",
"developers-home": "Pagina de pornire pentru dezvoltatori",
@@ -51,7 +66,7 @@
"documentation": "Documentație",
"down": "Jos",
"ecosystem": "Ecosistemul",
- "edit-page": "Modificați pagina",
+ "edit-page": "Editare pagină",
"ef-blog": "Blogul Fundației Ethereum",
"eips": "Propuneri de îmbunătățire pentru Ethereum",
"energy-consumption": "Energia consumată de Ethereum",
@@ -63,7 +78,7 @@
"ethereum-bug-bounty": "Programul Ethereum de recompense pentru interceptarea disfuncționalităților",
"consensus-when-shipping": "Când va fi lansat?",
"ethereum-upgrades": "Actualizările Ethereum",
- "ethereum-brand-assets": "Materialele de branding Ethereum",
+ "ethereum-brand-assets": "Materiale de branding Ethereum",
"ethereum-online": "Comunitățile online",
"ethereum-events": "Evenimentele Ethereum",
"ethereum-foundation": "Fundația Ethereum",
@@ -83,7 +98,7 @@
"feedback-card-prompt-tutorial": "A fost util acest tutorial?",
"feedback-widget-thank-you-title": "Îți mulțumim pentru feedback!",
"feedback-widget-thank-you-subtitle": "Îmbunătățește și mai mult această pagină răspunzând la câteva întrebări.",
- "feedback-widget-thank-you-subtitle-ext": "Daca ai nevoie de ajutor, poți contacta comunitatea pe canalul nostru de Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Dacă ai nevoie de ajutor, poți contacta comunitatea de pe Discord.",
"feedback-widget-thank-you-timing": "2-3 minute",
"feedback-widget-thank-you-cta": "Deschide sondajul scurt",
"find-wallet": "Găsiți portofelul",
@@ -94,11 +109,10 @@
"grants": "Granturi",
"grant-programs": "Programele de granturi ale ecosistemului",
"guides": "Ghiduri",
- "guides-hub": "Centru de ghiduri",
+ "guides-hub": "Tutoriale",
"history-of-ethereum": "Istoricul Ethereum",
"home": "Pagina de pornire",
"how-ethereum-works": "Cum funcționează Ethereum",
- "how-to-register-an-ethereum-account": "Cum se „înregistrează” un cont Ethereum",
"how-to-revoke-token-access": "Cum se poate revoca accesul contractului inteligent la fondurile cripto",
"how-to-swap-tokens": "Cum se schimbă tokenuri",
"how-to-use-a-bridge": "Cum se face legătura între tokenuri și nivelul 2",
@@ -115,7 +129,7 @@
"last-edit": "Ultima modificare",
"layer-2": "Nivel 2",
"learn": "Învață",
- "learn-by-coding": "Învățați codificând",
+ "learn-by-coding": "Învațați scriind cod",
"learn-hub": "Centru de învățare",
"learn-menu": "Meniu de învățare",
"learn-more": "Află mai multe",
@@ -128,18 +142,117 @@
"loading-error-try-again-later": "Nu se pot încărca datele. Încearcă din nou mai târziu.",
"logo": "logo",
"mainnet-ethereum": "Rețeaua principală Ethereum",
- "more": "Aflați mai multe",
- "nav-developers": "Dezvoltatori",
+ "merge": "Fuziunea",
+ "more": "Mai mult",
+ "nav-about-description": "Un proiect public, open source pentru comunitatea Ethereum",
+ "nav-advanced-description": "Află mai multe despre subiecte mai complexe",
+ "nav-advanced-label": "Avansat",
+ "nav-basics-description": "Aprofundează noțiunile de bază ale Ethereum",
+ "nav-basics-label": "Noțiuni de bază",
+ "nav-bridges-description": "Web3 a evoluat într-un ecosistem de blockchainuri L1 principale și soluții de scalare L2",
+ "nav-builders-home-description": "Un manual pentru dezvoltatorii Ethereum, de la dezvoltatori, pentru dezvoltatori",
+ "nav-builders-home-label": "Pagina de pornire a dezvoltatorului",
+ "nav-contribute-description": "Aici vei găsi îndrumare dacă dorești să contribui",
+ "nav-contribute-label": "Contribuții la ethereum.org",
+ "nav-dao-description": "Comunități ale membrilor, fără autoritate centralizată",
+ "nav-dapps-description": "Explorează un ecosistem bogat de aplicații care folosesc Ethereum",
+ "nav-defi-description": "O alternativă globală, deschisă la piața financiară clasică",
+ "nav-desci-description": "O alternativă globală, deschisă la sistemul științific actual",
+ "nav-desoc-description": "Platforme bazate pe blockchain pentru interacțiune socială și creare de conținut",
"nav-developers-docs": "Documente dezvoltator",
+ "nav-developers": "Dezvoltatori",
+ "nav-did-description": "Creezi și deții proprii identificatori unici, descentralizați",
+ "nav-docs-description": "Documente care te ajută să înțelegeți și să construiești cu Ethereum",
+ "nav-docs-design-description": "Descrierea provocărilor de design unice web3, practicile de urmat și punctele de vedere în materie de cercetare ale utilizatorilor",
+ "nav-docs-design-label": "Elemente de bază de design UX/UI",
+ "nav-docs-foundation-description": "Elemente fundamentale pentru dezvoltare în Ethereum",
+ "nav-docs-foundation-label": "Subiecte fundamentale",
+ "nav-docs-overview-description": "Punctul tău de plecare pentru documentele dezvoltatorilor",
+ "nav-docs-stack-description": "Aprofundează toate detaliile stivei Ethereum",
+ "nav-docs-stack-label": "Stiva Ethereum",
+ "nav-eip-description": "Standarde care specifică funcții și procese noi",
+ "nav-eip-label": "EIP-uri - Propuneri de îmbunătățire pentru Ethereum",
+ "nav-emerging-description": "Află cazuri de utilizare noi pentru Ethereum",
+ "nav-enterprise-description": "Aplicații în afaceri pentru Ethereum",
+ "nav-ethereum-org-description": "Acest site este creat și gestionat de comunitate. Vino alături de noi și contribuie și tu",
+ "nav-ethereum-wallets-description": "O aplicație pentru interacțiuni cu contul tău Ethereum",
+ "nav-events-description": "Descentralizare și libertate de a participa pentru oricine",
+ "nav-events-irl-description": "În fiecare lună, sunt organizate evenimente majore Ethereum cu participare fizică și online",
+ "nav-events-label": "Comunități și evenimente",
+ "nav-events-online-description": "Sute de mii de pasionați de Ethereum se regăsesc în aceste comunități online",
+ "nav-find-wallet-description": "Portofelele îți permit să folosești cripto",
+ "nav-find-wallet-label": "Alege-ți portofelul",
+ "nav-gas-fees-description": "Calcularea comisioanelor de tranzacție ETH",
+ "nav-get-eth-description": "Ai nevoie de ether (ETH) pentru a folosi aplicațiile Ethereum",
+ "nav-get-started-description": "Primi pașii în folosirea Ethereum",
+ "nav-governance-description": "Procesul de upgrade al protocolului Ethereum",
+ "nav-governance-label": "Conducere",
+ "nav-grants-description": "O listă gestionată de comunitatea noastră pentru proiectele care oferă finanțare prin granturi programelor",
+ "nav-guide-create-account-description": "Orice poate crea un cont Ethereum în orice moment, gratuit, cu o aplicație portofel",
+ "nav-guide-revoke-access-description": "Fii atent când interacționezi cu aplicații și contracte inteligente în ecosistemul Ethereum",
+ "nav-guide-revoke-access-label": "Revocarea accesului la contracte inteligente",
+ "nav-guide-use-wallet-description": "Află cum poți folosi toate funcțiile de bază ale unui portofel",
+ "nav-guide-use-wallet-label": "Cum se utilizează un portofel",
+ "nav-guides-description": "Ghiduri practice, pas cu pas pentru a te ajuta să începi",
+ "nav-guides-label": "Folosirea ghidurilor",
+ "nav-history-description": "O cronologie a tuturor bifurcațiilor și update-urilor importante",
+ "nav-history-label": "Istoricul tehnic al Ethereum",
+ "nav-layer-2-description": "Tranzacții mai ieftine și mai rapide pentru Ethereum",
+ "nav-learn-by-coding-description": "Instrumente care te ajută să experimentezi cu Ethereum",
+ "nav-local-env-description": "Alege și configurează stiva de dezvoltare Ethereum",
+ "nav-mainnet-description": "Aplicațiile blockchain pentru companii pot fi create pe rețeaua principală publică Ethereum",
+ "nav-nft-description": "O modalitate de a reprezenta orice lucru unic ca activ bazat pe Ethereum",
+ "nav-open-research-description": "Unul prin principalele puncte forte ale Ethereum este comunitatea de cercetare activă",
+ "nav-open-research-label": "Deschidere cercetare",
+ "nav-overview-description": "Toate proiectele de educație Ethereum",
+ "nav-overview-label": "Prezentare generală",
+ "nav-participate-overview-description": "Prezentare a modalității de participare",
"nav-primary": "Principal",
- "nft-page": "Tokenuri nefungibile (NFT)",
+ "nav-private-description": "Resurse destinate dezvoltatorilor din Ethereum-ul privat pentru întreprinderi",
+ "nav-quizzes-description": "Află cât de bine înțelegi Ethereum și criptomonedele",
+ "nav-quizzes-label": "Testează-ți cunoștințele",
+ "nav-refi-description": "O sistem economic alternativ bazat pe principii regenerative",
+ "nav-research-description": "Procesele folosite pentru a îmbunătăți Ethereum",
+ "nav-research-label": "Cercetare și dezvoltare",
+ "nav-roadmap-description": "Calea către scalabilitate, securitate și durabilitate superioare pentru Ethereum",
+ "nav-roadmap-future-description": "Consolidarea Ethereum ca o rețea robustă și descentralizată",
+ "nav-roadmap-future-label": "Dovadă viitoare",
+ "nav-roadmap-label": "Foaie de parcurs",
+ "nav-roadmap-scaling-description": "Actualizări de rețea pentru a reduce mai mult costurile și viteza tranzacțiilor",
+ "nav-roadmap-security-description": "Eforturi depuse pentru ca Ethereum să continue să reziste tuturor tipurilor de atacuri în viitor",
+ "nav-roadmap-security-label": "Securitate îmbunătățită",
+ "nav-roadmap-ux-description": "Utilizarea Ethereum trebuie simplificată",
+ "nav-run-a-node-description": "Ai control absolut în timp ce contribui la protejarea securității rețelei",
+ "nav-security-description": "Familiarizează-te cu cele mai bune practici când folosești criptomonede",
+ "nav-smart-contracts-description": "Elementele de bază ale dezvoltării ecosistemului Ethereum",
+ "nav-stablecoins-description": "Stablecoin-urile sunt tokenuri Ethereum concepute să rămână la o valoare fixă",
+ "nav-stake-description": "Câștigă recompense când protejezi Ethereum",
+ "nav-stake-label": "Miză",
+ "nav-staking-home-description": "O descriere generală a diferitelor opțiuni de mizare",
+ "nav-staking-pool-description": "Mizează și câștigă recompense cu orice cantitate de ETH alăturându-te celorlalți",
+ "nav-staking-pool-label": "Miză cumulată",
+ "nav-staking-saas-label": "Mizare cu un serviciu",
+ "nav-staking-solo-label": "Miză individuală",
+ "nav-start-building-description": "Informații utile pentru nou-veniți",
+ "nav-translation-program-description": "Un proiect de colaborare pentru a traduce ethereum.org în toate limbile",
+ "nav-tutorials-description": "Listă curatoriată cu tutoriale generate de comunitate",
+ "nav-use-cases-description": "Descoperă diferite idei pentru utilizarea Ethereum",
+ "nav-what-is-ether-description": "Moneda aplicațiilor Ethereum",
+ "nav-what-is-ethereum-description": "Aflați ce face ca Ethereum să fie special",
+ "nav-what-is-web3-label": "Ce este Web3?",
+ "nav-what-is-web3-description": "O alternativă la monopolurile centralizate care dictează regulile",
+ "nav-whitepaper-description": "Cartea albă originală Ethereum scrisă de Vitalik Buterin în 2014",
+ "nav-zkp-description": "O modalitate de a dovedi validitatea unei afirmații fără a expune afirmația",
+ "nft-page": "NFT - Tokenuri nefungibile",
"nfts": "NFT-uri",
"no": "Nu",
"on-this-page": "Pe această pagină",
"open-research": "Deschidere cercetare",
- "page-developers-aria-label": "Meniu pentru programatori",
+ "page-developers-aria-label": "Meniul pentru dezvoltatori",
"page-index-meta-title": "Pagina de pornire",
"page-last-updated": "Ultima actualizare a paginii",
+ "participate": "Participă",
+ "participate-menu": "Meniu Participare",
"pbs": "Separare ofertant-constructor",
"pools": "Miză cumulată",
"privacy-policy": "Politică de confidențialitate",
@@ -150,9 +263,10 @@
"refresh": "Actualizează pagina.",
"return-home": "înapoi la pagina principală",
"roadmap": "Parcurs Ethereum",
+ "research": "Cercetare",
+ "research-menu": "Meniu Cercetare",
"resources": "Resurse de traducere",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "Rulați un nod",
+ "run-a-node": "Rularea unui nod",
"rollup-component-website": "Site web",
"rollup-component-developer-docs": "Documente programator",
"rollup-component-technology-and-risk-summary": "Tehnologie şi rezumat al riscurilor",
@@ -164,23 +278,24 @@
"search-box-blank-state-text": "Începe căutarea!",
"search-eth-address": "Pare o adresă Ethereum. Nu oferim date care corespund adreselor. Încearcă să le cauți într-un block explorer ca",
"search-no-results": "Nu există rezultate pentru această căutare",
+ "security": "Securitatea",
"single-slot-finality": "Finalitate cu un singur slot",
"statelessness": "Delegare",
"see-contributors": "Vezi cine a contribuit",
- "set-up-local-env": "Configurați un mediu local",
- "sharding": "Fragmentare",
+ "set-up-local-env": "Configurarea unui mediu local",
+ "sharding": "Fragmentarea",
"show-all": "Afișează tot",
"show-less": "Afișează mai puțin",
"site-description": "Ethereum este o platformă mondială, descentralizată, care se ocupă de bani și noi tipuri de aplicații. Pe Ethereum se pot crea coduri pentru controlul banilor și se pot elabora aplicații accesibile oriunde în lume.",
"site-title": "ethereum.org",
"skip-to-main-content": "Salt la conținutul principal",
"smart-contracts": "Contractele inteligente",
- "stablecoins": "Stablecoin-uri",
+ "stablecoins": "Stablecoins",
"stake-eth": "Mizați ETH",
"staking": "Mizarea",
"start-here": "Începe aici",
- "style-guide": "Style guide",
"solo": "Miză individuală",
+ "support": "Asistență",
"terms-of-use": "Condiții de utilizare",
"translation-banner-body-new": "Vizualizezi această pagină în limba engleză deoarece încă nu am tradus-o. Ajută-ne să traducem conținutul acestei pagini.",
"translation-banner-body-update": "Există o nouă versiune a acestei pagini, dar este doar în limba engleză pentru moment. Ajută-ne să traducem versiunea cea mai recentă.",
@@ -191,19 +306,21 @@
"translation-banner-no-bugs-title": "Nicio eroare aici!",
"translation-banner-no-bugs-content": "Această pagină nu este tradusă. Am lăsat în mod intenționat această pagină în limba engleză deocamdată.",
"translation-banner-no-bugs-dont-show-again": "Nu afișa din nou",
+ "translation-program": "Programul de traducere",
"try-using-search": "Încearcă să ajustezi căutarea pentru a găsi ceea ce cauți",
"tutorials": "Tutoriale",
"up": "Sus",
+ "use": "Utilizare",
"use-ethereum": "Utilizează Ethereum",
"use-ethereum-menu": "Meniul Utilizează Ethereum",
- "user-experience": "User experience",
+ "use-menu": "Meniu Utilizare",
"verkle-trees": "Arbori Verkle",
"wallets": "Portofele",
"we-couldnt-find-that-page": "Nu am găsit pagina respectivă",
"web3": "Ce este Web3?",
"web3-title": "Web3",
"website-last-updated": "Ultima actualizare a site-ului",
- "what-is-ether": "Ce este ether-ul (ETH)?",
+ "what-is-ether": "Ce este ether (ETH)?",
"what-is-ethereum": "Ce este Ethereum?",
"withdrawals": "Retrageri la mizare",
"yes": "Da",
diff --git a/src/intl/ro/page-dapps.json b/src/intl/ro/page-dapps.json
index e56487ef89d..72cd75d2ffc 100644
--- a/src/intl/ro/page-dapps.json
+++ b/src/intl/ro/page-dapps.json
@@ -81,7 +81,6 @@
"page-dapps-dapp-description-sablier": "Transmiteți bani în timp real.",
"page-dapps-dapp-description-superrare": "Cumpărați opere de artă digitală direct de la artiști sau de pe piețele secundare.",
"page-dapps-dapp-description-token-sets": "Strategii de investiții pentru cripto care îl reechilibrează automat.",
- "page-dapps-dapp-description-tornado-cash": "Trimiteți tranzacții anonime pe Ethereum.",
"page-dapps-dapp-description-uniswap": "Schimbați simplu jetoane sau oferiți jetoane pentru recompense în %.",
"page-dapps-docklink-dapps": "Introducere în aplicații descentralizate (dapps)",
"page-dapps-docklink-smart-contracts": "Contractele inteligente",
@@ -191,7 +190,6 @@
"page-dapps-technology-description": "Acestea sunt aplicații care vizează descentralizarea instrumentelor pentru dezvoltatori, încorporarea sistemelor cripto-economice în tehnologia existentă și crearea piețelor pentru munca de dezvoltare open-source.",
"page-dapps-technology-title": "Tehnologie descentralizată",
"page-dapps-token-sets-logo-alt": "Sigla Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Sigla Tornado Cash",
"page-dapps-uniswap-logo-alt": "Sigla Uniswap",
"page-dapps-wallet-callout-button": "Găsiți portofelul",
"page-dapps-wallet-callout-description": "Portofelele sunt și ele aplicații dapp. Găsiți unul în funcție de funcționalitățile pe care le doriți.",
diff --git a/src/intl/ro/page-languages.json b/src/intl/ro/page-languages.json
index a3758ece518..3052e91e74f 100644
--- a/src/intl/ro/page-languages.json
+++ b/src/intl/ro/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Doriți să afișați ethereum.org într-o altă limbă?",
"page-languages-want-more-link": "Programul de traducere",
"page-languages-want-more-paragraph": "Traducătorii ethereum.org traduc întotdeauna paginile în cât mai multe limbi posibil. Pentru a vedea la ce lucrează acum sau pentru a vă înscrie în echipa acestora, citiți despre",
- "page-languages-filter-placeholder": "Filtrați",
+ "page-languages-filter-label": "Listă de filtre",
+ "page-languages-filter-placeholder": "Scrie pentru a filtra",
+ "page-languages-browser-default": "Browser implicit",
+ "page-languages-translated": "tradus",
+ "page-languages-words": "cuvinte",
+ "page-languages-recruit-community": "Ajută-ne să traducem ethereum.org.",
"language-ar": "Arabă",
"language-az": "Azeră",
"language-bg": "Bulgară",
diff --git a/src/intl/ro/page-stablecoins.json b/src/intl/ro/page-stablecoins.json
index 001f6b6f12b..cfda8d7dca2 100644
--- a/src/intl/ro/page-stablecoins.json
+++ b/src/intl/ro/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Sursa",
"page-stablecoins-bitcoin-pizza": "Infama pizza Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "În 2010, cineva a cumpărat 2 pizza pentru 10.000 bitcoin. La vremea respectivă, acestea valorau ~ 41 USD. Pe piața de astăzi valorează milioane de dolari. Există multe tranzacții regretabile similare în istoria Ethereum. Stablecoin-urile rezolvă această problemă, astfel încât să vă puteți bucura de pizza și să vă păstrați ETH-ul.",
+ "page-stablecoins-category-dashboard-and-education": "Tablou de bord și educație",
"page-stablecoins-coin-price-change": "Modificarea prețului monedei (în ultimele 30 de zile)",
"page-stablecoins-crypto-backed": "Garantat de cripto",
"page-stablecoins-crypto-backed-con-1": "Mai puțin stabile decât stablecoins susținute de fiat.",
diff --git a/src/intl/ru/common.json b/src/intl/ru/common.json
index 9939d346540..a2a008c7543 100644
--- a/src/intl/ru/common.json
+++ b/src/intl/ru/common.json
@@ -1,17 +1,30 @@
{
- "account-abstraction": "Абстрагирование аккаунта",
"about-ethereum-org": "Об ethereum.org",
"about-us": "О нас",
+ "adding-desci-projects": "Добавление проектов DeSci",
+ "adding-developer-tools": "Добавление инструментов для разработчиков",
+ "adding-exchanges": "Добавление бирж",
+ "adding-glossary-terms": "Добавление терминов в глоссарий",
+ "adding-products": "Добавление продуктов",
+ "adding-staking-products": "Добавление продуктов, использующих стейкинг",
+ "adding-wallets": "Добавление кошельков",
+ "account-abstraction": "Абстрагирование аккаунта",
+ "acknowledgements": "Благодарности",
"aria-toggle-search-button": "Переключение кнопки поиска",
"aria-toggle-menu-button": "Переключение кнопки меню",
"beacon-chain": "Beacon Chain",
"bridges": "Мосты блокчейна",
+ "bug-bounty": "Вознаграждения за найденные ошибки",
+ "build": "Сборка",
+ "build-menu": "Меню сборки",
"clear": "Очистить",
"close": "Закрыть",
"community": "Сообщество",
"community-hub": "Центр сообщества",
"community-menu": "Меню сообщества",
"contact": "Контактные данные",
+ "content-buckets": "Категории материалов",
+ "content-resources": "Ресурсы с информационными материалами",
"content-standardization": "Стандартизация содержимого",
"contributing": "Содействие",
"contributors": "Соавторы",
@@ -20,14 +33,17 @@
"copied": "Скопировано",
"copy": "Копировать",
"danksharding": "Данкшардинг",
- "dao-page": "Децентрализованные автономные организации (DAO)",
+ "dao-page": "DAO - Децентрализованные автономные организации",
"dark-mode": "Темная",
"data-provided-by": "Источник данных:",
- "decentralized-applications-dapps": "Децентрализованные приложения (dapps)",
+ "decentralized-applications-dapps": "Dapps - Децентрализованные приложения",
"decentralized-identity": "Децентрализованная идентификация",
"decentralized-social-networks": "Децентрализованные социальные сети",
- "decentralized-science": "Децентрализованная наука (DeSci)",
- "defi-page": "Децентрализованные финансы (DeFi)",
+ "decentralized-science": "DeSci - Децентрализованная наука",
+ "description": "Описание элемента навигации",
+ "defi-page": "DeFi - Децентрализованные финансы",
+ "design": "Дизайн",
+ "design-principles": "Принципы дизайна",
"devcon": "Девкон",
"developers": "Разработчикам",
"developers-home": "Домашняя страница для разработчиков",
@@ -63,7 +79,7 @@
"ethereum-bug-bounty": "Программа вознаграждения за нахождение ошибок Ethereum",
"consensus-when-shipping": "Когда это запустится?",
"ethereum-upgrades": "Обновления Ethereum",
- "ethereum-brand-assets": "Активы бренда Ethereum",
+ "ethereum-brand-assets": "Ресурсы бренда Ethereum",
"ethereum-online": "Онлайн-сообщества",
"ethereum-events": "Мероприятия Ethereum",
"ethereum-foundation": "Фонд Ethereum",
@@ -94,11 +110,11 @@
"grants": "Гранты",
"grant-programs": "Программы грантов экосистемы",
"guides": "Руководства",
- "guides-hub": "Центр руководств",
+ "guides-hub": "Практические руководства",
"history-of-ethereum": "История Ethereum",
"home": "Главная",
"how-ethereum-works": "Как работает Ethereum",
- "how-to-register-an-ethereum-account": "Как зарегистрировать аккаунт Ethereum",
+ "how-to-create-an-ethereum-account": "Как «создать» учетную запись Ethereum",
"how-to-revoke-token-access": "Как отозвать доступ умного контракта к вашим средствам в криптовалюте",
"how-to-swap-tokens": "Как менять токены",
"how-to-use-a-bridge": "Как переводить токены на уровень 2",
@@ -115,7 +131,7 @@
"last-edit": "Последнее редактирование",
"layer-2": "Слой 2",
"learn": "Обучение",
- "learn-by-coding": "Обучение на программировании",
+ "learn-by-coding": "Учитесь на программировании",
"learn-hub": "Учебный центр",
"learn-menu": "Меню обучения",
"learn-more": "Узнать больше",
@@ -128,11 +144,116 @@
"loading-error-try-again-later": "Загрузить данные не удалось. Повторите попытку позже.",
"logo": "логотип",
"mainnet-ethereum": "Основная сеть Ethereum",
+ "merge": "Слияние",
"more": "Больше",
- "nav-developers": "Разработчикам",
+ "nav-about-description": "Публичный проект с открытым кодом для сообщества Ethereum",
+ "nav-advanced-description": "Узнавайте о более сложных темах",
+ "nav-advanced-label": "Дополнительно",
+ "nav-basics-description": "Разберитесь в основах Ethereum",
+ "nav-basics-label": "Основы",
+ "nav-bridges-description": "Web3 становится экосистемой, состоящей из первичных блокчейнов L1 и решений для масштабирования L2",
+ "nav-builders-home-description": "Руководство разработчика для Ethereum. От разработчиков и для разработчиков",
+ "nav-builders-home-label": "Домашняя страница для разработчиков",
+ "nav-contribute-description": "Если вам нужна помощь, вам это пригодится",
+ "nav-contribute-label": "Помощь в развитии ethereum.org",
+ "nav-dao-description": "Сообщества, принадлежащие своим членам, без централизованного аппарата управления",
+ "nav-dapps-description": "Откройте для себя богатую экосистему приложений с помощью Ethereum",
+ "nav-defi-description": "Глобальная открытая альтернатива традиционному финансовому рынку",
+ "nav-desci-description": "Глобальная открытая альтернатива существующей научной системе",
+ "nav-desoc-description": "Платформы на основе блокчейна для социального взаимодействия и создания контента",
"nav-developers-docs": "Документация для разработчиков",
+ "nav-developers": "Разработчикам",
+ "nav-did-description": "Создавайте уникальные децентрализованные идентификаторы и владейте ими",
+ "nav-docs-description": "Документы, помогающие разобраться в Ethereum и заняться разработкой",
+ "nav-docs-design-description": "Описание уникальных вызовов, связанных с дизайном web3, рекомендации и результаты пользовательских исследований",
+ "nav-docs-design-label": "Основы дизайна UX/UI",
+ "nav-docs-foundation-description": "Отправная точка для разработки на Ethereum",
+ "nav-docs-foundation-label": "Основные темы",
+ "nav-docs-overview-description": "Ваш центр документации для разработчиков",
+ "nav-docs-stack-description": "Понимание всех особенностей стека Ethereum",
+ "nav-docs-stack-label": "Стек Ethereum",
+ "nav-eip-description": "Стандарты, определяющие новые функции или процессы",
+ "nav-eip-label": "EIP - Предложения по улучшению Ethereum",
+ "nav-emerging-description": "Узнавайте самые свежие примеры использования Ethereum",
+ "nav-emerging-label": "Новые варианты использования",
+ "nav-enterprise-description": "Бизнес-приложения для Ethereum",
+ "nav-ethereum-org-description": "Этот сайт развивается сообществом, станьте его участником и внесите свой вклад",
+ "nav-ethereum-wallets-description": "Приложение для взаимодействия с вашим аккаунтом Ethereum",
+ "nav-events-description": "Децентрализация и свобода участия для каждого",
+ "nav-events-irl-description": "Каждый месяц проходят крупные мероприятия Ethereum — как онлайн, так и в очном режиме",
+ "nav-events-label": "Сообщества и мероприятия",
+ "nav-events-online-description": "Эти онлайн-сообщества развиваются сотнями тысяч энтузиастов Ethereum",
+ "nav-find-wallet-description": "Кошельки позволяют пользоваться криптовалютой",
+ "nav-find-wallet-label": "Выберите кошелек",
+ "nav-gas-fees-description": "Как рассчитываются комиссии за транзакции в ETH",
+ "nav-gas-fees-label": "Комиссии за газ",
+ "nav-get-eth-description": "Чтобы пользоваться приложениями Ethereum, потребуется эфир (ETH)",
+ "nav-get-started-description": "Ваши первые шаги к использованию Ethereum",
+ "nav-governance-description": "Процесс включает обновление протокола Ethereum",
+ "nav-governance-label": "Руководство",
+ "nav-grants-description": "Список проектов, предлагающих гранты для финансирования программ, ведется нашим сообществом",
+ "nav-guide-create-account-description": "Каждый может создать аккаунт Ethereum бесплатно и в любое время с помощью приложения кошелька",
+ "nav-guide-create-account-label": "Как создать учетную запись Ethereum",
+ "nav-guide-revoke-access-description": "Оставайтесь в безопасности, взаимодействуя с умными контрактами и приложениями в экосистеме Ethereum",
+ "nav-guide-revoke-access-label": "Как отозвать доступ смарт-контрактов",
+ "nav-guide-use-wallet-description": "Узнайте, как работают все основные функции кошелька",
+ "nav-guide-use-wallet-label": "Как использовать кошелек",
+ "nav-guides-description": "Практичные пошаговые руководства, помогающие начать",
+ "nav-guides-label": "Практические руководства",
+ "nav-history-description": "График всех основных ветвлений и обновлений",
+ "nav-history-label": "Техническая история Ethereum",
+ "nav-layer-2-description": "Транзакции Ethereum дешевле и быстрее",
+ "nav-learn-by-coding-description": "Инструменты, помогающие экспериментировать с Ethereum",
+ "nav-local-env-description": "Выберите и настройте свой стек разработки Ethereum",
+ "nav-mainnet-description": "Блокчейн-приложения для компаний можно создавать на публичной основной сети Ethereum",
+ "nav-nft-description": "Способ представить что-либо уникальное как актив на основе Ethereum",
+ "nav-open-research-description": "Одно из ключевых преимуществ Ethereum — активное сообщество исследователей",
+ "nav-open-research-label": "Текущие исследования",
+ "nav-overview-description": "Обучающие материалы по Ethereum на любые темы",
+ "nav-overview-label": "Обзор",
+ "nav-participate-overview-description": "Обзор возможностей для участия",
"nav-primary": "Основной",
- "nft-page": "Невзаимозаменяемые токены (NFT)",
+ "nav-private-description": "Ресурсы разработчиков для частного предприятия Ethereum",
+ "nav-quizzes-description": "Узнайте, насколько хорошо вы разбираетесь в Ethereum и криптовалютах",
+ "nav-quizzes-label": "Проверьте свои знания",
+ "nav-refi-description": "Альтернативная экономическая система, построенная на регенеративных принципах",
+ "nav-research-description": "Процессы, используемые для совершенствования Ethereum",
+ "nav-research-label": "Исследования и разработки",
+ "nav-roadmap-description": "Путь к большей масштабируемости, безопасности и экологичности Ethereum",
+ "nav-roadmap-future-description": "Укрепление Ethereum как надежной и децентрализованной сети",
+ "nav-roadmap-future-label": "Обеспечение будущего",
+ "nav-roadmap-label": "Дорожная карта",
+ "nav-roadmap-scaling-description": "Обновления сети для дальнейшего сокращения расходов и времени на транзакции",
+ "nav-roadmap-scaling-label": "Более дешевые транзакции",
+ "nav-roadmap-security-description": "Обеспечение способности Ethereum выдерживать любые типы будущих атак",
+ "nav-roadmap-security-label": "Улучшенная безопасность",
+ "nav-roadmap-ux-description": "Использование Ethereum нужно упростить",
+ "nav-run-a-node-description": "Получите полную независимость, помогая защитить сеть",
+ "nav-security-description": "Узнайте о лучших способах использовать криптовалюту",
+ "nav-smart-contracts-description": "Главные строительные блоки экосистемы Ethereum",
+ "nav-stablecoins-description": "Стейблкойны — это токены Ethereum, разработанные для сохранения фиксированной ценности",
+ "nav-stake-description": "Зарабатывайте вознаграждения за защиту Ethereum",
+ "nav-stake-label": "Доля",
+ "nav-staking-home-description": "Обзор различных вариантов стейкинга",
+ "nav-staking-home-label": "Главная страница стейкинга",
+ "nav-staking-pool-description": "Становитесь дольщиком и зарабатывайте награды при любом количестве ETH, объединяясь с другими",
+ "nav-staking-pool-label": "Объединенный стейкинг",
+ "nav-staking-saas-description": "Операторы сторонних узлов управляют работой вашего клиента валидатора",
+ "nav-staking-saas-label": "Стейкинг с услугой",
+ "nav-staking-solo-description": "Запустите домашнее оборудование и лично добавьте безопасности и децентрализации сети Ethereum",
+ "nav-staking-solo-label": "Одиночный стейкинг",
+ "nav-start-building-description": "Полезная информация для новичков",
+ "nav-translation-program-description": "Общие усилия по переводу ethereum.org на все языки",
+ "nav-tutorials-description": "Курируемый список руководств сообщества",
+ "nav-use-cases-description": "Узнайте различные идеи по использованию Ethereum",
+ "nav-use-cases-label": "Применение",
+ "nav-what-is-ether-description": "Валюта приложений Ethereum",
+ "nav-what-is-ethereum-description": "Узнайте, в чем особенность Ethereum",
+ "nav-what-is-web3-label": "Что такое Web3?",
+ "nav-what-is-web3-description": "Альтернатива централизованным монополиям, диктующим свои условия",
+ "nav-whitepaper-description": "Первоначальное описание Ethereum, написанное Виталиком Бутериным в 2014 году",
+ "nav-zkp-description": "Способ доказать действительность заявления, не раскрывая его",
+ "nft-page": "NFT - Невзаимозаменяемые токены",
"nfts": "NFT",
"no": "Нет",
"on-this-page": "На этой странице",
@@ -140,7 +261,9 @@
"page-developers-aria-label": "Меню разработчиков",
"page-index-meta-title": "Главная",
"page-last-updated": "Последнее обновление страницы",
- "pbs": "Разделение автора предложения и разработчика",
+ "participate": "Участвуйте",
+ "participate-menu": "Меню участия",
+ "pbs": "Разделение предлагающих и строителей",
"pools": "Объединенный стейкинг",
"privacy-policy": "Политика о конфиденциальности",
"private-ethereum": "Частный Ethereum",
@@ -150,10 +273,12 @@
"refresh": "Обновите страницу.",
"return-home": "Вернуться на главную",
"roadmap": "Дорожная карта Ethereum",
+ "research": "Исследования",
+ "research-menu": "Меню исследований",
"resources": "Ресурсы для перевода",
- "regenerative-finance": "Регенеративные финансы (ReFi)",
+ "regenerative-finance": "ReFi - Регенеративные финансы",
"run-a-node": "Запуск узла",
- "rollup-component-website": "Сайт",
+ "rollup-component-website": "Вебсайт",
"rollup-component-developer-docs": "Документация для разработчиков",
"rollup-component-technology-and-risk-summary": "Обзор рисков и технологий",
"scaling": "Масштабирование",
@@ -164,6 +289,7 @@
"search-box-blank-state-text": "Искать здесь!",
"search-eth-address": "Похоже на адрес Ethereum. Мы не предоставляем особые данные для адресов. Попробуйте поискать их в обозревателе блоков, как",
"search-no-results": "Поиск не дал результатов",
+ "security": "Безопасность",
"single-slot-finality": "Завершение в одном слоте",
"statelessness": "Клиенты, не использующие состояние",
"see-contributors": "Посмотреть участников",
@@ -175,13 +301,14 @@
"site-title": "ethereum.org",
"skip-to-main-content": "Перейти к основному содержанию",
"smart-contracts": "Умные контракты",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Стабильные монеты",
"stake-eth": "Вложить ETH",
"staking": "Ставки",
"start-here": "Начните здесь",
"style-guide": "Руководство по стилю",
"solo": "Одиночный стейкинг",
- "terms-of-use": "Условия пользования",
+ "support": "Поддержка",
+ "terms-of-use": "Условия использования",
"translation-banner-body-new": "Вы просматриваете эту страницу на английском языке, потому что мы еще не перевели ее. Помогите нам перевести эти материалы.",
"translation-banner-body-update": "Есть новая версия этой страницы, но пока только на английском языке. Помогите нам перевести последнюю версию.",
"translation-banner-button-see-english": "См. английский",
@@ -191,11 +318,14 @@
"translation-banner-no-bugs-title": "Здесь нет ошибок!",
"translation-banner-no-bugs-content": "Эта страница сейчас не переводится. Пока что мы намеренно оставили эту страницу на английском языке.",
"translation-banner-no-bugs-dont-show-again": "Больше не показывать",
+ "translation-program": "Программа перевода",
"try-using-search": "Попробуйте использовать поиск, чтобы найти то, что вы ищете, или",
"tutorials": "Учебники",
"up": "Вверх",
+ "use": "Использование",
"use-ethereum": "Использование Ethereum",
"use-ethereum-menu": "Использовать меню Ethereum",
+ "use-menu": "Меню использования",
"user-experience": "Пользовательский опыт",
"verkle-trees": "Деревья Веркла",
"wallets": "Кошельки",
@@ -203,7 +333,7 @@
"web3": "Что такое Web3?",
"web3-title": "Web3",
"website-last-updated": "Последнее обновление страницы",
- "what-is-ether": "Что такое эфир (ETH)?",
+ "what-is-ether": "Что такое Ether (ETH)?",
"what-is-ethereum": "Что такое Ethereum?",
"withdrawals": "Вывод средств, использованных в стейкинге",
"yes": "Да",
diff --git a/src/intl/ru/page-dapps.json b/src/intl/ru/page-dapps.json
index b5304174d99..8372c05711a 100644
--- a/src/intl/ru/page-dapps.json
+++ b/src/intl/ru/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "«Транслируйте» деньги в реальном времени.",
"page-dapps-dapp-description-superrare": "Покупайте цифровые произведения искусства непосредственно от художников или на вторичных рынках.",
"page-dapps-dapp-description-token-sets": "Стратегии инвестирования, которые автоматически ребалансируют портфель.",
- "page-dapps-dapp-description-tornado-cash": "Отправляйте анонимные транзакции в Ethereum.",
"page-dapps-dapp-description-uniswap": "Легко обменивайте токены или предоставляйте их для получения наград в процентах.",
"page-dapps-dapp-description-dexguru": "Торговый терминал без ограничений для трейдеров DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix — это протокол для выпуска синтетических активов и торговли ими",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Это приложения, сфокусированные на децентрализованные средства разработчиков, включающие криптоэкономические системы в существующую технологию и создающие рынок для разработок на основе открытого исходного кода.",
"page-dapps-technology-title": "Децентрализованная технология",
"page-dapps-token-sets-logo-alt": "Логотип Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Логотип наличных Tornado",
"page-dapps-uniswap-logo-alt": "Логотип Uniswap",
"page-dapps-wallet-callout-button": "Найти кошелек",
"page-dapps-wallet-callout-description": "Кошельки тоже являются приложениями dapp. Выберите кошелек на основе функций, которые подходят вам.",
diff --git a/src/intl/ru/page-gas.json b/src/intl/ru/page-gas.json
new file mode 100644
index 00000000000..cacdc0cb65b
--- /dev/null
+++ b/src/intl/ru/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Gas fees on Ethereum: how do they work?",
+ "page-gas-meta-description": "Learn about gas on Ethereum: how they work and how to pay less in gas fees",
+ "page-gas-hero-title": "Gas fees",
+ "page-gas-hero-header": "Network fees",
+ "page-gas-hero-button-1-content": "Что такое газ?",
+ "page-gas-hero-subtitle-1": "Network fees on Ethereum are called gas.",
+ "page-gas-hero-subtitle-2": "Gas is the fuel that powers Ethereum.",
+ "page-gas-summary-title": "Обзор",
+ "page-gas-summary-item-1": "Every transaction on Ethereum requires a small form of payment to process",
+ "page-gas-summary-item-2": "These fees are known as ‘gas’ fee",
+ "page-gas-summary-item-3": "Gas fees change based on network congestion",
+ "page-gas-what-are-gas-fees-header": "What are gas fees?",
+ "page-gas-what-are-gas-fees-text-1": "Think of Ethereum as a large computer network where people can do tasks like sending messages or running programs. Just like in the real world, these tasks require energy to get done.",
+ "page-gas-what-are-gas-fees-text-2": "In Ethereum, each computational action has a set \"gas\" price. Your gas fees are the total cost of the actions in your transaction. When you send a transaction or run a smart contract, you pay in gas fees to process it.",
+ "page-gas-how-do-i-pay-less-gas-header": "How do I pay less gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "While higher fees on Ethereum are sometimes inevitable, there are strategies you can use to reduce the cost:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Time your transactions",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Just like travelling off-peak is less crowded and more affordable, Ethereum is generally cheaper to use when North America is asleep.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Wait for gas to go down",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Gas prices go up and down every twelve seconds based on how congested Ethereum is. When gas prices are high, waiting just a few minutes before making a transaction could see a significant drop in what you pay.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Использовать уровень 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Layer-2 chains are built atop Ethereum, offering lower fees and handling more transactions. They're a good choice to save on fees for transactions that don't need to happen on the main Ethereum network.",
+ "page-gas-try-layer-2": "Try layer 2",
+ "page-gas-what-causes-high-gas-fees-header": "What causes high gas fees?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Whenever the amount of computation (gas) on Ethereum exceeds a certain threshold, gas fees begin to rise. The more the gas exceeds this threshold, the quicker gas fees increase.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Higher fees could be caused by things like popular dapps or NFTs, periodically increased trading on DEXs, or an overwhelming number of user activity at peak times.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Developers on Ethereum should take care to optimise their smart contracts usage before deploying. If lots of people are using a poorly written smart contract, it will consume more gas and could inadvertently cause network congestion.",
+ "page-gas-want-to-dive-deeper": "Хотите узнать больше?",
+ "page-gas-check-out-the-developer-docs": "Check out the developer docs.",
+ "page-gas-attack-of-the-cryptokitties-header": "Attack of the Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "In November 2017, the popular CryptoKitties project was launched. Its rapid spike in popularity caused significant network congestion and extremely high gas fees. The challenges posed by CryptoKitties accelerated the urgency of finding solutions for scaling Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Why do we need gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas is a critical element in keeping Ethereum secure and processing transactions. Gas helps in many ways:",
+ "page-gas-benefits-1-description": "Gas keeps Ethereum sybil-resistant by preventing malicious actors from overwhelming the network with fraudulent activities.",
+ "page-gas-benefits-2-description": "Because computation costs gas, spamming Ethereum with expensive transactions, either accidentally and maliciously, is financially disencentivised.",
+ "page-gas-benefits-3-description": "A hard-limit on the amount of computation that can be done at any one time prevents Ethereum from being overwhelmed, helping to ensure the network is always accessible.",
+ "page-gas-how-is-gas-calculated-header": "How is gas calculated?",
+ "page-gas-advanced": "Дополнительно",
+ "page-gas-how-is-gas-calculated-text-1": "The total gas fee you pay is made up of a few parts:",
+ "page-gas-how-is-gas-calculated-item-1": "Base fee: a fee set by the network that has to be paid for a transaction",
+ "page-gas-how-is-gas-calculated-item-2": "Priority fee: an optional tip to incentivise node operators to include your transaction",
+ "page-gas-how-is-gas-calculated-item-3": "Units of gas used*: remember we said gas represented computation? More complex actions, like interacting with a smart contract, use more gas than simple ones, such as sending a transaction.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* See Figure 1 to see how much gas different types of transactions use",
+ "page-gas-how-is-gas-calculated-text-2": "The formula for calculating a gas fee is units of gas used * (base fee + priority fee). Most wallets will calculate gas usage and display it in a more straight-forward way.",
+ "page-gas-table-figure": "Figure 1: Gas used by transaction type",
+ "page-gas-table-header-1": "Transaction type",
+ "page-gas-table-header-2": "Units of gas used",
+ "page-gas-table-item-1-transaction-type": "Sending ETH",
+ "page-gas-table-item-2-transaction-type": "Sending ERC-20 tokens",
+ "page-gas-table-item-3-transaction-type": "Transferring and NFT",
+ "page-gas-table-item-4-transaction-type": "Swapping on Uniswap",
+ "page-gas-faq-header": "Frequency asked questions",
+ "page-gas-faq-question-1-q": "Who gets paid the gas fee in my transaction?",
+ "page-gas-faq-question-1-a-1": "The majority is gas fee—the base fee— is destroyed by the protocol (burned). The priority fee, if included in your transaction, will be given to the validator who proposed your transaction.",
+ "page-gas-faq-question-1-a-2": "You can read a detailed description of the process in the gas developer docs.",
+ "page-gas-faq-question-2-q": "Do I need to pay gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Yes. All gas fees on Ethereum must be paid in the native ETH currency.",
+ "page-gas-faq-question-2-a-2": "Подробнее о ETH",
+ "page-gas-faq-question-3-q": "What is gwei?",
+ "page-gas-faq-question-3-a-1": "In most wallets or gas trackers, you will see gas prices denominated as ‘gwei’.",
+ "page-gas-faq-question-3-a-2": "Gwei is just a smaller unit of ETH, just as pennies are to dollars, with the difference being that 1 ETH equals 1 billion gwei. Gwei is useful when talking about very small amounts of ETH.",
+ "page-gas-use-layer-2": "Использовать уровень 2"
+}
diff --git a/src/intl/ru/page-get-eth.json b/src/intl/ru/page-get-eth.json
index dce84fc632d..4d8abc3dad7 100644
--- a/src/intl/ru/page-get-eth.json
+++ b/src/intl/ru/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Биржи - это компании, которые позволяют покупать криптовалюту за традиционную валюту. Они обладают контролем над любым купленным вами ETH, пока вы не отправите его на кошелек, контролируемый вами.",
"page-get-eth-checkout-dapps-btn": "Просмотреть децентрализованные приложения",
"page-get-eth-community-safety": "Записи сообщества о безопасности",
- "page-get-eth-description": "Ethereum и ETH не контролируются каким-либо правительством или компанией - они децентрализованы. Это означает, что ETH может использовать любой человек.",
+ "page-get-eth-description": "Ethereum не контролируется ни одной организацией — он децентрализован.",
"page-get-eth-dex": "Децентрализованные биржи (DEX)",
- "page-get-eth-dex-desc": "Если вы хотите больше контроля, покупайте ETH у физических лиц. С помощью DEX вы можете торговать, не передавая контроль над своими средствами централизованной компании.",
+ "page-get-eth-dex-desc": "Если вы хотите больше контроля, покупайте ETH, используя умные контракты. С помощью DEX вы можете торговать цифровыми активами, не передавая контроль над своими средствами централизованной компании.",
+ "page-get-eth-peers": "Получайте ЕТН от одноранговых пользователей",
+ "page-get-eth-peers-desc": "Обзаведясь учетную запись Ethereum, вам останется только поделиться своим адресом, чтобы начать отправлять и получать ETH (и другие токены) с помощью одноранговой передачи.",
+ "page-get-eth-staking": "Вознаграждения за стейкинг",
+ "page-get-eth-staking-desc": "Если у вас уже есть ETH, их количество можно увеличить, заработав их в качестве узла-валидатора. Вы будете получать ETH как оплату за работу по проверке.",
+ "page-get-eth-earn": "Зарабатывайте ETH",
+ "page-get-eth-earn-desc": "Вы можете заработать ЕТН, работая на DAO или компании, которые платят в криптовалюте, выигрывая награды, находя баги в программном обеспечении и используя другие возможности.",
+ "page-get-eth-daos-link-desc": "Подробнее о DAO",
+ "page-get-eth-cex-link-desc": "Просматривайте список бирж",
+ "page-get-eth-staking-link-desc": "Узнавайте больше о стейкинге",
"page-get-eth-dexs": "Децентрализованные биржи (DEX)",
"page-get-eth-dexs-desc": "Децентрализованные биржи - открытые торговые площадки для ETH и других токенов. Они напрямую соединяют покупателей и продавцов.",
"page-get-eth-dexs-desc-2": "Вместо использования доверенных третьих лиц для защиты средств в сделке они используют код. ETH продавца будут переданы только тогда, когда оплата будет гарантирована. Этот тип кода известен как смарт-контракт.",
- "page-get-eth-dexs-desc-3": "Это означает, что существует меньше географических ограничений, чем при использовании централизованных альтернатив. Если кто-то продает то, что вы хотите, и принимает способ оплаты, который вы можете предоставить, то все готово. DEX может позволить вам купить ETH за другие токены, через PayPal или даже за наличные.",
+ "page-get-eth-dexs-desc-3": "Это означает, что существует меньше географических ограничений, чем при использовании централизованных альтернатив. Если кто-то продает то, что вы хотите, и принимает способ оплаты, который вы можете предоставить, то все готово.",
"page-get-eth-do-not-copy": "Пример: не копировать",
"page-get-eth-exchanges-disclaimer": "Мы собрали эту информацию вручную. Если вы обнаружите ошибки, дайте нам знать на",
- "page-get-eth-exchanges-empty-state-text": "Введите вашу страну проживания, чтобы увидеть список кошельков и бирж, которые можно использовать для покупки ETH",
+ "page-get-eth-exchanges-empty-state-text": "Укажите свою страну проживания, чтобы увидеть список бирж, которые можно использовать",
"page-get-eth-exchanges-except": "Кроме",
"page-get-eth-exchanges-header": "В какой стране вы живете?",
"page-get-eth-exchanges-header-exchanges": "Биржи",
"page-get-eth-exchanges-header-wallets": "Кошельки",
- "page-get-eth-exchanges-intro": "Биржи и кошельки имеют ограничение по месту продажи.",
+ "page-get-eth-exchanges-intro": "У бирж есть ограничения на то, где они могут покупать криптовалюту. Это ориентировочный список услуг, который должен действовать в каждой стране. Включение в него не является гарантией качества, вам необходимо самостоятельно изучать ситуацию!",
"page-get-eth-exchanges-no-exchanges": "К сожалению, нам неизвестны биржи, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "К сожалению, нам неизвестны биржи или кошельки, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "К сожалению, нам неизвестны биржи, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
"page-get-eth-exchanges-no-wallets": "К сожалению, нам неизвестны кошельки, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
"page-get-eth-exchanges-search": "Напишите, где вы живете...",
"page-get-eth-exchanges-success-exchange": "Регистрация на бирже может занять несколько дней из-за их юридических проверок.",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Получить изображение героя ETH",
"page-get-eth-keep-it-safe": "Сохранение ваших ETH в безопасности",
"page-get-eth-meta-description": "Как купить ETH в том месте, где вы живете, и советы, как позаботиться о них.",
- "page-get-eth-meta-title": "Как купить ETH",
+ "page-get-eth-meta-title": "Как получить ETH",
"page-get-eth-need-wallet": "Вам понадобится кошелек, чтобы использовать DEX.",
"page-get-eth-new-to-eth": "Новичок в ETH? Вот обзор, чтобы помочь вам начать.",
"page-get-eth-other-cryptos": "Купить за другую криптовалюту",
- "page-get-eth-protect-eth-desc": "Если вы планируете купить много ETH, вам, вероятно, понадобится хранить их в подконтрольном вам кошельке, а не на бирже. Дело в том, что биржи являются главной мишенью для хакеров. Если хакер получит доступ, то вы можете потерять все средства. С другой стороны, доступ к вашему кошельку есть только у вас.",
- "page-get-eth-protect-eth-in-wallet": "Защитите ваши ETH в кошельке",
+ "page-get-eth-protect-eth-desc": "Одна из основных функций Ethereum — это возможность контролировать свои активы, управляя аккаунтом. Это означает, что вы не обязаны доверять свои активы какой-либо ретьей стороне, вы получаете защиту от недобросовестных действий всех возможных опекунов активов, их банкротства или взлома. Однако это накладывает на вас обязанности по самостоятельному обеспечению их безопасности.",
+ "page-get-eth-protect-eth-in-wallet": "Храните ЕТН в собственном кошельке",
"page-get-eth-search-by-country": "Найти по стране",
- "page-get-eth-security": "Но это также означает, что вы должны серьёзно относиться к безопасности своих средств. С ETH вы не доверяете банку смотреть за вашими деньгами – вы доверяете только себе.",
+ "page-get-eth-security": "Это означает, что вы должны серьезно относиться к безопасности своих средств. С ETH вы не доверяете банку или компании смотреть за вашими активами, вы несете за них ответственность самостоятельно.",
"page-get-eth-smart-contract-link": "Подробнее о смарт-контрактах",
"page-get-eth-swapping": "Обменяйте ваши токены на ETH. И наоборот.",
"page-get-eth-try-dex": "Попробуйте DEX",
"page-get-eth-use-your-eth": "Используйте ваши ETH",
"page-get-eth-use-your-eth-dapps": "Теперь, когда у вас есть ETH, взгляните на несколько приложений Ethereum (dapps). Существуют приложения для финансов, социальных сетей, игр и многого другого.",
"page-get-eth-wallet-instructions": "Следуйте инструкциям кошелька",
- "page-get-eth-wallet-instructions-lost": "Если вы потеряете доступ к своему кошельку, вы также потеряете доступ и к своим средствам. Ваш кошелек должен дать вам инструкции, чтобы предупредить подобные ситуации. Удостоверьтесь, что вы внимательно следуете им – в большинстве случаев никто не сможет помочь вам в случае потери доступа к своему кошельку.",
+ "page-get-eth-wallet-instructions-lost": "Если вы потеряете доступ к своему аккаунту, вы также потеряете доступ и к своим средствам. Ваш кошелек должен дать вам инструкции, чтобы предупредить подобные ситуации. Удостоверьтесь, что вы внимательно следуете им: в большинстве случаев никто не сможет помочь вам в случае потери доступа к своему аккаунту.",
"page-get-eth-wallets": "Кошельки",
"page-get-eth-wallets-link": "Подробнее о кошельках",
"page-get-eth-wallets-purchasing": "Некоторые кошельки позволяют вам купить криптовалюту с помощью дебетовой или кредитной карты, банковского перевода или даже Apple Pay. Имеются географические ограничения.",
- "page-get-eth-warning": "Данные DEX не предназначены для начинающих, поскольку для их использования понадобится некоторое количество ETH.",
+ "page-get-eth-warning": "Эти DEX не предназначены для новичков, так как для их использования потребуется некоторое количество ETH. Это лишь примеры, а не рекомендованные продукты. Изучайте ситуацию самостоятельно!",
"page-get-eth-what-are-DEX's": "Что такое DEX?",
"page-get-eth-whats-eth-link": "Что такое ETH?",
- "page-get-eth-where-to-buy-desc": "Вы можете купить ETH на биржах или прямо из кошельков.",
+ "page-get-eth-where-to-buy-desc": "Вы можете заработать ЕТН, получить от одноранговых пользователей или купить на биржах и в приложениях.",
"page-get-eth-where-to-buy-desc-2": "Проверьте, какими службами вы сможете воспользоваться в вашем месте проживания.",
- "page-get-eth-where-to-buy-title": "Где купить ETH",
+ "page-get-eth-where-to-buy-title": "Где получить ETH",
"page-get-eth-your-address": "Ваш адрес ETH",
"page-get-eth-your-address-desc": "Когда вы загружаете кошелек, он создает для вас общедоступный адрес ETH. Вот пример такого адреса:",
"page-get-eth-your-address-desc-3": "Думайте об этом, как о вашем адресе электронной почты, но вместо сообщений вы получаете ETH. Если вы хотите перевести ETH из биржи в свой кошелек, используйте ваш адрес в качестве точки назначения. Дважды проверьте его перед отправкой!",
diff --git a/src/intl/ru/page-index.json b/src/intl/ru/page-index.json
index 21d686fba6b..42be9eed72e 100644
--- a/src/intl/ru/page-index.json
+++ b/src/intl/ru/page-index.json
@@ -48,7 +48,7 @@
"page-index-developers-code-example-description-3": "Вы можете переосмыслить существующие сервисы как децентрализованные открытые приложения.",
"page-index-network-stats-title": "Ethereum сегодня",
"page-index-network-stats-subtitle": "Последняя статистика сети",
- "page-index-network-stats-total-eth-staked": "Общая сумма поставленного ETH",
+ "page-index-network-stats-total-eth-staked": "Общая сумма поставленного в ETH",
"page-index-network-stats-eth-price-description": "Цена ETH (долл. США)",
"page-index-network-stats-eth-price-explainer": "Последняя цена за 1 эфир. Покупать можно даже 0,000000000000000001, нет необходимости в покупке целой единицы ETH.",
"page-index-network-stats-total-eth-staked-explainer": "Общее количество ETH, стейкинг которых проводится в настоящее время и обеспечивает безопасность сети.",
diff --git a/src/intl/ru/page-languages.json b/src/intl/ru/page-languages.json
index dd70519a200..74994f59447 100644
--- a/src/intl/ru/page-languages.json
+++ b/src/intl/ru/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Хотите просматривать ethereum.org на другом языке?",
"page-languages-want-more-link": "Программа перевода",
"page-languages-want-more-paragraph": "Переводчики ethereum.org всегда переводят страницы на как можно большее количество языков. Чтобы посмотреть, над чем они сейчас работают, или зарегистрироваться, чтобы присоединиться к ним, прочитайте о нашем",
- "page-languages-filter-placeholder": "Фильтр",
+ "page-languages-filter-label": "Фильтр по списку",
+ "page-languages-filter-placeholder": "Введите текст для фильтрации",
+ "page-languages-browser-default": "Браузер по умолчанию",
+ "page-languages-translated": "переведено",
+ "page-languages-words": "слова",
+ "page-languages-recruit-community": "Помогите нам с переводом ethereum.org.",
+ "langauge-am": "Амхарский",
"language-ar": "Арабский",
"language-az": "Азербайджанский",
+ "langauge-be": "Белорусский",
"language-bg": "Болгарский",
"language-bn": "Бенгальский",
+ "language-bs": "Боснийский",
"language-ca": "Каталанский",
"language-cs": "Чешский",
"language-da": "Датский",
@@ -32,6 +40,7 @@
"language-hi": "Хинди",
"language-hr": "Хорватский",
"language-hu": "Венгерский",
+ "language-hy-am": "Армянский",
"language-id": "Индонезийский",
"language-ig": "Игбо",
"language-it": "Итальянский",
@@ -39,13 +48,15 @@
"language-ka": "Грузинский",
"language-kk": "Казахский",
"language-km": "Кхмерский",
+ "language-kn": "Каннада",
"language-ko": "Корейский",
"language-lt": "Литовский",
"language-ml": "Малаялам",
"language-mr": "Маратхи",
"language-ms": "Малайский",
"language-nb": "Норвежский",
- "language-nl": "Нидерландский",
+ "language-ne-np": "Непальский",
+ "language-nl": "Голландский",
"language-pcm": "Нигерийский пиджин",
"language-fil": "Филиппинский",
"language-pl": "Польский",
@@ -58,8 +69,9 @@
"language-sl": "Словенский",
"language-sr": "Сербский",
"language-sw": "Суахили",
- "language-th": "Тайский",
"language-ta": "Тамильский",
+ "language-th": "Тайский",
+ "language-tk": "Туркменский",
"language-tr": "Турецкий",
"language-uk": "Украинский",
"language-ur": "Урду",
diff --git a/src/intl/ru/page-learn.json b/src/intl/ru/page-learn.json
index 9b308ea726d..86ad946a0c3 100644
--- a/src/intl/ru/page-learn.json
+++ b/src/intl/ru/page-learn.json
@@ -11,7 +11,7 @@
"hero-subtitle": "Ваш учебный справочник по миру Ethereum. Узнайте, как работает Ethereum и как подключиться к сети. Эта страница содержит технические и нетехнические статьи, руководства и ресурсы.",
"hero-button-lets-get-started": "Начать",
"what-is-crypto-1": "Возможно, вы слышали о криптовалютах, блокчейнах и биткоине. Ссылки ниже помогут вам узнать, что они из себя представляют и как они относятся к Ethereum.",
- "what-is-crypto-2": "Криптовалюты, такие как биткоин, позволяют кому угодно переводить деньги по всему миру. Ethereum делает то же, но также может запустить код, который позволяет людям создавать приложения и организации. Это сочетает упругость и гибкость: любая компьютерная программа может работать на Ethereum. Откройте для себя больше и узнайте, как начать:",
+ "what-is-crypto-2": "Криптовалюты, такие как биткоин, позволяют людям переводить деньги по всему миру. Ethereum делает то же, но также может запустить код, который позволяет людям создавать приложения и организации. Это дает стойкость и гибкость: любая компьютерная программа может работать на Ethereum. Узнайте больше, в том числе о том, как начать использовать Ethereum.",
"what-is-ethereum-card-title": "Что такое Ethereum?",
"what-is-ethereum-card-description": "Если вы заинтересовались Ethereum недавно, узнайте здесь о преимуществах платформы.",
"what-is-ethereum-card-image-alt": "Изображение человека, заглядывающего на базар, призвано быть олицетворением Ethereum.",
diff --git a/src/intl/ru/page-stablecoins.json b/src/intl/ru/page-stablecoins.json
index 9c70f6b63cf..db08b137618 100644
--- a/src/intl/ru/page-stablecoins.json
+++ b/src/intl/ru/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Источник",
"page-stablecoins-bitcoin-pizza": "The Infamous Bitcoin Pizza",
"page-stablecoins-bitcoin-pizza-body": "В 2010 году кто-то купил две пиццы за 10 000 биткоинов. В то время они стоили около 41 доллара. На сегодняшний день это миллионы долларов. В истории Ethereum бывали и другие транзакции, о которых люди жалели. Стабильные монеты решают эту проблему, так что вы можете наслаждаться пиццей и хранить свои ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Панель инструментов и образование",
"page-stablecoins-coin-price-change": "Изменение цены монет (за последние 30 дней)",
"page-stablecoins-crypto-backed": "Обеспечено криптовалютой",
"page-stablecoins-crypto-backed-con-1": "Менее стабильные, чем фиатные стабильные монеты.",
diff --git a/src/intl/ru/page-wallets-find-wallet.json b/src/intl/ru/page-wallets-find-wallet.json
index c5d8d2087a0..038cc3f13bc 100644
--- a/src/intl/ru/page-wallets-find-wallet.json
+++ b/src/intl/ru/page-wallets-find-wallet.json
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Кошельки с расширениями для браузеров",
"page-find-wallet-device": "Устройство",
"page-find-choose-to-compare": "Выбрать для сравнения",
- "page-find-wallet-choose-features": "Выберите функции"
+ "page-find-wallet-choose-features": "Выберите функции",
+ "page-find-wallet-reset-filters": "Сбросить фильтры"
}
diff --git a/src/intl/se/common.json b/src/intl/se/common.json
index 64c07275cc7..346fac1ab7f 100644
--- a/src/intl/se/common.json
+++ b/src/intl/se/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Kontoabstraktion",
"about-ethereum-org": "Om ethereum.org",
"about-us": "Om oss",
+ "adding-desci-projects": "Lägga till Desci-projekt",
+ "adding-developer-tools": "Lägga till utvecklarverktyg",
+ "adding-exchanges": "Lägga till börser",
+ "adding-glossary-terms": "Lägga till ordlistetermer",
+ "adding-staking-products": "Lägga till utsättningsprodukter",
+ "adding-wallets": "Lägga till plånböcker",
+ "account-abstraction": "Kontoabstraktion",
+ "acknowledgements": "Tack till",
"aria-toggle-search-button": "Växla sökknappen",
"aria-toggle-menu-button": "Växla menyknappen",
"beacon-chain": "Beacon-kedjan",
"bridges": "Blockkedjebryggor",
+ "bug-bounty": "Hittelön för skadlig kod",
+ "build": "Bygg",
+ "build-menu": "Byggmeny",
"clear": "Rensa",
"close": "Stäng",
- "community": "Community",
+ "community": "Gemenskap",
"community-hub": "Gemenskapshubben",
"community-menu": "Gemenskapsmenyn",
"contact": "Kontakta oss",
+ "content-buckets": "Innehållsämnen",
+ "content-resources": "Innehållsresurser",
"content-standardization": "Standardisering av innehåll",
"contributing": "Bidragande",
"contributors": "Bidragsgivare",
@@ -20,14 +32,17 @@
"copied": "Kopierad",
"copy": "Kopiera",
"danksharding": "Danksharding",
- "dao-page": "Decentraliserade autonoma organisationer (DAO)",
+ "dao-page": "DAO - Decentraliserade autonoma organisationer",
"dark-mode": "Mörkt",
"data-provided-by": "Datakälla:",
- "decentralized-applications-dapps": "Decentraliserade program (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentraliserade program",
"decentralized-identity": "Decentraliserad identitet",
"decentralized-social-networks": "Decentraliserade sociala nätverk",
- "decentralized-science": "Decentraliserad vetenskap (DeSci)",
- "defi-page": "Decentraliserad finansiering (DeFi)",
+ "decentralized-science": "DeSci - Decentraliserad vetenskap",
+ "description": "Beskrivning för navobjekt",
+ "defi-page": "DeFi - Decentraliserad finansiering",
+ "design": "Design",
+ "design-principles": "Designprinciper",
"devcon": "Devcon",
"developers": "Utvecklare",
"developers-home": "Startsida för utvecklare",
@@ -59,22 +74,24 @@
"enterprise-menu": "Företagsmeny",
"esp": "Stödprogram för ekosystemet",
"eth-current-price": "Nuvarande ETH-pris (USD)",
+ "ethereum-basics": "Grunderna i Ethereum",
"ethereum-bug-bounty": "Ethereums program för hittelön för skadlig kod",
"consensus-when-shipping": "När lanseras det?",
"ethereum-upgrades": "Ethereum-uppgraderingar",
"ethereum-brand-assets": "Ethereum-varumärkestillgångar",
- "ethereum-online": "Communitys online",
+ "ethereum-online": "Gemenskaper online",
"ethereum-events": "Ethereum-evenemang",
"ethereum-foundation": "Ethereum Foundation",
"ethereum-foundation-logo": "Ethereum Foundation-logotyp",
"ethereum-glossary": "Ethereum-ordlista",
"ethereum-governance": "Ethereum – styrning",
"ethereum-logo": "Ethereum-logotyp",
- "ethereum-roadmap": "Färdplan för Ethereum",
+ "ethereum-roadmap": "Vägkarta för Ethereum",
+ "ethereum-protocol": "Ethereum-protokoll",
"ethereum-security": "Ethereum – skydd och förebyggande av bedrägerier",
"ethereum-support": "Ethereum-support",
"ethereum-wallets": "Ethereum-plånböcker",
- "ethereum-whitepaper": "Vitbok för Ethereum",
+ "ethereum-whitepaper": "Ethereum-faktablad",
"feedback-widget-prompt": "Är den här sidan till hjälp?",
"feedback-card-prompt-page": "Var den här sidan till hjälp?",
"feedback-card-prompt-article": "Var den här artikeln till hjälp?",
@@ -92,11 +109,10 @@
"grants": "Anslag",
"grant-programs": "Anslagsprogram för ekosystemet",
"guides": "Guider",
- "guides-hub": "Hubb för guider",
+ "guides-hub": "Guider",
"history-of-ethereum": "Ethereums historia",
"home": "Startsida",
"how-ethereum-works": "Så här fungerar Ethereum",
- "how-to-create-an-ethereum-account": "Så här \"registrerar\" man ett Ethereum-konto",
"how-to-revoke-token-access": "Så här återkallar du åtkomsten till smarta kontrakt för dina kryptofonder",
"how-to-swap-tokens": "Så här byter man polletter",
"how-to-use-a-bridge": "Så här överför man polletter till lager 2",
@@ -123,13 +139,112 @@
"loading": "Laddar ...",
"loading-error": "Laddningsfel.",
"loading-error-refresh": "Fel, uppdatera.",
+ "loading-error-try-again-later": "Det gick inte att läsa in data. Försök igen senare.",
"logo": "logotyp",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Sammanfoga",
"more": "Mer",
- "nav-developers": "Utvecklare",
+ "nav-about-description": "Ett kollektivt projekt med öppen källa för Ethereum-communityn",
+ "nav-advanced-description": "Lär dig om de mer komplexa ämnena",
+ "nav-advanced-label": "Avancerat",
+ "nav-basics-description": "Förstå grunderna i Ethereum",
+ "nav-basics-label": "Grunderna",
+ "nav-bridges-description": "Web3 har utvecklats till ett ekosystem av primära L1-blockkedjor och L2-skalningslösningar",
+ "nav-builders-home-description": "En bygghandbok för Ethereum – av byggare, för byggare",
+ "nav-builders-home-label": "Startsida för byggare",
+ "nav-contribute-description": "Om du vill ha hjälp kommer denna handbok att vägleda dig",
+ "nav-contribute-label": "Bidra till ethereum.org",
+ "nav-dao-description": "Medlemsägda gemenskaper utan centraliserad ledning",
+ "nav-dapps-description": "Utforska ett rikt ekosystem av appar med Ethereum",
+ "nav-defi-description": "Ett globalt, öppet alternativ till den traditionella finansiella marknaden",
+ "nav-desci-description": "Ett globalt, öppet alternativ till det nuvarande vetenskapliga systemet",
+ "nav-desoc-description": "Blockkedjebaserade plattformar för social interagering och innehållsskapande",
"nav-developers-docs": "Utvecklardokument",
+ "nav-developers": "Utvecklare",
+ "nav-did-description": "Skapa och äg dina unika decentraliserade identifierare",
+ "nav-docs-description": "Dokument som hjälper dig att förstå och bygga med Ethereum",
+ "nav-docs-design-description": "Beskrivning av unika web3-designutmaningar, bästa praxis och insikter om användarforskning",
+ "nav-docs-design-label": "Grunder för UX/UI-design",
+ "nav-docs-foundation-description": "Grunderna för att utveckla på Ethereum",
+ "nav-docs-foundation-label": "Grundläggande ämnen",
+ "nav-docs-overview-description": "Din startsida för dokument för utvecklare",
+ "nav-docs-stack-description": "Förstå alla detaljerna i Ethereum-stacken",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Standarder som specificerar nya funktioner och processer",
+ "nav-eip-label": "EIP:er - Förbättringsförslag för Ethereum",
+ "nav-emerging-description": "Få reda på andra nya användarfall för Ethereum",
+ "nav-enterprise-description": "Företagsapplikationer för Ethereum",
+ "nav-ethereum-org-description": "Den här webbplatsen drivs av communityn – delta och bidra själv",
+ "nav-ethereum-wallets-description": "En app för att interagera med ditt Ethereum-konto",
+ "nav-events-description": "Decentralisering och frihet att delta för alla",
+ "nav-events-irl-description": "Varje månad äger stora Ethereum-evenemang rum i verkligheten och online",
+ "nav-events-label": "Gemenskaper och evenemang",
+ "nav-events-online-description": "Hundratusentals Ethereum-entusiaster ligger bakom dessa onlinegemenskaper",
+ "nav-find-wallet-description": "Med plånböcker kan du använda crypto",
+ "nav-find-wallet-label": "Välj din plånbok",
+ "nav-gas-fees-description": "Hur ETH-transaktionsavgifter beräknas",
+ "nav-get-eth-description": "Du behöver ether (ETH) för att använda Ethereum-applikationer",
+ "nav-get-started-description": "Dina första steg för att använda Ethereum",
+ "nav-governance-description": "Processen att uppgradera Ethereum-protokollet",
+ "nav-governance-label": "Styrning",
+ "nav-grants-description": "En kurerad lista av vår gemenskap med projekt som tillhandahåller program för stipendiefinansering",
+ "nav-guide-create-account-description": "Vem som helst kan när som helst skapa ett Ethereum-konto gratis med en plånboksapp",
+ "nav-guide-revoke-access-description": "Håll dig säker när du interagerar med smarta kontrakt och applikationer i Ethereum-ekosystemet",
+ "nav-guide-revoke-access-label": "Så nekar du åtkomst till smarta kontrakt",
+ "nav-guide-use-wallet-description": "Ta reda på hur du använder alla grundläggande funktioner för en plånbok",
+ "nav-guide-use-wallet-label": "Så här använder man en plånbok",
+ "nav-guides-description": "Praktiska steg-för-steg-guider som hjälper dig att komma igång",
+ "nav-guides-label": "Guider",
+ "nav-history-description": "En tidslinje för alla viktiga förgreningar och uppdateringar",
+ "nav-history-label": "Ethereums tekniska historia",
+ "nav-layer-2-description": "Billigare och snabbare transaktioner för Ethereum",
+ "nav-learn-by-coding-description": "Verktyg som hjälper dig att experimentera med Ethereum",
+ "nav-local-env-description": "Välj och konfigurera din Ethereum-utvecklingsstack",
+ "nav-mainnet-description": "Enterprise-blockkedjeapplikationer kan byggas på det kollektiva Ethereum-huvudnätverket",
+ "nav-nft-description": "Ett sätt att representera något unikt som en Ethereum-baserad tillgång",
+ "nav-open-research-description": "En av de främsta styrkorna med Ethereum är dess aktiva forskningsgemenskap",
+ "nav-open-research-label": "Öppen forskning",
+ "nav-overview-description": "Allt om Ethereum-utbildning",
+ "nav-participate-overview-description": "Översikt över hur du deltar",
"nav-primary": "Primär",
- "nft-page": "Icke-fungibla polletter (NFT)",
+ "nav-quizzes-description": "Ta reda på hur väl du förstår Ethereum och kryptovalutor",
+ "nav-quizzes-label": "Testa dina kunskaper",
+ "nav-refi-description": "Ett alternativt ekonomiskt system byggt på regenerativa principer",
+ "nav-research-description": "Processer som används för att förbättra Ethereum",
+ "nav-research-label": "Forskning och utveckling",
+ "nav-roadmap-description": "Vägen till ökad skalbarhet, säkerhet och hållbarhet för Ethereum",
+ "nav-roadmap-future-description": "Stärker Ethereum som ett robust och decentraliserat nätverk",
+ "nav-roadmap-future-label": "Framtidssäkring",
+ "nav-roadmap-label": "Vägkarta",
+ "nav-roadmap-scaling-description": "Nätverksuppdateringar för att ytterligare reducera transaktionskostnader och hastighet",
+ "nav-roadmap-security-description": "Se till att Ethereum håller sig motståndskraftigt mot alla typer av angrepp i framtiden",
+ "nav-roadmap-security-label": "Förbättrad säkerhet",
+ "nav-roadmap-ux-description": "Användningen av Ethereum måste förenklas",
+ "nav-run-a-node-description": "Bli hypereffektiv samtidigt som du hjälper till att göra nätverket säkert",
+ "nav-security-description": "Lär dig bästa praxis för att använda kryptovaluta",
+ "nav-smart-contracts-description": "De grundläggande byggnadsblocken i Ethereum-ekosystemet",
+ "nav-stablecoins-description": "Stablecoins är Ethereum-tokens som är utformade för att ha ett fast värde",
+ "nav-stake-description": "Få belöningar för att göra Ethereum säkrare",
+ "nav-stake-label": "Insats",
+ "nav-staking-home-description": "En översikt över olika alternativ för utsättningar",
+ "nav-staking-home-label": "Staking startsida",
+ "nav-staking-pool-description": "Satsa och få belöningar med valfri mängd ETH genom att gå samman med andra",
+ "nav-staking-pool-label": "Sammansatt utsättning",
+ "nav-staking-saas-description": "Nodoperatörer från tredje part hanterar driften av din valideringsklient",
+ "nav-staking-saas-label": "Utsättning med en tjänst",
+ "nav-staking-solo-description": "Kör hem hårdvara och personligen lägg till säkerheten och decentraliseringen av Ethereum-nätverket",
+ "nav-staking-solo-label": "Soloutsättning",
+ "nav-start-building-description": "Användbar information för nybörjare",
+ "nav-translation-program-description": "Ett samarbetsprojekt för att översätta ethereum.org till alla språk",
+ "nav-tutorials-description": "Kurerad lista över community-guider",
+ "nav-use-cases-description": "Upptäck olika idéer för Ethereum-användning",
+ "nav-what-is-ether-description": "Valutan för Ethereum-appar",
+ "nav-what-is-ethereum-description": "Förstå vad som gör Ethereum speciellt",
+ "nav-what-is-web3-label": "Vad är Web3?",
+ "nav-what-is-web3-description": "Ett alternativ till centraliserade monopol som bestämmer reglerna",
+ "nav-whitepaper-description": "Det ursprungliga Ethereum-faktabladet skrivet av Vitalik Buterin år 2014",
+ "nav-zkp-description": "Ett sätt att bevisa giltigheten i ett uttalande utan att avslöja själva uttalandet",
+ "nft-page": "NFT - Icke-fungibla polletter",
"nfts": "NFT:er",
"no": "Nej",
"on-this-page": "På denna sida",
@@ -137,44 +252,50 @@
"page-developers-aria-label": "Utvecklarmeny",
"page-index-meta-title": "Startsida",
"page-last-updated": "Sidan uppdaterades senast",
+ "participate": "Delta",
+ "participate-menu": "Deltagandemeny",
"pbs": "Separering av förslagsgivare och byggare",
- "pools": "Sammansatt stakning",
+ "pools": "Sammansatt utsättning",
"privacy-policy": "Sekretesspolicy",
"private-ethereum": "Privat Ethereum",
- "product-disclaimer": "Produkter och tjänster listas för att underlätta för personerna i Ethereum-communityn. En produkt eller tjänst som finns med i listan innebär inte en rekommendation eller någon typ av godkännande från teamet för webbplatsen ethereum.org eller Ethereum Foundation.",
- "quizzes-title": "Kvisshubben",
+ "product-disclaimer": "Produkter och tjänster listas för att underlätta för personerna i Ethereum-gemenskapen. En produkt eller tjänst som finns med i listan innebär inte en rekommendation eller någon typ av godkännande från teamet för webbplatsen ethereum.org eller Ethereum Foundation.",
+ "quizzes-title": "Frågesportshubben",
"quizzes": "Frågesporter",
"refresh": "Uppdatera sidan.",
"return-home": "återgå till startsidan",
- "roadmap": "Färdplan för Ethereum",
+ "roadmap": "Vägkarta för Ethereum",
+ "research": "Forskning",
+ "research-menu": "Forskningsmeny",
+ "resources": "Översättningsresurser",
"run-a-node": "Kör en nod",
"rollup-component-website": "Webbplats",
"rollup-component-developer-docs": "Utvecklardokument",
"rollup-component-technology-and-risk-summary": "Teknik- och risksammanfattning",
"scaling": "Skalning",
- "saas": "Staking som en tjänst",
+ "saas": "Utsättning som en tjänst",
"search": "Sök",
"search-ethereum-org": "Sök på ethereum.org",
"secret-leader-election": "Hemligt val av ledare",
"search-box-blank-state-text": "Sök!",
- "search-eth-address": "Detta ser ut som en Ethereum-adress. Vi tillhandahåller inte data som är specifik för adresser. Försök att söka efter det på en blockutforskare som",
+ "search-eth-address": "Detta ser ut som en Ethereum-adress. Vi tillhandahåller inte data som är specifika för adresser. Försök att söka efter det på en blockutforskare som",
"search-no-results": "Vi hittade inga resultat för din sökning",
+ "security": "Säkerhet",
"single-slot-finality": "Single-slot finality (SSF)",
"statelessness": "Statslöshet",
"see-contributors": "Se medverkande",
"set-up-local-env": "Konfigurera lokal miljö",
- "sharding": "Horisontell partitionering",
+ "sharding": "Sharding",
"show-all": "Visa alla",
"show-less": "Visa mindre",
"site-description": "Ethereum är en global, decentraliserad plattform för pengar och nya slags applikationer. På Ethereum kan du skriva kod som styr pengar och bygga appar som är tillgängliga var som helst i världen.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Hoppa till huvudinnehållet",
"smart-contracts": "Smarta kontrakt",
"stablecoins": "Stablecoins",
"stake-eth": "Stake ETH",
- "staking": "Staking",
- "style-guide": "Style guide",
- "solo": "Solo-staking",
+ "staking": "Utsättning",
+ "start-here": "Börja här",
+ "solo": "Soloutsättning",
+ "support": "Hjälp",
"terms-of-use": "Användarvillkor",
"translation-banner-body-new": "Du ser den här sidan på engelska eftersom vi inte har översatt den än. Hjälp oss att översätta detta innehåll.",
"translation-banner-body-update": "Det finns en ny version av den här sidan men den finns bara på engelska just nu. Hjälp oss att översätta den senaste versionen.",
@@ -185,21 +306,23 @@
"translation-banner-no-bugs-title": "Inga buggar här!",
"translation-banner-no-bugs-content": "Den här sidan översätts inte. Vi har avsiktligt lämnat den här sidan på engelska för tillfället.",
"translation-banner-no-bugs-dont-show-again": "Visa inte igen",
+ "translation-program": "Översättningsprogram",
"try-using-search": "Prova att använda sökfunktionen för att hitta det du letar efter eller",
"tutorials": "Handledningar",
"up": "Upp",
+ "use": "Använd",
"use-ethereum": "Använda Ethereum",
- "use-ethereum-menu": "Använd Ethereum-menyn",
- "user-experience": "User experience",
+ "use-ethereum-menu": "Använda Ethereum-menyn",
+ "use-menu": "Användningsmeny",
"verkle-trees": "Verkle-träd",
"wallets": "Plånböcker",
- "we-couldnt-find-that-page": "Vi kunde inte hitta den sidan",
+ "we-couldnt-find-that-page": "Vi kunde inte hitta sidan",
"web3": "Vad är Web3?",
"web3-title": "Web3",
"website-last-updated": "Webbplatsen senast uppdaterad",
- "what-is-ether": "Vad är ether (ETH)?",
+ "what-is-ether": "Vad är Ether (ETH)?",
"what-is-ethereum": "Vad är Ethereum?",
- "withdrawals": "Staking-uttag",
+ "withdrawals": "Utsättningsuttag",
"yes": "Ja",
"zero-knowledge-proofs": "Nollkunskapsbevis"
}
diff --git a/src/intl/se/page-dapps.json b/src/intl/se/page-dapps.json
index 776821f77d1..8a2c8db0a4c 100644
--- a/src/intl/se/page-dapps.json
+++ b/src/intl/se/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Strömma pengar i realtid.",
"page-dapps-dapp-description-superrare": "Köp digitala konstverk direkt från konstnärer eller på andrahandsmarknader.",
"page-dapps-dapp-description-token-sets": "Kryptoinvesteringsstrategier som automatiskt återbalanseras.",
- "page-dapps-dapp-description-tornado-cash": "Skicka anonyma transaktioner på Ethereum.",
"page-dapps-dapp-description-uniswap": "Byt polleter på ett enkelt sätt eller tillhandahåll polletter i utbyte mot %-belöningar.",
"page-dapps-dapp-description-dexguru": "Handelsterminal för DeFi-handlare som inte är frihetsberövande",
"page-dapps-docklink-dapps": "Introduktion till dapps",
@@ -198,7 +197,6 @@
"page-dapps-technology-description": "Det handlar om applikationer som fokuserar på att decentralisera utvecklarverktyg, integrera kryptoekonomiska system i befintlig teknik och skapa marknadsplatser för utvecklingsarbete med öppen källkod.",
"page-dapps-technology-title": "Decentraliserad teknik",
"page-dapps-token-sets-logo-alt": "Token Sets-logotyp",
- "page-dapps-tornado-cash-logo-alt": "Tornado kontantlogotyp",
"page-dapps-uniswap-logo-alt": "Uniswap-logotyp",
"page-dapps-wallet-callout-button": "Hitta plånbok",
"page-dapps-wallet-callout-description": "Plånböcker är också dappar. Hitta en baserad på de funktioner som passar dig.",
diff --git a/src/intl/se/page-languages.json b/src/intl/se/page-languages.json
index d3e5ff49e3d..a2667712bbd 100644
--- a/src/intl/se/page-languages.json
+++ b/src/intl/se/page-languages.json
@@ -1,4 +1,22 @@
{
+ "page-languages-h1": "Språksupport",
+ "page-languages-interested": "Intresserad av att bidra?",
+ "page-languages-learn-more": "Lär dig mer om vårt översättningsprogram",
+ "page-languages-meta-desc": "Resurser till alla språk som stöds av ethereum.org och sätt att engagera sig som översättare.",
+ "page-languages-meta-title": "ethereum.org översättningar",
+ "page-languages-p1": "Ethereum är ett globalt projekt, och det är avgörande att ethereum.org är tillgängligt för alla, oavsett nationalitet eller språk. Vårt samhälle har arbetat hårt för göra denna vision till verklighet.",
+ "page-languages-translations-available": "ethereum.org är tillgänglig på följande språk",
+ "page-languages-resources-paragraph": "Förutom att översätta ethereum.org-innehåll underhåller vi också en",
+ "page-languages-resources-link": "kurerad lista över Ethereum-resurser på flera språk",
+ "page-languages-want-more-header": "Vill du se ethereum.org på ett annat språk?",
+ "page-languages-want-more-link": "Översättningsprogram",
+ "page-languages-want-more-paragraph": "ethereum.org-översättare översätter alltid sidor på så många språk som möjligt. För att se vad de jobbar med just nu eller för att registrera dig för att gå med dem, läs om vår",
+ "page-languages-filter-label": "Filterlista",
+ "page-languages-filter-placeholder": "Skriv för att filtrera",
+ "page-languages-browser-default": "Standardwebbläsare",
+ "page-languages-translated": "översatt",
+ "page-languages-words": "ord",
+ "page-languages-recruit-community": "Hjälp oss att översätta ethereum.org.",
"language-ar": "Arabiska",
"language-az": "Azerbajdzjanska",
"language-bg": "Bulgariska",
diff --git a/src/intl/se/page-stablecoins.json b/src/intl/se/page-stablecoins.json
index da1d5be3aec..f7e3e468c66 100644
--- a/src/intl/se/page-stablecoins.json
+++ b/src/intl/se/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Källa",
"page-stablecoins-bitcoin-pizza": "Den ökända Bitcoin-pizzan",
"page-stablecoins-bitcoin-pizza-body": "År 2010 köpte någon 2 pizzor för 10 000 bitcoin. På den tiden dessa var värda ungefär 41 USD. På dagens marknad skulle detta vara miljontals dollar. Det finns många liknande beklagliga transaktioner i Ethereums historia. Stablecoins lösa detta problem, så att du kan njuta av din pizza men ändå ha kvar dina ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Instrumentpanel och utbildning",
"page-stablecoins-coin-price-change": "Förändring av myntvärdet (senaste 30 dagarna)",
"page-stablecoins-crypto-backed": "Stödd av krypto",
"page-stablecoins-crypto-backed-con-1": "Mindre stabila än fiat-stödda stablecoins.",
diff --git a/src/intl/sk/common.json b/src/intl/sk/common.json
index 7d7e602c70e..fdf669ccb48 100644
--- a/src/intl/sk/common.json
+++ b/src/intl/sk/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Abstrakcia účtu",
"about-ethereum-org": "O ethereum.org",
"about-us": "O nás",
+ "adding-desci-projects": "Pridávanie projektov Desci",
+ "adding-developer-tools": "Pridávanie nástrojov pre vývojárov",
+ "adding-exchanges": "Pridávanie zmenární",
+ "adding-glossary-terms": "Pridávanie pojmov do slovníka",
+ "adding-staking-products": "Pridávanie produktov pre staking",
+ "adding-wallets": "Pridávanie peňaženiek",
+ "account-abstraction": "Abstrakcia účtu",
+ "acknowledgements": "Poďakovania",
"aria-toggle-search-button": "Prepínač vyhľadávania",
"aria-toggle-menu-button": "Prepínač ponuky",
"beacon-chain": "Beacon Chain",
"bridges": "Mosty blockchainu",
+ "bug-bounty": "Odmena za nájdenie chýb",
+ "build": "Zostava",
+ "build-menu": "Ponuka Zostava",
"clear": "Vymazať",
"close": "Zavrieť",
"community": "Komunita",
"community-hub": "Komunitné centrum",
"community-menu": "Ponuka Komunita",
"contact": "Kontakt",
+ "content-buckets": "Kategórie",
+ "content-resources": "Zdroje",
"content-standardization": "Štandardizácia obsahu",
"contributing": "Príspevky",
"contributors": "Prispievatelia",
@@ -20,14 +32,17 @@
"copied": "Skopírované",
"copy": "Kopírovať",
"danksharding": "Danksharding",
- "dao-page": "Decentralizované autonómne organizácie (DAO)",
+ "dao-page": "DAO - Decentralizované autonómne organizácie",
"dark-mode": "Tmavé",
"data-provided-by": "Zdroj dát:",
- "decentralized-applications-dapps": "Decentralizované aplikácie (dapp)",
+ "decentralized-applications-dapps": "Dapp - Decentralizované aplikácie",
"decentralized-identity": "Decentralizovaná identita",
"decentralized-social-networks": "Decentralizovaná sociálna sieť",
- "decentralized-science": "Decentralizovaná veda (DeSci)",
- "defi-page": "Decentralizované finančníctvo (DeFi)",
+ "decentralized-science": "DeSci - Decentralizovaná veda",
+ "description": "Popis položky navigácie",
+ "defi-page": "DeFi - Decentralizované finančníctvo",
+ "design": "Dizajn",
+ "design-principles": "Princípy dizajnu",
"devcon": "Developerská konferencia",
"developers": "Vývojári",
"developers-home": "Domovská stránka pre vývojárov",
@@ -63,7 +78,7 @@
"ethereum-bug-bounty": "Program na lovenie chýb v ethereu",
"consensus-when-shipping": "Kedy vychádza?",
"ethereum-upgrades": "Vylepšenia Etherea",
- "ethereum-brand-assets": "Zdroje značky Ethereum",
+ "ethereum-brand-assets": "Značkové položky Ethereum",
"ethereum-online": "Online komunity",
"ethereum-events": "Udalosti Ethereum",
"ethereum-foundation": "Nadácia Etherea",
@@ -83,7 +98,7 @@
"feedback-card-prompt-tutorial": "Bol tento návod užitočný?",
"feedback-widget-thank-you-title": "Ďakujeme za názor!",
"feedback-widget-thank-you-subtitle": "Urobte túto stránku lepšou zodpovedaním na pár otázok.",
- "feedback-widget-thank-you-subtitle-ext": "Pokiaľ potrebujete pomoc môžte za obrátiť na komunitný kanál na Discorde.",
+ "feedback-widget-thank-you-subtitle-ext": "Ak potrebujete pomoc, môžete sa obrátiť na komunitu na Discord.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Krátky prieskum",
"find-wallet": "Nájsť peňaženku",
@@ -94,11 +109,10 @@
"grants": "Granty",
"grant-programs": "Programy ekosystémových grantov",
"guides": "Nápoveda",
- "guides-hub": "Centrum nápoved",
+ "guides-hub": "Návody",
"history-of-ethereum": "História Etherea",
"home": "Domov",
"how-ethereum-works": "Ako Ethereum funguje",
- "how-to-register-an-ethereum-account": "Ako si \"zaregistrovať\" účet Etherea",
"how-to-revoke-token-access": "Ako zrušiť prístup chytrého kontraktu k Vašim prostriedkom",
"how-to-swap-tokens": "Ako zameniť tokeny / kryptomeny",
"how-to-use-a-bridge": "Ako preniesť tokeny do siete druhej úrovne",
@@ -128,11 +142,104 @@
"loading-error-try-again-later": "Nemožné načítať údaje. Skúste to znova.",
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Zlúčenie",
"more": "Viac",
- "nav-developers": "Pre vývojárov",
+ "nav-about-description": "Verejný projekt s otvoreným zdrojovým kódom pre komunitu Ethereum",
+ "nav-advanced-description": "Zoznámte sa so zložitejšími témami",
+ "nav-advanced-label": "Pre pokročilých",
+ "nav-basics-description": "Pochopenie základov Etherea",
+ "nav-basics-label": "Základy",
+ "nav-bridges-description": "Web3 sa vyvinul do ekosystému primárnych blockchainov L1 a škálovacích riešení L2",
+ "nav-builders-home-description": "Príručka programátora pre Ethereum — programátori programátorom",
+ "nav-builders-home-label": "Domovská stránka pre programátorov",
+ "nav-contribute-description": "Ak chcete pomôcť, toto vám poskytne návod",
+ "nav-contribute-label": "Prispievanie na portál ethereum.org",
+ "nav-dao-description": "Členské komunity bez centralizovanej autority",
+ "nav-dapps-description": "Preskúmajte bohatý ekosystém aplikácií využívajúcich Ethereum",
+ "nav-defi-description": "Globálna, otvorená alternatíva k tradičnému finančnému trhu",
+ "nav-desci-description": "Globálna, otvorená alternatíva k súčasnému vedeckému systému",
+ "nav-desoc-description": "Platformy založené na blockchaine pre sociálnu interakciu a tvorbu obsahu",
"nav-developers-docs": "Vývojárske dokumenty",
+ "nav-developers": "Vývojári",
+ "nav-did-description": "Vydávajte a vlastnite svoje jedinečné decentralizované identifikátory",
+ "nav-docs-description": "Dokumenty, ktoré vám pomôžu pochopiť a vytvoriť systémy pomocou Etherea",
+ "nav-docs-design-description": "Opis jedinečných výziev v oblasti dizajnu web3, osvedčených postupov a skúseností používateľov",
+ "nav-docs-design-label": "Základy dizajnu UX/UI",
+ "nav-docs-foundation-description": "Hlavné princípy vývoja na platforme Ethereum",
+ "nav-docs-overview-description": "Vaša domovská stránka s dokumentmi pre vývojárov",
+ "nav-docs-stack-description": "Pochopenie všetkých podrobností o Ethereum stack",
+ "nav-eip-description": "Štandardy, ktoré špecifikujú nové funkcie alebo procesy",
+ "nav-eip-label": "EIP - Návrhy na zlepšenie Etherea",
+ "nav-emerging-description": "Spoznajte ďalšie novšie prípady použitia Etherea",
+ "nav-enterprise-description": "Obchodné aplikácie pre Ethereum",
+ "nav-ethereum-org-description": "Táto webová stránka je vytvorená komunitou — pridajte sa k nám a prispievajte aj vy",
+ "nav-ethereum-wallets-description": "Aplikácia na interakciu s vaším účtom Ethereum",
+ "nav-events-description": "Decentralizácia a možnosť účasti pre každého",
+ "nav-events-irl-description": "Každý mesiac sa konajú významné osobné a online podujatia zamerané na Ethereum",
+ "nav-events-label": "Komunity a podujatia",
+ "nav-events-online-description": "Súčasťou týchto online komunít sú stovky tisíc nadšencov Etherea",
+ "nav-find-wallet-description": "Peňaženky, ktoré umožňujú používať kryptomeny",
+ "nav-find-wallet-label": "Vyberte si peňaženku",
+ "nav-gas-fees-description": "Ako sa vypočítavajú poplatky za transakcie ETH",
+ "nav-get-eth-description": "Na používanie aplikácií Ethereum potrebujete ether (ETH)",
+ "nav-get-started-description": "Vaše prvé kroky pri používaní Etherea",
+ "nav-governance-description": "Proces aktualizácie protokolu Etherea",
+ "nav-governance-label": "Správa",
+ "nav-grants-description": "Zoznam zostavený našou komunitou týkajúci sa projektov, ktoré poskytujú grantové programy",
+ "nav-guide-create-account-description": "Účet Ethereum si môže kedykoľvek vytvoriť ktokoľvek, a to zadarmo pomocou aplikácie s peňaženkou",
+ "nav-guide-revoke-access-description": "Zostaňte v bezpečí pri interakcii s inteligentnými kontraktmi a aplikáciami v ekosystéme Ethereum",
+ "nav-guide-revoke-access-label": "Ako zrušiť prístup k inteligentným kontraktom",
+ "nav-guide-use-wallet-description": "Naučte sa ovládať všetky základné funkcie peňaženky",
+ "nav-guide-use-wallet-label": "Ako používať peňaženku",
+ "nav-guides-description": "Praktické podrobné príručky, ktoré vám pomôžu začať",
+ "nav-guides-label": "Organizačné príručky",
+ "nav-history-description": "Časová os všetkých hlavných verzií a aktualizácií",
+ "nav-history-label": "Technická história Etherea",
+ "nav-layer-2-description": "Lacnejšie a rýchlejšie transakcie pre Ethereum",
+ "nav-learn-by-coding-description": "Nástroje, ktoré vám pomôžu experimentovať s Ethereom",
+ "nav-local-env-description": "Výber a nastavenie vývojárskeho Ethereum stack",
+ "nav-mainnet-description": "Podnikové blockchainové aplikácie môžu byť vytvárané vo verejnej sieti Ethereum Mainnet",
+ "nav-nft-description": "Spôsob, ako reprezentovať čokoľvek unikátne ako majetok založený na Ethereu",
+ "nav-open-research-description": "Jednou z hlavných predností Etherea je jeho aktívna komunita výskumníkov",
+ "nav-open-research-label": "Otvoriť prieskum",
+ "nav-overview-description": "Všetko o vzdelávaní v oblasti Etherea",
+ "nav-participate-overview-description": "Prehľad o tom, ako sa zapojiť",
"nav-primary": "Primárne",
- "nft-page": "Non-fungible tokeny (NFT)",
+ "nav-quizzes-description": "Zistite, ako dobre rozumiete ethereu a kryptomenám",
+ "nav-quizzes-label": "Otestujte si svoje znalosti",
+ "nav-refi-description": "Alternatívny ekonomický systém založený na princípoch obnovy",
+ "nav-research-description": "Procesy používané na zlepšenie Etherea",
+ "nav-research-label": "Výskum a vývoj",
+ "nav-roadmap-description": "Cesta k väčšej škálovateľnosti, bezpečnosti a udržateľnosti pre Ethereum",
+ "nav-roadmap-future-description": "Posilnenie Etherea ako robustnej a decentralizovanej siete",
+ "nav-roadmap-future-label": "Zabezpečenie do budúcnosti",
+ "nav-roadmap-label": "Plán cesty",
+ "nav-roadmap-scaling-description": "Sieťové aktualizácie na ďalšie zníženie transakčných nákladov a zvýšenie rýchlosti",
+ "nav-roadmap-security-description": "Zabezpečenie odolnosti Etherea voči rôznym druhom útokov aj v budúcnosti",
+ "nav-roadmap-security-label": "Zlepšené zabezpečenie",
+ "nav-roadmap-ux-description": "Používanie Etherea sa musí zjednodušiť",
+ "nav-run-a-node-description": "Staňte na úplne samostatnými pri pomáhaní v zabezpečení siete",
+ "nav-security-description": "Naučte sa osvedčené postupy pri používaní kryptomien",
+ "nav-smart-contracts-description": "Základné stavebné bloky ekosystému Ethereum",
+ "nav-stablecoins-description": "Stablecoiny sú tokenmi Etherea, ktoré sú navrhnuté tak, aby mali fixnú hodnotu",
+ "nav-stake-description": "Získajte odmeny za zabezpečenie Etherea",
+ "nav-stake-label": "Staking",
+ "nav-staking-home-description": "Prehľad rôznych možností stakingu",
+ "nav-staking-pool-description": "Využívajte staking, získavajte odmeny s ľubovoľnou sumou ETH a pridajte sa k ostatným",
+ "nav-staking-pool-label": "Stakovanie v pooloch",
+ "nav-staking-saas-label": "Stakovanie ako služba",
+ "nav-staking-solo-label": "Sólo stakovanie",
+ "nav-start-building-description": "Užitočné informácie pre nováčikov",
+ "nav-translation-program-description": "Spoločné úsilie o preklad webovej lokality ethereum.org do všetkých jazykov",
+ "nav-tutorials-description": "Zoznam komunitných výukových materiálov",
+ "nav-use-cases-description": "Objavte rôzne nápady na využitie Etherea",
+ "nav-what-is-ether-description": "Mena aplikácií Etherea",
+ "nav-what-is-ethereum-description": "Pochopte, čím je Ethereum výnimočné",
+ "nav-what-is-web3-label": "Čo je Web3?",
+ "nav-what-is-web3-description": "Alternatíva k centralizovaným monopolom určujúcim pravidlá",
+ "nav-whitepaper-description": "Pôvodný dokument o Ethereu, ktorý napísal Vitalik Buterin v roku 2014",
+ "nav-zkp-description": "Spôsob, ako dokázať platnosť výroku bez odhalenia samotného výroku",
+ "nft-page": "NFT - Non-fungible tokeny",
"nfts": "NFT-čka",
"no": "Nie",
"on-this-page": "Na tejto stránke",
@@ -140,6 +247,8 @@
"page-developers-aria-label": "Ponuka pre vývojárov",
"page-index-meta-title": "Domov",
"page-last-updated": "Posledná aktualizácia stránky",
+ "participate": "Pripoj sa",
+ "participate-menu": "Ponuka účasti",
"pbs": "Oddelenie navrhovateľ-staviteľ",
"pools": "Stakovanie v pooloch",
"privacy-policy": "Zásady ochrany osobných údajov",
@@ -150,10 +259,11 @@
"refresh": "Obnovte stránku.",
"return-home": "návrat domov",
"roadmap": "Cestovná mapa Etherea",
+ "research": "Výskum",
+ "research-menu": "Ponuka Výskum",
"resources": "Zdroje prekladu",
- "regenerative-finance": "Regeneratívne finančníctvo (ReFi)",
+ "regenerative-finance": "ReFi - Regeneratívne finančníctvo",
"run-a-node": "Spustiť uzol",
- "rollup-component-website": "Website",
"rollup-component-developer-docs": "Vývojárske dokumenty",
"rollup-component-technology-and-risk-summary": "Zhrnutie technológií a rizík",
"scaling": "Škálovanie",
@@ -164,11 +274,11 @@
"search-box-blank-state-text": "Hľadajte!",
"search-eth-address": "Toto vyzerá ako ethereová adresa. Neposkytujeme dáta o špecifických adresách. Vyskúšajte ju vyhľadať cez prehliadač blokov ako",
"search-no-results": "Neboli nájdené žiadne výsledky pre hľadaný výraz",
+ "security": "Zabezpečenie",
"single-slot-finality": "Konečnosť jedného slotu",
"statelessness": "Bezstavovosť",
"see-contributors": "Zobraziť prispievateľov",
"set-up-local-env": "Nastavenie miestneho prostredia",
- "sharding": "Sharding",
"show-all": "Zobraziť všetko",
"show-less": "Zobraziť menej",
"site-description": "Ethereum je globálna decentralizovaná platforma pre peniaze a nové typy aplikácii. V Ethereu môžete tvoriť kód, ktorý bude riadiť peniaze, a zostavovať aplikácie, ktoré budú prístupné z celého sveta.",
@@ -179,8 +289,8 @@
"stake-eth": "Stakovanie ETH",
"staking": "Stakovanie",
"start-here": "Začnite tu",
- "style-guide": "Style guide",
"solo": "Sólo stakovanie",
+ "support": "Podpora",
"terms-of-use": "Podmienky používania",
"translation-banner-body-new": "Táto stránka sa zobrazuje v angličtine, pretože sme ju ešte nestihli preložiť. Pomôžte nám s jej prekladom.",
"translation-banner-body-update": "K dispozícii je nová verzia tejto stránky. V súčasnosti je však len v angličtine. Pomôžte nám s prekladom najnovšej verzie.",
@@ -191,17 +301,18 @@
"translation-banner-no-bugs-title": "Tu niesu žiadne chyby!",
"translation-banner-no-bugs-content": "Táto stránka nebola preložená. Zatiaľ sme ponechali túto stránku v Angličtine.",
"translation-banner-no-bugs-dont-show-again": "Znova nezobrazovať",
+ "translation-program": "Program prekladania",
"try-using-search": "Pokúste sa použiť vyhľadávač na nájdenie toho, čo hľadáte",
"tutorials": "Kurzy",
"up": "Hore",
+ "use": "Používanie",
"use-ethereum": "Používanie Etherea",
"use-ethereum-menu": "Ponuka Používanie Etherea",
- "user-experience": "User experience",
+ "use-menu": "Ponuka Použiť",
"verkle-trees": "Verkle stromy",
"wallets": "Peňaženky",
"we-couldnt-find-that-page": "Túto stránku sme nenašli",
"web3": "Čo je Web3?",
- "web3-title": "Web3",
"website-last-updated": "Posledná aktualizácia stránky",
"what-is-ether": "Čo je Ether (ETH)?",
"what-is-ethereum": "Čo je to Ethereum?",
diff --git a/src/intl/sk/page-languages.json b/src/intl/sk/page-languages.json
index 563ec150dae..09a9ff766d0 100644
--- a/src/intl/sk/page-languages.json
+++ b/src/intl/sk/page-languages.json
@@ -1,4 +1,22 @@
{
+ "page-languages-h1": "Podpora jazykov",
+ "page-languages-interested": "Zaujímate sa o možnosť prispieť?",
+ "page-languages-learn-more": "Dozvedieť sa viac o našom programe prekladania",
+ "page-languages-meta-desc": "Zdroje k všetkým podporovaným jazykom ethereum.org a možnostiach podieľať sa na prekladoch.",
+ "page-languages-meta-title": "jazykové preklady ethereum.org",
+ "page-languages-p1": "Ethereum je globálny projekt a je dôležité, že ethereum.ogr je prístupný komukoľvek, bez ohľadu na národnosť alebo jazyk. Naša komunita dbá na pretavenie tejto vízie do reality.",
+ "page-languages-translations-available": "ethereum.org je dostupné v nasledujúcich jazykoch",
+ "page-languages-resources-paragraph": "Navyše na preklad obsahu ethereum.org tiež spravujeme",
+ "page-languages-resources-link": "zoznam zdrojov Ethereum v mnohých jazykoch",
+ "page-languages-want-more-header": "Chcete vidieť ethereum.org v inom jazyku?",
+ "page-languages-want-more-link": "Programe prekladania",
+ "page-languages-want-more-paragraph": "ethereum.org prekladatelia vždy prekladajú stránky do čo najviac jazykov ako je to možné. Ak chcete vedieť na čom pracujú práve teraz alebo na pripojenie sa k nim, čítajte o našom",
+ "page-languages-filter-label": "Zoznam filtrov",
+ "page-languages-filter-placeholder": "Písaním zadajte filter",
+ "page-languages-browser-default": "Predvolené nastavenie prehliadača",
+ "page-languages-translated": "preložené",
+ "page-languages-words": "slová",
+ "page-languages-recruit-community": "Pomôžte nám preložiť webovú lokalitu ethereum.org.",
"language-ar": "Arabčina",
"language-bg": "Bulharčina",
"language-bn": "Bengálčina",
diff --git a/src/intl/sk/page-stablecoins.json b/src/intl/sk/page-stablecoins.json
index 09831862478..219ad20b547 100644
--- a/src/intl/sk/page-stablecoins.json
+++ b/src/intl/sk/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "Logo MakerDao",
"matcha-logo": "Logo Matcha",
"oasis-logo": "Logo Oasis",
- "uniswap-logo": "Logo Uniswap"
+ "uniswap-logo": "Logo Uniswap",
+ "page-stablecoins-category-dashboard-and-education": "Ovládací panel a vzdelávanie"
}
diff --git a/src/intl/sl/common.json b/src/intl/sl/common.json
index 50bdf8c8c13..5baad9fc2a8 100644
--- a/src/intl/sl/common.json
+++ b/src/intl/sl/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Abstrakcija računa",
"about-ethereum-org": "O ethereum.org",
"about-us": "O nas",
+ "adding-desci-projects": "Dodajanje projektov DeSci",
+ "adding-developer-tools": "Dodajanje orodij za razvijalce",
+ "adding-exchanges": "Dodajanje borz",
+ "adding-glossary-terms": "Dodajanje izrazov v slovar",
+ "adding-staking-products": "Dodajanje izdelkov za zastavljanje",
+ "adding-wallets": "Dodajanje denarnic",
+ "account-abstraction": "Abstrakcija računa",
+ "acknowledgements": "Zahvale",
"aria-toggle-search-button": "Preklopni gumb za iskanje",
"aria-toggle-menu-button": "Preklopni gumb za meni",
"beacon-chain": "Oddajniška veriga",
"bridges": "Mostovi blokovnih verig",
+ "bug-bounty": "Nagrade za odpravljanje napak",
+ "build": "Razvijanje",
+ "build-menu": "Meni za razvijanje",
"clear": "Počisti",
"close": "Zapri",
"community": "Skupnost",
"community-hub": "Središče skupnosti",
"community-menu": "Meni skupnosti",
"contact": "Stik",
+ "content-buckets": "Vsebinska vedra",
+ "content-resources": "Viri vsebin",
"content-standardization": "Standardizacija vsebine",
"contributing": "Prispevajte",
"contributors": "Sodelujoči",
@@ -20,14 +32,17 @@
"copied": "Kopirano",
"copy": "Kopiraj",
"danksharding": "Dankovo drobljenje",
- "dao-page": "Decentralizirane avtonomne organizacije (DAO)",
+ "dao-page": "DAO - Decentralizirane avtonomne organizacije",
"dark-mode": "Temno",
"data-provided-by": "Vir podatkov:",
- "decentralized-applications-dapps": "Decentralizirane aplikacije (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentralizirane aplikacije",
"decentralized-identity": "Decentralizirana identiteta",
"decentralized-social-networks": "Decentralizirana družabna omrežja",
- "decentralized-science": "Decentralizirana znanost (DeSci)",
- "defi-page": "Decentralizirane finance (DeFi)",
+ "decentralized-science": "DeSci - Decentralizirana znanost",
+ "description": "Opis elementa za krmarjenje",
+ "defi-page": "DeFi - Decentralizirane finance",
+ "design": "Oblikovanje",
+ "design-principles": "Načela oblikovanja",
"devcon": "Devcon",
"developers": "Razvijalci",
"developers-home": "Začetna stran za razvijalce",
@@ -83,7 +98,7 @@
"feedback-card-prompt-tutorial": "Je bila ta vadnica uporabna?",
"feedback-widget-thank-you-title": "Hvala za povratne informacije.",
"feedback-widget-thank-you-subtitle": "Odgovorite na nekaj vprašanj in to stran še izboljšajte.",
- "feedback-widget-thank-you-subtitle-ext": "Če potrebujete pomoč, se lahko obrnete na skupnost na našem portalu Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Če potrebujete pomoč, se lahko obrnete na skupnost na našem Discordu.",
"feedback-widget-thank-you-timing": "2–3 min",
"feedback-widget-thank-you-cta": "Odpri kratko anketo",
"find-wallet": "Poišči denarnico",
@@ -94,11 +109,11 @@
"grants": "Finančne spodbude",
"grant-programs": "Program za podporo ekosistemu",
"guides": "Vodiči",
- "guides-hub": "Središče vodičev",
+ "guides-hub": "Navodila",
"history-of-ethereum": "Zgodovina Ethereuma",
"home": "Začetna stran",
"how-ethereum-works": "Kako deluje Ethereum",
- "how-to-register-an-ethereum-account": "Kako \"registrirati\" račun Ethereum",
+ "how-to-create-an-ethereum-account": "Kako \"ustvariti\" Ethereum račun",
"how-to-revoke-token-access": "Kako pametni pogodbi preklicati dostop do vaših kripto sredstev",
"how-to-swap-tokens": "Kako zamenjati žetone",
"how-to-use-a-bridge": "Kako premostiti žetone na 2. raven",
@@ -128,11 +143,109 @@
"loading-error-try-again-later": "Ni bilo mogoče naložiti podatkov. Ponovno poskusite kasneje.",
"logo": "logotip",
"mainnet-ethereum": "Glavno omrežje Ethereum",
+ "merge": "Združitev",
"more": "Več",
- "nav-developers": "Razvijalci",
+ "nav-about-description": "Javen odprtokodni projekt za Ethereumovo skupnost",
+ "nav-advanced-description": "Spoznajte tudi bolj zapletene teme",
+ "nav-advanced-label": "Dodatno",
+ "nav-basics-description": "Razumite osnove Ethereuma",
+ "nav-basics-label": "Osnove",
+ "nav-bridges-description": "Web3 se je razvil v ekosistem primarnih verig blokov na 1. ravni in rešitev za širjenje na 2. ravni",
+ "nav-builders-home-description": "Priročnik za razvijalce, ki delajo z Ethereumom – od razvijalcev za razvijalce",
+ "nav-builders-home-label": "Domača stran za razvijalce",
+ "nav-contribute-description": "Če potrebujete pomoč, jo lahko dobite tukaj",
+ "nav-contribute-label": "Prispevanje k skupnosti ethereum.org",
+ "nav-dao-description": "Skupnosti v lasti članov brez centralizirane oblasti",
+ "nav-dapps-description": "Raziščite bogat ekosistem aplikacij, ki uporabljajo Ethereum",
+ "nav-defi-description": "Globalna, odprta alternativa tradicionalnemu finančnemu trgu",
+ "nav-desci-description": "Globalna, odprta alternativa obstoječemu sistemu znanosti",
+ "nav-desoc-description": "Platforme, ki temeljijo na verigah blokov, za družabno interakcijo in ustvarjanje vsebin",
"nav-developers-docs": "Dokumentacija za razvijalce",
+ "nav-developers": "Razvijalci",
+ "nav-did-description": "Izdajajte in si lastite edinstvene decentralizirane identifikatorje",
+ "nav-docs-description": "Dokumentacija, ki vam bo pomagala razumeti Ethereum in razvijati z njim",
+ "nav-docs-design-description": "Opis edinstvenih oblikovalskih izzivov, najboljših praks in vpogledov v raziskave uporabnikov, povezanih z web3",
+ "nav-docs-design-label": "Osnove oblikovanja uporabniške izkušnje/vmesnika",
+ "nav-docs-foundation-description": "Najpomembnejše osnove za razvijanje v Ethereumu",
+ "nav-docs-foundation-label": "Temeljne teme",
+ "nav-docs-overview-description": "Vaša domača stran z dokumentacijo za razvijalce",
+ "nav-docs-stack-description": "Razumite vse podrobnosti Ethereumovega sklada",
+ "nav-docs-stack-label": "Sklad Ethereum",
+ "nav-eip-description": "Standardi za opredeljevanje novih funkcij ali procesov",
+ "nav-eip-label": "EIP - Predlogi za izboljšanje Ethereuma",
+ "nav-emerging-description": "Spoznajte druge novejše primere uporabe Ethereuma",
+ "nav-enterprise-description": "Poslovne aplikacije za Ethereum",
+ "nav-ethereum-org-description": "To spletno mesto napaja skupnost – pridružite se nam in prispevajte",
+ "nav-ethereum-wallets-description": "Aplikacija za interakcijo z vašim računom Ethereum",
+ "nav-events-description": "Decentralizacija in svoboda sodelovanja za vsakogar",
+ "nav-events-irl-description": "Vsak mesec se odvijajo dogodki o Ethereumu v živo in v spletu",
+ "nav-events-label": "Skupnosti in dogodki",
+ "nav-events-online-description": "V teh spletnih skupnostih je zbrano več sto tisoč Ethereumovih zanesenjakov",
+ "nav-find-wallet-description": "Denarnice vam omogočajo uporabo kriptovalut",
+ "nav-find-wallet-label": "Izberite denarnico",
+ "nav-gas-fees-description": "Kako se izračunajo provizije za transakcije z ETH",
+ "nav-get-eth-description": "Če želite uporabljati Ethereumove aplikacije, potrebujete ether (ETH)",
+ "nav-get-started-description": "Prvi koraki uporabe Ethereuma",
+ "nav-governance-description": "Postopek nadgradnje protokola Ethereum",
+ "nav-governance-label": "Upravljanje",
+ "nav-grants-description": "Seznam projektov s programi financiranja z nepovratnimi sredstvi, ki ga je pregledala skupnost",
+ "nav-guide-create-account-description": "Z aplikacijo denarnice lahko kdor koli kadar koli brezplačno ustvari račun Ethereum",
+ "nav-guide-create-account-label": "Kako ustvariti Ethereum račun",
+ "nav-guide-revoke-access-description": "Varna interakcija s pametnimi pogodbami in aplikacijami v Ethereumovem ekosistemu",
+ "nav-guide-revoke-access-label": "Preklic dostopa za pametne pogodbe",
+ "nav-guide-use-wallet-description": "Spoznajte, kako uporabljate vse osnovne funkcije denarnice",
+ "nav-guide-use-wallet-label": "Kako uporabljati denarnico",
+ "nav-guides-description": "Priročni postopni koraki za začetek uporabe",
+ "nav-guides-label": "Navodila",
+ "nav-history-description": "Časovnica vseh večjih razcepov in posodobitev",
+ "nav-history-label": "Tehnična zgodovina Ethereuma",
+ "nav-layer-2-description": "Cenejše in hitrejše transakcije v Ethereumovem omrežju",
+ "nav-learn-by-coding-description": "Orodja, ki vam pomagajo pri eksperimentiranju z Ethereumom",
+ "nav-local-env-description": "Izberite in nastavite sklad za razvoj v Ethereumu",
+ "nav-mainnet-description": "Poslovne aplikacije z verigami blokov lahko razvijate v javnem glavnem Ethereumovem omrežju",
+ "nav-nft-description": "Način predstavitve česar koli edinstvenega kot sredstva, ki temelji na Ethereumu",
+ "nav-open-research-description": "Ena glavnih Ethereumovih prednosti je njegova aktivna raziskovalna skupnost",
+ "nav-open-research-label": "Odprte raziskave",
+ "nav-overview-description": "Vsa gradiva za izobraževanje o Ethereumu",
+ "nav-overview-label": "Pregled",
+ "nav-participate-overview-description": "Pregled načinov sodelovanja",
"nav-primary": "Primarna",
- "nft-page": "Nezamenljivi žetoni (NFT-ji)",
+ "nav-private-description": "Razvijalski viri za zasebni Ethereum za podjetja",
+ "nav-quizzes-description": "Preverite, kako dobro poznate Ethereum in kriptovalute",
+ "nav-quizzes-label": "Preverite svoje znanje",
+ "nav-refi-description": "Nadomestni ekonomski sistem, zgrajen na načelih regeneracije",
+ "nav-research-description": "Postopki za izboljševanje Ethereuma",
+ "nav-research-label": "Raziskave in razvoj",
+ "nav-roadmap-description": "Pot do večje razširljivosti, varnosti in trajnosti za Ethereum",
+ "nav-roadmap-future-description": "Vzpostavljanje Ethereuma kot robustnega in decentraliziranega omrežja",
+ "nav-roadmap-future-label": "Zaščita za prihodnost",
+ "nav-roadmap-label": "Načrt",
+ "nav-roadmap-scaling-description": "Posodobitve omrežja za dodatno znižanje stroškov transakcij in hitrejše delovanje",
+ "nav-roadmap-security-description": "Zagotavljanje, da Ethereum tudi v prihodnje ostane odporen na vse vrste napadov",
+ "nav-roadmap-security-label": "Izboljšana varnost",
+ "nav-roadmap-ux-description": "Uporaba Ethereuma mora biti preprostejša",
+ "nav-run-a-node-description": "Postanite popolnoma suvereni, medtem ko pomagate varovati omrežje",
+ "nav-security-description": "Naučite se najboljših praks pri uporabi kriptovalut",
+ "nav-smart-contracts-description": "Osnovni gradniki Ethereumovega ekosistema",
+ "nav-stablecoins-description": "Stabilni kovanci so Ethereumovi žetoni, zasnovani tako, da ohranijo fiksno vrednost",
+ "nav-stake-description": "Zaslužite nagrade, tako da zavarujete Ethereum",
+ "nav-stake-label": "Zastavljanje",
+ "nav-staking-home-description": "Pregled različnih možnosti zastavljanja",
+ "nav-staking-pool-description": "Pridružite se drugim, zastavite poljubno količino ETH in si prislužite nagrade",
+ "nav-staking-pool-label": "Skupno zastavljanje",
+ "nav-staking-saas-label": "Zastavljanje s storitvijo",
+ "nav-staking-solo-label": "Samostojno zastavljanje",
+ "nav-start-building-description": "Koristne informacije za novince",
+ "nav-translation-program-description": "Skupna prizadevanja za prevod spletnega mesta ethereum.org v vse jezike",
+ "nav-tutorials-description": "Pregledan seznam vadnic skupnosti",
+ "nav-use-cases-description": "Odkrijte različne zamisli za uporabo Ethereuma",
+ "nav-what-is-ether-description": "Valuta aplikacij na Ethereumu",
+ "nav-what-is-ethereum-description": "Razumite, zakaj je Ethereum poseben",
+ "nav-what-is-web3-label": "Kaj je Web3?",
+ "nav-what-is-web3-description": "Alternativa centraliziranim monopolistom, ki narekujejo pravila",
+ "nav-whitepaper-description": "Izvirna bela knjiga o Ethereumu, ki jo je leta 2014 napisal Vitalik Buterin",
+ "nav-zkp-description": "Način dokazovanja veljavnosti izjave brez razkrivanja same izjave",
+ "nft-page": "NFT-ji - Nezamenljivi žetoni",
"nfts": "NFT-ji",
"no": "Ne",
"on-this-page": "Na tej strani",
@@ -140,6 +253,8 @@
"page-developers-aria-label": "Meni za razvijalce",
"page-index-meta-title": "Začetna stran",
"page-last-updated": "Zadnja posodobitev strani",
+ "participate": "Sodelovanje",
+ "participate-menu": "Meni za sodelovanje",
"pbs": "Ločitev med predlagateljem in sestavljalcem",
"pools": "Skupno zastavljanje",
"privacy-policy": "Pravilnik o zasebnosti",
@@ -150,8 +265,10 @@
"refresh": "Osvežite stran.",
"return-home": "vrni se domov",
"roadmap": "Načrt strani Ethereum",
+ "research": "Raziskave",
+ "research-menu": "Meni za raziskave",
"resources": "Prevajalski viri",
- "regenerative-finance": "Regenerativne finance (ReFi)",
+ "regenerative-finance": "ReFi - Regenerativne finance",
"run-a-node": "Upravljajte vozlišče",
"rollup-component-website": "Spletna stran",
"rollup-component-developer-docs": "Dokumentacija za razvijalce",
@@ -164,6 +281,7 @@
"search-box-blank-state-text": "Začnite iskati!",
"search-eth-address": "To je videti kot naslov Ethereum. Ne zagotavljamo podatkov za posamezne naslove. Poskusite ga poiskati v pregledovalniku blokov, kot je",
"search-no-results": "Ni rezultatov iskanja",
+ "security": "Varnost",
"single-slot-finality": "",
"statelessness": "Brezdomovinstvo",
"see-contributors": "Pokaži sodelavce",
@@ -172,7 +290,6 @@
"show-all": "Prikaži vse",
"show-less": "Prikaži manj",
"site-description": "Ethereum je globalna, decentralizirana platforma za denar in nove vrste aplikacij. V Ethereumu lahko pišete programsko kodo, ki upravlja denar, in gradite aplikacije, ki so dostopne povsod po svetu.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Preskoči na glavno vsebino",
"smart-contracts": "Pametne pogodbe",
"stablecoins": "Stabilni kovanci",
@@ -181,6 +298,7 @@
"start-here": "Začnite tukaj",
"style-guide": "Slogovni priročnik",
"solo": "Samostojno zastavljanje",
+ "support": "Podpora",
"terms-of-use": "Pogoji uporabe",
"translation-banner-body-new": "To stran vidite v angleščini, ker je še nismo prevedli. Pomagajte nam prevesti to vsebino.",
"translation-banner-body-update": "Na voljo je nova različica te strani, vendar je zaenkrat samo v angleščini. Pomagajte nam prevesti najnovejšo različico.",
@@ -191,12 +309,14 @@
"translation-banner-no-bugs-title": "Brez napak!",
"translation-banner-no-bugs-content": "Ta stran se ne prevaja. Namenoma smo jo za zdaj pustili v angleščini.",
"translation-banner-no-bugs-dont-show-again": "Ne prikaži več",
+ "translation-program": "Program prevajanja",
"try-using-search": "Da bi našli, kar iščete, poskusite z uporabo iskalnika ali",
"tutorials": "Vadnice",
"up": "Gor",
+ "use": "Uporaba",
"use-ethereum": "Uporaba Ethereuma",
"use-ethereum-menu": "Meni Uporaba Ethereuma",
- "user-experience": "User experience",
+ "use-menu": "Meni za uporabo",
"verkle-trees": "Verklejeva drevesa",
"wallets": "Denarnice",
"we-couldnt-find-that-page": "Te strani ni mogoče najti",
diff --git a/src/intl/sl/page-dapps.json b/src/intl/sl/page-dapps.json
index 4648e3c9e4b..84307f5502b 100644
--- a/src/intl/sl/page-dapps.json
+++ b/src/intl/sl/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Sproti pretočno predvajajte denar.",
"page-dapps-dapp-description-superrare": "Kupujte digitalne umetnine neposredno od umetnikov ali na sekundarnih trgih.",
"page-dapps-dapp-description-token-sets": "Strategije vlaganja v kriptovalute, ki se samodejno znova uravnovesijo.",
- "page-dapps-dapp-description-tornado-cash": "Pošiljajte anonimne transakcije na Ethereumu.",
"page-dapps-dapp-description-uniswap": "Preprosto menjajte žetone ali zagotovite žetone za % nagrade.",
"page-dapps-dapp-description-dexguru": "Neskrbniški terminal za trgovanje za trgovce DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix je protokol za izdajanje sintetičnih sredstev in trgovanje z njimi",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "To so aplikacije, ki so osredotočene na decentralizacijo razvijalskih orodij, vključevanje kriptoekonomskih sistemov v obstoječe tehnologije in ustvarjanje trgov za odprtokodni razvoj.",
"page-dapps-technology-title": "Decentralizirana tehnologija",
"page-dapps-token-sets-logo-alt": "Logotip Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logotip Tornado cash",
"page-dapps-uniswap-logo-alt": "Logotip Uniswap",
"page-dapps-wallet-callout-button": "Poišči denarnico",
"page-dapps-wallet-callout-description": "Tudi denarnice so decentralizirane aplikacije. Poiščite ustrezno glede na funkcije, ki vam ustrezajo.",
diff --git a/src/intl/sl/page-languages.json b/src/intl/sl/page-languages.json
index 983c9523425..d257c5ba85d 100644
--- a/src/intl/sl/page-languages.json
+++ b/src/intl/sl/page-languages.json
@@ -6,10 +6,17 @@
"page-languages-meta-title": "Jezikovni prevodi ethereum.org",
"page-languages-p1": "Ethereum je globalen projekt in ključno je, da je ethereum.org na voljo vsem ne glede na njihovo narodnost ali jezik. Naša skupnost si močno prizadeva uresničiti to vizijo.",
"page-languages-translations-available": "ethereum.org je na voljo v naslednjih jezikih",
+ "page-languages-resources-paragraph": "Poleg tega, da prevajamo vsebino ethereum.org, prav tako vzdržujemo",
+ "page-languages-resources-link": "upravljan seznam Ethereum virov v številnih jezikih",
"page-languages-want-more-header": "Ali želite ethereum.org v drugem jeziku?",
"page-languages-want-more-link": "Program prevajanja",
"page-languages-want-more-paragraph": "Prevajalci ethereum.org vedno prevajajo strani v čim več jezikov. Če si želite ogledati, na čem trenutno delajo, ali se želite prijaviti in se jim pridružiti, preberite več o našem",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Filtriraj seznam",
+ "page-languages-filter-placeholder": "Vrsta za filtriranje",
+ "page-languages-browser-default": "Privzeto v brskalniku",
+ "page-languages-translated": "prevedeno",
+ "page-languages-words": "besede",
+ "page-languages-recruit-community": "Pomagajte nam prevesti ethereum.org.",
"language-ar": "Arabščina",
"language-az": "Azerbajdžanščina",
"language-bg": "Bulgraščina",
diff --git a/src/intl/sl/page-stablecoins.json b/src/intl/sl/page-stablecoins.json
index 97f037f1ee6..d0f3a480f70 100644
--- a/src/intl/sl/page-stablecoins.json
+++ b/src/intl/sl/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Vir",
"page-stablecoins-bitcoin-pizza": "Zloglasna Bitcoin pica",
"page-stablecoins-bitcoin-pizza-body": "Leta 2010 je nekdo kupil 2 pici za 10.000 bitcoinov. Takrat je bilo to enakovredno približno 41 USD. Na današnjem trgu je vrednost narasla na več milijonov dolarjev. V Ethereumovi zgodovini obstajajo številne podobno transakcije, vredne obžalovanja. Stabilni kovanci rešujejo to težavo, tako da lahko uživate v pici in obdržite svoj ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Nadzorna plošča in izobraževanje",
"page-stablecoins-coin-price-change": "Spremembe cen kovancev (zadnjih 30 dni)",
"page-stablecoins-crypto-backed": "Temeljijo na kriptografiji",
"page-stablecoins-crypto-backed-con-1": "Manj stabilni kot stabilni kovanci, ki temeljijo na fiat valutah.",
diff --git a/src/intl/sr/common.json b/src/intl/sr/common.json
index ad80401aa17..13b4a5d6661 100644
--- a/src/intl/sr/common.json
+++ b/src/intl/sr/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Apstrakcija naloga",
"about-ethereum-org": "O ethereum.org",
"about-us": "O nama",
+ "adding-desci-projects": "Dodavanje Desci projekata",
+ "adding-developer-tools": "Dodavanje alata za programere",
+ "adding-exchanges": "Dodavanje menjačnica",
+ "adding-glossary-terms": "Dodavanje termina u rečnik",
+ "adding-staking-products": "Dodavanje ulagačkih proizvoda",
+ "adding-wallets": "Dodavanje novčanika",
+ "account-abstraction": "Apstrakcija naloga",
+ "acknowledgements": "Zahvalnost",
"aria-toggle-search-button": "Dugme za pretragu",
"aria-toggle-menu-button": "Dugme menija",
"beacon-chain": "Beacon lanac",
"bridges": "Blokčejn mostovi",
+ "bug-bounty": "Lov na bagove",
+ "build": "Gradnja",
+ "build-menu": "Meni gradnje",
"clear": "Obriši",
"close": "Zatvori",
"community": "Zajednica",
"community-hub": "Čvorište zajednice",
"community-menu": "Meni Zajednice",
"contact": "Kontakt",
+ "content-buckets": "Grupe sadržaja",
+ "content-resources": "Resursi za sadržaj",
"content-standardization": "Standardizacija sadržaja",
"contributing": "Doprinesi",
"contributors": "Saradnici",
@@ -20,14 +32,17 @@
"copied": "Kopirano",
"copy": "Kopiraj",
"danksharding": "Fragmentacija podataka za skalabilnost (danksharding)",
- "dao-page": "Decentralizovane autonomne organizacije (DAO)",
+ "dao-page": "DAO - Decentralizovane autonomne organizacije",
"dark-mode": "Tamno",
"data-provided-by": "Izvor podataka:",
- "decentralized-applications-dapps": "Decentralizovane aplikacije (dapps)",
+ "decentralized-applications-dapps": "Dapps - Decentralizovane aplikacije",
"decentralized-identity": "Decentralizovan identitet",
"decentralized-social-networks": "Decentralizovane društvene mreže",
- "decentralized-science": "Decentralizovana nauka (DeSci)",
- "defi-page": "Decentralizovane finansije (DeFi)",
+ "decentralized-science": "DeSci - Decentralizovana nauka",
+ "description": "Opis za stavku navigacije",
+ "defi-page": "DeFi - Decentralizovane finansije",
+ "design": "Dizajn",
+ "design-principles": "Principi dizajna",
"devcon": "Devcon",
"developers": "Programeri",
"developers-home": "Kuća programera",
@@ -51,7 +66,7 @@
"documentation": "Dokumentacija",
"down": "Nadolе",
"ecosystem": "Ekosistem",
- "edit-page": "Izmeni stranicu",
+ "edit-page": "Izmenite stranicu",
"ef-blog": "Blog Ethereum fondacije",
"eips": "Predlozi za poboljšanje Ethereum-a",
"energy-consumption": "Ethereum potrošnja energije",
@@ -83,22 +98,22 @@
"feedback-card-prompt-tutorial": "Da li vam je ovaj tutorijal bio od pomoći?",
"feedback-widget-thank-you-title": "Hvala na povratnim informacijama!",
"feedback-widget-thank-you-subtitle": "Poboljšajte ovu stranicu tako što ćete odgovoriti na nekoliko pitanja.",
- "feedback-widget-thank-you-subtitle-ext": "Ako vam je potrebna pomoć, možete se obratiti zajednici na našem Diskordu.",
+ "feedback-widget-thank-you-subtitle-ext": "Ako vam je potrebna pomoć, možete se obratiti zajednici na našem Discordu.",
"feedback-widget-thank-you-timing": "2–3 minute",
"feedback-widget-thank-you-cta": "Otvori kratku anketu",
"find-wallet": "Pronađi novčanik",
"future-proofing": "Sigurno za budućnost",
"get-eth": "Uzmi ETH",
"get-involved": "Uključi se",
- "get-started": "Započni",
+ "get-started": "Počnite",
"grants": "Odobrenja",
"grant-programs": "Program grantova za podršku ekosistemu",
"guides": "Vodiči",
- "guides-hub": "Centar za vodiče",
+ "guides-hub": "Vodiči",
"history-of-ethereum": "Istorija Ethereum-a",
"home": "Početna",
"how-ethereum-works": "Kako Ethereum funkcioniše",
- "how-to-register-an-ethereum-account": "Kako registrovati Ethereum nalog",
+ "how-to-create-an-ethereum-account": "Kako da kreirate Ethereum nalog",
"how-to-revoke-token-access": "Kako ukinuti pristup pametnog ugovora vašim kripto fondovima",
"how-to-swap-tokens": "Kako razmeniti tokene",
"how-to-use-a-bridge": "Kako premostiti tokene na nivo 2",
@@ -128,11 +143,111 @@
"loading-error-try-again-later": "Nije moguće učitati podatke. Pokušajte ponovo kasnije.",
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "Spajanje",
"more": "Više",
- "nav-developers": "Programeri",
+ "nav-about-description": "Javni, projekat otvorenog koda za Ethereum zajednicu",
+ "nav-advanced-description": "Saznajte više od složenijim temama",
+ "nav-advanced-label": "Napredno",
+ "nav-basics-description": "Shvatite osnove Ethereuma",
+ "nav-basics-label": "Osnove",
+ "nav-bridges-description": "Web3 se razvio u ekosistem primarnih L1 lanaca blokova i L2 rešenja za skaliranje",
+ "nav-builders-home-description": "Priručnik za graditelje za Ethereum – od graditelja, za graditelje",
+ "nav-builders-home-label": "Početna stanica za graditelje",
+ "nav-contribute-description": "Ukoliko želite da pomognete, ovo će vam biti vodič",
+ "nav-contribute-label": "Doprinos ethereum.org",
+ "nav-dao-description": "Zajednice koje su u vlasništvu članova bez centralizovanog autoriteta",
+ "nav-dapps-description": "Istražite bogat ekosistem aplikacija koristeći Ethereum",
+ "nav-defi-description": "Globalna, otvorena alternativa tradicionalnom finansijskom tržištu",
+ "nav-desci-description": "Globalna, otvorena alternativa trenutnom naučnom sistemu",
+ "nav-desoc-description": "Platforme bazirane na lancima blokova za društvenu interakciju i kreiranje sadržaja",
"nav-developers-docs": "Dokumentacija za programere",
+ "nav-developers": "Programeri",
+ "nav-did-description": "Izdajte i posedujte sopstvene jedinstvene decentralizovane identifikatore",
+ "nav-docs-description": "Dokumenti koji će vam pomoći da razumete i gradite uz Ethereum",
+ "nav-docs-design-description": "Opis jedinstvenih dizajnerskih izazova mreže web3, najbolje prakse i uvidi istraživanja korisnika",
+ "nav-docs-design-label": "Osnove dizajna korisničkog doživljaja/korisničkog interfejsa",
+ "nav-docs-foundation-description": "Suštinske osnove za razvoj na Ethereumu",
+ "nav-docs-foundation-label": "Temeljne teme",
+ "nav-docs-overview-description": "Početna stranica za dokumente za programere",
+ "nav-docs-stack-description": "Shvatite sve detalje Ethereum steka",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Standardi koji određuju nove funkcije ili procese",
+ "nav-eip-label": "EIP - Predlozi za poboljšanje Ethereuma",
+ "nav-emerging-description": "Upoznajte druge novije slučajeve korišćenja za Ethereum",
+ "nav-emerging-label": "Načini primene",
+ "nav-enterprise-description": "Poslovne aplikacije za Ethereum",
+ "nav-ethereum-org-description": "Ovaj veb-sajt vodi zajednica – pridružite nam se, pa i sami dajte svoj doprinos",
+ "nav-ethereum-wallets-description": "Aplikacija za interakciju sa Ethereum nalogom",
+ "nav-events-description": "Decentralizacija i sloboda učešća za svakoga",
+ "nav-events-irl-description": "Svakog meseca se održavaju velika Ethereum dešavanja, kako uz lično prisustvo, tako i na mreži",
+ "nav-events-label": "Zajednice i događaji",
+ "nav-events-online-description": "Na stotine hiljada Ethereum entuzijasta stvara u ovim zajednicama na mreži",
+ "nav-find-wallet-description": "Novčanici vam omogućavaju korišćenje kriptovaluta",
+ "nav-find-wallet-label": "Odaberite novčanik",
+ "nav-gas-fees-description": "Kako se računaju provizije za transakciju ETH",
+ "nav-get-eth-description": "Potreban vam je ether (ETH) da biste koristili Ethereum aplikacije",
+ "nav-get-started-description": "Prvi korak ka korišćenju Ethereuma",
+ "nav-governance-description": "Postupak uključen u nadogradnju Ethereum protokola",
+ "nav-governance-label": "Nadzor",
+ "nav-grants-description": "Uređena lista koju je pripremila naša zajednica i koja se odnosi na projekte sa obezbeđenim programima finansiranja grantova",
+ "nav-guide-create-account-description": "Svako može da kreira Ethereum nalog bilo kad, besplatno uz aplikaciju novčanika",
+ "nav-guide-create-account-label": "Kako kreirati Ethereum nalog",
+ "nav-guide-revoke-access-description": "Ostanite bezbedni pri interakciji sa pametnim ugovorima i aplikacijama u ekosistemu Ethereum",
+ "nav-guide-revoke-access-label": "Kako da opozovete pristup pametnom ugovoru",
+ "nav-guide-use-wallet-description": "Saznajte kako da upravljate svim osnovnim funkcijama novčanika",
+ "nav-guide-use-wallet-label": "Kako koristiti novčanik",
+ "nav-guides-description": "Praktični, postupni vodiči kao pomoć pri prvim koracima",
+ "nav-guides-label": "Vodiči",
+ "nav-history-description": "Vremenska linija svih glavnih račvanja i ažuriranja",
+ "nav-history-label": "Tehnička istorija Ethereuma",
+ "nav-layer-2-description": "Jeftinije i brže transakcije za Ethereum",
+ "nav-learn-by-coding-description": "Alatke za olakšavanje eksperimentisanja sa Ethereumom",
+ "nav-local-env-description": "Odaberite i postavite Ethereum razvojni stek",
+ "nav-mainnet-description": "Na javnoj Ethereum glavnoj mreži mogu da se grade aplikacije lanca blokova za preduzeća",
+ "nav-nft-description": "Način da se bilo šta jedinstveno prikaže kao sredstvo zasnovano na Ethereumu",
+ "nav-open-research-description": "Jedna od primarnih prednosti Ethereuma je njegova aktivna istraživačka zajednica",
+ "nav-open-research-label": "Otvori istraživanje",
+ "nav-overview-description": "Sve u vezi sa Ethereum edukacijom",
+ "nav-overview-label": "Pregled",
+ "nav-participate-overview-description": "Pregled načina učestvovanja",
"nav-primary": "Primarna",
- "nft-page": "Nezamenljivi (NFT) tokeni",
+ "nav-private-description": "Resursi za programere za Ethereum kod privatnih poduzeća",
+ "nav-quizzes-description": "Otkrijte koliko dobro se razumete u Ethereum i kriptovalute",
+ "nav-quizzes-label": "Testirajte svoje znanje",
+ "nav-refi-description": "Alternativa ekonomskom sistemu izgrađena na regenerativnim principima",
+ "nav-research-description": "Postupci koji se koriste za poboljšanje Ethereuma",
+ "nav-research-label": "Istraživanje i razvoj",
+ "nav-roadmap-description": "Putanja do većeg rasta, bezbednosti i održivosti za Ethereum",
+ "nav-roadmap-future-description": "Učvršćivanje Ethereuma kao snažne i decentralizovane mreže",
+ "nav-roadmap-future-label": "Sigurno za budućnost",
+ "nav-roadmap-label": "Plan",
+ "nav-roadmap-scaling-description": "Ažuriranja mreže radi daljeg smanjenja troškova transakcije i brzine",
+ "nav-roadmap-security-description": "Vodite računa da Ethereum ostane otporan na sve vrste napada u budućnosti",
+ "nav-roadmap-security-label": "Poboljšana bezbednost",
+ "nav-roadmap-ux-description": "Korišćenje Ethereuma treba da se pojednostavi",
+ "nav-run-a-node-description": "Postanite potpuno suvereni dok pomažete u obezbeđivanju mreže",
+ "nav-security-description": "Saznajte koje su najbolje prakse pri korišćenju kriptovalute",
+ "nav-smart-contracts-description": "Osnovni gradivni blokovi Ethereum ekosistema",
+ "nav-stablecoins-description": "Stabilni novčići su Ethereum tokeni osmišljeni da ostanu na fiksnoj vrednosti",
+ "nav-stake-description": "Zaradite nagrade za obezbeđivanje Ethereuma",
+ "nav-stake-label": "Ulog",
+ "nav-staking-home-description": "Pregled različitih opcija za ulaganje",
+ "nav-staking-pool-description": "Stavite ulog i zarađujte nagrade sa bilo kojom količinom ETH-a tako što ćete se pridružiti sa drugima",
+ "nav-staking-pool-label": "Udruženo ulaganje",
+ "nav-staking-saas-description": "Treća lica upravljaju radom vašeg klijenta za validatore",
+ "nav-staking-saas-label": "Ulaganje uz uslugu",
+ "nav-staking-solo-label": "Samostalno ulaganje",
+ "nav-start-building-description": "Korisne informacije za novajlije",
+ "nav-translation-program-description": "Zajednički napor da se ethereum.org prevede na sve jezike",
+ "nav-tutorials-description": "Uređena lista tutorijala zajednice",
+ "nav-use-cases-description": "Otkrijte različite ideje za korišćenje Ethereuma",
+ "nav-what-is-ether-description": "Valuta Ethereumovih aplikacija",
+ "nav-what-is-ethereum-description": "Uvidite zbog čega je Ethereum poseban",
+ "nav-what-is-web3-label": "Šta je Web3?",
+ "nav-what-is-web3-description": "Alternativa centralizovanim monopolima koji diktiraju pravila",
+ "nav-whitepaper-description": "Originalni beli papir za Ethereum napisan 2014. godine, autor Vitalik Buterin",
+ "nav-zkp-description": "Način da se dokaže verodostojnost izvoda bez pokazivanja samog izvoda",
+ "nft-page": "NFT - Nezamenljivi tokeni",
"nfts": "Nezamenjivi tokeni",
"no": "Ne",
"on-this-page": "Na ovoj stranici",
@@ -140,6 +255,7 @@
"page-developers-aria-label": "Meni programera",
"page-index-meta-title": "Početna",
"page-last-updated": "Stranica poslednji put ažurirana",
+ "participate-menu": "Meni učestvovanja",
"pbs": "Razdvajanje predlagača-graditelja",
"pools": "Udruženo ulaganje",
"privacy-policy": "Politika privatnosti",
@@ -150,8 +266,10 @@
"refresh": "Molimo osvežite stranicu.",
"return-home": "povratak na početnu stranicu",
"roadmap": "Plan mreže Ethereum",
+ "research": "Istraživanje",
+ "research-menu": "Meni istraživanja",
"resources": "Resursi za prevođenje",
- "regenerative-finance": "Regenerativne finansije (ReFi)",
+ "regenerative-finance": "ReFi - Regenerativne finansije",
"run-a-node": "Pokretanje čvora",
"rollup-component-website": "Veb-sajt",
"rollup-component-developer-docs": "Dokumentacija za programere",
@@ -164,11 +282,12 @@
"search-box-blank-state-text": "Traži dalje!",
"search-eth-address": "Ovo izgleda kao Ethereum adresa. Ne pružamo podatke specifične adresama. Pokušajte pretragu na block exploreru kao",
"search-no-results": "Nema rezultata za vašu pretragu",
+ "security": "Bezbednost",
"single-slot-finality": "Jednokratna konačnost",
"statelessness": "Stanje bez pripadnosti",
"see-contributors": "Pogledaj saradnike",
- "set-up-local-env": "Postavi lokalno okruženje",
"sharding": "Usitnjavanje",
+ "set-up-local-env": "Postavite lokalno okruženje",
"show-all": "Prikaži sve",
"show-less": "Prikaži manje",
"site-description": "Ethereum je globalna, decentralizovana platforma za novac i nove vrste aplikacija. Na Ethereumu možete pisati kod koji kontroliše novac i graditi aplikacije dostupne bilo gde u svetu.",
@@ -181,6 +300,7 @@
"start-here": "Počni ovde",
"style-guide": "Stilski priručnik",
"solo": "Samostalno ulaganje",
+ "support": "Podrška",
"terms-of-use": "Uslovi korišćenja",
"translation-banner-body-new": "Ovu stranicu čitate na engleskom jer je još nismo preveli. Pomozite nam da prevedemo ovaj sadržaj.",
"translation-banner-body-update": "Postoji novija verzija ove stranice ali je trenutno dostupna samo na engleskom. Pomozite nam da prevedemo poslednju verziju.",
@@ -191,17 +311,18 @@
"translation-banner-no-bugs-title": "Ovo nije greška!",
"translation-banner-no-bugs-content": "Ova stranica nije prevođena. Namerno smo ostavili ovu stranicu na engleskom jeziku za sada.",
"translation-banner-no-bugs-dont-show-again": "Ne prikazuj ponovo",
+ "translation-program": "Program Prevođenja",
"try-using-search": "Pokušajte da koristite funkciju pretrage da biste pronašli to što tražite",
"tutorials": "Tutorijali",
"up": "Gore",
+ "use": "Korišćenje",
"use-ethereum": "Koristi Ethereum",
"use-ethereum-menu": "Koristi Ethereum meni",
- "user-experience": "User experience",
+ "use-menu": "Meni korišćenja",
"verkle-trees": "Verkle stabla",
"wallets": "Novčanici",
"we-couldnt-find-that-page": "Nismo uspeli da pronađemo tu stranicu",
"web3": "Šta je Web3?",
- "web3-title": "Web3",
"website-last-updated": "Websajt poslednji put ažuriran",
"what-is-ether": "Šta je ether (ETH)?",
"what-is-ethereum": "Šta je Ethereum?",
diff --git a/src/intl/sr/page-dapps.json b/src/intl/sr/page-dapps.json
index 877ad0d81a0..6105c51f431 100644
--- a/src/intl/sr/page-dapps.json
+++ b/src/intl/sr/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Stavite u tok novac u realnom vremenu.",
"page-dapps-dapp-description-superrare": "Kupujte digitalna umetnička dela direktno od umetnika ili na sekundarnim tržištima.",
"page-dapps-dapp-description-token-sets": "Kripto strategije ulaganja koje se automatski rebalansiraju.",
- "page-dapps-dapp-description-tornado-cash": "Pošaljite anonimne transakcije na Ethereum-u.",
"page-dapps-dapp-description-uniswap": "Jednostavno zamenite tokene ili obezbedite tokene za% nagrade.",
"page-dapps-dapp-description-dexguru": "Samoupravljački trgovački terminal za trgovce decentralizovanih finansija (DeFi)",
"page-dapps-dapp-description-synthetix": "Synthetix je protokol za izdavanje sintetičkih sredstava i trgovinu njima",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "To su aplikacije koje se fokusiraju na decentralizaciju alata za programere, uključivanje kriptoekonomskih sistema u postojeću tehnologiju i stvaranje tržišta za razvojne radove otvorenog koda.",
"page-dapps-technology-title": "Decentralizovana tehnologija",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Logo Tornado cash-a",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Pronađi novčanik",
"page-dapps-wallet-callout-description": "Novčanici su takodje dapp-ovi. Pronađite ga na osnovu karakteristika koje vam odgovaraju.",
diff --git a/src/intl/sr/page-languages.json b/src/intl/sr/page-languages.json
index 815c2786804..cb7f5a3cca3 100644
--- a/src/intl/sr/page-languages.json
+++ b/src/intl/sr/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "Želite da vidite ethereum.org na drugom jeziku?",
"page-languages-want-more-link": "Program Prevođenja",
"page-languages-want-more-paragraph": "ethereum.org prevodioci uvek prevode stranice na što više jezika moguće. Da biste videli na čemu oni upravo rade ili da bi ste se prijavili da im se pridružite, pročitajte o našem",
- "page-languages-filter-placeholder": "Filter",
+ "page-languages-filter-label": "Lista za filtriranje",
+ "page-languages-filter-placeholder": "Kucajte da biste filtrirali",
+ "page-languages-browser-default": "Podrazumevani pregledač",
+ "page-languages-translated": "prevedeno",
+ "page-languages-words": "reči",
+ "page-languages-recruit-community": "Pomozite nam da prevedemo ethereum.org.",
"language-ar": "Arapski",
"language-az": "Azerbejdžanski",
"language-bg": "Bugarski",
@@ -58,8 +63,8 @@
"language-sl": "Slovenački",
"language-sr": "Srpski",
"language-sw": "Svahili",
- "language-th": "Tajlandski",
"language-ta": "tamilski",
+ "language-th": "Tajlandski",
"language-tr": "Turski",
"language-uk": "Ukrajinski",
"language-ur": "urdu",
diff --git a/src/intl/sr/page-stablecoins.json b/src/intl/sr/page-stablecoins.json
index 02b7683819f..aff0efd1c90 100644
--- a/src/intl/sr/page-stablecoins.json
+++ b/src/intl/sr/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Izvor",
"page-stablecoins-bitcoin-pizza": "Poznata Bitcoin pica",
"page-stablecoins-bitcoin-pizza-body": "Godine 2010. neko je kupio dve pice za 10.000 bitcoina. U to vreme, to je vredelo približno 41 USD. Na današnjem tržištu to su milioni dolara. Postoji mnogo sličnih transakcija za žaljenje u istoriji mreže Ethereum. Stabilni novčići rešavaju taj problem, tako da možete uživati u pici i zadržati svoj ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Контролна табла и образовање",
"page-stablecoins-coin-price-change": "Promena cene novčića (u poslednjih 30 dana)",
"page-stablecoins-crypto-backed": "Podržan kriptovalutom",
"page-stablecoins-crypto-backed-con-1": "Stabilni novčići koji su manje stabilni od onih podržanih valutom fiat.",
diff --git a/src/intl/sw/common.json b/src/intl/sw/common.json
index b1f3f07fec7..187a13206b2 100644
--- a/src/intl/sw/common.json
+++ b/src/intl/sw/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Ubora wa akaunti",
"about-ethereum-org": "Kuhusu ethereum.org",
"about-us": "Kuhusu sisi",
+ "adding-desci-projects": "Kuongeza mipango ya Desci",
+ "adding-developer-tools": "Kuongeza zana za watengenezaji",
+ "adding-exchanges": "Kuongeza masoko",
+ "adding-glossary-terms": "Kuongeza Farahasa ya Maneno",
+ "adding-staking-products": "Kuongeza bidhaa za hisa",
+ "adding-wallets": "Kuongeza pochi",
+ "account-abstraction": "Ubora wa akaunti",
+ "acknowledgements": "Shukurani",
"aria-toggle-search-button": "Badilisha kitufe cha utafutaji",
"aria-toggle-menu-button": "Badilisha kitufe cha orodha",
"beacon-chain": "Mlolongo wa beacon",
"bridges": "Madaraja ya blockchain",
+ "bug-bounty": "Mtafuta mdudu",
+ "build": "Unda",
+ "build-menu": "Unda menyu",
"clear": "Futa",
"close": "Funga",
"community": "Jamii",
"community-hub": "Msingi wa jamii",
"community-menu": "Menyu ya Jamii",
"contact": "Wasiliana",
+ "content-buckets": "Vikapu vya yaliomo",
+ "content-resources": "Rasilimali za maudhui",
"content-standardization": "Usanifishaji wa maudhui",
"contributing": "Kuchangia",
"contributors": "Wachangiaji",
@@ -20,14 +32,17 @@
"copied": "Imenakiliwa",
"copy": "Nakala",
"danksharding": "Ugawanyikaji wa Dank",
- "dao-page": "Mashirika huru yasiyotawaliwa (DAOs)",
+ "dao-page": "DAOs - Mashirika huru yasiyotawaliwa",
"dark-mode": "Giza",
"data-provided-by": "Chanzo cha taarifa:",
- "decentralized-applications-dapps": "Programu zisizoendeshwa na benki kuu wala serikali (dapps)",
+ "decentralized-applications-dapps": "Dapps - Programu zisizoendeshwa na benki kuu wala serikali",
"decentralized-identity": "Utambulisho uliogatuliwa",
"decentralized-social-networks": "Mitandao ya kijamiii iliogatuliwa",
- "decentralized-science": "Sayansi iliogatuliwa (DeSci)",
- "defi-page": "Fedha zisizotawalia (DeFi)",
+ "decentralized-science": "DeSci - Sayansi iliogatuliwa",
+ "description": "Ufafanuzi wa kipengee cha usogezaji",
+ "defi-page": "DeFi - Fedha zisizotawalia",
+ "design": "Kubuni",
+ "design-principles": "Kanuni za kubuni",
"devcon": "Devkon",
"developers": "Wasanidi programu",
"developers-home": "Nyumba ya Wasanidi Programu",
@@ -59,7 +74,6 @@
"enterprise-menu": "Oradha ya biashara",
"esp": "Programu ya usaidizi kwenye ikolojia",
"eth-current-price": "Bei ya sasa ya ETH(USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Mpango wa malipo ya watafuta hitilafu",
"consensus-when-shipping": "Inasfirishwa lini?",
"ethereum-upgrades": "Visasisho vya Ethereum",
@@ -83,7 +97,7 @@
"feedback-card-prompt-tutorial": "Umesaidika na mafunzo haya?",
"feedback-widget-thank-you-title": "Asante kwa maoni yako!",
"feedback-widget-thank-you-subtitle": "Fanya ukurasa huu kua bora zaidi kwa kujibu maswali kadhaa.",
- "feedback-widget-thank-you-subtitle-ext": "Kwa msaada zaidi unaweza kufikia jumuiya yetu kwenye Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Kwa msaada zaidi unaweza kufikia jumuiya yetu kwenye Discord yetu.",
"feedback-widget-thank-you-timing": "Dakika 2-3",
"feedback-widget-thank-you-cta": "Fungua uangalizi mfupi",
"find-wallet": "Tafuta pochi",
@@ -94,11 +108,10 @@
"grants": "Tunzo",
"grant-programs": "Programu za ikolojia na tunzo",
"guides": "Maelekezo",
- "guides-hub": "Kitovu cha maelekezo",
+ "guides-hub": "Jinsi ya kutumia miongozo",
"history-of-ethereum": "Historia ya Ethereum",
"home": "Nyumbani",
"how-ethereum-works": "Jinsi Ethereum inavyofanya kazi",
- "how-to-register-an-ethereum-account": "Jinsi ya \"kujisajili\" kwenye akaunti ya Ethereum",
"how-to-revoke-token-access": "Jinsi ya Kubatilisha mkataba erevu usifikie fedha zako za kripto",
"how-to-swap-tokens": "Jinsi ya kubadili tokeni",
"how-to-use-a-bridge": "Jinsi ya kuvusha tokeni kwenda safu ya namba 2",
@@ -121,18 +134,112 @@
"learn-more": "Jifunze zaidi",
"less": "Kidogo",
"light-mode": "Nyepesi",
- "listing-policy-disclaimer": "Bidhaa zote zilizo zilizoorodheshwa kwenye ukurasa huu sio uthibitisho rasmi, na zinatolewea kwa kusidi la chanzo cha taarifa tu. kama unataka kuongeza bidhaa ama kutuma maoni juu ya sera ongea suala kwenye GitHub.",
+ "listing-policy-disclaimer": "Bidhaa zote zilizo zilizoorodheshwa kwenye ukurasa huu sio uthibitisho rasmi, na zinatolewea kwa kusidi la chanzo cha taarifa tu. kama unataka kuongeza bidhaa ama kutuma maoni juu ya sera ongea suala kwenye Github.",
"loading": "Inapakia...",
"loading-error": "Tatizo katika upakiaji.",
"loading-error-refresh": "Kuna tatizo, tafadhali fanyiza upya.",
"loading-error-try-again-later": "Imeshindwa kupakia data. Jaribu tena baadae.",
"logo": "nembo",
"mainnet-ethereum": "Mtandao kuu wa Ethereum",
+ "merge": "Unganisha",
"more": "Zaidi",
- "nav-developers": "Wasanidi programu",
+ "nav-about-description": "Mradi wa huria wa umma kwa ajili ya jamii ya Ethereum",
+ "nav-advanced-description": "Pata maelezo kuhusu mada nzito zaidi",
+ "nav-advanced-label": "Ya hali ya juu",
+ "nav-basics-description": "Elewa mambo ya msingi ya Ethereum",
+ "nav-basics-label": "Mambo ya msingi",
+ "nav-bridges-description": "Web3 imekua mfumo wa ikolojia wa minyororo bloku ya msingi ya L1 na programu za uboreshaji wa L2",
+ "nav-builders-home-description": "Mwongozo wa mjenzi wa Ethereum—na wajenzi, kwa wajenzi",
+ "nav-builders-home-label": "Nyumbani kwa mjenzi",
+ "nav-contribute-description": "Ikiwa unataka usaidizi, hii itakuongoza",
+ "nav-contribute-label": "Kuchangia kwenye ethereum.org",
+ "nav-dao-description": "Jamii zinazomilikiwa na wanachama bila mamlaka ya serikali",
+ "nav-dapps-description": "Gundua mfumo ikolojia wenye programu nyingi kwa kutumia Ethereum",
+ "nav-defi-description": "Mfumo mbadala huria wa kimataifa kwa soko la fedha la zamani",
+ "nav-desci-description": "Mfumo mbadala huria wa kimataifa kwa mfumo wa sasa wa kisayansi",
+ "nav-desoc-description": "Mifumo ya mnyororo bloku ya mawasiliano ya jamii na uundaji wa maudhui",
"nav-developers-docs": "Nyaraka za wasanidi programu",
+ "nav-developers": "Wasanidi programu",
+ "nav-did-description": "Toa na umiliki vitambulishi vyako vya kipekee vilivyogatuliwa",
+ "nav-docs-description": "Hati za kukusaidia kuelewa na kujenga kwa Ethereum",
+ "nav-docs-design-description": "Ufafanuzi wa changamoto za kipekee za muundo wa web3, desturi bora na maarifa ya utafiti wa mtumiaji",
+ "nav-docs-design-label": "Mambo ya msingi ya muundo wa UX/UI",
+ "nav-docs-foundation-description": "Mambo ya msingi ya kuimarika kwenye Ethereum",
+ "nav-docs-overview-description": "Nyumbani kwako kwa hati za wasanidi programu",
+ "nav-docs-stack-description": "Elewa maelezo yote ya bloku ya Ethereum",
+ "nav-eip-description": "Viwango vinavyobainisha vipengele au michakato mipya",
+ "nav-eip-label": "EIP - Mapendekezo ya uboreshaji wa Ethereum",
+ "nav-emerging-description": "Fahamu visa vingine vipya zaidi vya matumizi vya Ethereum",
+ "nav-enterprise-description": "Programu za biashara za Ethereum",
+ "nav-ethereum-org-description": "Tovuti hii inachochewa kijamii—jiunge nasi na uchangie pia",
+ "nav-ethereum-wallets-description": "Programu ya kutumia akaunti yako ya Ethereum",
+ "nav-events-description": "Ugatuaji na uhuru wa kushiriki kwa kila mtu",
+ "nav-events-irl-description": "Kila mwezi kuna matukio makubwa ya Ethereum ya ana kwa ana au mtandaoni",
+ "nav-events-label": "Jamii na matukio",
+ "nav-events-online-description": "Mamia ya maelfu ya wapenzi wa Ethereum wako katika jamii hizi za mtandaoni",
+ "nav-find-wallet-description": "Pochi hukuruhusu kutumia kripto",
+ "nav-find-wallet-label": "Chagua pochi yako",
+ "nav-gas-fees-description": "Jinsi ada za muamala wa ETH zinazovyokokotolewa",
+ "nav-gas-fees-label": "Ada ya gesi",
+ "nav-get-eth-description": "Unahitaji ether (ETH) ili kutumia programu za Ethereum",
+ "nav-get-started-description": "Hatua zako za kwanza kutumia Ethereum",
+ "nav-governance-description": "Mchakato unaohusika katika kuboresha itifaki ya Ethereum",
+ "nav-governance-label": "Utawala",
+ "nav-grants-description": "Orodha iliyorekebishwa na jamii yetu kuhusu miradi inayotoa mipango ya fedha za ruzuku",
+ "nav-guide-create-account-description": "Yeyote anaweza kufungua akaunti ya Ethereum wakati wowote, bila malipo kwa programu ya pochi",
+ "nav-guide-revoke-access-description": "Endelea kuwa salama wakati wa kutumia mikataba-erevu na programu katika mfumo ikolojia wa Ethereum",
+ "nav-guide-revoke-access-label": "Jinsi ya kubatilisha ufikiaji wa mkataba-erevu",
+ "nav-guide-use-wallet-description": "Pata maelezo ya jinsi ya kutumia vipengele vyote vya msingi vya pochi",
+ "nav-guide-use-wallet-label": "Jinsi ya kutumia pochi",
+ "nav-guides-description": "Miongozo halisi ya hatua kwa hatua ya kukusaidia kuanza",
+ "nav-guides-label": "Jinsi ya kutumia miongozo",
+ "nav-history-description": "Ratiba ya migawanyiko na taarifa zote kuu",
+ "nav-history-label": "Historia ya kiufundi ya Ethereum",
+ "nav-layer-2-description": "Miamala nafuu na ya haraka ya Ethereum",
+ "nav-learn-by-coding-description": "Zana za kukusaidia kujaribu Ethereum",
+ "nav-local-env-description": "Chagua na ufungue bloku ya maendeleo yako ya Ethereum",
+ "nav-mainnet-description": "Programu za mnyororo wa bloku za biashara zinaweza kuundwa kwenye Mtandao Mkuu wa umma wa Ethereum",
+ "nav-nft-description": "Njia ya kuwakilisha kitu chochote cha pekee kama mali zilizojengwa na Ethereum",
+ "nav-open-research-description": "Moja ya nguvu za msingi za Ethereum ni jamii yake ya utafiti wa mara kwa mara",
+ "nav-open-research-label": "Tafiti zilizowazi",
+ "nav-overview-description": "Masuala yote yanayohusu elimu ya Ethereum",
+ "nav-participate-overview-description": "Muhtasari kuhusu jinsi ya kushiriki",
"nav-primary": "Msingi",
- "nft-page": "Ishara zisizoambukiza (NFTs)",
+ "nav-quizzes-description": "Fahamu jinsi ya kuelewa vyema Ethereum na cryptocurrency",
+ "nav-quizzes-label": "Jaribu maarifa yako",
+ "nav-refi-description": "Mfumo wa uchumi mbadala uliojengwa kwa kanuni endelevu",
+ "nav-research-description": "Michakato inayotumiwa kuboresha Ethereum",
+ "nav-research-label": "Utafiti na maendeleo",
+ "nav-roadmap-description": "Njia ya uimarikaji, usalama na uendelevu zaidi wa Ethereum",
+ "nav-roadmap-future-description": "Kuimarisha Ethereum kama mtandao madhubuti na uliogatuliwa",
+ "nav-roadmap-future-label": "Uthibitishaji-wa-badae",
+ "nav-roadmap-label": "Mpango",
+ "nav-roadmap-scaling-description": "Taarifa za mtandao ili kupunguza zaidi gharama na kasi",
+ "nav-roadmap-security-description": "Kuhakiklisha kuwa Ethereum inaendelea kuwa imara kwa aina zote za mashambulizi siku zijazo",
+ "nav-roadmap-security-label": "Usalama ulioimarishwa",
+ "nav-roadmap-ux-description": "Kutumia Ethereum kunahitaji kurahisishwa",
+ "nav-run-a-node-description": "Kuwa huru kikamilifu huku ukisaidia kulinda mtandao",
+ "nav-security-description": "Jifunze desturi bora unapotumia sarafu ya kripto",
+ "nav-smart-contracts-description": "Bloku za msingi za ujenzi za mfumo ikolojia wa Ethereum",
+ "nav-stablecoins-description": "Sarafu imara ni token za Ethereum zilizoundwa ili kusalia kwenye thamani isiyobadilika",
+ "nav-stake-description": "Pata zawadi kwa kulinda Ethereum",
+ "nav-stake-label": "Hisa",
+ "nav-staking-home-description": "Muhtasari wa machaguo tofauti ya kusimamisha",
+ "nav-staking-pool-description": "Simamisha na upate zawadi kwa kiasi chochote cha ETH kwa kujiunga na wengine",
+ "nav-staking-pool-label": "Usimamishaji wa hisa wa kundi",
+ "nav-staking-saas-label": "Usimamishaji wa huduma",
+ "nav-staking-solo-label": "Usimamishaji binafsi wa hisa",
+ "nav-start-building-description": "Taarifa muhimu kwa wanaoanza",
+ "nav-translation-program-description": "Jitihada za pamoja za kutafsiri ethereum.org hadi lugha zote",
+ "nav-tutorials-description": "Orodha iliyorekebishwa ya mafunzo ya jamii",
+ "nav-use-cases-description": "Gundua hoja tofauti za matumizi ya Ethereum",
+ "nav-what-is-ether-description": "Sarafu ya programu za Ethereum",
+ "nav-what-is-ethereum-description": "Elewa kile ambacho kinafanya Ethereum kuwa ya kipekee",
+ "nav-what-is-web3-label": "Je, Web3 ni nini?",
+ "nav-what-is-web3-description": "Mbadala wa ukiritimba wa serikali unaoamua sheria",
+ "nav-whitepaper-description": "Karatasi nyeupe asili ya Ethereum iliyoandikwa na Vitalik Buterin in 2014",
+ "nav-zkp-description": "Njia ya kuimarisha uthibitisho wa taarifa bila kufichua taarifa yenyewe",
+ "nft-page": "NFTs - Ishara zisizoambukiza",
"nfts": "NFTs",
"no": "Hapana",
"on-this-page": "Juu ya ukurasa huu",
@@ -140,6 +247,8 @@
"page-developers-aria-label": "Menyu kwa Wasanidi Programu",
"page-index-meta-title": "Nyumbani",
"page-last-updated": "Ukurasa ulisasishwa mwisho",
+ "participate": "Shiriki",
+ "participate-menu": "Menyu ya kushiriki",
"pbs": "Utengano wa mpendekezaji-mjenzi",
"pools": "Usimamishaji wa hisa wa kundi",
"privacy-policy": "Sera ya faragha",
@@ -150,8 +259,10 @@
"refresh": "Tafadhali onyesha ukurasa upya.",
"return-home": "rudi nyumbani",
"roadmap": "Barabara ya Ethereum",
+ "research": "Utafiti",
+ "research-menu": "Menyu ya utafiti",
"resources": "Rasilimali za tafsiri",
- "regenerative-finance": "Uzalishaji upya wa fedha (ReFi)",
+ "regenerative-finance": "ReFi - Uzalishaji upya wa fedha",
"run-a-node": "Endesha nodi",
"rollup-component-website": "Tovuti",
"rollup-component-developer-docs": "Nyaraka za msanidi programu",
@@ -164,6 +275,7 @@
"search-box-blank-state-text": "Umabali wa kutafuta!",
"search-eth-address": "Hii inafanana na anuwani ya Ethereum. Hatutoi taarifa za anuwani yenyewe. Jaribu kuitafuta kwenye chunguzi za bloku kama",
"search-no-results": "Hakuna matokeo ya ulichotafuta",
+ "security": "Usalama",
"single-slot-finality": "Mwisho wa nafasi-moja",
"statelessness": "Pasipokua na hali",
"see-contributors": "Ona wachangiaji",
@@ -172,15 +284,14 @@
"show-all": "Onyesha yote",
"show-less": "Onyesha chache",
"site-description": "Ethereum ni jukwaa la kimataifa, ambalo halitegemei wamiliki wa madaraka kwa pesa na aina mpya za programu. Kwenye Ethereum, unaweza kuandika msimbo unaodhibiti pesa, na kuunda programu zinazoweza kupatikana mahali popote ulimwenguni.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Ruka kwenda kwenye maudhui makuu",
"smart-contracts": "Mikataba erevu",
- "stablecoins": "Sarafu imara",
+ "stablecoins": "Sarafu-imara",
"stake-eth": "Weka ETH",
"staking": "Kusimamisha",
"start-here": "Anza hapa",
- "style-guide": "Style guide",
"solo": "Usimamishaji binafsi wa hisa",
+ "support": "Msaada",
"terms-of-use": "Masharti ya matumizi",
"translation-banner-body-new": "Unatazama ukurahasa huu kwa kiingereza kwasababu bado hatujautafsiri. Tusaidie kutafsiri maudhui haya.",
"translation-banner-body-update": "Kuna toleo jipya la ukurasa huu ila liko kwenye Kiingereza tu hivi sasa. Tusaidie kutafsiri toleo jipya zaidi.",
@@ -191,17 +302,18 @@
"translation-banner-no-bugs-title": "Hapana hitilafu hapa!",
"translation-banner-no-bugs-content": "Ukurasa huu hautafsiriwi. Tumeuacha ukurasa huu kwa Kiingereza kwa sasa.",
"translation-banner-no-bugs-dont-show-again": "Usionyeshe tena",
+ "translation-program": "Programu ya Kutafsiri",
"try-using-search": "Jaribu kutumia utafutaji kupata unachotafuta",
"tutorials": "Mafunzo",
"up": "Juu",
+ "use": "Tumia",
"use-ethereum": "Tumia Ethereum",
"use-ethereum-menu": "Tumia orodha ya Ethereum",
- "user-experience": "User experience",
+ "use-menu": "Tumia menyu",
"verkle-trees": "Miti ya Verkle",
"wallets": "Pochi",
"we-couldnt-find-that-page": "Hatukuweza kupata ukurasa huo",
"web3": "Je, Web3 ni nini?",
- "web3-title": "Web3",
"website-last-updated": "Ukurasa ulisasishwa mwisho",
"what-is-ether": "Ether ni nini (ETH)?",
"what-is-ethereum": "Ethereum ni nini?",
diff --git a/src/intl/sw/page-dapps.json b/src/intl/sw/page-dapps.json
index 4891a7a36ef..aaf01322a63 100644
--- a/src/intl/sw/page-dapps.json
+++ b/src/intl/sw/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Pata mtiririko wa hela katika wakati halisi.",
"page-dapps-dapp-description-superrare": "Nunua kazi za sanaa za kiidjitali kutka kwa wasanii au masoko ya sekondari.",
"page-dapps-dapp-description-token-sets": "Mikakati ya uwekezaji ya Crypto ambayo inasawazisha kiotomatiki.",
- "page-dapps-dapp-description-tornado-cash": "Fanya miamala ya siri kwenye Ethereum.",
"page-dapps-dapp-description-uniswap": "Badilisha ishara kiurahisis au toa ishara kupata zawadi kwa silimia % kadhaa.",
"page-dapps-dapp-description-dexguru": "Ufanyaji wa biashara bila usimamizi kwa wauzaji wa fedha zilizogatuliwa",
"page-dapps-dapp-description-synthetix": "Synthetix ni itifaki ya utoaji wa na ufanyaji biashara wa amali asili",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Hizi ni programu ambazo zinaangazia ugatuaji wa zana za wasanidi programu, kujumuisha mifumo ya kriptoeconomic katika teknolojia iliyopo, na kuunda soko kwa kazi huria ya ukuzaji.",
"page-dapps-technology-title": "Teknolojia zilizogatuliwa",
"page-dapps-token-sets-logo-alt": "Nembo ya Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Nembo ya Tornado cash",
"page-dapps-uniswap-logo-alt": "Nembo ya Uniswap",
"page-dapps-wallet-callout-button": "Tafuta pochi",
"page-dapps-wallet-callout-description": "Pochi ni dapps pia. Tafuta moja kulingana na vipengele vinavyokufaa.",
diff --git a/src/intl/sw/page-languages.json b/src/intl/sw/page-languages.json
index 649ab7ef242..da18abbfd0f 100644
--- a/src/intl/sw/page-languages.json
+++ b/src/intl/sw/page-languages.json
@@ -11,21 +11,29 @@
"page-languages-want-more-header": "Unataka kuona ethereum.org katika lugha tofauti?",
"page-languages-want-more-link": "Programu ya Kutafsiri",
"page-languages-want-more-paragraph": "watafsiri wa ethereum.org daima wanatafsiri kurasa katika lugha nyingi iwezekanavyo. Ili kuona kile wanachofanyia kazi hivi sasa au kujiandikisha ili ujiunge nao, soma kuhusu yetu",
- "page-languages-filter-placeholder": "Chujio",
+ "page-languages-filter-label": "Orodha ya vichujio",
+ "page-languages-filter-placeholder": "Andika kwenye kichujio",
+ "page-languages-browser-default": "Chaguomsingi la kivinjari",
+ "page-languages-translated": "imetafsiriwa",
+ "page-languages-words": "maneno",
+ "page-languages-recruit-community": "Tusaidie kutafsiri ethereum.org.",
"language-ar": "Kiarabu",
"language-az": "Kiazerbaijani",
"language-bg": "Kibulgaria",
"language-bn": "Kibengali",
"language-ca": "Kikatalani",
"language-cs": "Kicheki",
+ "language-da": "Kidenishi",
"language-de": "Kijerumani",
"language-el": "Kigiriki",
"language-en": "Kiingereza",
- "language-es": "Kiispaniola",
+ "language-es": "Kihispania",
"language-fa": "Kifarsi",
"language-fi": "Kifini",
"language-fr": "Kifaransa",
"language-gl": "Kigalisia",
+ "language-gu": "Kigujarati",
+ "language-he": "Kiyahudi",
"language-hi": "Kihindi",
"language-hr": "Kikroeshia",
"language-hu": "Kihungaria",
@@ -34,6 +42,8 @@
"language-it": "Kiitaliano",
"language-ja": "Kijapani",
"language-ka": "Kijojia",
+ "language-kk": "Kikazakhi",
+ "language-km": "Kikhmeri",
"language-ko": "Kikorea",
"language-lt": "Kiluthuania",
"language-ml": "Kimalayalam",
@@ -41,6 +51,8 @@
"language-ms": "Kimalai",
"language-nb": "Kinorwei",
"language-nl": "Kiholanzi",
+ "language-pcm": "Kinigeria pidgin",
+ "language-fil": "Kifilipino",
"language-pl": "Kipoland",
"language-pt": "Kireno",
"language-pt-br": "Kireno(Cha Kibrazili)",
@@ -51,9 +63,12 @@
"language-sl": "Kislovenia",
"language-sr": "Kiserbia",
"language-sw": "Swahili",
+ "language-ta": "Kitamili",
"language-th": "Kithai",
"language-tr": "Kituruki",
"language-uk": "Kiyukrenia",
+ "language-ur": "Kiurdu",
+ "language-uz": "Kiuzbeki",
"language-vi": "Kivietinamu",
"language-zh": "Kichina Kilichorahisishwa",
"language-zh-tw": "Kichina cha jadi"
diff --git a/src/intl/sw/page-stablecoins.json b/src/intl/sw/page-stablecoins.json
index b2ffcee7d56..550d9350553 100644
--- a/src/intl/sw/page-stablecoins.json
+++ b/src/intl/sw/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Chanzo",
"page-stablecoins-bitcoin-pizza": "Pizza isiomaarufu ya Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Mwaka 2010, jamaa fulani alinunua pizza 2 kwa bitcoin 10,000. Kwa wakati huo bitcoin ililkua na thamani ya dola ya Marekani ~$41. Kwenye soko la leo hayo ni mamilioni ya dola. Kuna miamala ya kufanana yenye majuto kwenye historia ya Ethereum. Sarafu-imara hutoa suluhisho juu ya tatizo hili, ili uweze kufurahia pizza yako na kuendelea kushikilia ETH yako.",
+ "page-stablecoins-category-dashboard-and-education": "Dashboard & Elimu",
"page-stablecoins-coin-price-change": "Mabadiliko ya bei ya sarafu (siku 30 zilizopita)",
"page-stablecoins-crypto-backed": "Inategemea Kripto",
"page-stablecoins-crypto-backed-con-1": "Uimara wake uko chini ya uimara wa sarafu-imara zinazotegemea fedha halisi za serikali.",
diff --git a/src/intl/ta/common.json b/src/intl/ta/common.json
index 86dc3caeac4..67a3482b6c9 100644
--- a/src/intl/ta/common.json
+++ b/src/intl/ta/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "கணக்குச் சுருக்கம்",
"about-ethereum-org": "ethereum.org பற்றிய தகவல்கள்",
"about-us": "எங்களைப் பற்றிய தகவல்கள்",
+ "adding-desci-projects": "டெஸ்கி திட்டங்களைச் சேர்த்தல்",
+ "adding-developer-tools": "உருவாக்குநர்கள் (டெவலப்பர்கள்) கருவிகளைச் சேர்த்தல்",
+ "adding-exchanges": "எக்ஸ்சேஞ்ச்களைச் சேர்த்தல்",
+ "adding-glossary-terms": "சொற்களஞ்சிய சொற்களைச் சேர்த்தல்",
+ "adding-staking-products": "ஸ்டேக்கிங் தயாரிப்புகளைச் சேர்த்தல்",
+ "adding-wallets": "வாலட்களைச் சேர்த்தல்",
+ "account-abstraction": "கணக்குச் சுருக்கம்",
+ "acknowledgements": "ஒப்புதல்கள்",
"aria-toggle-search-button": "தேடல் மெனு பட்டனை நிலைமாற்றும்",
"aria-toggle-menu-button": "மெனு பட்டனை நிலைமாற்றும்",
"beacon-chain": "தீப்பந்த சங்கிலி",
"bridges": "பிளாக்செயின் பாலங்கள்",
+ "bug-bounty": "பிழைக்கான ஊக்க ஊதியம்",
+ "build": "கட்டமைப்பு",
+ "build-menu": "மெனுவை கட்டமைக்கவும்",
"clear": "அழி",
"close": "மூடு",
"community": "சமூகம்",
"community-hub": "சமூக மையம்",
"community-menu": "சமூகம் மெனு",
"contact": "தொடர்புக்கு",
+ "content-buckets": "உள்ளடக்கப் பக்கெட்கள்",
+ "content-resources": "உள்ளடக்க வளங்கள்",
"content-standardization": "தகவல் தரப்படுத்தல்",
"contributing": "பங்களிக்கிறீர்கள்",
"contributors": "பங்களிப்பாளர்கள்",
@@ -20,14 +32,17 @@
"copied": "நகலெடுக்கப்பட்டது",
"copy": "நகலெடு",
"danksharding": "டான்க்ஷார்டிங்",
- "dao-page": "பன்முனைப்படுத்தப்பட்ட தன்னாட்சி அமைப்புகள் (DAOs)",
+ "dao-page": "DAOs - பன்முனைப்படுத்தப்பட்ட தன்னாட்சி அமைப்புகள்",
"dark-mode": "அடர்நிறம்",
"data-provided-by": "தரவு மூலம்:",
- "decentralized-applications-dapps": "பன்முனைச் செயலிகள் (dapps)",
+ "decentralized-applications-dapps": "Dapps - பன்முனைச் செயலிகள்",
"decentralized-identity": "பன்முனைப்படுத்தப்பட்ட அடையாளம்",
"decentralized-social-networks": "பன்முனைப்படுத்தப்பட்ட சமூக வலைப்பின்னல்கள்",
- "decentralized-science": "பன்முனை அறிவியல் (DeSci)",
- "defi-page": "பன்முனைப்படுத்தப்பட்ட நிதி (DeFi)",
+ "decentralized-science": "DeSci - பன்முனை அறிவியல்",
+ "description": "நேவி உருப்படிக்கான விளக்கம்",
+ "defi-page": "DeFi - பன்முனைப்படுத்தப்பட்ட நிதி",
+ "design": "வடிவமைப்பு",
+ "design-principles": "வடிவமைப்புக் கொள்கைகள்",
"devcon": "டெவ்கான்",
"developers": "உருவாக்குநர்கள் (டெவலப்பர்கள்)",
"developers-home": "உருவாக்குநர்களின் முகப்பு",
@@ -51,7 +66,7 @@
"documentation": "ஆவணப்படுத்துதல்",
"down": "கீழே",
"ecosystem": "சூழல்",
- "edit-page": "பக்கத்தைத் திருத்து",
+ "edit-page": "பக்கத்தைத் தொகுக்க",
"ef-blog": "எத்தேரியம் நிறுவன வலைப்பதிவு",
"eips": "எத்தேரியம் முன்னேற்ற முன்மொழிவுகள்",
"energy-consumption": "எத்தேரியம் ஆற்றல் நுகர்வு",
@@ -59,7 +74,6 @@
"enterprise-menu": "நிறுவனம் மெனு",
"esp": "சூழலுக்கு ஆதரவு வழங்கும் திட்டம்",
"eth-current-price": "தற்போதைய ETH விலை (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "நிரற் பிழைக்கான எத்தேரியம் வெகுமதித் திட்டம்",
"consensus-when-shipping": "அது எப்போது ஷிப்பிங் செய்யும்?",
"ethereum-upgrades": "எத்தேரியம் மேம்பாடுகள்",
@@ -75,7 +89,7 @@
"ethereum-protocol": "எத்தீரியம் நெறிமுறை",
"ethereum-security": "எத்தேரியம் பாதுகாப்பு மற்றும் மோசடி தடுப்பு",
"ethereum-support": "எத்தேரியம் தொடர்பான உதவி",
- "ethereum-wallets": "எத்தேரியம் பணப்பைகள்",
+ "ethereum-wallets": "Ethereum பணப்பைகள்",
"ethereum-whitepaper": "எத்தேரியம் யாதாஸ்து",
"feedback-widget-prompt": "இந்தப் பக்கம் உதவியாக உள்ளதா?",
"feedback-card-prompt-page": "இந்தப் பக்கம் உதவியாக இருந்ததா?",
@@ -86,19 +100,18 @@
"feedback-widget-thank-you-subtitle-ext": "உங்களுக்கு உதவி தேவைப்பட்டால், எங்கள் சமூகத்தை Discord தளத்தில் தொடர்புகொள்ளலாம்.",
"feedback-widget-thank-you-timing": "2–3 நிமிடம்",
"feedback-widget-thank-you-cta": "சிறிய கருத்துக்கணிப்பைத் திற",
- "find-wallet": "பணப்பையைத் தேடு",
+ "find-wallet": "பணப்பையைத் தேடுங்கள்",
"future-proofing": "எதிர்காலச்-சான்று",
- "get-eth": "ETHஐ பெறுக",
+ "get-eth": "ETH பெறுக",
"get-involved": "ஈடுபடுத்திக் கொள்ளுங்கள்",
- "get-started": "தொடங்கு",
+ "get-started": "தொடங்குக",
"grants": "உதவித் தொகைகள்",
"grant-programs": "சூழலுக்கான உதவித் தொகை திட்டங்கள்",
"guides": "வழிகாட்டிகள்",
- "guides-hub": "வழிகாட்டிகள் மையம்",
+ "guides-hub": "எப்படி வழிகாட்டுகிறது",
"history-of-ethereum": "எத்தேரியம் வரலாறு",
"home": "முகப்பு",
"how-ethereum-works": "எத்தேரியம் எப்படிச் செயல்படுகிறது?",
- "how-to-register-an-ethereum-account": "எத்தேரியம் கணக்கைப் \"பதிவு\" செய்வது எப்படி",
"how-to-revoke-token-access": "உங்கள் கிரிப்டோ நிதியை மேம்படுத்தப்பட்ட ஒப்பந்த அணுகலை எப்படி\n மீண்டும் பெறுவது",
"how-to-swap-tokens": "டோக்கன்களை மாற்றுவது எப்படி",
"how-to-use-a-bridge": "டோக்கன்களை எப்படி இரண்டாம் அடுக்குடன் இணைப்பது",
@@ -115,11 +128,11 @@
"last-edit": "கடைசியாகத் திருத்தப்பட்டது",
"layer-2": "2ம் அடுக்கு",
"learn": "கற்றுக்கொள்க",
- "learn-by-coding": "குறியீடுகளை எழுதுவதன் மூலம் கற்றுக்கொள்க",
+ "learn-by-coding": "குறியீடுகள் மூலம் கற்க",
"learn-hub": "கற்கும் கூடம்",
"learn-menu": "கற்றுக்கொள்க மெனு",
"learn-more": "மேலும் அறிக",
- "less": "குறைந்த",
+ "less": "குறைவாக",
"light-mode": "வெளிச்சம்",
"listing-policy-disclaimer": "இந்தப் பக்கத்தில் பட்டியலிடப்பட்டுள்ள அனைத்துத் தயாரிப்புகளுக்கும் அதிகாரப்பூர்வமான ஒப்புதல்கள் வழங்கப்படவில்லை, அவை தகவல்களாக வாசிக்கப்படுவற்காக மட்டுமே வழங்கப்பட்டுள்ளன. நீங்கள் ஒரு தயாரிப்பைச் சேர்க்கவோ கொள்கையைப் பற்றிக் கருத்து வழங்கவோ விரும்பினால், GitHubக்குச் சென்று புகாரளியுங்கள்.",
"loading": "ஏற்றுகிறது...",
@@ -128,11 +141,104 @@
"loading-error-try-again-later": "தகவல்களைப் பெற முடியவில்லை. பின்னர் மீண்டும் முயற்சிக்கவும்.",
"logo": "லோகோ",
"mainnet-ethereum": "முதன்வலை எத்தேரியம்",
+ "merge": "இணைக்கவும்",
"more": "மேலும்",
- "nav-developers": "உருவாக்குநர்கள் (டெவலப்பர்கள்)",
+ "nav-about-description": "எத்தேரியம் சமூகத்திற்கான ஒரு பொதுவான, வெளிப்படையான திட்டம்",
+ "nav-advanced-description": "மிகவும் சிக்கலான தலைப்புகளைக் கற்றுக்கொள்ளுங்கள்",
+ "nav-advanced-label": "மேம்பட்டவை",
+ "nav-basics-description": "எத்தேரியம்-இன் அடிப்படைகளைப் புரிந்துகொள்ளுங்கள்",
+ "nav-basics-label": "அடிப்படைகள்",
+ "nav-bridges-description": "Web3 முதன்மை L1 பிளாக்செயின்கள் மற்றும் L2 ஸ்கேலிங் தீர்வுகளின் சுற்றுச்சூழல் அமைப்பாக உருவாகியுள்ளது",
+ "nav-builders-home-description": "எத்தீரியம்க்கான பில்டர்ஸ் கையேடு- பில்டர்களுக்கானாது, பில்டர்களால் உருவாக்கப்பட்டது",
+ "nav-builders-home-label": "பில்டர்களின் முகப்பு",
+ "nav-contribute-description": "நீங்கள் உதவ விரும்பினால், இது உங்களுக்கு வழிகாட்டும்",
+ "nav-contribute-label": "ethereum.org தளத்திற்கான பங்களிப்பு",
+ "nav-dao-description": "மையப்படுத்தப்பட்ட அதிகாரம் அற்ற உறுப்பினர்களுக்குச் சொந்தமான சமூகங்கள்",
+ "nav-dapps-description": "எத்தேரியம்-ஐ பயன்படுத்தி செயலிகளின் உயரிய அமைப்பை ஆராய்ந்திடுங்கள்",
+ "nav-defi-description": "பாரம்பரிய நிதிச் சந்தைக்கான உலகளாவிய, வெளிப்படையான மாற்று",
+ "nav-desci-description": "தற்போதைய விஞ்ஞான அமைப்பிற்கான உலகளாவிய, வெளிப்படையான மாற்று",
+ "nav-desoc-description": "சமூக தொடர்பு மற்றும் உள்ளடக்க உருவாக்கத்திற்கான பிளாக்செயின் அடிப்படையிலான தளங்கள்",
"nav-developers-docs": "உருவாக்குநர்களின் ஆவணங்கள்",
+ "nav-developers": "உருவாக்குநர்கள் (டெவலப்பர்கள்)",
+ "nav-did-description": "உங்கள் தனிப்பட்ட பரவலாக்கப்பட்ட அடையாளங்காட்டிகளை வழங்கி உரிமையைக் கொண்டிருங்கள்",
+ "nav-docs-description": "எத்தேரியம் குறித்து புரிந்துகொள்ளவும் அதனுடன் வளர்ச்சியை அடைவதற்கு உதவும் ஆவணங்கள்",
+ "nav-docs-design-description": "தனித்துவமான web3 வடிவமைப்புச் சவால்கள், சிறந்த நடைமுறைகள் மற்றும் பயனர் ஆராய்ச்சி நுண்ணறிவுகளின் விளக்கம்",
+ "nav-docs-design-label": "UX/UI வடிவமைப்பு அடிப்படைகள்",
+ "nav-docs-foundation-description": "எத்தேரியம்-இல் உருவாக்குவதற்கான முக்கிய அடிப்படைகள்",
+ "nav-docs-overview-description": "உருவாக்குநர்கள் (டெவலப்பர்கள்) ஆவணங்களுக்கான உங்கள் முகப்பு",
+ "nav-docs-stack-description": "எத்தேரியம் ஸ்டாக்-இன் அனைத்து விவரங்களையும் புரிந்துகொள்ளுதல்",
+ "nav-eip-description": "புதிய அம்சங்கள் அல்லது செயல்முறைகளைக் குறிப்பிடும் தரநிலைகள்",
+ "nav-eip-label": "EIPக்கள் - எத்தேரியம் முன்னேற்ற முன்மொழிவுகள்",
+ "nav-emerging-description": "எத்தேரியம்-க்கான பிற புதிய பயன்பாட்டு நிலைகளைத் தெரிந்துகொள்ளுதல்",
+ "nav-enterprise-description": "எத்தேரியம்-க்கான வணிக செயலிகள்",
+ "nav-ethereum-org-description": "இந்த இணையதளம் சமூகத்தால் வழிநடத்தப்படுகிறது - எங்களுடன் சேர்ந்து பங்களித்திடுங்கள்",
+ "nav-ethereum-wallets-description": "உங்கள் எத்தேரியம் கணக்குடன் ஊடாடுவதற்கான செயலி",
+ "nav-events-description": "அதிகாரப் பரவலாக்கம் மற்றும் எவரும் பங்கேற்கும் சுதந்திரம்",
+ "nav-events-irl-description": "ஒவ்வொரு மாதமும் நேரில் பங்கேற்கும் மற்றும் ஆன்லைனில் பங்கேற்கும் முக்கிய எத்தேரியம் நிகழ்வுகள்",
+ "nav-events-label": "சமூகங்கள் மற்றும் நிகழ்வுகள்",
+ "nav-events-online-description": "இந்த ஆன்லைன் சமூகத்தில் ஆயிரக்கணக்கான எத்தேரியம் பயனர்கள் ஒன்றுசேர்கின்றனர்",
+ "nav-find-wallet-description": "வாலட்கள் கிரிப்டோவை பயன்படுத்த அனுமதிக்கிறது",
+ "nav-find-wallet-label": "உங்கள் வாலட்டை தேர்ந்தெடுக்கவும்",
+ "nav-gas-fees-description": "ETH பரிவர்த்தனை கட்டணங்கள் எவ்வாறு கணக்கிடப்படுகின்றன",
+ "nav-get-eth-description": "எத்தேரியம் செயலிகளில் பயன்படுத்த உங்களுக்கு ஈதர்(ETH) தேவைப்படும்",
+ "nav-get-started-description": "எத்தேரியம்-ஐ பயன்படுத்துவதற்கான உங்கள் முதற்படிகள்",
+ "nav-governance-description": "எத்தேரியம் நெறிமுறையை புதுப்பிக்கும் செயல்முறை",
+ "nav-governance-label": "நிர்வாகம்",
+ "nav-grants-description": "மானிய நிதி திட்டங்களை வழங்கும் திட்டங்களில் எங்கள் சமூகத்தால் தொகுக்கப்பட்ட பட்டியல்",
+ "nav-guide-create-account-description": "எந்த நேரத்திலும் ஒரு வாலட் செயலியுடன் இலவசமாக எவரும் ஒரு எத்தேரியம் கணக்கை உருவாக்கலாம்",
+ "nav-guide-revoke-access-description": "எத்தேரியம் அமைப்பில் உள்ள ஸ்மார்ட் ஒப்பந்தங்கள் மற்றும் செயலிகளைப் பயன்படுத்தும்போது பாதுகாப்பாக இருந்திடுங்கள்",
+ "nav-guide-revoke-access-label": "ஸ்மார்ட் ஒப்பந்த அணுகலை எவ்வாறு திரும்பப் பெறுவது",
+ "nav-guide-use-wallet-description": "வாலட்-இன் அடிப்படை செயல்பாடுகள் அனைத்தையும் எவ்வாறு பயன்படுத்துவது என்பதை கற்றல்",
+ "nav-guide-use-wallet-label": "Wallet பயன்படுத்துவது எப்படி",
+ "nav-guides-description": "நீங்கள் தொடங்குவதற்கு உதவும் வகையில் படிப்படியான செயல்முறை வழிகாட்டு முறைகள்",
+ "nav-guides-label": "எப்படி வழிகாட்டுகிறது",
+ "nav-history-description": "அனைத்து முக்கிய ஃபோர்க்குகள் மற்றும் புதுப்பித்தலுக்கான காலவரையறை",
+ "nav-history-label": "எத்தேரியம்-இன் தொழில்நுட்ப வரலாறு",
+ "nav-layer-2-description": "எத்தேரியம்-க்கான விலைமலிவான மற்றும் விரைவான பரிவர்த்தனைகள்",
+ "nav-learn-by-coding-description": "எத்தேரியம் உடன் ஆராய்வதற்கு உதவக்கூடிய கருவிகள்",
+ "nav-local-env-description": "உங்கள் எத்தேரியம் உருவாக்க அடுக்கைத் தேர்ந்தெடுத்து அமைத்தல்",
+ "nav-mainnet-description": "நிறுவன பிளாக்செயின் செயலிகள் பொது எத்தேரியம் மெயின்நெட்டில் உருவாக்கலாம்",
+ "nav-nft-description": "எத்தேரியம் அடிப்படையிலான உடைமையைப் போன்று ஏதேனும் தனித்துவமான ஒன்றை கட்சிப்படுத்தும் வழி",
+ "nav-open-research-description": "எத்தேரியம்-இன் முதன்மை வலிமைகளில் ஒன்று அதன் செயல்பாட்டுடன் கூடிய ஆராய்ச்சி சமூகம்",
+ "nav-open-research-label": "திறந்த ஆராய்ச்சி",
+ "nav-overview-description": "எத்தேரியம் சார்ந்த அனைத்து கல்வி",
+ "nav-participate-overview-description": "எவ்வாறு பங்கேற்பது என்பதன் மீதான கண்ணோட்டம்",
"nav-primary": "முதன்மை",
- "nft-page": "மாற்ற முடியாத டோக்கன்கள் (NFTs)",
+ "nav-quizzes-description": "எத்தேரியம் மற்றும் கிரிப்டோகரன்சி குறித்து எவ்வளவு நன்றாகப் புரிந்துவைத்துள்ளீர்கள் என்று கண்டறிதல்",
+ "nav-quizzes-label": "உங்கள் பொதுஅறிவை சோதித்தல்",
+ "nav-refi-description": "மீளுருவாக்கம் கொள்கைகளைக் கொண்டு உருவாக்கப்பட்ட ஒரு மாற்று பொருளாதார அமைப்பு",
+ "nav-research-description": "எத்தேரியம்-ஐ மேம்படுத்துவதற்கு பயன்படுத்தப்படும் செயல்முறைகள்",
+ "nav-research-label": "ஆராய்ச்சி மற்றும் வளர்ச்சி",
+ "nav-roadmap-description": "எத்தேரியம்-க்கான அதிக அளவிடுதல், பாதுகாப்பு மற்றும் நிலைத்தன்மைக்கான பாதை",
+ "nav-roadmap-future-description": "Ethereum ஒரு வலுவான மற்றும் பரவலாக்கப்பட்ட நெட்வொர்க்காகத் திடப்படுத்துதல்",
+ "nav-roadmap-future-label": "எதிர்காலச்-சான்று",
+ "nav-roadmap-label": "திட்டப்பாதை",
+ "nav-roadmap-scaling-description": "பரிவர்த்தனை கட்டணங்கள் மற்றும் வேகத்தை மேலும் குறைப்பதற்கான நெட்வொர்க் புதுப்பித்தல்கள்",
+ "nav-roadmap-security-description": "எத்தேரியம் எதிர்காலத்தில் அனைத்து வகையான சைபர் தாக்குதல்களையும் தாங்கி நிற்கிறது என்பதை உறுதி செய்தல்",
+ "nav-roadmap-security-label": "மேம்பட்ட பாதுகாப்பு",
+ "nav-roadmap-ux-description": "எத்தேரியம் பயன்பாடு எளிதாக்கப்பட வேண்டும்",
+ "nav-run-a-node-description": "நெட்வொர்க்கைப் பாதுகாக்க உதவும்போது முழு இறையாண்மையாக இருத்தல்",
+ "nav-security-description": "கிரிப்டோகரன்சியை பயன்படுத்தும்போது சிறந்த செயல்முறையை கற்றிடுங்கள்",
+ "nav-smart-contracts-description": "எத்தேரியம் அமைப்பின் அடிப்படை வளர்ச்சி படிகள்",
+ "nav-stablecoins-description": "Stablecoins ஒரு நிலையான மதிப்பில் இருக்க வடிவமைக்கப்பட்ட எத்தேரியம் டோக்கன்கள்",
+ "nav-stake-description": "எத்தேரியம்-ஐ பாதுகாப்பதற்கான ரிவார்ட்களை ஈட்டிடுங்கள்",
+ "nav-stake-label": "பங்கு",
+ "nav-staking-home-description": "ஸ்டேக்கிங்-கிற்கான வெவ்வேறு விருப்பத்தேர்வுகளின் கண்ணோட்டம்",
+ "nav-staking-pool-description": "மற்றவர்களுடன் இணைந்து எந்த ஒரு ETH தொகையுடன் ஸ்டேக் செய்து ரிவார்டுகளை ஈட்டிடுங்கள்",
+ "nav-staking-pool-label": "பூல்டு ஸ்டேக்கிங்",
+ "nav-staking-saas-label": "சேவையுடன் கூடிய ஸ்டேகிங்",
+ "nav-staking-solo-label": "சோலோ ஸ்டேக்கிங்",
+ "nav-start-building-description": "புதிதாக நிறுவியுள்ளவர்களுக்கான பயனுள்ள தகவல்கள்",
+ "nav-translation-program-description": "Ethereum.org-ஐ அனைத்து மொழிகளிலும் மொழிபெயர்ப்பு செய்வதற்கான ஒரு கூட்டு முயற்சி",
+ "nav-tutorials-description": "சமூக கல்விசார் பாடங்களின் தொகுப்பு",
+ "nav-use-cases-description": "எத்தேரியம் பயன்பாட்டிற்கான வெவ்வேறு யோசனைகளை கண்டறிதல்",
+ "nav-what-is-ether-description": "எத்தேரியம் செயலிகளின் நாணயம்",
+ "nav-what-is-ethereum-description": "எத்தேரியம்-ஐ எது சிறப்பாக்குகிறது என்பதை புரிந்துகொள்ளுதல்",
+ "nav-what-is-web3-label": "Web3 என்றால் என்ன?",
+ "nav-what-is-web3-description": "விதிகளைக் கொண்டிருக்கும் மையப்படுத்தப்பட்ட தனிஆதிக்கங்களுக்கு மாற்றாக",
+ "nav-whitepaper-description": "2014-இல் அசல் எத்தேரியம் யாதாஸ்துவை விட்டாலிக் புட்டரின் எழுதினார்",
+ "nav-zkp-description": "அறிக்கையை வெளிப்படுத்தாமல் ஒரு அறிக்கையின் செல்லுபடியை நிரூபிக்க ஒரு வழி",
+ "nft-page": "NFTs - மாற்ற முடியாத டோக்கன்கள்",
"nfts": "NFTs",
"no": "இல்லை",
"on-this-page": "இந்தப் பக்கத்தில்",
@@ -140,6 +246,7 @@
"page-developers-aria-label": "டெவலப்பர்களின் மெனு",
"page-index-meta-title": "முகப்பு",
"page-last-updated": "பக்கம் கடைசியாக மாற்றப்பட்டது",
+ "participate-menu": "பங்கேற்பாளர் மெனு",
"pbs": "பல பிரிக்கப்பட்ட சரிபார்ப்பு",
"pools": "பூல்டு ஸ்டேக்கிங்",
"privacy-policy": "தனியுரிமைக் கொள்கை",
@@ -150,9 +257,10 @@
"refresh": "இந்தப் பக்கத்தை ரெஃபிரெஷ் செய்யவும்.",
"return-home": "முகப்புக்குச் செல்",
"roadmap": "எத்தீரியம் திட்டப்படம்",
+ "research": "ஆராய்ச்சி",
+ "research-menu": "ஆராய்ச்சி மெனு",
"resources": "மொழிபெயர்ப்பு ஆதாரங்கள்",
- "regenerative-finance": "Regenerative finance (ReFi)",
- "run-a-node": "முனையை இயக்கு",
+ "run-a-node": "ஒரு கணுவை இயக்கவும்",
"rollup-component-website": "வலைத்தளம்",
"rollup-component-developer-docs": "உருவாக்குநர்களின் ஆவணங்கள்",
"rollup-component-technology-and-risk-summary": "தொழில்நுட்பம் மற்றும் இடர் மதிப்பீட்டு சுருக்கம்",
@@ -164,23 +272,23 @@
"search-box-blank-state-text": "தேடுங்கள்!",
"search-eth-address": "இது எத்தேரியம் முகவரிபோல் தெரிகிறது. முகவரிகளுக்கு ஏற்ப, குறிப்பிட்ட தரவுகளை நாங்கள் வழங்குவதில்லை. இது போன்ற ஒரு பிளாக் உலாவியில் அதைத் தேட முயற்சி செய்க",
"search-no-results": "உங்கள் தேடலுக்கான முடிவுகள் எதுவும் இல்லை",
+ "security": "பாதுகாப்பு",
"single-slot-finality": "ஒருமுறைமாற்றல்",
"statelessness": "நாடற்ற தன்மை",
"see-contributors": "பங்களிப்பாளர்களைக் காட்டு",
- "set-up-local-env": "உட்பணிச் சூழலை உருவாக்கு",
+ "set-up-local-env": "உட்பணிச் சூழல் உருவாக்கு",
"sharding": "ஷார்டிங்",
"show-all": "அனைத்தையும் காட்டு",
"show-less": "குறைவாகக் காட்டு",
"site-description": "எத்தேரியம் என்பது பணம் மற்றும் புதிய வகை செயலிகளுக்கான பன்முனைப்படுத்தப்பட்ட உலகளாவிய தளமாகும். எத்தேரியமில், நீங்கள் பணத்தைக் கட்டுப்படுத்துவதற்கான குறியீட்டை எழுதலாம், உலகின் அனைத்துப் பகுதிகளில் இருந்தும் அணுகக்கூடிய செயலிகளை உருவாக்கலாம்.",
- "site-title": "ethereum.org",
"skip-to-main-content": "பிரதான உள்ளடக்கத்திற்குச் செல்",
"smart-contracts": "ஸ்மார்ட் ஒப்பந்தங்கள்",
- "stablecoins": "ஸ்டேபிள்காயின்ஸ்",
+ "stablecoins": "நிலைத்தக் காசுகள்",
"stake-eth": "எத்தீரியத்தில் பங்குவை",
"staking": "ஸ்டேக்கிங்",
"start-here": "இங்கே இருக்கவும்",
- "style-guide": "Style guide",
"solo": "சோலோ ஸ்டேக்கிங்",
+ "support": "ஆதரவு",
"terms-of-use": "பயன்பாட்டு விதிமுறைகள்",
"translation-banner-body-new": "இவ்விணையப் பக்கம் இன்னும் மொழிபெயர்க்கப்படாததால், இதனை நீங்கள் ஆங்கிலத்தில் காண்கிறீர்கள். இதனை மொழிபெயர்க்க உதவுங்கள்.",
"translation-banner-body-update": "தற்போது இப்பக்கத்திற்கான புதிய பதிப்பு ஆங்கிலத்தில் மட்டுமே உள்ளது. சமீபத்திய பதிப்பினை மொழிபெயர்க்க உதவுங்கள்.",
@@ -191,20 +299,21 @@
"translation-banner-no-bugs-title": "இதில் நிரற்பிழை இல்லை!",
"translation-banner-no-bugs-content": "இன்னும் இந்தப் பக்கம் மொழிபெயர்க்கப்படவில்லை. இந்தப் பக்கத்தை நாங்கள் ஆங்கிலத்திலேயே வைத்திருக்கக் காரணமுள்ளது.",
"translation-banner-no-bugs-dont-show-again": "மீண்டும் காட்ட வேண்டாம்",
+ "translation-program": "மொழிபெயர்ப்புத் திட்டம்",
"try-using-search": "உங்களுக்கு வேண்டியதைக் கண்டறிய தேடல் பட்டனைப் பயன்படுத்தவும் அல்லது",
"tutorials": "பயிற்சிகள்",
"up": "மேலே",
+ "use": "பயன்படுத்த",
"use-ethereum": "எத்தேரியமைப் பயன்படுத்துதல்",
"use-ethereum-menu": "எத்தேரியமைப் பயன்படுத்துதல் மெனு",
- "user-experience": "User experience",
+ "use-menu": "மெனுவை பயன்படுத்துக",
"verkle-trees": "வெர்க்கில் மரங்கள்",
"wallets": "பணப்பைகள்",
"we-couldnt-find-that-page": "அந்தப் பக்கத்தைக் கண்டறிய முடியவில்லை",
"web3": "Web3 என்றால் என்ன?",
- "web3-title": "Web3",
"website-last-updated": "வலைத்தளம் கடைசியாக மாற்றப்பட்டது",
"what-is-ether": "ஈதர் (ETH) என்றால் என்ன?",
- "what-is-ethereum": "எத்தேரியும் என்றால் என்ன?",
+ "what-is-ethereum": "ஈதெரியம் என்றால் என்ன?",
"withdrawals": "ஸ்டேக்கிங் பின்வாங்கல்",
"yes": "ஆம்",
"zero-knowledge-proofs": "ஜீரோ-நிரூபன சான்றுகள்"
diff --git a/src/intl/ta/page-languages.json b/src/intl/ta/page-languages.json
index 527715c614c..50f24fb4783 100644
--- a/src/intl/ta/page-languages.json
+++ b/src/intl/ta/page-languages.json
@@ -1,4 +1,22 @@
{
+ "page-languages-h1": "ஆதரிக்கப்பட்ட மொழி",
+ "page-languages-interested": "பங்களிக்க ஆர்வமா?",
+ "page-languages-learn-more": "எங்கள் மொழிபெயர்ப்புத் திட்டத்தைப் பற்றி மேலும் அறிக",
+ "page-languages-meta-desc": "எத்தீரியம்.ஓஆர்ஜி இன் அனைத்து ஆதரிக்கப்படும் மொழிகளுக்கான ஆதாரங்கள் மற்றும் மொழிபெயர்ப்பாளராக ஈடுபடுவதற்கான வழிகள்.",
+ "page-languages-meta-title": "எத்தீரியம்.ஓஆர்ஜி மொழி மொழிபெயர்ப்புகள்",
+ "page-languages-p1": "எத்தீரியம் என்பது உலகளாவிய திட்டமாகும், மேலும் எத்தீரியம்.ஓஆர்ஜி என்பது அவர்களின் தேசியம் அல்லது மொழியைப் பொருட்படுத்தாமல் அனைவருக்கும் அணுகக்கூடியது. இந்த பார்வையை நனவாக்க எங்கள் சமூகம் கடுமையாக உழைத்து வருகிறது.",
+ "page-languages-translations-available": "எத்தீரியம்.ஓஆர்ஜி பின்வரும் மொழிகளில் கிடைக்கிறது",
+ "page-languages-resources-paragraph": "எத்தீரியம்.ஓஆர்ஜி உள்ளடக்கத்தை மொழிபெயர்ப்பதுடன், நாங்கள் பராமரிக்கிறோம் a",
+ "page-languages-resources-link": "பல மொழிகளில் எத்தீரியம் வளங்களின் தொகுக்கப்பட்ட பட்டியல்",
+ "page-languages-want-more-header": "எத்தீரியம்.ஓஆர்ஜி ஐ வேறு மொழியில் பார்க்க வேண்டுமா?",
+ "page-languages-want-more-link": "மொழிபெயர்ப்புத் திட்டம்",
+ "page-languages-want-more-paragraph": "எத்தீரியம்.ஓஆர்ஜி மொழிபெயர்ப்பாளர்கள் எப்போதும் முடிந்தவரை பல மொழிகளில் பக்கங்களை மொழிபெயர்த்து வருகின்றனர். அவர்கள் இப்போது என்ன வேலை செய்கிறார்கள் என்பதைப் பார்க்க அல்லது அவர்களுடன் சேர பதிவுபெற, எங்களைப் பற்றி படிக்கவும்",
+ "page-languages-filter-label": "வடிகட்டிப் பட்டியல்",
+ "page-languages-filter-placeholder": "வடிகட்டத் தட்டச்சு செய்க",
+ "page-languages-browser-default": "இயல்புநிலை உலாவி",
+ "page-languages-translated": "மொழிபெயர்க்கப்பட்டது",
+ "page-languages-words": "சொற்கள்",
+ "page-languages-recruit-community": "Ethereum.org-ஐ மொழிபெயர்க்க எங்களுக்கு உதவிடுங்கள்.",
"language-ar": "அரபு",
"language-az": "அஜர்பைஜானி",
"language-bg": "பல்கேரியன்",
@@ -14,6 +32,8 @@
"language-fi": "ஃபின்னிஷ்",
"language-fr": "ஃபிரெஞ்சு",
"language-gl": "கலீசியன்",
+ "language-gu": "குஜராத்தி",
+ "language-he": "ஹீப்ரு",
"language-hi": "இந்தி",
"language-hr": "க்ரொயேஷியன்",
"language-hu": "ஹங்கேரியன்",
@@ -23,6 +43,7 @@
"language-ja": "ஜப்பனீஸ்",
"language-ka": "ஜார்ஜியன்",
"language-kk": "கசாக்",
+ "language-km": "கெமெர்",
"language-ko": "கொரியன்",
"language-lt": "லிதுவேனியன்",
"language-ml": "மலையாளம்",
@@ -30,6 +51,7 @@
"language-ms": "மலாய்",
"language-nb": "நார்வீஜியன்",
"language-nl": "டச்சு",
+ "language-pcm": "நைஜீரிய பிட்ஜின்",
"language-fil": "ஃபிலிப்பினோ",
"language-pl": "போலிஷ்",
"language-pt": "போர்ச்சுகீஸ்",
@@ -41,9 +63,12 @@
"language-sl": "ஸ்லோவீனியன்",
"language-sr": "செர்பியன்",
"language-sw": "ஸ்வாஹிலி",
+ "language-ta": "தமிழ்",
"language-th": "தாய்",
"language-tr": "துருக்கி",
"language-uk": "உக்ரேனியன்",
+ "language-ur": "உருது",
+ "language-uz": "உஸ்பெக்",
"language-vi": "வியட்னாமீஸ்",
"language-zh": "எளிமையாக்கப்பட்ட சைனீஸ்",
"language-zh-tw": "பாரம்பரிய சைனீஸ்"
diff --git a/src/intl/ta/page-stablecoins.json b/src/intl/ta/page-stablecoins.json
index a5e0bd06146..987849b0044 100644
--- a/src/intl/ta/page-stablecoins.json
+++ b/src/intl/ta/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao லோகோ",
"matcha-logo": "Matcha லோகோ",
"oasis-logo": "Oasis லோகோ",
- "uniswap-logo": "Uniswap லோகோ"
+ "uniswap-logo": "Uniswap லோகோ",
+ "page-stablecoins-category-dashboard-and-education": "டாஷ்போர்டு & கல்வி"
}
diff --git a/src/intl/th/common.json b/src/intl/th/common.json
index 65ea4470ce0..02921370935 100644
--- a/src/intl/th/common.json
+++ b/src/intl/th/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "บัญชีนามธรรม",
"about-ethereum-org": "เกี่ยวกับ ethereum.org",
"about-us": "เกี่ยวกับเรา",
+ "adding-desci-projects": "เพิ่มโครงการ Desci",
+ "adding-developer-tools": "เพิ่มเครื่องมือของผู้พัฒนา",
+ "adding-exchanges": "เพิ่มการแลกเปลี่ยน",
+ "adding-glossary-terms": "เพิ่มคำศัพท์อภิธานศัพท์",
+ "adding-staking-products": "เพิ่มแสต็กของผลิตภัณฑ์",
+ "adding-wallets": "เพิ่มกระเป๋าเงิน",
+ "account-abstraction": "บัญชีนามธรรม",
+ "acknowledgements": "กิตติกรรมประกาศ",
"aria-toggle-search-button": "ปุ่มเปิด-ปิดการค้นหา",
"aria-toggle-menu-button": "ปุ่มเปิด-ปิดเมนู",
"beacon-chain": "Beacon Chain",
"bridges": "สะพาน Blockchain",
+ "bug-bounty": "โปรแกรมตามล่าหาบั๊ก",
+ "build": "สร้าง",
+ "build-menu": "เมนูสร้าง",
"clear": "ลบ",
"close": "ปิด",
"community": "ชุมชน",
"community-hub": "ศูนย์กลางชุมชน",
"community-menu": "เมนูชุมชน",
"contact": "ติดต่อ",
+ "content-buckets": "ที่เก็บข้อมูลเนื้อหา",
+ "content-resources": "แหล่งข้อมูลเนื้อหา",
"content-standardization": "การกำหนดมาตรฐานเนื้อหา",
"contributing": "การมีส่วนร่วม",
"contributors": "ผู้มีส่วนร่วม",
@@ -20,14 +32,17 @@
"copied": "คัดลอกแล้ว",
"copy": "คัดลอก",
"danksharding": "Danksharding",
- "dao-page": "การบริหารองค์กรอัตโนมัติด้วยระบบ Decentralized (DAOs)",
+ "dao-page": "DAOs - การบริหารองค์กรอัตโนมัติด้วยระบบ Decentralized",
"dark-mode": "โหมดมืด",
"data-provided-by": "แหล่งข้อมูล:",
- "decentralized-applications-dapps": "แอปพลิเคชันไร้ศูนย์กลาง (dApp)",
+ "decentralized-applications-dapps": "DApp - แอปพลิเคชันไร้ศูนย์กลาง",
"decentralized-identity": "ตัวตนแบบกระจายศูนย์",
"decentralized-social-networks": "เครือข่ายสังคมแบบกระจายศูนย์",
- "decentralized-science": "วิทยาศาสตร์แบบ Decentralized (DeSci)",
- "defi-page": "ระบบการเงินแบบ Decentralized (DeFi)",
+ "decentralized-science": "DeSci - วิทยาศาสตร์แบบ Decentralized",
+ "description": "คำอธิบายรายการนำทาง",
+ "defi-page": "DeFi - ระบบการเงินแบบ Decentralized",
+ "design": "ออกแบบ",
+ "design-principles": "หลักการออกแบบ",
"devcon": "Devcon",
"developers": "นักพัฒนา",
"developers-home": "หน้าแรกของนักพัฒนา",
@@ -71,7 +86,7 @@
"ethereum-glossary": "อภิธานศัพท์อีเธอเรียม",
"ethereum-governance": "การกำกับดูแลอีเธอเรียม",
"ethereum-logo": "โลโก้อีเธอเรียม",
- "ethereum-roadmap": "เส้นทาง Ethereum",
+ "ethereum-roadmap": "แผนงานอีเธอเรียม",
"ethereum-protocol": "โปรโตคอลของอีเธอเรียม",
"ethereum-security": "ความปลอดภัยในอีเธอเรียมและการป้องกันการหลอกลวง",
"ethereum-support": "การสนับสนุนเกี่ยวกับอีเธอเรียม",
@@ -83,10 +98,10 @@
"feedback-card-prompt-tutorial": "ได้ประโยชน์จากบทสอนใช้งานนี้หรือไม่",
"feedback-widget-thank-you-title": "ขอขอบคุณสำหรับความคิดเห็น!",
"feedback-widget-thank-you-subtitle": "ช่วยปรับปรุงหน้านี้โดยการตอบคำถาม",
- "feedback-widget-thank-you-subtitle-ext": "หากต้องการความช่วยเหลือ โปรดติดต่อชุมชนของเราทาง Discord",
+ "feedback-widget-thank-you-subtitle-ext": "หากคุณต้องการความช่วยเหลือ โปรดติดต่อที่ชุมชนใน Discord ของเรา",
"feedback-widget-thank-you-timing": "2-3 นาที",
"feedback-widget-thank-you-cta": "เปิดแบบสำรวจอย่างย่อ",
- "find-wallet": "ค้นหาวอลเล็ท",
+ "find-wallet": "ค้นหากระเป๋าสตางค์",
"future-proofing": "รองรับอนาคต",
"get-eth": "รับ ETH",
"get-involved": "เข้าร่วมกับเรา",
@@ -94,11 +109,10 @@
"grants": "ทุน",
"grant-programs": "โครงการสนับสนุนระบบนิเวศ",
"guides": "คู่มือ",
- "guides-hub": "ฮับคู่มือ",
+ "guides-hub": "คู่มือการใช้",
"history-of-ethereum": "ประวัติของอีเธอเรียม",
"home": "หน้าหลัก",
"how-ethereum-works": "อีเธอเรียมทำงานอย่างไร",
- "how-to-register-an-ethereum-account": "วิธี \"ลงทะเบียน\" บัญชีอีเธอเรียม",
"how-to-revoke-token-access": "วิธียกเลิกการเข้าถึงสินทรัพย์คริปโตของคุณจากสัญญาอัจฉริยะ",
"how-to-swap-tokens": "วิธีแลกเปลี่ยนเหรียญโทเค็น",
"how-to-use-a-bridge": "วิธีเชื่อมเหรียญโทเค็นกับเลเยอร์ 2",
@@ -128,11 +142,107 @@
"loading-error-try-again-later": "ไม่สามารถโหลดข้อมูล ลองอีกครั้งในภายหลัง",
"logo": "โลโก้",
"mainnet-ethereum": "Mainnet Ethereum",
+ "merge": "ผสาน",
"more": "เพิ่มเติม",
- "nav-developers": "นักพัฒนา",
+ "nav-about-description": "โครงการโอเพ่นซอร์สสาธารณะสำหรับชุมชนอีเธอเรียม",
+ "nav-advanced-description": "เรียนรู้หัวข้อที่ซับซ้อนมากขึ้น",
+ "nav-advanced-label": "ขั้นสูง",
+ "nav-basics-description": "ทำความเข้าใจปัจจัยพื้นฐานของอีเธอเรียม",
+ "nav-basics-label": "พื้นฐาน",
+ "nav-bridges-description": "Web3 ได้พัฒนาไปสู่ระบบนิเวศของบล็อกเชน L1 หลักและโซลูชันการปรับขนาด L2",
+ "nav-builders-home-description": "คู่มือผู้สร้างสำหรับอีเธอเรียม—โดยผู้สร้าง สำหรับผู้สร้าง",
+ "nav-builders-home-label": "หน้าหลักของผู้สร้าง",
+ "nav-contribute-description": "หากคุณต้องการความช่วยเหลือ นี่จะแนะนำคุณ",
+ "nav-contribute-label": "การมีส่วนร่วมใน ethereum.org",
+ "nav-dao-description": "ชุมชนที่สมาชิกเป็นเจ้าของโดยไม่มีอำนาจจากส่วนกลาง",
+ "nav-dapps-description": "สำรวจระบบนิเวศที่มั่นคงของแอปที่ใช้อีเธอเรียม",
+ "nav-defi-description": "ทางเลือกที่เปิดกว้างระดับโลกสำหรับตลาดการเงินแบบดั้งเดิม",
+ "nav-desci-description": "ทางเลือกที่เปิดกว้างระดับโลกสำหรับระบบวิทยาศาสตร์ในปัจจุบัน",
+ "nav-desoc-description": "แพลตฟอร์มที่ใช้บล็อกเชนสำหรับการโต้ตอบทางสังคมและการสร้างเนื้อหา",
"nav-developers-docs": "เอกสารสำหรับนักพัฒนา",
+ "nav-developers": "นักพัฒนา",
+ "nav-did-description": "ออกและเป็นเจ้าของตัวระบุแบบกระจายศูนยที่ไม่เหมือนใครของคุณ",
+ "nav-docs-description": "เอกสารที่ช่วยให้คุณเข้าใจและสร้างขึ้นด้วยอีเธอเรียม",
+ "nav-docs-design-description": "คำอธิบายของความท้าทายในการออกแบบ web3 ที่ไม่เหมือนใคร แนวปฏิบัติที่ดีที่สุด และข้อมูลเชิงลึกในการวิจัยผู้ใช้งาน",
+ "nav-docs-design-label": "พื้นฐานการออกแบบ UX/UI",
+ "nav-docs-foundation-description": "ปัจจัยพื้นฐานหลักในการพัฒนาบนอีเธอเรียม",
+ "nav-docs-foundation-label": "หัวข้อพื้นฐาน",
+ "nav-docs-overview-description": "หน้าหลักของคุณสำหรับเอกสารของผู้พัฒนา",
+ "nav-docs-stack-description": "ทำความเข้าใจรายละเอียดทั้งหมดของสแต็กของอีเธอเรียม",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "มาตรฐานที่ระบุคุณสมบัติหรือกระบวนการใหม่",
+ "nav-eip-label": "EIP - ข้อเสนอการปรับปรุงอีเธอเรียม",
+ "nav-emerging-description": "ทำความรู้จักกรณีการใช้งานใหม่อื่นๆ สำหรับอีเธอเรียม",
+ "nav-enterprise-description": "แอปพลิเคชันธุรกิจสำหรับอีเธอเรียม",
+ "nav-ethereum-org-description": "เว็บไซต์นี้ขับเคลื่อนโดยชุมชน—เข้าร่วมกับเราและมีส่วนร่วมกัน",
+ "nav-ethereum-wallets-description": "แอปสำหรับโต้ตอบกับบัญชีอีเธอเรียมของคุณ",
+ "nav-events-description": "การกระจายศูนย์และเสรีภาพในการเข้าร่วมสำหรับทุกคน",
+ "nav-events-irl-description": "ทุกเดือนจะมีกิจกรรมอีเธอเรียมที่สำคัญทั้งแบบตัวต่อตัวและออนไลน์",
+ "nav-events-label": "ชุมชนและกิจกรรมต่างๆ",
+ "nav-events-online-description": "ผู้ชื่นชอบอีเธอเรียมหลายแสนคนเป็นผู้ก่อตั้งชุมชนออนไลน์เหล่านี้",
+ "nav-find-wallet-description": "กระเป๋าเงินช่วยให้คุณใช้คริปโตได้",
+ "nav-find-wallet-label": "เลือกวอลเล็ทของคุณ",
+ "nav-gas-fees-description": "ค่าธรรมเนียมการทำธุรกรรม ETH คำนวณอย่างไร",
+ "nav-gas-fees-label": "Gas fees",
+ "nav-get-eth-description": "คุณต้องมีอีเธอร์ (ETH) เพื่อใช้แอปพลิเคชันอีเธอเรียม",
+ "nav-get-started-description": "ขั้นตอนแรกในการใช้งานอีเธอเรียม",
+ "nav-governance-description": "กระบวนการที่เกี่ยวข้องกับการอัปเกรดโปรโตคอลอีเธอเรียม",
+ "nav-governance-label": "การกำกับดูแล",
+ "nav-grants-description": "รายชื่อที่รวบรวมโดยชุมชนของเราเกี่ยวกับโครงการที่จัดให้มีโครงการให้ทุนสนับสนุน",
+ "nav-guide-create-account-description": "ทุกคนสามารถสร้างบัญชีอีเธอเรียมได้ฟรีตลอดเวลาด้วยแอปวอลเล็ท",
+ "nav-guide-revoke-access-description": "ใช้งานอย่างปลอดภัยเมื่อโต้ตอบกับสัญญาอัจฉริยะและแอปพลิเคชันในระบบนิเวศอีเธอเรียม",
+ "nav-guide-revoke-access-label": "วิธีเพิกถอนการเข้าถึงสัญญาอัจฉริยะ",
+ "nav-guide-use-wallet-description": "เรียนรู้วิธีใช้งานฟังก์ชันพื้นฐานทั้งหมดของวอลเล็ท",
+ "nav-guide-use-wallet-label": "วิธีใช้วอลเล็ท",
+ "nav-guides-description": "คำแนะนำการปฏิบัติทีละขั้นตอนเพื่อช่วยคุณในการเริ่มต้นใช้งาน",
+ "nav-guides-label": "วิธีการแนะนำ",
+ "nav-history-description": "ไทม์ไลน์ของฟอร์กและการอัปเดตที่สำคัญทั้งหมด",
+ "nav-history-label": "ประวัติทางเทคนิคของอีเธอเรียม",
+ "nav-layer-2-description": "การทำธุรกรรมสำหรับอีเธอเรียมที่ราคาถูกกว่าและเร็วกว่า",
+ "nav-learn-by-coding-description": "เครื่องมือที่ช่วยให้คุณทดลองกับอีเธอเรียมได้",
+ "nav-local-env-description": "เลือกและตั้งค่าสแต็กการพัฒนาอีเธอเรียมของคุณ",
+ "nav-mainnet-description": "สามารถสร้างแอปพลิเคชันบล็อกเชนระดับองค์กรขึ้นบนเครือข่ายหลักของอีเธอเรียมสาธารณะได้",
+ "nav-nft-description": "วิธีการนำเสนอสิ่งที่เป็นเอกลักษณ์ในฐานะสินทรัพย์ที่ใช้อีเธอเรียม",
+ "nav-open-research-description": "จุดแข็งที่สำคัญประการหนึ่งของอีเธอเรียม คือชุมชนการวิจัยที่กระตือรือร้น",
+ "nav-open-research-label": "เปิดงานวิจัย",
+ "nav-overview-description": "ทุกสิ่งเกี่ยวกับการศึกษาอีเธอเรียม",
+ "nav-participate-overview-description": "ภาพรวมเกี่ยวกับวิธีการเข้าร่วม",
"nav-primary": "หลัก",
- "nft-page": "Non-fungible tokens (NFTs)",
+ "nav-quizzes-description": "ค้นหาว่าคุณเข้าใจอีเธอเรียมและสกุลเงินดิจิทัลได้ดีเพียงใด",
+ "nav-quizzes-label": "ทดสอบความรู้ของคุณ",
+ "nav-refi-description": "ระบบเศรษฐกิจทางเลือกที่สร้างจากหลักการปฏิรูป",
+ "nav-research-description": "กระบวนการที่ใช้ในการปรับปรุงอีเธอเรียม",
+ "nav-research-label": "การวิจัยและพัฒนา",
+ "nav-roadmap-description": "เส้นทางสู่ความสามารถในการปรับขนาด การรักษาความปลอดภัย และความยั่งยืนมากขึ้นสำหรับอีเธอเรียม",
+ "nav-roadmap-future-description": "ทำให้อีเธอเรียมมั่นคงยิ่งขึ้นในฐานะเครือข่ายที่แข็งแกร่งและกระจายศูนย์",
+ "nav-roadmap-future-label": "รองรับอนาคต",
+ "nav-roadmap-label": "แผนงาน",
+ "nav-roadmap-scaling-description": "การอัปเดตเครือข่ายเพื่อลดต้นทุนและความเร็วในการทำธุรกรรมเพิ่มเติม",
+ "nav-roadmap-security-description": "ทำให้มั่นใจว่าอีเธอเรียมยังมีความยืดหยุ่นต่อการโจมตีทุกประเภทในอนาคต",
+ "nav-roadmap-security-label": "ความปลอดภัยที่ปรับปรุงให้ดีขึ้น",
+ "nav-roadmap-ux-description": "การใช้งานอีเธอเรียมจำเป็นต้องทำให้ง่ายขึ้น",
+ "nav-run-a-node-description": "มีเสถียรภาพอย่างเต็มที่ในขณะที่ช่วยรักษาความปลอดภัยให้เครือข่าย",
+ "nav-security-description": "เรียนรู้แนวปฏิบัติที่ดีที่สุดเมื่อใช้คริปโตเคอร์เรนซี",
+ "nav-smart-contracts-description": "โครงสร้างพื้นฐานของระบบนิเวศอีเธอเรียม",
+ "nav-stablecoins-description": "สเตเบิลคอยน์คือโทเค็นอีเธอเรียมที่ออกแบบมาให้มีมูลค่าคงที่",
+ "nav-stake-description": "รับรางวัลสำหรับการรักษาความปลอดภัยอีเธอเรียม",
+ "nav-stake-label": "สเตก",
+ "nav-staking-home-description": "ภาพรวมของตัวเลือกต่างๆ สำหรับการสเตก",
+ "nav-staking-pool-description": "สเตกและรับรางวัลด้วย ETH จำนวนเท่าใดก็ได้โดยการเข้าร่วมกับผู้อื่น",
+ "nav-staking-pool-label": "การ Stake แบบกองรวม",
+ "nav-staking-saas-label": "การสเตกด้วยบริการ",
+ "nav-staking-solo-label": "การ Stake แบบกองเดี่ยว",
+ "nav-start-building-description": "ข้อมูลที่มีประโยชน์สำหรับผู้เริ่มต้นใหม่",
+ "nav-translation-program-description": "ความพยายามร่วมกันในการแปล ethereum.org เป็นภาษาอื่นๆ ทั้งหมด",
+ "nav-tutorials-description": "รายการบทช่วยสอนของชุมชนที่รวบรวมไว้",
+ "nav-use-cases-description": "ค้นพบแนวคิดที่แตกต่างกันในการใช้งานอีเธอเรียม",
+ "nav-what-is-ether-description": "สกุลเงินของแอปอีเธอเรียม",
+ "nav-what-is-ethereum-description": "ทำความเข้าใจว่าอะไรที่ทำให้อีเธอเรียมพิเศษ",
+ "nav-what-is-web3-label": "Web3 คืออะไร",
+ "nav-what-is-web3-description": "ทางเลือกอื่นนอกเหนือจากการผูกขาดแบบรวมศูนย์ซึ่งกำหนดกฎเกณฑ์",
+ "nav-whitepaper-description": "เอกสารไวท์เปเปอร์ต้นฉบับของอีเธอเรียมเขียนโดยวิทาลิก บูเทอรินในปี 2014",
+ "nav-zkp-description": "วิธีการพิสูจน์ความถูกต้องของข้อความโดยไม่ต้องเปิดเผยข้อความนั้น",
+ "nft-page": "NFTs - Non-fungible tokens",
"nfts": "NFT",
"no": "ไม่",
"on-this-page": "ในหน้านี้",
@@ -140,6 +250,7 @@
"page-developers-aria-label": "เมนูสำหรับผู้พัฒนา",
"page-index-meta-title": "หน้าหลัก",
"page-last-updated": "หน้าปรับปรุงล่าสุด",
+ "participate-menu": "เมนูการมีส่วนร่วม",
"pbs": "การแยกผู้เสนอและผู้พัฒนา",
"pools": "การ Stake แบบกองรวม",
"privacy-policy": "นโยบายความเป็นส่วนตัว",
@@ -150,8 +261,10 @@
"refresh": "โปรดรีเฟรชหน้า",
"return-home": "กลับไปหน้าแรก",
"roadmap": "แผนงานอีเธอเรียม",
+ "research": "การวิจัย",
+ "research-menu": "เมนูการวิจัย",
"resources": "แหล่งข้อมูลการแปล",
- "regenerative-finance": "ระบบการเงินแบบเกิดใหม่ (ReFi)",
+ "regenerative-finance": "ReFi - ระบบการเงินแบบเกิดใหม่",
"run-a-node": "รันโหนด",
"rollup-component-website": "เว็บไซต์",
"rollup-component-developer-docs": "เอกสารสำหรับนักพัฒนา",
@@ -164,6 +277,7 @@
"search-box-blank-state-text": "ค้นหา",
"search-eth-address": "ดูเหมือนคำต้นจะเป็นที่อยู่ของอีเธอเรียม เราไม่ได้ให้ข้อมูลเจาะจงสำหรับที่อยู่ ลองค้นหาใน block explorer ดู",
"search-no-results": "ไม่พบผลการค้นหาที่คุณต้องการ",
+ "security": "ความปลอดภัย",
"single-slot-finality": "Single-slot finality",
"statelessness": "การไร้ซึ่งสถานะ",
"see-contributors": "ดูผู้มีส่วนร่วม",
@@ -181,6 +295,7 @@
"start-here": "เริ่มต้นที่นี่",
"style-guide": "คู่มือการออกแบบ",
"solo": "การ Stake แบบกองเดี่ยว",
+ "support": "ฝ่ายสนับสนุน",
"terms-of-use": "ข้อกำหนดการใช้งาน",
"translation-banner-body-new": "คุณกำลังดูหน้านี้เป็นภาษาอังกฤษเพราะเรายังไม่ได้แปล ช่วยเราแปลเนื้อหานี้",
"translation-banner-body-update": "มีเวอร์ชันใหม่ของหน้านี้ แต่ตอนนี้เป็นภาษาอังกฤษเท่านั้น ช่วยเราแปลเวอร์ชันล่าสุด",
@@ -191,11 +306,14 @@
"translation-banner-no-bugs-title": "ตรงนี้ไม่มีบั๊ก!",
"translation-banner-no-bugs-content": "ยังไม่มีการแปลหน้านี้เพราะเราตั้งใจเก็บหน้านี้ไว้เป็นภาษาอังกฤษ ณ ตอนนี้",
"translation-banner-no-bugs-dont-show-again": "ไม่ต้องแสดงอีก",
+ "translation-program": "โปรแกรมแปลภาษา",
"try-using-search": "ลองใช้การค้นหาเพื่อค้นหาสิ่งที่คุณกำลังมองหาหรือ",
"tutorials": "บทช่วยสอน",
"up": "ขึ้น",
+ "use": "การใช้งาน",
"use-ethereum": "ใช้อีเธอเรียม",
"use-ethereum-menu": "เมนูใช้อีเธอเรียม",
+ "use-menu": "ใช้เมนู",
"user-experience": "ประสบการณ์ผู้ใช้งาน",
"verkle-trees": "ต้นไม้เวอร์เคิล",
"wallets": "วอลเล็ท",
diff --git a/src/intl/th/page-languages.json b/src/intl/th/page-languages.json
index e5c66cfa710..d5cb3ca3ccb 100644
--- a/src/intl/th/page-languages.json
+++ b/src/intl/th/page-languages.json
@@ -1,4 +1,22 @@
{
+ "page-languages-h1": "การสนับสนุนด้านภาษา",
+ "page-languages-interested": "สนใจร่วมสนับสนุน?",
+ "page-languages-learn-more": "ศึกษาเพิ่มเติมเกี่ยวกับโปรแกรมแปลภาษาของเรา",
+ "page-languages-meta-desc": "แหล่งข้อมูลสำหรับภาษาทั้งหมดที่รองรับ ethereum.org และวิธีการเข้าร่วมเป็นนักแปล",
+ "page-languages-meta-title": "แปลภาษา ethereum.org",
+ "page-languages-p1": "Ethereum ถือเป็นโปรเจคระดับโลก และ ethereum.org จำเป็นที่จะต้องเข้าถึงได้สำหรับทุกคน ไม่ว่าพวกเขาจะมาจากที่ไหนหรือพูดภาษาใด ชุมชนของเราได้พยายามอย่างเต็มที่เพื่อจะทำให้สิ่งนี้เป็นจริง",
+ "page-languages-translations-available": "ขณะนี้ ethereum.org รองรับภาษาดังต่อไปนี้",
+ "page-languages-resources-paragraph": "นอกเหนือจากการแปลเนื้อหาบน ethereum.org เรายังมี",
+ "page-languages-resources-link": "แหล่งรวมรายละเอียดของอีเธอเรียมในภาษาอื่นๆด้วย",
+ "page-languages-want-more-header": "อยากให้ ethereum.org แปลภาษาอื่น?",
+ "page-languages-want-more-link": "โปรแกรมแปลภาษา",
+ "page-languages-want-more-paragraph": "ชุมชนนักแปล ethereum.org มุ่งมั่นที่จะแปลเนื้อหาให้ได้หลายภาษามากที่สุดเท่าที่จะทำได้ หากคุณต้องการดูโปรเจคที่กำลังแปลอยู่หรือสนใจช่วยแปล โปรดอ่านรายละเอียดจาก",
+ "page-languages-filter-label": "รายการตัวกรอง",
+ "page-languages-filter-placeholder": "พิมพ์เพื่อกรอง",
+ "page-languages-browser-default": "ค่าเริ่มต้นเบราว์เซอร์",
+ "page-languages-translated": "แปลแล้ว",
+ "page-languages-words": "คำ",
+ "page-languages-recruit-community": "ช่วยฉันแปล ethereum.org",
"language-ar": "อาหรับ",
"language-az": "อาเซอร์ไบจาน",
"language-bg": "บัลแกเรีย",
@@ -14,6 +32,8 @@
"language-fi": "ฟินแลนด์",
"language-fr": "ฝรั่งเศส",
"language-gl": "กาลิเชียน",
+ "language-gu": "ภาษาคุชราต",
+ "language-he": "ฮีบรู",
"language-hi": "ฮินดี",
"language-hr": "โครเอเชีย",
"language-hu": "ฮังการี",
@@ -31,6 +51,7 @@
"language-ms": "มลายู",
"language-nb": "นอร์เวย์",
"language-nl": "ดัตช์",
+ "language-pcm": "พิดจินไนจีเรีย",
"language-fil": "ฟิลิปปินส์",
"language-pl": "โปแลนด์",
"language-pt": "โปรตุเกส",
@@ -42,9 +63,11 @@
"language-sl": "สโลวีเนีย",
"language-sr": "เซอร์เบีย",
"language-sw": "สวาฮีลี",
+ "language-ta": "ภาษาทมิฬ",
"language-th": "ไทย",
"language-tr": "ตุรกี",
"language-uk": "ยูเครน",
+ "language-ur": "อูรดู",
"language-uz": "อุซเบก",
"language-vi": "เวียดนาม",
"language-zh": "จีนตัวย่อ",
diff --git a/src/intl/th/page-stablecoins.json b/src/intl/th/page-stablecoins.json
index 6c5656ea100..3f099ab2fcf 100644
--- a/src/intl/th/page-stablecoins.json
+++ b/src/intl/th/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "โลโก้ MakerDao",
"matcha-logo": "โลโก้ Matcha",
"oasis-logo": "โลโก้ Oasis",
- "uniswap-logo": "โลโก้ Uniswap"
+ "uniswap-logo": "โลโก้ Uniswap",
+ "page-stablecoins-category-dashboard-and-education": "แผงควบคุมและการศึกษา"
}
diff --git a/src/intl/tk/common.json b/src/intl/tk/common.json
index d960e8b8e00..7c1a7bd5c9c 100644
--- a/src/intl/tk/common.json
+++ b/src/intl/tk/common.json
@@ -1,17 +1,28 @@
{
- "account-abstraction": "Hasap abstraksiýasy",
"about-ethereum-org": "Ethereum.org hakynda",
"about-us": "Biz hakda",
+ "adding-desci-projects": "“Desci” proýektlerini goşmak",
+ "adding-developer-tools": "Işläp taýýarlaýjynyň gurallaryny goşmak",
+ "adding-exchanges": "Birža goşmak",
+ "adding-glossary-terms": "Sözlük adalgalaryny goşmak",
+ "adding-staking-products": "Steýking önümlerini goşmak",
+ "adding-wallets": "Gapjyk goşmak",
+ "account-abstraction": "Hasap abstraksiýasy",
"aria-toggle-search-button": "Gözleg çalşyrgyç düwmesi",
"aria-toggle-menu-button": "Menýu çalşyrgyç düwmesi",
"beacon-chain": "Beacon Chain",
"bridges": "Blok zynjyry köprüleri",
+ "bug-bounty": "Bug bounty",
+ "build": "Gurnalyş",
+ "build-menu": "Gurnalyş menýusy",
"clear": "Arassalamak",
"close": "Ýapmak",
"community": "Jemgyýet",
"community-hub": "Jemgyýet merkezi",
"community-menu": "Jemgyýet menýusy",
"contact": "Habarlaşmak",
+ "content-buckets": "Mazmun Bedreleri",
+ "content-resources": "Mazmun resurslary",
"content-standardization": "Mazmuny standartlaşdyrmak",
"contributing": "Goşant goşmak",
"contributors": "Goşant goşanlar",
@@ -20,14 +31,17 @@
"copied": "Göçürildi",
"copy": "Göçürmek",
"danksharding": "Danksharding",
- "dao-page": "Merkezleşdirilmedik awtonom guramalar (DAO-lar)",
+ "dao-page": "DAO-lar - Merkezleşdirilmedik awtonom guramalar",
"dark-mode": "Gara",
"data-provided-by": "Maglumat çeşmesi:",
- "decentralized-applications-dapps": "Merkezleşdirilmedik programmalar(dapps)",
+ "decentralized-applications-dapps": "Dapps - Merkezleşdirilmedik programmalar",
"decentralized-identity": "Merkezleşdirilmedik şahsyýet",
"decentralized-social-networks": "Merkezleşdirilmedik sosial ulgamlar",
- "decentralized-science": "Merkezleşdirilmedik ylym (DeSci)",
- "defi-page": "Merkezleşdirilmedik maliýe (DeFi)",
+ "decentralized-science": "DeSci - Merkezleşdirilmedik ylym",
+ "description": "Nawigasiýa elementiniň beýany",
+ "defi-page": "DeFi - Merkezleşdirilmedik maliýe",
+ "design": "Dizaýn",
+ "design-principles": "Dizaýn ýörelgeleri",
"devcon": "Devcon",
"developers": "Işläp düzüjiler",
"developers-home": "Işläp düzüjileriň öýi",
@@ -59,11 +73,9 @@
"enterprise-menu": "Kärhana menýusy",
"esp": "Ekoulgamy goldamak maksatnamasy",
"eth-current-price": "Häzirki ETH bahasy (USD)",
- "ethereum-basics": "Ethereum basics",
"ethereum-bug-bounty": "Ethereum säwlikleri boýunça baýrak meýilnamasy",
"consensus-when-shipping": "Haçan iberilýär?",
"ethereum-upgrades": "Ethereum täzelenmeleri",
- "ethereum-brand-assets": "Ethereum brand assets",
"ethereum-online": "Onlaýn jemgyýetler",
"ethereum-events": "Ethereum wakalary",
"ethereum-foundation": "Ethereum gaznasy",
@@ -83,22 +95,20 @@
"feedback-card-prompt-tutorial": "Bu gollanma peýdaly boldumy?",
"feedback-widget-thank-you-title": "Pikirleriňiz üçin sag boluň!",
"feedback-widget-thank-you-subtitle": "Birnäçe soraga jogap bermek bilen bu sahypany has hem gowulaň.",
- "feedback-widget-thank-you-subtitle-ext": "Kömek gerek bolsa, Diskord-da jemgyýet bilen habarlaşyp bilersiňiz.",
+ "feedback-widget-thank-you-subtitle-ext": "Kömek gerek bolsa, Discord sahypamyzda jemgyýet bilen habarlaşyp bilersiňiz.",
"feedback-widget-thank-you-timing": "2–3 minut ",
"feedback-widget-thank-you-cta": "Gysga sowalnamany açmak",
- "find-wallet": "Find wallet",
"future-proofing": "Geljege taýýarlyk",
- "get-eth": "ETH alyň",
+ "get-eth": "ETH edinmek",
"get-involved": "Gatnaşmak",
"get-started": "Başlamak üçin",
"grants": "Grantlar",
"grant-programs": "Ekoulgamyň grant maksatnamalary",
"guides": "Gollanmalar",
- "guides-hub": "Gollanmalar merkezi",
+ "guides-hub": "Nädip etmelidigini öwredýän gollanmalar",
"history-of-ethereum": "Ethereum taryhy",
"home": "Baş sahypa",
"how-ethereum-works": "Ethereum nähili işleýär",
- "how-to-register-an-ethereum-account": "Ethereum hasabyny nädip \"bellige aldyrmaly\"",
"how-to-revoke-token-access": "Akylly şertnamanyň kripto serişdeleriňize girişini nädip ýatyrmaly",
"how-to-swap-tokens": "Tokenleri nädip çalyşmaly",
"how-to-use-a-bridge": "Tokenleri 2-nji gatlaga nädip köpri etmeli",
@@ -115,11 +125,9 @@
"last-edit": "Soňky redaktirleme",
"layer-2": "2-nji gatlak",
"learn": "Öwrenmek",
- "learn-by-coding": "Learn by coding",
"learn-hub": "Öwrenme merkezi",
"learn-menu": "Öwrenmek menýusy",
"learn-more": "Goşmaça maglumat",
- "less": "Less",
"light-mode": "Ýagty",
"listing-policy-disclaimer": "Bu sahypada görkezilen önümleriň hemmesi resmi tassyklama däl we diňe maglumat maksatly berilýär. Önüm goşmak ýa-da syýasat barada seslenme goýmak isleseňiz, GitHub-da bir mesele gozgaň.",
"loading": "Ýüklenýär...",
@@ -128,11 +136,102 @@
"loading-error-try-again-later": "Maglumatlary ýükläp bolmaýar. Soňrak täzeden synanyşyň.",
"logo": "logotip",
"mainnet-ethereum": "Esasy ulgam Ethereum",
- "more": "More",
- "nav-developers": "Döredijiler",
+ "merge": "Birleşdirmek",
+ "nav-about-description": "Ethereum jemgyýeti üçin jemgyýetçilik, açyk çeşme kodly taslama",
+ "nav-advanced-description": "Has çylşyrymly mowzuklary öwreniň",
+ "nav-basics-description": "Ethereum-yň esaslaryna düşüniň",
+ "nav-basics-label": "Esasy maglumatlar",
+ "nav-bridges-description": "Web3 başlangyç L1 blokçeýnleriň we L2 masştabirleme çözgütleriniň ekosistemasyna öwrüldi",
+ "nav-builders-home-description": "Ethereum üçin gurluşykçy gollanmasy—gurluşykçylar tarapyndan, gurluşykçylar üçin",
+ "nav-builders-home-label": "Gurluşykçynyň öýi",
+ "nav-contribute-description": "Kömek etmek isleseňiz, bu size ýol görkezer",
+ "nav-contribute-label": "Ethereuma.org websaýtyna goşant goşmak",
+ "nav-dao-description": "Merkezleşdirilen hökümeti bolmadyk, agzalara degişli jemgyýetler",
+ "nav-dapps-description": "Ethereum ulanyp, programmalaryň baý ekosistemasyny öwreniň",
+ "nav-defi-description": "Adaty maliýe bazarynyň ornuny tutýan global, açyk alternatiwa",
+ "nav-desci-description": "Häzirki ylmy ulgama global, açyk alternatiwa",
+ "nav-desoc-description": "Sosial gatnaşyklar we mazmun döretmek üçin blokçeýn esasly platformalar",
"nav-developers-docs": "Işläp düzüji resminamalary",
+ "nav-developers": "Işläp düzüjiler",
+ "nav-did-description": "Özboluşly merkezleşdirilmedik kesgitleýjileriňizi beriň we olara eýeçilik ediň",
+ "nav-docs-description": "Ethereum bilen düşünmäge we gurmaga kömek edýän resminamalar",
+ "nav-docs-design-description": "Özboluşly web3 dizaýn kynçylyklarynyň beýany, iň oňat tejribe we ulanyjy gözleg düşünjeleri",
+ "nav-docs-design-label": "UX/UI dizaýn esaslary",
+ "nav-docs-foundation-description": "Ethereum-da ösmek üçin esasy esaslar",
+ "nav-docs-overview-description": "Işläp taýýarlaýjy resminamalary üçin öýüňiz",
+ "nav-docs-stack-description": "Ethereum steginiň ähli jikme-jikliklerine düşüniň",
+ "nav-eip-description": "Täze aýratynlyklary ýa-da prosesleri kesgitleýän standartlar",
+ "nav-eip-label": "EGBT - Ethereum-y gowulandyrmak barada teklipler",
+ "nav-emerging-description": "Ethereum-a degişli has täze ulanylyş ýagdaýlary barada öwreniň",
+ "nav-enterprise-description": "Ethereum üçin işewürlik programmalary",
+ "nav-ethereum-org-description": "Bu web sahypasy jemgyýet tarapyndan dolandyrylýar - siz hem bize goşulyň we goşant goşuň",
+ "nav-ethereum-wallets-description": "Ethereum hasabyňyz bilen täsirleşmek üçin programma",
+ "nav-events-description": "Merkezi bolmadyk dolandyryş we her kim üçin gatnaşmak azatlygy",
+ "nav-events-irl-description": "Her aý fiziki görnüşde we onlaýn geçirilýän uly Ethereum çäreleri bolýar",
+ "nav-events-label": "Jemgyýetler we çäreler",
+ "nav-events-online-description": "Bu onlaýn jemgyýetlerde ýüz müňlerçe Ethereum höwesjeňler atalyk edýär",
+ "nav-find-wallet-description": "Gapjyklar kripto ulanmaga mümkinçilik berýär",
+ "nav-find-wallet-label": "Gapjygyňyzy saýlaň",
+ "nav-gas-fees-description": "ETH amal tölegleri nähili hasaplanýar",
+ "nav-get-eth-description": "Ethereum programmalaryny ulanmagyňyz üçin size efir (ETH) gerek",
+ "nav-get-started-description": "Ethereum-y ulanmak üçin ilkinji ädimleriňiz",
+ "nav-governance-description": "Ethereum protokolyny täzelemek bilen baglanyşykly proses",
+ "nav-governance-label": "Dolandyryş",
+ "nav-grants-description": "Grant maliýeleşdiriş maksatnamalaryny hödürleýän taslamalar boýunça jemgyýetimiz tarapyndan düzülen sanaw",
+ "nav-guide-create-account-description": "Islendik adam islendik wagt gapjyk programmasy bilen mugt Ethereum hasabyny döredip biler",
+ "nav-guide-revoke-access-description": "Iş salyşan wagtyňyz Ethereum ekosistemasyndaky akylly şertnamalar we programmalar arkaly howpsuz boluň",
+ "nav-guide-revoke-access-label": "Akylly şertnama giriş hukugyny nädip ýatyrmaly",
+ "nav-guide-use-wallet-description": "Gapjykdaky esasy funksiýalaryň ählisini nädip işletmelidigini öwreniň",
+ "nav-guide-use-wallet-label": "Gapjygy nädip ulanmaly",
+ "nav-guides-description": "Siziň başlamagyňyza kömek etmek üçin amaly ädimler",
+ "nav-guides-label": "Nädip etmelidigini öwredýän gollanmalar",
+ "nav-history-description": "Ähli esasy forklaryň we täzelenmeleriň wagtlarynyň rejesi",
+ "nav-history-label": "Ethereumyň tehniki taryhy",
+ "nav-layer-2-description": "Ethereum üçin arzanrak we has çalt amallar",
+ "nav-learn-by-coding-description": "Ethereum bilen synag geçirmäge kömek edýän gurallar",
+ "nav-local-env-description": "Ethereum işläp taýýarlaýyş stegiňizi we guruň",
+ "nav-mainnet-description": "Kärhana blokçeýn programmalary köpçülige açyk Ethereum esasy torunda gurlup bilner",
+ "nav-nft-description": "Üýtgeşik bir zady Ethereum esasly aktiw hökmünde görkezmegiň usuly",
+ "nav-open-research-description": "Ethereum-yň esasy güýçlerinden biri onuň işjeň gözleg jemgyýetidir",
+ "nav-open-research-label": "Açyk gözleg",
+ "nav-overview-description": "Hemme zat barada Ethereum okuwy",
+ "nav-participate-overview-description": "Nädip gatnaşmalydygy barada gysgaça maglumat",
"nav-primary": "Esasy",
- "nft-page": "Özara çalşylmaýan tokenler (NFT-lar)",
+ "nav-quizzes-description": "Ethereum we kriptowalýuta nä derejede düşünýändigiňizi biliň",
+ "nav-quizzes-label": "Bilimleriňizi barlaň",
+ "nav-refi-description": "Täzeden dikeldiş ýörelgelerine esaslanýan alternatiw ykdysady ulgam",
+ "nav-research-description": "Ethereum-y gowulandyrmak üçin ulanylýan prosesler",
+ "nav-research-label": "Gözleg we ösüş",
+ "nav-roadmap-description": "Ethereum üçin has giňelişe, howpsuzlyga we durnuklylyga barýan ýol",
+ "nav-roadmap-future-description": "Ethereumy berk we merkezleşdirilmedik ulgam hökmünde berkitmek",
+ "nav-roadmap-future-label": "Geljege taýýarlyk",
+ "nav-roadmap-label": "Hereketleriň meýilnamasy",
+ "nav-roadmap-scaling-description": "Geleşik çykdajylaryny we tizligini has hem azaltmak üçin tor täzelenmeleri",
+ "nav-roadmap-security-description": "Ethereumyň geljekde her dürli hüjümlere çydamlydygyna göz ýetirmek",
+ "nav-roadmap-security-label": "Kämilleşdirilen howpsuzlyk",
+ "nav-roadmap-ux-description": "Ethereum-y ulanmak aňsatlaşdyrylmaly",
+ "nav-run-a-node-description": "Toruň howpsuzlygyny üpjün etmekde doly özygtyýarly boluň",
+ "nav-security-description": "Kriptowalýuta ulanylanda iň oňat tejribeleri öwreniň",
+ "nav-smart-contracts-description": "Ethereum ekosistemasynyň esasy gurluş bölekleri",
+ "nav-stablecoins-description": "Steýblkoýnlar kesgitlenen bahada galmak üçin döredilen Ethereum tokenleridir",
+ "nav-stake-description": "Ethereum-yň howpsuzlygyny üpjün edýändigiňiz üçin baýrak gazanyň",
+ "nav-stake-label": "Stawka",
+ "nav-staking-home-description": "Stawkalaryň dürli wariantlaryna syn",
+ "nav-staking-pool-description": "Başgalar bilen birleşip, islendik mukdardaky ETH stawka ediň we baýrak alyň",
+ "nav-staking-pool-label": "Üýşürilen steýking",
+ "nav-staking-saas-label": "Hyzmat bilen steýking",
+ "nav-staking-solo-label": "Ýeke steýking",
+ "nav-start-building-description": "Täze gelenler üçin peýdaly maglumatlar",
+ "nav-translation-program-description": "Ethereum.org websaýtyny ähli dillere terjime etmek üçin bilelikdäki tagalla",
+ "nav-tutorials-description": "Jemgyýetçilik okuw sapaklarynyň halypalyk sanawy",
+ "nav-use-cases-description": "Ethereum ulanmak üçin dürli pikirleri tapyň",
+ "nav-what-is-ether-description": "Ethereum programmalarynyň walýutasy",
+ "nav-what-is-ethereum-description": "Ethereum-y nämäniň aýratyn edýändigine düşüniň",
+ "nav-what-is-web3-label": "Web3 näme?",
+ "nav-what-is-web3-description": "Düzgünleri görkezýän merkezleşdirilen monopoliýalaryň ornuny tutýan alternatiwa",
+ "nav-whitepaper-description": "Witalik Buterin tarapyndan 2014-nji ýylda ýazylan asyl Ethereum tehniki resminamasy",
+ "nav-zkp-description": "Beýannamanyň özüni äşgär etmezden, beýannamanyň dogrudygyny subut etmegiň usuly",
+ "nft-page": "NFT-lar - Özara çalşylmaýan tokenler",
"nfts": "NFT-lar",
"no": "Ýok",
"on-this-page": "Bu sahypada",
@@ -140,6 +239,7 @@
"page-developers-aria-label": "Işläp düzüji menýusy",
"page-index-meta-title": "Baş sahypa",
"page-last-updated": "Sahypa soňky gezek täzelendi",
+ "participate-menu": "Gatnaşmak menýusy",
"pbs": "Teklipçiniň bilen gurujynyň tapawudy",
"pools": "Üýşürilen steýking",
"privacy-policy": "Gizlinlik syýasaty",
@@ -150,13 +250,13 @@
"refresh": "Sahypany täzeden ýükläň.",
"return-home": "baş sahypa dolanmak",
"roadmap": "Ethereum ýol kartasy",
+ "research": "Gözleg",
+ "research-menu": "Gözleg menýusy",
"resources": "Terjime gorlary",
- "regenerative-finance": "Regenerative finance (ReFi)",
"run-a-node": "Düwün işlediň",
"rollup-component-website": "Website",
"rollup-component-developer-docs": "Işläp düzüji resminamalary",
"rollup-component-technology-and-risk-summary": "Tehnologiýa we töwekgelçilik barada gysgaça mazmun",
- "scaling": "Scaling",
"saas": "Hyzmat hökmünde steýking",
"search": "Gözleg",
"search-ethereum-org": "ethereum.org-da gözlemek",
@@ -164,6 +264,7 @@
"search-box-blank-state-text": "Gözläň!",
"search-eth-address": "Bu Ethereum salgysyna meňzeýär. Salgylara mahsus maglumatlary bermeýäris. Şunuň ýaly blok agtaryjyda ony gözläp görüň",
"search-no-results": "Gözlegiňiz boýunça netije ýok",
+ "security": "Howpsuzlyk",
"single-slot-finality": "Ýeke slot gutarnyklylygy",
"statelessness": "Raýatlygy ýokluk",
"see-contributors": "Goşant goşýanlary görmek",
@@ -172,14 +273,12 @@
"show-all": "Hemmesini görkez",
"show-less": "Az görkez",
"site-description": "Ethereum pul we täze görnüşli programmalar üçin global, merkezleşdirilmedik platformadyr. Ethereum-da pullara gözegçilik edýän kod ýazyp, dünýäniň islendik ýerinden girip bolýan programmalary gurup bilersiňiz.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Esasy mazmuna geçmek",
"smart-contracts": "Akylly şertnamalar",
"stablecoins": "Stablecoins\n",
"stake-eth": "ETH goýmak",
"staking": "Steýking",
"start-here": "Şu ýerden başlaň",
- "style-guide": "Style guide",
"solo": "Ýeke steýking",
"terms-of-use": "Ulanyş şertleri",
"translation-banner-body-new": "Bu sahypany iňlis dilinde görýärsiňiz, sebäbi ony entek terjime etmedik. Bu mazmuny terjime etmäge kömek ediň.",
@@ -191,17 +290,18 @@
"translation-banner-no-bugs-title": "Bu ýerde ýalňyşlyk ýok!",
"translation-banner-no-bugs-content": "Bu sahypa terjime edilmeýär. Bu sahypany häzirlikçe bilgeşlin iňlis dilinde goýduk.",
"translation-banner-no-bugs-dont-show-again": "Indi görkezme",
+ "translation-program": "Terjime Maksatnamasy",
"try-using-search": "Gözleýän zadyňyzy tapmak üçin gözlegi ulanyp görüň ýa-da",
"tutorials": "Okuw gollanmalary",
"up": "Ýokary",
+ "use": "Ulanyş",
"use-ethereum": "Ethereum ulanmak",
"use-ethereum-menu": "Ethereum menýusyny ulanmak",
- "user-experience": "User experience",
+ "use-menu": "Menýuny ulanmak",
"verkle-trees": "Verkle agaçlary",
"wallets": "Gapjyklar",
"we-couldnt-find-that-page": "Şol sahypany tapyp bilmedik",
"web3": "Web3 näme?",
- "web3-title": "Web3",
"website-last-updated": "Websaýtyň soňky täzelenmesi",
"what-is-ether": "Ether (ETH) näme?",
"what-is-ethereum": "Ethereum näme?",
diff --git a/src/intl/tk/page-languages.json b/src/intl/tk/page-languages.json
new file mode 100644
index 00000000000..45638394a43
--- /dev/null
+++ b/src/intl/tk/page-languages.json
@@ -0,0 +1,8 @@
+{
+ "page-languages-filter-label": "Süzgüç sanawy",
+ "page-languages-filter-placeholder": "Süzgüçden geçirmek üçin ýazyň",
+ "page-languages-browser-default": "Brauzer deslapdan sazlanan",
+ "page-languages-translated": "terjime edilen",
+ "page-languages-words": "sözler",
+ "page-languages-recruit-community": "Ethereum.org websaýtyny terjime etmäge kömek ediň."
+}
diff --git a/src/intl/tr/common.json b/src/intl/tr/common.json
index aac93513867..2f16785dc51 100644
--- a/src/intl/tr/common.json
+++ b/src/intl/tr/common.json
@@ -15,6 +15,9 @@
"aria-toggle-menu-button": "Menü düğmesini aç/kapat",
"beacon-chain": "İşaret Zinciri",
"bridges": "Blok zinciri köprüleri",
+ "bug-bounty": "Hata ödülü",
+ "build": "Geliştirme",
+ "build-menu": "Geliştirme menüsü",
"clear": "Temizle",
"close": "Kapat",
"community": "Topluluk",
@@ -31,14 +34,15 @@
"copied": "Kopyalandı",
"copy": "Kopyala",
"danksharding": "Danksharding",
- "dao-page": "Merkezi olmayan özerk kuruluşlar (DAO'lar)",
+ "dao-page": "DAO'lar - Merkezi olmayan özerk kuruluşlar",
"dark-mode": "Koyu",
"data-provided-by": "Veri kaynağı:",
- "decentralized-applications-dapps": "Merkezi olmayan uygulamalar (dapps)",
+ "decentralized-applications-dapps": "Dapps - Merkezi olmayan uygulamalar",
"decentralized-identity": "Merkezî olmayan kimlik",
"decentralized-social-networks": "Merkezî olmayan sosyal ağlar",
- "decentralized-science": "Merkeziyetsiz bilim (DeSci)",
- "defi-page": "Merkezi Olmayan Finans (DeFi)",
+ "decentralized-science": "DeSci - Merkeziyetsiz bilim",
+ "description": "Gezinme öğesi açıklaması",
+ "defi-page": "DeFi - Merkezi Olmayan Finans",
"design": "Tasarım",
"design-principles": "Tasarım İlkeleri",
"devcon": "Devcon",
@@ -76,7 +80,7 @@
"ethereum-bug-bounty": "Ethereum hata yakalama prim programı",
"consensus-when-shipping": "Ne zaman gönderiliyor?",
"ethereum-upgrades": "Ethereum yükseltmeleri",
- "ethereum-brand-assets": "Ethereum Marka Varlıkları",
+ "ethereum-brand-assets": "Ethereum marka varlıkları",
"ethereum-online": "Çevrimiçi topluluklar",
"ethereum-events": "Ethereum etkinlikleri",
"ethereum-foundation": "Ethereum'un Geleceği",
@@ -88,7 +92,7 @@
"ethereum-protocol": "Ethereum protokolü",
"ethereum-security": "Ethereum güvenliği ve dolandırıcılık önleme",
"ethereum-support": "Ethereum destek",
- "ethereum-wallets": "Ethereum Cüzdanlar",
+ "ethereum-wallets": "Ethereum cüzdanları",
"ethereum-whitepaper": "Ethereum Teknik Raporu",
"feedback-widget-prompt": "Bu sayfa yardımcı oldu mu?",
"feedback-card-prompt-page": "Bu sayfa yararlı oldu mu?",
@@ -96,12 +100,12 @@
"feedback-card-prompt-tutorial": "Bu rehber yararlı oldu mu?",
"feedback-widget-thank-you-title": "Geri bildiriminiz için teşekkürler!",
"feedback-widget-thank-you-subtitle": "Birkaç soru yanıtlayarak bu sayfanın daha iyi hâle gelmesine yardımcı olun.",
- "feedback-widget-thank-you-subtitle-ext": "Yardıma ihtiyacınız varsa Discord sunucumuzdan topluluğa ulaşabilirsiniz.",
+ "feedback-widget-thank-you-subtitle-ext": "Yardıma ihtiyacınız olursa Discord sunucumuzda topluluğa ulaşabilirsiniz.",
"feedback-widget-thank-you-timing": "2–3 dakika",
"feedback-widget-thank-you-cta": "Kısa anketi aç",
"find-wallet": "Cüzdan bul",
"future-proofing": "Geleceği garantileme",
- "get-eth": "ETH edin",
+ "get-eth": "ETH edinin",
"get-involved": "Dahil olun",
"get-started": "Başlayın",
"grants": "Yardımlar",
@@ -128,7 +132,7 @@
"last-edit": "Son düzenleme",
"layer-2": "Katman 2",
"learn": "Öğren",
- "learn-by-coding": "Kodlayarak öğren",
+ "learn-by-coding": "Kodlayarak öğrenin",
"learn-hub": "Bilgi Merkezi",
"learn-menu": "Öğren menüsü",
"learn-more": "Daha fazla bilgi edinin",
@@ -142,11 +146,116 @@
"logo": "logo",
"mainnet-ethereum": "Mainnet Ethereum",
"merge": "Birleşme",
- "more": "Daha fazlası",
- "nav-developers": "Geliştiriciler",
+ "more": "Daha fazla",
+ "nav-about-description": "Ethereum topluluğu için halka açık, açık kaynaklı bir proje",
+ "nav-advanced-description": "Daha karmaşık konular hakkında bilgi edinin",
+ "nav-advanced-label": "Gelişmiş",
+ "nav-basics-description": "Ethereum'un temellerini anlamak",
+ "nav-basics-label": "Temel Bilgiler",
+ "nav-bridges-description": "Web3, birincil L1 blok zincirleri ve L2 ölçeklendirme çözümlerinden oluşan bir ekosisteme dönüştü",
+ "nav-builders-home-description": "Ethereum için geliştirici kılavuzu—geliştirenler tarafından geliştiriciler için",
+ "nav-builders-home-label": "Geliştirici evi",
+ "nav-contribute-description": "Yardım etmek istiyorsanız bu size yol gösterecektir",
+ "nav-contribute-label": "Ethereum.org'a katkıda bulunma",
+ "nav-dao-description": "Merkezi yetkiye sahip olmayan üyelere ait topluluklar",
+ "nav-dapps-description": "Ethereum'u kullanarak zengin uygulama ekosistemini keşfedin",
+ "nav-defi-description": "Geleneksel finans piyasasına küresel ve açık bir alternatif",
+ "nav-desci-description": "Mevcut bilimsel sisteme küresel ve açık bir alternatif",
+ "nav-desoc-description": "Sosyal etkileşim ve içerik oluşturma için blok zincir tabanlı platformlar",
"nav-developers-docs": "Geliştirici dokümanları",
+ "nav-developers": "Geliştiriciler",
+ "nav-did-description": "Benzersiz merkezi olmayan tanımlayıcılarınızı yayınlayın ve bunlara sahip olun",
+ "nav-docs-description": "Ethereum'u anlamanıza ve geliştirmenize yardımcı olacak belgeler",
+ "nav-docs-design-description": "Benzersiz web3 tasarımı zorluklarının, en iyi uygulamaların ve kullanıcı araştırma bilgilerinin açıklaması",
+ "nav-docs-design-label": "UX/UI tasarım temelleri",
+ "nav-docs-foundation-description": "Ethereum'da geliştirilecek önemli temeller",
+ "nav-docs-foundation-label": "Temel konular",
+ "nav-docs-overview-description": "Geliştirici belgeleri için adresiniz",
+ "nav-docs-stack-description": "Ethereum yığınının tüm ayrıntılarını anlamak",
+ "nav-docs-stack-label": "Ethereum yığını",
+ "nav-eip-description": "Yeni özellikleri veya süreçleri belirleyen standartlar",
+ "nav-eip-label": "EIP'ler - Ethereum iyileştirme önerileri",
+ "nav-emerging-description": "Ethereum'un diğer yeni kullanım örnekleri hakkında bilgi edinin",
+ "nav-emerging-label": "Yeni ortaya çıkan kullanım alanları",
+ "nav-enterprise-description": "Ethereum için iş uygulamaları",
+ "nav-ethereum-org-description": "Bu web sitesi topluluk odaklıdır-bize katılarak siz de katkıda bulunun",
+ "nav-ethereum-wallets-description": "Ethereum hesabınızla etkileşime girecek bir uygulama",
+ "nav-events-description": "Merkezi olmayan yönetim ve herkese katılma özgürlüğü",
+ "nav-events-irl-description": "Her ay şahsen ve çevrimiçi olarak sunulan önemli Ethereum etkinlikleri düzenleniyor",
+ "nav-events-label": "Topluluklar ve etkinlikler",
+ "nav-events-online-description": "Yüzbinlerce Ethereum tutkunu bu çevrimiçi topluluklarda bir araya geliyor",
+ "nav-find-wallet-description": "Cüzdanlar kripto kullanmanıza olanak sağlar",
+ "nav-find-wallet-label": "Cüzdanınızı seçin",
+ "nav-gas-fees-description": "ETH işlem ücretleri nasıl hesaplanıyor",
+ "nav-gas-fees-label": "Gaz ücretleri",
+ "nav-get-eth-description": "Ethereum uygulamalarını kullanmak için ether'e (ETH) ihtiyacınız var",
+ "nav-get-started-description": "Ethereum'u kullanmak için ilk adımlarınız",
+ "nav-governance-description": "Ethereum protokolünü yükseltme süreci",
+ "nav-governance-label": "Yönetim",
+ "nav-grants-description": "Hibe finansmanı programları sağlayan projeler hakkında topluluğumuzun hazırladığı bir liste",
+ "nav-guide-create-account-description": "Cüzdan uygulamasını kullanan herkes herhangi bir zamanda ücretsiz şekilde bir Ethereum hesabı oluşturabilir",
+ "nav-guide-create-account-label": "Bir Ethereum hesabı nasıl oluşturulur",
+ "nav-guide-revoke-access-description": "Ethereum ekosistemindeki akıllı sözleşmeler ve uygulamalarla etkileşimde bulunurken güvenliğinizi sağlayın",
+ "nav-guide-revoke-access-label": "Akıllı sözleşme erişimi nasıl iptal edilir",
+ "nav-guide-use-wallet-description": "Bir cüzdanın temel fonksiyonlarının nasıl kullanılacağını öğrenin",
+ "nav-guide-use-wallet-label": "Cüzdan nasıl kullanılır?",
+ "nav-guides-description": "Başlamanıza yardımcı olacak pratik adım adım kılavuzlar",
+ "nav-guides-label": "Nasıl yapılır kılavuzları",
+ "nav-history-description": "Tüm önemli çatallanmaların ve güncellemelerin zaman çizelgesi",
+ "nav-history-label": "Ethereum'un teknik tarihi",
+ "nav-layer-2-description": "Ethereum için daha ucuz ve daha hızlı işlemler",
+ "nav-learn-by-coding-description": "Ethereum'u denemenize yardımcı olacak araçlar",
+ "nav-local-env-description": "Ethereum geliştirme yığınınızı seçin ve oluşturun",
+ "nav-mainnet-description": "Halka açık Ethereum Ana Ağı üzerinde işletme blok zinciri uygulamaları oluşturulabilir",
+ "nav-nft-description": "Benzersiz bir şeyi Ethereum tabanlı bir varlık olarak göstermenin yolu",
+ "nav-open-research-description": "Ethereum'un başlıca avantajlarından biri sahip olduğu aktif araştırma topluluğudur",
+ "nav-open-research-label": "Açık araştırma",
+ "nav-overview-description": "Ethereum eğitimiyle ilgili her şey",
+ "nav-overview-label": "Genel Bakış",
+ "nav-participate-overview-description": "Nasıl katılınacağına ilişkin genel bakış",
"nav-primary": "Birincil",
- "nft-page": "Değiştirilemeyen tokenler (NFT'ler)",
+ "nav-private-description": "Özel işletmeler için Ethereum geliştirici kaynakları",
+ "nav-quizzes-description": "Ethereum ve kripto paraları ne kadar iyi anladığınızı öğrenin",
+ "nav-quizzes-label": "Bilginizi sınayın",
+ "nav-refi-description": "Yenileyici ilkeler üzerine inşa edilen alternatif bir ekonomik sistem",
+ "nav-research-description": "Ethereum'u geliştirmek için kullanılan süreçler",
+ "nav-research-label": "Araştırma ve geliştirme",
+ "nav-roadmap-description": "Ethereum için daha ölçeklenebilir, güvenli ve sürdürülebilir olmanın yolu",
+ "nav-roadmap-future-description": "Ethereum'u sağlam ve merkezi olmayan bir ağ olarak güçlendirmek",
+ "nav-roadmap-future-label": "Geleceği garantileme",
+ "nav-roadmap-label": "Yol haritası",
+ "nav-roadmap-scaling-description": "İşlem maliyetlerini ve hızını azaltmaya yardımcı olan ağ güncellemeleri",
+ "nav-roadmap-scaling-label": "Daha ucuz işlemler",
+ "nav-roadmap-security-description": "Ethereum'un gelecekteki her türlü saldırıya karşı dayanıklı kalmasını sağlamak",
+ "nav-roadmap-security-label": "Gelişmiş güvenlik",
+ "nav-roadmap-ux-description": "Ethereum'un kullanımı basitleştirilmeli",
+ "nav-roadmap-ux-label": "Daha iyi kullanıcı deneyimi",
+ "nav-run-a-node-description": "Ağın güvenliğini sağlamaya yardımcı olurken tamamen hakim olun",
+ "nav-security-description": "Kripto paralarını kullanırken en iyi uygulamaları öğrenin",
+ "nav-smart-contracts-description": "Ethereum ekosisteminin temel yapı blokları",
+ "nav-stablecoins-description": "Stabil coin'ler sabit bir değerde kalacak şekilde tasarlanmış Ethereum token'larıdır",
+ "nav-stake-description": "Ethereum'u güvence altına alırken ödüller kazanın",
+ "nav-stake-label": "Kilit",
+ "nav-staking-home-description": "Farklı hisseleme seçeneklerine genel bakış",
+ "nav-staking-home-label": "Staking Ana Sayfa",
+ "nav-staking-pool-description": "Elinizdeki ETH miktarı farketmeksizin istediğiniz hisselemeye katılın ve ödüller kazanın",
+ "nav-staking-pool-label": "Havuzlanmış Staking",
+ "nav-staking-saas-description": "Üçüncü taraf düğüm operatörleri, doğrulayıcı istemcinizin çalışmasını yönetir",
+ "nav-staking-saas-label": "Bir hizmet ile hisseleme",
+ "nav-staking-solo-description": "Ev donanımını çalıştırın ve Ethereum ağının güvenliğine ve merkezsizleştirilmesine kişisel olarak katkıda bulunun",
+ "nav-staking-solo-label": "Tekli staking",
+ "nav-start-building-description": "Yeni başlayanlar için faydalı bilgiler",
+ "nav-translation-program-description": "Ethereum.org'u tüm dillere çevirmeyi amaçlayan ortak bir çalışma",
+ "nav-tutorials-description": "Topluluk eğitimleri için özel olarak hazırlanmış liste",
+ "nav-use-cases-description": "Ethereum kullanımına uygun farklı fikirleri keşfedin",
+ "nav-use-cases-label": "Kullanım alanları",
+ "nav-what-is-ether-description": "Ethereum uygulamalarının para birimi",
+ "nav-what-is-ethereum-description": "Ethereum'u özel kılan şeyin ne olduğunu öğrenmek",
+ "nav-what-is-web3-label": "Web3 nedir?",
+ "nav-what-is-web3-description": "Kuralları belirleyen merkezi tekellere bir alternatif",
+ "nav-whitepaper-description": "2014 yılında Vitalik Buterin tarafından yazılan orijinal Ethereum tanıtım belgesi",
+ "nav-zkp-description": "İfadenin kendisini açığa çıkarmadan bir ifadenin geçerliliğini kanıtlamanın bir yolu",
+ "nft-page": "NFT'ler - Değiştirilemeyen tokenler",
"nfts": "NFT'ler",
"no": "Hayır",
"on-this-page": "Bu sayfada",
@@ -154,6 +263,8 @@
"page-developers-aria-label": "Geliştirici Menüsü",
"page-index-meta-title": "Ana sayfa",
"page-last-updated": "Sayfanın son güncellenmesi",
+ "participate": "Katılın",
+ "participate-menu": "Katılım menüsü",
"pbs": "Teklifi yapan-oluşturucu ayrımı",
"pools": "Havuzlanmış Staking",
"privacy-policy": "Gizlilik politikası",
@@ -164,8 +275,10 @@
"refresh": "Lütfen sayfayı yenileyiniz.",
"return-home": "ana sayfaya dön",
"roadmap": "Ethereum yol haritası",
+ "research": "Araştırma",
+ "research-menu": "Araştırma menüsü",
"resources": "Çeviri kaynakları",
- "regenerative-finance": "Sürdürülebilir finans (SüFi)",
+ "regenerative-finance": "SüFi - Sürdürülebilir finans",
"run-a-node": "Bir düğüm çalıştırın",
"rollup-component-website": "Web sitesi",
"rollup-component-developer-docs": "Geliştirici dokümanları",
@@ -182,22 +295,21 @@
"single-slot-finality": "Tek yuva kesinliği",
"statelessness": "Durumsuzluk",
"see-contributors": "Katkıda bulunanları göster",
- "set-up-local-env": "Yerel ortamı kur",
+ "set-up-local-env": "Yerel ortamı ayarla",
"sharding": "Parçalama",
"show-all": "Tümünü göster",
"show-less": "Daha az göster",
"site-description": "Ethereum, bir para ve yeni tür uygulamalar için evrensel, merkezi olmayan bir platformdur. Ethereum'da parayı kontrol eden kod yazabilir ve dünyanın her yerinden erişilebilir uygulamalar oluşturabilirsiniz.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Ana içeriğe geç",
"smart-contracts": "Akıllı sözleşmeler",
- "stablecoins": "Sabit coinler",
+ "stablecoins": "Sabit paralar",
"stake-eth": "ETH stake etme",
"staking": "Stake etme",
"start-here": "Başlamak için",
"style-guide": "Stil rehberi",
"solo": "Tekli staking",
"support": "Destek",
- "terms-of-use": "Kullanım Koşulları",
+ "terms-of-use": "Kullanım koşulları",
"translation-banner-body-new": "Henüz çevirmediğimiz için bu sayfayı İngilizce olarak görüntülüyorsunuz. Bu içeriği çevirmemize yardım edin.",
"translation-banner-body-update": "Bu sayfanın yeni bir sürümü vardır ancak şu anda yalnızca İngilizce'dir. Son sürümü çevirmemize yardımcı ol.",
"translation-banner-button-see-english": "İngilizce'yi gör",
@@ -211,8 +323,10 @@
"try-using-search": "Aradığınızı bulmak için arama işlevini kullanmayı deneyin veya",
"tutorials": "Sunumlar",
"up": "Yukarı",
+ "use": "Kullanım",
"use-ethereum": "Ethereum'u Kullan",
"use-ethereum-menu": "Ethereum menüsünü kullanın",
+ "use-menu": "Menüyü kullan",
"user-experience": "Kullanıcı deneyimi",
"verkle-trees": "Verkle ağaçları",
"wallets": "Cüzdanlar",
diff --git a/src/intl/tr/page-dapps.json b/src/intl/tr/page-dapps.json
index ff2ed11d378..37194276259 100644
--- a/src/intl/tr/page-dapps.json
+++ b/src/intl/tr/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "Token'li koleksiyonlar oluşturun, satın ve satın alın.",
"page-dapps-dapp-description-rubic": "Kullanıcılar ve dApp'ler için Cross-Chain teknoloji toplayıcısı.",
"page-dapps-dapp-description-sablier": "Gerçek zamanlı olarak para akışı.",
- "page-dapps-dapp-description-skiff": "Sonsuz şifreli e-posta, takvim, belgeler ve dosyalar; size özgürce iletişim kurma gücü verir.",
"page-dapps-dapp-description-spatial": "Kendi özel avatarınızı ve 3B dünyalarınızı oluşturun",
"page-dapps-dapp-description-spruce": "Kimlik ve veri kontrolünü olması gereken yerde bırakmak için açık kaynaklı bir yapı, kullanıcılarla...",
"page-dapps-dapp-description-status": "Bilgi akışını serbest bırakma, özel, güvenli konuşma hakkını koruma ve bireylerin egemenliğini destekleme amacıyla tasarlandı.",
"page-dapps-dapp-description-superrare": "Dijital sanat eserlerini doğrudan sanatçılardan veya ikincil pazarlardan satın alın.",
"page-dapps-dapp-description-synthetix": "Synthetix, sentetik varlıkların ihraç ve ticaretini sağlayan bir protokoldür",
"page-dapps-dapp-description-token-sets": "Otomatik olarak yeniden dengeleyen kripto yatırım stratejileri.",
- "page-dapps-dapp-description-tornado-cash": "Ethereum'da anonim işlemler gönderin.",
"page-dapps-dapp-description-uniswap": "Token'leri basitçe değiştirin veya % ödüller için token'ler sağlayın.",
"page-dapps-dapp-description-xmtp": "DM'ler, uyarılar, duyurular ve daha fazlası dahil olmak üzere blokzincir hesapları arasında mesaj gönderin.",
"page-dapps-dapp-description-yearn": "Yearn Finans bir getirici toplayıcıdır. Bireylere, DAO'lara ve diğer protokollere dijital varlıkları yatırmak ve getiri almak için bir yol verir.",
@@ -248,7 +246,6 @@
"page-dapps-set-up-a-wallet-button": "Cüzdan bul",
"page-dapps-set-up-a-wallet-description": "Bir cüzdan bir merkezi olmayan uygulama için \"girişiniz\" demektir",
"page-dapps-set-up-a-wallet-title": "Bir cüzdan oluşturun",
- "page-dapps-skiff-logo-alt": "Skiff logosu",
"page-dapps-social-button": "Sosyal",
"page-dapps-social-description": "Bunlar, kullanıcıların dijital kimliklerin ve sosyal şemaların sahibi olduğu, merkezi olmayan kimlik teknolojilerini kullanan, merkezi olmayan sosyal ağlar oluşturmaya odaklanan uygulamalardır.",
"page-dapps-social-title": "Sosyal",
@@ -260,7 +257,6 @@
"page-dapps-technology-description": "Bunlar, geliştirici araçlarını Ademi merkezileştirmeye, kripto-ekonomik sistemleri mevcut teknolojiye dahil etmeye ve açık kaynak geliştirme çalışmaları için pazarlar oluşturmaya odaklanan uygulamalardır.",
"page-dapps-technology-title": "Merkezi olmayan teknoloji",
"page-dapps-token-sets-logo-alt": "Token Sets logosu",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logosu",
"page-dapps-uniswap-logo-alt": "Uniswap logosu",
"page-dapps-wallet-callout-button": "Cüzdan bulun",
"page-dapps-wallet-callout-description": "Cüzdanlar da merkezi olmayan uygulamalardır. Size uygun özelliklere göre bir tane bulun.",
diff --git a/src/intl/tr/page-languages.json b/src/intl/tr/page-languages.json
index 235f795c731..07c9e1e8dcb 100644
--- a/src/intl/tr/page-languages.json
+++ b/src/intl/tr/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Ethereum.org'u farklı bir dilde görmek ister misiniz?",
"page-languages-want-more-link": "Çeviri Programı",
"page-languages-want-more-paragraph": "ethereum.org çevirmenleri sayfaları her zaman mümkün olduğu kadar çok dilde çevirir. Şu anda ne üzerinde çalıştıklarını görmek veya onlara katılmak üzere kaydolmak için ve hakkımızda okumak için",
- "page-languages-filter-placeholder": "Filtrele",
+ "page-languages-filter-label": "Filtre listesi",
+ "page-languages-filter-placeholder": "Filtre tipi",
+ "page-languages-browser-default": "Tarayıcı varsayılanı",
+ "page-languages-translated": "çevrildi",
+ "page-languages-words": "kelimeler",
+ "page-languages-recruit-community": "ethereum.org'u çevirmemize yardımcı olun.",
+ "langauge-am": "Amharca",
"language-ar": "Arapça",
"language-az": "Azerice",
+ "langauge-be": "Belarusça",
"language-bg": "Bulgarca",
"language-bn": "Bengalce",
+ "language-bs": "Boşnakça",
"language-ca": "Katalanca",
"language-cs": "Çekçe",
"language-da": "Danca",
@@ -32,6 +40,7 @@
"language-hi": "Hintçe",
"language-hr": "Hırvatça",
"language-hu": "Macarca",
+ "language-hy-am": "Ermenice",
"language-id": "Endonezyaca",
"language-ig": "İgbo Dili",
"language-it": "İtalyanca",
@@ -39,12 +48,14 @@
"language-ka": "Gürcüce",
"language-kk": "Kazakça",
"language-km": "Kmerce",
+ "language-kn": "Kannada Dili",
"language-ko": "Korece",
"language-lt": "Litvanca",
"language-ml": "Malayalam Dili",
"language-mr": "Marathi Dili",
"language-ms": "Malayca",
"language-nb": "Norveççe",
+ "language-ne-np": "Nepal Dili",
"language-nl": "Felemenkçe",
"language-pcm": "Nigerian Pidgin",
"language-fil": "Filipince",
@@ -58,8 +69,9 @@
"language-sl": "Slovakça",
"language-sr": "Sırpça",
"language-sw": "Svahili Dili",
- "language-th": "Tai Dili",
"language-ta": "Tamilce",
+ "language-th": "Tai Dili",
+ "language-tk": "Türkmence",
"language-tr": "Türkçe",
"language-uk": "Ukraynaca",
"language-ur": "Urduca",
diff --git a/src/intl/tr/page-stablecoins.json b/src/intl/tr/page-stablecoins.json
index 12605061a4c..0e5a9d125e8 100644
--- a/src/intl/tr/page-stablecoins.json
+++ b/src/intl/tr/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Kaynak",
"page-stablecoins-bitcoin-pizza": "Kötü şöhretli Bitcoin pizzası",
"page-stablecoins-bitcoin-pizza-body": "2010 yılında bir kişi 10.000 bitcoin karşılığında 2 pizza satın aldı. O zamanlar yaklaşık değeri 41 USD değerindeydi. Bugünün piyasasında bu milyonlarca dolar. Ethereum'un tarihinde buna benzer birçok pişmanlık verici işlem var. Sabit paralar bu sorunu çözer, böylece pizzanızın tadını çıkarabilir ve ETH'nizi elinizde tutabilirsiniz.",
+ "page-stablecoins-category-dashboard-and-education": "Panel we Umumyýet",
"page-stablecoins-coin-price-change": "Para fiyat değişikliği (son 30 gün)",
"page-stablecoins-crypto-backed": "Kripto destekli",
"page-stablecoins-crypto-backed-con-1": "Fiat-destekli sabit paralardan daha az stabil.",
diff --git a/src/intl/uk/common.json b/src/intl/uk/common.json
index 438ea551078..d1436e5d865 100644
--- a/src/intl/uk/common.json
+++ b/src/intl/uk/common.json
@@ -1,17 +1,31 @@
{
- "account-abstraction": "Абстрагування облікового запису",
"about-ethereum-org": "Про ethereum.org",
"about-us": "Про нас",
+ "adding-desci-projects": "Додавання проєктів Desci",
+ "adding-developer-tools": "Додавання інструментів розробника",
+ "adding-exchanges": "Додавання обмінників",
+ "adding-glossary-terms": "Додавання словникових термінів",
+ "adding-layer-2s": "Додавання Шару 2s",
+ "adding-products": "Додавання товарів",
+ "adding-staking-products": "Додавання продуктів стейкінгу",
+ "adding-wallets": "Додавання гаманців",
+ "account-abstraction": "Абстрагування облікового запису",
+ "acknowledgements": "Подяки",
"aria-toggle-search-button": "Перемикання кнопки пошуку",
"aria-toggle-menu-button": "Перемикання кнопки меню",
"beacon-chain": "Beacon Chain",
"bridges": "Мости блокчейну",
+ "bug-bounty": "Винагороди за виявлення помилок",
+ "build": "Будувати",
+ "build-menu": "Меню будівництва",
"clear": "Очистити",
"close": "Закрити",
"community": "Спільнота",
"community-hub": "Центр спільноти",
"community-menu": "Меню «Спільнота»",
"contact": "Контакти",
+ "content-buckets": "Категорії вмісту",
+ "content-resources": "Ресурси вмісту",
"content-standardization": "Стандартизація контенту",
"contributing": "Участь у проекті",
"contributors": "Учасники проекту",
@@ -20,14 +34,17 @@
"copied": "Скопійовано",
"copy": "Копіювати",
"danksharding": "Данксегментування",
- "dao-page": "Децентралізовані автономні організації (DAO)",
+ "dao-page": "DAO - Децентралізовані автономні організації",
"dark-mode": "Темний",
"data-provided-by": "Джерело даних:",
- "decentralized-applications-dapps": "Децентралізовані програми (dapps)",
+ "decentralized-applications-dapps": "Dapps - Децентралізовані програми",
"decentralized-identity": "Децентралізована ідентичність",
"decentralized-social-networks": "Децентралізовані соціальні мережі",
- "decentralized-science": "Децентралізована наука (DeSci)",
- "defi-page": "Децентралізовані фінанси (DeFi)",
+ "decentralized-science": "DeSci - Децентралізована наука",
+ "description": "Опис елемента навігації",
+ "defi-page": "DeFi - Децентралізовані фінанси",
+ "design": "Оформлення",
+ "design-principles": "Принципи оформлення",
"devcon": "Devcon",
"developers": "Розробникам",
"developers-home": "Головна сторінка для розробників",
@@ -51,7 +68,7 @@
"documentation": "Документація",
"down": "Вниз",
"ecosystem": "Екосистема",
- "edit-page": "Змінити сторінку",
+ "edit-page": "Виправити сторінку",
"ef-blog": "Блог Ethereum Foundation",
"eips": "Пропозиції покращення Ethereum",
"energy-consumption": "Енергоспоживання Ethereum",
@@ -63,7 +80,7 @@
"ethereum-bug-bounty": "Програма винагород за пошук помилок Ethereum",
"consensus-when-shipping": "Коли відбудеться запуск?",
"ethereum-upgrades": "Оновлення Ethereum",
- "ethereum-brand-assets": "Елементи бренду Ethereum",
+ "ethereum-brand-assets": "Ресурси бренду Ethereum",
"ethereum-online": "Онлайн-спільноти",
"ethereum-events": "Події Ethereum",
"ethereum-foundation": "Ethereum Foundation",
@@ -83,22 +100,22 @@
"feedback-card-prompt-tutorial": "Чи була ця інструкція корисною?",
"feedback-widget-thank-you-title": "Дякуємо за ваш відгук!",
"feedback-widget-thank-you-subtitle": "Зробіть цю сторінку ще кращою, відповівши на кілька запитань.",
- "feedback-widget-thank-you-subtitle-ext": "Якщо вам потрібна допомога, ви можете звернутися до нашої спільноти в Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Якщо вам потрібна допомога, ви можете зв'язатися зі спільнотою на нашому Discord.",
"feedback-widget-thank-you-timing": "2-3 хв",
"feedback-widget-thank-you-cta": "Відкрийте коротке опитування",
"find-wallet": "Знайти гаманець",
"future-proofing": "Забезпечення майбутнього",
- "get-eth": "Як отримати ETH",
+ "get-eth": "Отримати ETH",
"get-involved": "Долучитися",
- "get-started": "Почати",
+ "get-started": "Початок роботи",
"grants": "Гранти",
"grant-programs": "Програми грантів екосистеми",
"guides": "Посібники",
- "guides-hub": "Центр посібників",
+ "guides-hub": "Інструкції",
"history-of-ethereum": "Історія Ethereum",
"home": "Головна",
"how-ethereum-works": "Як працює Ethereum",
- "how-to-register-an-ethereum-account": "Як зареєструвати обліковий запис Ethereum",
+ "how-to-create-an-ethereum-account": "Як «створити» обліковий запис Ethereum",
"how-to-revoke-token-access": "Як анулювати доступ смарт-контракту до ваших криптовалютних ресурсів",
"how-to-swap-tokens": "Як обміняти токени",
"how-to-use-a-bridge": "Як перевести токени у шар 2",
@@ -128,11 +145,117 @@
"loading-error-try-again-later": "Неможливо завантажити дані. Спробуйте пізніше.",
"logo": "логотип",
"mainnet-ethereum": "Основна мережа Ethereum",
+ "merge": "Злиття",
"more": "Більше",
- "nav-developers": "Розробники",
+ "nav-about-description": "Публічний проєкт із відкритим вихідним кодом для спільноти Ethereum",
+ "nav-advanced-description": "Вивчайте складніші теми",
+ "nav-advanced-label": "Для досвідчених розробників",
+ "nav-basics-description": "Про основи Ethereum",
+ "nav-basics-label": "Основне",
+ "nav-bridges-description": "Концепція Web3 перетворилася на екосистему первинних блокчейнів L1 і рішень для масштабування L2",
+ "nav-builders-home-description": "Посібник із програмування на Ethereum. Створено розробниками для розробників",
+ "nav-builders-home-label": "Головна сторінка розробника",
+ "nav-contribute-description": "Якщо ви хочете допомогти, тут ви дізнаєтеся, як це зробити",
+ "nav-contribute-label": "Сприяння розвитку ethereum.org",
+ "nav-dao-description": "Спільноти, що належать учасникам, без централізованого керування",
+ "nav-dapps-description": "Дослідіть багату екосистему програм, що використовують Ethereum",
+ "nav-defi-description": "Глобальна відкрита альтернатива традиційному фінансовому ринку",
+ "nav-desci-description": "Глобальна, відкрита альтернатива сучасній науковій системі",
+ "nav-desoc-description": "Платформи на основі блокчейну для соціальної взаємодії та створення контенту",
"nav-developers-docs": "Документація для розробників",
+ "nav-developers": "Розробникам",
+ "nav-did-description": "Випускайте децентралізовані ідентифікатори та володійте ними",
+ "nav-docs-description": "Документи, які допоможуть вам краще зрозуміти платформу Ethereum та будувати з її допомогою",
+ "nav-docs-design-description": "Опис унікальних викликів web3-дизайну, найкращих методик і результатів досліджень користувачів",
+ "nav-docs-design-label": "Основи UX/UI-дизайну",
+ "nav-docs-foundation-description": "Основні принципи розробки на Ethereum",
+ "nav-docs-foundation-label": "Основоположні теми",
+ "nav-docs-overview-description": "Ваша головна сторінка для документації розробника",
+ "nav-docs-stack-description": "Про всі деталі стека Ethereum",
+ "nav-docs-stack-label": "Стековий список Ethereum",
+ "nav-eip-description": "Стандарти, які визначають нові функції або процеси",
+ "nav-eip-label": "EIP - Пропозиції покращення Ethereum",
+ "nav-emerging-description": "Ознайомтеся з іншими новими варіантами використання Ethereum",
+ "nav-emerging-label": "Нові варіанти використання",
+ "nav-enterprise-description": "Бізнес-програми для Ethereum",
+ "nav-ethereum-org-description": "Цей сайт керується спільнотою — приєднуйтеся до нас і робіть свій внесок",
+ "nav-ethereum-wallets-description": "Програма для взаємодії з вашим обліковим записом Ethereum",
+ "nav-events-description": "Децентралізація та право участі для кожного",
+ "nav-events-irl-description": "Щомісяця відбуваються великі події, пов’язані з Ethereum, як очні, так і онлайн",
+ "nav-events-label": "Спільноти та події",
+ "nav-events-online-description": "Сотні тисяч ентузіастів Ethereum беруть участь у цих онлайн-спільнотах",
+ "nav-find-wallet-description": "Гаманці дають змогу використовувати криптовалюту",
+ "nav-find-wallet-label": "Виберіть свій гаманець",
+ "nav-gas-fees-description": "Як розраховується комісія за транзакції ETH",
+ "nav-gas-fees-label": "Плата за газ",
+ "nav-get-eth-description": "Щоб використовувати програми Ethereum, потрібен ether (ETH)",
+ "nav-get-started-description": "Перші кроки з використання Ethereum",
+ "nav-governance-description": "Процес оновлення протоколу Ethereum",
+ "nav-governance-label": "Керування",
+ "nav-grants-description": "Спеціальний список від нашої спільноти щодо проєктів, які надають програми грантового фінансування",
+ "nav-guide-create-account-description": "Будь-хто може безкоштовно створити обліковий запис Ethereum за допомогою програми-гаманця в будь-який час",
+ "nav-guide-create-account-label": "Як створити обліковий запис Ethereum",
+ "nav-guide-revoke-access-description": "Залишайтеся в безпеці під час взаємодії зі смартконтрактами та програмами в екосистемі Ethereum",
+ "nav-guide-revoke-access-label": "Як анулювати доступ смартконтракту",
+ "nav-guide-use-wallet-description": "Дізнайтеся, як працюють усі основні функції гаманця",
+ "nav-guide-use-wallet-label": "Як користуватися гаманцем",
+ "nav-guides-description": "Практичні покрокові інструкції, які допоможуть вам розпочати роботу",
+ "nav-guides-label": "Інструкції",
+ "nav-history-description": "Хронологія всіх основних форків і оновлень",
+ "nav-history-label": "Технічна історія Ethereum",
+ "nav-layer-2-description": "Дешевші та швидші транзакції для Ethereum",
+ "nav-learn-by-coding-description": "Інструменти, які допоможуть вам експериментувати з Ethereum",
+ "nav-local-env-description": "Виберіть і налаштуйте стек для розробки Ethereum",
+ "nav-mainnet-description": "Корпоративні блокчейн-програми можуть бути побудовані на загальнодоступній головній мережі Ethereum",
+ "nav-nft-description": "Спосіб представити що-небудь унікальне як актив на основі Ethereum",
+ "nav-open-research-description": "Однією з головних переваг Ethereum є його активна дослідницька спільнота",
+ "nav-open-research-label": "Відкрите дослідження",
+ "nav-overview-description": "Усе про освіту у сфері Ethereum",
+ "nav-overview-label": "Огляд",
+ "nav-participate-overview-description": "Огляд того, як узяти участь",
"nav-primary": "Головна",
- "nft-page": "Невзаємозамінні токени (NFT)",
+ "nav-private-description": "Ресурси для розробників для приватного підприємства Ethereum",
+ "nav-quizzes-description": "Дізнайтеся, наскільки добре ви розбираєтеся в Ethereum і криптовалютах",
+ "nav-quizzes-label": "Перевірте свої знання",
+ "nav-refi-description": "Альтернативна економічна система, побудована на регенеративних принципах",
+ "nav-research-description": "Процеси, що використовуються для покращення Ethereum",
+ "nav-research-label": "Дослідження та розробка",
+ "nav-roadmap-description": "Шлях до масштабованості, безпеки та сталого розвитку Ethereum",
+ "nav-roadmap-future-description": "Зміцнення Ethereum як надійної та децентралізованої мережі",
+ "nav-roadmap-future-label": "Забезпечення майбутнього",
+ "nav-roadmap-label": "План розвитку",
+ "nav-roadmap-scaling-description": "Оновлення мережі для подальшого зниження транзакційних витрат і збільшення швидкості виконання операцій",
+ "nav-roadmap-scaling-label": "Дешевші транзакції",
+ "nav-roadmap-security-description": "Забезпечення стійкості Ethereum до всіх видів атак у майбутньому",
+ "nav-roadmap-security-label": "Покращена безпека",
+ "nav-roadmap-ux-description": "Використання Ethereum потребує спрощення",
+ "nav-roadmap-ux-label": "Кращий користувацький досвід",
+ "nav-run-a-node-description": "Отримайте абсолютну самостійність, допомагаючи захистити мережу",
+ "nav-security-description": "Ознайомтеся з найкращими методиками використання криптовалюти",
+ "nav-smart-contracts-description": "Фундаментальні блоки екосистеми Ethereum",
+ "nav-stablecoins-description": "Стабільні монети — це токени Ethereum, створені, щоб зберігати фіксоване значення",
+ "nav-stake-description": "Заробляйте винагороди, захищаючи Ethereum",
+ "nav-stake-label": "Ставка",
+ "nav-staking-home-description": "Огляд різних можливостей для стейкінгу",
+ "nav-staking-home-label": "Стейкінг: головна сторінка",
+ "nav-staking-pool-description": "Вкладайте кошти й отримуйте винагороди з будь-якою кількістю ETH, об’єднуючи зусилля з іншими.",
+ "nav-staking-pool-label": "Стейкінг у пулі",
+ "nav-staking-saas-description": "Сторонні оператори вузлів керують роботою вашого клієнта перевірки.",
+ "nav-staking-saas-label": "Стейкінг як послуга",
+ "nav-staking-solo-description": "Запустіть домашнє обладнання та особисто додайте безпеку й децентралізацію мережі Ethereum.",
+ "nav-staking-solo-label": "Одиночний стейкінг",
+ "nav-start-building-description": "Корисна інформація для новачків",
+ "nav-translation-program-description": "Спільна робота над перекладом сайту ethereum.org на всі мови світу",
+ "nav-tutorials-description": "Спеціальний список посібників спільноти",
+ "nav-use-cases-description": "Відкрийте для себе різні ідеї щодо використання Ethereum",
+ "nav-use-cases-label": "Варіанти використання",
+ "nav-what-is-ether-description": "Валюта в програмах Ethereum",
+ "nav-what-is-ethereum-description": "Про те, що робить Ethereum особливим",
+ "nav-what-is-web3-label": "Що таке Web3?",
+ "nav-what-is-web3-description": "Альтернатива централізованим монополіям, що диктують правила",
+ "nav-whitepaper-description": "Початкова документація Ethereum, складена Віталіком Бутеріним у 2014 році",
+ "nav-zkp-description": "Спосіб довести правдивість твердження, не розкриваючи саме твердження",
+ "nft-page": "NFT - Невзаємозамінні токени",
"nfts": "NFT",
"no": "Ні",
"on-this-page": "На цій сторінці",
@@ -140,6 +263,8 @@
"page-developers-aria-label": "Меню розробника",
"page-index-meta-title": "Головна",
"page-last-updated": "Останнє оновлення сторінки",
+ "participate": "Візьміть участь",
+ "participate-menu": "Меню учасника",
"pbs": "Розрізнення автора пропозиції та розробника",
"pools": "Стейкінг у пулі",
"privacy-policy": "Політика конфіденційності",
@@ -150,10 +275,12 @@
"refresh": "Оновіть сторінку.",
"return-home": "поверніться на головну сторінку",
"roadmap": "План розвитку Ethereum",
+ "research": "Дослідження",
+ "research-menu": "Меню дослідника",
"resources": "Ресурси для перекладу",
- "regenerative-finance": "Регенеративні фінанси (ReFi)",
- "run-a-node": "Запуск вузла",
- "rollup-component-website": "Сайт",
+ "regenerative-finance": "ReFi - Регенеративні фінанси",
+ "run-a-node": "Запустити вузол",
+ "rollup-component-website": "Website",
"rollup-component-developer-docs": "Документація для розробників",
"rollup-component-technology-and-risk-summary": "Огляд технологій і ризиків",
"scaling": "Масштабування",
@@ -164,6 +291,7 @@
"search-box-blank-state-text": "Введіть пошуковий запит.",
"search-eth-address": "Схоже, це адреса Ethereum. Ми не надаємо дані про адреси. Спробуйте знайти їх у посібник із блоків, наприклад",
"search-no-results": "Пошук не дав результатів",
+ "security": "Security",
"single-slot-finality": "Завершення в одному слоті",
"statelessness": "Відсутність стану",
"see-contributors": "Переглянути учасників",
@@ -175,12 +303,13 @@
"site-title": "ethereum.org",
"skip-to-main-content": "Перейти до основного контенту",
"smart-contracts": "Смарт-контракти",
- "stablecoins": "Stablecoins",
+ "stablecoins": "Стабільні монети",
"stake-eth": "Частка ETH",
"staking": "Стейкінг",
"start-here": "Почніть тут",
"style-guide": "Керівництво по стилю",
"solo": "Одиночний стейкінг",
+ "support": "Підтримка",
"terms-of-use": "Умови використання",
"translation-banner-body-new": "Ця сторінка відображається англійською мовою, оскільки ми ще не переклали її. Допоможіть нам у цьому.",
"translation-banner-body-update": "Ми оновили контент на цій сторінці, але наразі нова версія доступна лише англійською мовою. Допоможіть нам її перекласти.",
@@ -191,11 +320,14 @@
"translation-banner-no-bugs-title": "Тут немає помилок!",
"translation-banner-no-bugs-content": "Ця сторінка не перекладається. Ми навмисно поки що залишили її англійською.",
"translation-banner-no-bugs-dont-show-again": "Не показувати знову",
+ "translation-program": "програму перекладів",
"try-using-search": "Спробуйте скористатися пошуком, щоб знайти те, що ви шукаєте, або",
"tutorials": "Навчальні посібники",
"up": "Вгору",
+ "use": "Використання",
"use-ethereum": "Використання Ethereum",
"use-ethereum-menu": "Використання меню Ethereum",
+ "use-menu": "Меню користувача",
"user-experience": "Взаємодія з користувачем",
"verkle-trees": "Дерева Веркла",
"wallets": "Гаманці",
diff --git a/src/intl/uk/page-dapps.json b/src/intl/uk/page-dapps.json
index f9a7b9a0ec8..cd63a7aa604 100644
--- a/src/intl/uk/page-dapps.json
+++ b/src/intl/uk/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Переказуйте гроші в режимі реального часу.",
"page-dapps-dapp-description-superrare": "Купуйте цифрові витвори мистецтва безпосередньо в митців або на вторинних ринках.",
"page-dapps-dapp-description-token-sets": "Криптографічні інвестиційні стратегії можна автоматично заново збалансувати.",
- "page-dapps-dapp-description-tornado-cash": "Надсилайте анонімні транзакції в мережі Ethereum.",
"page-dapps-dapp-description-uniswap": "Легко обмінюйте токени або надавайте їх за винагороди у відсотках.",
"page-dapps-dapp-description-dexguru": "Торговий термінал без обмежень для трейдерів DeFi",
"page-dapps-dapp-description-synthetix": "Synthetix — це протокол для випуску синтетичних активів і торгівлі ними",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Це програми, націлені на децентралізацію інструментів розробників, включення криптоекономічних систем в існуючі технології та створення торговельних майданчиків для роботи з відкритим вихідним кодом.",
"page-dapps-technology-title": "Децентралізована технологія",
"page-dapps-token-sets-logo-alt": "Token Sets logo",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash logo",
"page-dapps-uniswap-logo-alt": "Uniswap logo",
"page-dapps-wallet-callout-button": "Знайти гаманець",
"page-dapps-wallet-callout-description": "Гаманці – це також децентралізовані програми. Знайдіть його на основі функцій, які вас цікавлять.",
diff --git a/src/intl/uk/page-languages.json b/src/intl/uk/page-languages.json
index 37747cfb9d6..4c9a50228ea 100644
--- a/src/intl/uk/page-languages.json
+++ b/src/intl/uk/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Хочете перекласти сайт ethereum.org іншою мовою?",
"page-languages-want-more-link": "програму перекладів",
"page-languages-want-more-paragraph": "Перекладачі прагнуть перекласти сайт ethereum.org на максимально можливу кількість мов. Щоб побачити, над чим вони зараз працюють, або приєднатися до команди, дізнайтеся більше про нашу",
- "page-languages-filter-placeholder": "Фільтр",
+ "page-languages-filter-label": "Список фільтрів",
+ "page-languages-filter-placeholder": "Введіть, щоб фільтрувати",
+ "page-languages-browser-default": "Налаштування браузера за замовчуванням",
+ "page-languages-translated": "перекладено",
+ "page-languages-words": "слова",
+ "page-languages-recruit-community": "Допоможіть нам перекласти сайт ethereum.org.",
+ "langauge-am": "Амхарська",
"language-ar": "Арабська",
"language-az": "Азербайджанська",
+ "langauge-be": "Білоруська",
"language-bg": "Болгарська",
"language-bn": "Бенгальська",
+ "language-bs": "Боснійська",
"language-ca": "Каталонська",
"language-cs": "Чеська",
"language-da": "Данська",
@@ -32,6 +40,7 @@
"language-hi": "Хінді",
"language-hr": "Хорватська",
"language-hu": "Угорська",
+ "language-hy-am": "Вірменська",
"language-id": "Індонезійська",
"language-ig": "Ігбо",
"language-it": "Італійська",
@@ -39,11 +48,12 @@
"language-ka": "Грузинська",
"language-kk": "Казахська",
"language-km": "Кхмерська",
+ "language-kn": "Каннада",
"language-ko": "Корейська",
"language-lt": "Литовська",
- "language-ml": "Малаялам",
+ "language-ml": "Малайялам",
"language-mr": "Маратхі",
- "language-ms": "Малайська",
+ "language-ms": "Малайзійська",
"language-nb": "Норвезька",
"language-nl": "Нідерландська",
"language-pcm": "Нігерійський піджин",
@@ -58,8 +68,9 @@
"language-sl": "Словенська",
"language-sr": "Сербська",
"language-sw": "Суахілі",
- "language-th": "Тайська",
"language-ta": "Тамільська",
+ "language-th": "Тайська",
+ "language-tk": "Туркменська",
"language-tr": "Турецька",
"language-uk": "Українська",
"language-ur": "Урду",
diff --git a/src/intl/uk/page-stablecoins.json b/src/intl/uk/page-stablecoins.json
index 3909f888b8b..f1308a39652 100644
--- a/src/intl/uk/page-stablecoins.json
+++ b/src/intl/uk/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Джерело",
"page-stablecoins-bitcoin-pizza": "Сумнозвісна піца Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "У 2010 році хтось купив 2 піци за 10 000 BTC. На той час вони коштували ~41 долар США. Сьогодні на ринку це мільйони доларів. Історія Ethereum налічує багато аналогічних помилкових транзакцій. Стабільні монети вирішують цю проблему, тож ви можете насолоджуватися піцою, не використовуючи ETH.",
+ "page-stablecoins-category-dashboard-and-education": "Панель управління та освіта",
"page-stablecoins-coin-price-change": "Зміна ціни монети (за останні 30 днів)",
"page-stablecoins-crypto-backed": "Захищено криптовалютою",
"page-stablecoins-crypto-backed-con-1": "Менш стабільні, ніж кредитно-паперові стабільні монети.",
diff --git a/src/intl/ur/common.json b/src/intl/ur/common.json
index fcf72b63e7d..9a333c3dfe9 100644
--- a/src/intl/ur/common.json
+++ b/src/intl/ur/common.json
@@ -1,30 +1,70 @@
{
"about-ethereum-org": "ethereum.org کے بارے میں",
"about-us": "ہمارے بارے میں",
+ "adding-desci-projects": "Desci پراجیکٹس کو شامل کرنا",
+ "adding-developer-tools": "ڈویلپر ٹولز شامل کرنا",
+ "adding-exchanges": "ایکسچینجز کو شامل کرنا",
+ "adding-glossary-terms": "لغت کی اصطلاحات شامل کرنا",
+ "adding-staking-products": "اسٹیکنگ پروڈکٹس کو شامل کرنا",
+ "adding-wallets": "والیٹ شامل کرنا",
+ "account-abstraction": "اکاؤنٹ کا خلاصہ",
+ "acknowledgements": "تسلیمات",
"aria-toggle-search-button": "تلاش کے بٹن کو ٹوگل کریں",
"aria-toggle-menu-button": "مینو بٹن ٹوگل کریں",
"beacon-chain": "بیکن چین",
"bridges": "بلاک چین بریجز",
+ "bug-bounty": "بگ باؤنٹی",
+ "build": "تعمیر کریں",
+ "build-menu": "تعمیر کریں کا مینو",
+ "clear": "صاف کریں",
"close": "بند کریں",
"community": "کمیونٹی",
"community-hub": "کمیونٹی کا مرکز",
"community-menu": "کمیونٹی مینو",
"contact": "رابطہ",
+ "content-buckets": "مواد کی بالٹیاں",
+ "content-resources": "مواد کے وسائل",
+ "content-standardization": "مواد کی معیارکاری",
"contributing": "شراکت داری کرنا",
"contributors": "شراکت دار",
"contributors-thanks": "ان تمام لوگوں کا شکریہ - جنہوں نے اس صفحہ کیلئے شراکت کی!",
"cookie-policy": "کوکی پالیسی",
"copied": "کاپی کیا گیا",
"copy": "کاپی کریں",
+ "danksharding": "ڈینک شرڈنگ",
+ "dao-page": "DAOs - غیر مرکزی خودمختار تنظیمیں",
"dark-mode": "گہرا",
"data-provided-by": "ڈیٹا کا ذریعہ:",
- "decentralized-applications-dapps": "غیر مرکزی ایپلیکیشنز (dapps)",
- "decentralized-science": "غیر مرکزی سائنس (DeSci)",
+ "decentralized-applications-dapps": "Dapps - غیر مرکزی ایپلیکیشنز",
+ "decentralized-identity": "غیر مرکزی شناخت",
+ "decentralized-social-networks": "غیر مرکزی سوشل نیٹ ورکس",
+ "decentralized-science": "DeSci - غیر مرکزی سائنس",
+ "description": "نیویگیشن آئٹم کی تفصیل",
+ "defi-page": "DeFi - غیر مرکزی مالیات",
+ "design": "ڈیزائن",
+ "design-principles": "ڈیزائن کے اصول",
"devcon": "ڈیوکون",
"developers": "ڈویلپرز",
"developers-home": "ڈویلپرز کا ہوم",
"docs": "دستاویز",
+ "docsearch-to-select": "منتخب کرنا",
+ "docsearch-to-navigate": "نیویگیٹ کرنا",
+ "docsearch-to-close": "بند کرنا",
+ "docsearch-search-by": "تلاش کریں بلحاظ",
+ "docsearch-start-recent-searches-title": "حالیہ",
+ "docsearch-start-no-recent-searches": "کوئی حالیہ تلاش نہیں",
+ "docsearch-start-save-recent-search": "اس تلاش کو محفوظ کریں",
+ "docsearch-start-remove-recent-search": "اس تلاش کو ہسٹری سے ہٹا دیں",
+ "docsearch-start-favorite-searches": "پسندیدہ",
+ "docsearch-start-remove-favorite-search": "اس تلاش کو پسندیدہ سے ہٹا دیں",
+ "docsearch-no-results-text": "کے لیے کوئی نتائج نہیں ہیں",
+ "docsearch-no-results-suggested-query": "تلاش کرنے کی کوشش کریں",
+ "docsearch-no-results-missing": "یقین ہے کہ اس سوال کے جواب ملیں گے؟",
+ "docsearch-no-results-missing-link": "ہمیں بتائیں۔",
+ "docsearch-error-title": "نتائج حاصل کرنے سے قاصر",
+ "docsearch-error-help": "ہو سکتا ہے آپ اپنا نیٹ ورک کنکشن چیک کرنا چاہیں۔",
"documentation": "دستاویز کاری",
+ "down": "نیچے",
"ecosystem": "ایکو سسٹم",
"edit-page": "صفحے میں ترمیم کریں",
"ef-blog": "Ethereum فاؤنڈیشن بلاگ",
@@ -45,6 +85,8 @@
"ethereum-glossary": "Ethereum لغت",
"ethereum-governance": "Ethereum گورننس",
"ethereum-logo": "Ethereum لوگو",
+ "ethereum-roadmap": "ایتھریم روڈ میپ",
+ "ethereum-protocol": "ایتھریم پروٹوکول",
"ethereum-security": "Ethereum سیکورٹی اور جعل سازی کی روک تھام",
"ethereum-support": "Ethereum سپورٹ",
"ethereum-wallets": "Ethereum والیٹس",
@@ -55,22 +97,21 @@
"feedback-card-prompt-tutorial": "کیا یہ ٹیوٹوریل کارآمد تھا؟",
"feedback-widget-thank-you-title": "آپ کے فیڈبیک کے لیے شکریہ!",
"feedback-widget-thank-you-subtitle": "چند سوالوں کے جواب دے کر اس صفحے کو مزید بہتر بنائیں۔",
- "feedback-widget-thank-you-subtitle-ext": "اگر آپ کو مدد کی ضرورت ہے، تو آپ ہمارے Discord پر کمیونٹی سے رابطہ کر سکتے ہیں۔",
+ "feedback-widget-thank-you-subtitle-ext": "اگر آپ کو مدد کی ضرورت ہو تو آپ ہمارے Discord پر کمیونٹی سے رابطہ کر سکتے ہیں۔",
"feedback-widget-thank-you-timing": "2–3 منٹ",
"feedback-widget-thank-you-cta": "مختصر سروے کھولیں",
"find-wallet": "والیٹ تلاش کریں",
+ "future-proofing": "مستقبل کا ثبوت",
"get-eth": "ETH حاصل کریں",
"get-involved": "شامل ہوں",
- "get-started": "شروع کریں",
+ "get-started": "شروع کرے",
"grants": "گرانٹس",
"grant-programs": "ایکو سسٹم گرانٹ پروگرامز",
- "guides-and-resources": "کمیونٹی کے اصول اور ذرائع",
"guides": "اصول",
- "guides-hub": "اصولوں کا مرکز",
+ "guides-hub": "طریقہ کار کی رہنمائیاں",
"history-of-ethereum": "Ethereum کی ہسٹری",
"home": "ہوم",
"how-ethereum-works": "Ethereum کیسے کام کرتا ہے",
- "how-to-create-an-ethereum-account": "Ethereum اکاؤنٹ کو کیسے \"رجسٹر\" کریں",
"how-to-revoke-token-access": "اسمارٹ کانٹریکٹ کی اپنے کرپٹو فنڈز تک رسائی کیسے منسوخ کریں",
"how-to-swap-tokens": "ٹوکنز کو کیسے سواپ کریں",
"how-to-use-a-bridge": "ٹوکنز کو تہہ نمبر 2 تک کیسے بریج کریں",
@@ -88,6 +129,7 @@
"layer-2": "تہہ نمبر 2",
"learn": "سیکھیں",
"learn-by-coding": "کوڈنگ سے سیکھیں",
+ "learn-hub": "سیکھنے کا مرکز",
"learn-menu": "مینو جانیں",
"learn-more": "مزید جانیں",
"less": "کم",
@@ -96,44 +138,154 @@
"loading": "لوڈ ہو رہا ہے...",
"loading-error": "لوڈ ہونے میں نقص۔",
"loading-error-refresh": "نقص، براہ کرم ریفریش کریں۔",
+ "loading-error-try-again-later": "ڈیٹا لوڈ کرنے میں ناکام۔ بعد میں دوبارہ کوشش کریں۔",
"logo": "لوگو",
"mainnet-ethereum": "مین نیٹ Ethereum",
+ "merge": "ضم کریں",
"more": "مزید",
- "nav-developers": "ڈویلپرز",
+ "nav-about-description": "ایتھریئم کمیونٹی کے لیے ایک عوامی، اوپن سورس پراجیکٹ",
+ "nav-advanced-description": "مزید پیچیدہ موضوعات کے بارے میں جانیں",
+ "nav-basics-description": "ایتھریئم کے بنیادی اصولوں کو سمجھیں",
+ "nav-basics-label": "بنیادی چیزیں",
+ "nav-bridges-description": "Web3 نے ترقی کرتے ہوئے بنیادی L1 بلاک چینز اور L2 توسیع پذیر حلوں کے ایک ایکو سسٹم کی صورت اختیار کر لی ہے",
+ "nav-builders-home-description": "ایتھریئم کے لیے ایک بلڈر کا رہنما کتابچہ—بلڈرز کی جانب سے، بلڈرز کے لیے تیار کردہ",
+ "nav-builders-home-label": "بلڈر کا ہوم",
+ "nav-contribute-description": "اگر آپ مدد کرنا چاہتے ہیں، تو یہ آپ کی رہنمائی کرے گا",
+ "nav-contribute-label": "ethereum.org میں اپنا حصہ ڈالنا",
+ "nav-dao-description": "کسی مرکزی اتھارٹی کے بغیر اراکین کے زیر ملکیت کمیونٹیز",
+ "nav-dapps-description": "ایتھریئم استعمال کرتے ہوئے ایپس کے ایک وسیع ایکو سسٹم کو دریافت کریں",
+ "nav-defi-description": "روایتی مالیاتی مارکیٹ کا ایک عالمگیر، شفاف متبادل",
+ "nav-desci-description": "موجودہ سائنسی سسٹم کا ایک عالمگیر، شفاف متبادل",
+ "nav-desoc-description": "سماجی تعامل اور مواد کی تخلیق کاری کے لیے بلاک چین پر مبنی پلیٹ فارمز",
"nav-developers-docs": "ڈویلپرز دستاویزات",
+ "nav-developers": "ڈویلپرز",
+ "nav-did-description": "اپنی منفرد غیر مرکزی شناختوں کا اجراء کریں اور ان کے مالک بنیں",
+ "nav-docs-description": "ایتھریئم کے ساتھ تعمیر کرنے اور اسے سمجھنے میں آپ کی مدد کے لیے دستاویزات",
+ "nav-docs-design-description": "web3 ڈیزائن کے منفرد مسائل، بہترین حکمت عملیوں اور صارفی تحقیق سے متعلقہ بصیرتوں کی تفصیل",
+ "nav-docs-design-label": "UX/UI ڈیزائن کے بنیادی اصول",
+ "nav-docs-foundation-description": "ایتھریئم پر چیزیں بنانے کے بنیادی اصول",
+ "nav-docs-overview-description": "ڈویلپر کی دستاویزات کے لیے آپ کا ہوم",
+ "nav-docs-stack-description": "ایتھریئم اسٹیک کی تمام تفصیلات کو سمجھیں",
+ "nav-eip-description": "وہ معیارات جو نئی خصوصیات یا عوامل کی وضاحت کرتے ہیں",
+ "nav-eip-label": "EIPs - ایتھریئم کی بہتری کی تجاویز",
+ "nav-emerging-description": "ایتھریئم کے لیے دیگر نئی استعمال کی صورتوں کی معلومات حاصل کریں",
+ "nav-enterprise-description": "ایتھریئم کے لیے کاروباری ایپلی کیشنز",
+ "nav-ethereum-org-description": "یہ ویب سائٹ کمیونٹی کے زیر انتظام ہے—ہمارے ساتھ شامل ہوں اور اپنا حصہ بھی ڈالیں",
+ "nav-ethereum-wallets-description": "اپنے ایتھریئم اکاؤنٹ کے ساتھ تعامل کرنے کی ایپ",
+ "nav-events-description": "غیر مرکزیت اور ہر شخص کو اپنا کردار ادا کرنے کی آزادی",
+ "nav-events-irl-description": "ہر مہینے ایتھریئم کے بڑے بالمشافہ اور آن لائن ایونٹس منعقد ہوتے ہیں",
+ "nav-events-label": "کمیونٹیز اور ایونٹس",
+ "nav-events-online-description": "ایتھریئم کمیونٹیز کے پرجوش صارفین کی کثیر تعداد ان آن لائن کمیونٹیز میں اکٹھی ہوتی ہے",
+ "nav-find-wallet-description": "والیٹس آپ کو کرپٹو استعمال کرنے کی اجازت دیتے ہیں",
+ "nav-find-wallet-label": "اپنا والیٹ منتخب کریں",
+ "nav-gas-fees-description": "ETH کی ٹرانزیکشن فیس کا حساب کیسے لگایا جاتا ہے",
+ "nav-get-eth-description": "ایتھریئم ایپلی کیشنز استعمال کرنے کے لیے آپ کو ایتھر (ETH) کی ضرورت ہوتی ہے",
+ "nav-get-started-description": "ایتھریئم استعمال کرنے کے لیے آپ کے ابتدائی مراحل",
+ "nav-governance-description": "ایتھریئم پروٹوکول کو اپ گریڈ کرنے پر مشتمل عمل",
+ "nav-governance-label": "گورننس",
+ "nav-grants-description": "ہماری کمیونٹی کے ایسے پراجیکٹس کی ایک منتخب شدہ فہرست جو گرانٹ فنڈنگ کے پروگرامز فراہم کرتے ہیں",
+ "nav-guide-create-account-description": "والیٹ ایپ کے ساتھ، کوئی بھی شخص کسی بھی وقت ایتھریئم اکاؤنٹ مفت تخلیق کر سکتا ہے",
+ "nav-guide-revoke-access-description": "ایتھریئم ایکو سسٹم میں اسمارٹ معاہدوں اور ایپلی کیشنز کے ساتھ تعامل کرتے وقت محفوظ رہیں",
+ "nav-guide-revoke-access-label": "اسمارٹ معاہدے تک رسائی کو کیسے منسوخ کریں",
+ "nav-guide-use-wallet-description": "والیٹ کے تمام بنیادی فنکشنز کو آپریٹ کرنے کا طریقہ کار جانیں",
+ "nav-guide-use-wallet-label": "والیٹ کا استعمال کیسے کریں",
+ "nav-guides-description": "آغاز کرنے میں آپ کی مدد کے لیے مرحلہ وار عملی رہنمائیاں",
+ "nav-guides-label": "طریقہ کار کی رہنمائیاں",
+ "nav-history-description": "تمام بڑی فورکس اور اپ ڈیٹس کی ٹائم لائن",
+ "nav-history-label": "ایتھریئم کی تکنیکی ہسٹری",
+ "nav-layer-2-description": "ایتھریئم کے لیے سستی اور تیز تر ٹرانزیکشنز",
+ "nav-learn-by-coding-description": "ایتھریئم کا تجربہ حاصل کرنے میں آپ کی مدد کے لیے ٹولز",
+ "nav-local-env-description": "اپنا ایتھریئم ڈویلپمنٹ اسٹیک منتخب کریں اور اسے سیٹ اپ کریں",
+ "nav-mainnet-description": "ایتھریئم کے عوامی مین نیٹ پر انٹرپرائز بلاک چین کی ایپلی کیشنز تیار کی جا سکتی ہیں",
+ "nav-nft-description": "ایک ایتھریئم پر مبنی اثاثے کی حیثیت سے کسی بھی منفرد چیز کی نمائندگی کرنے کا ایک طریقہ",
+ "nav-open-research-description": "ایتھریئم کی بنیادی خوبیوں میں سے ایک چیز اس کی فعال محقق کمیونٹی ہے",
+ "nav-open-research-label": "ریسرچ کھولیں",
+ "nav-overview-description": "ایتھریئم کی تعلیم سے متعلق تمام چیزیں",
+ "nav-participate-overview-description": "شرکت کرنے کے طریقہ کار کا جائزہ",
"nav-primary": "بنیادی",
+ "nav-quizzes-description": "جانیں کہ آپ ایتھریئم اور کرپٹو کرنسیز کو کتنے بہتر انداز میں سمجھتے ہیں",
+ "nav-quizzes-label": "اپنے علم کی جانچ کریں",
+ "nav-refi-description": "ایک متبادل معاشی نظام جو تخلیق نو کے اصولوں پر قائم کیا گیا ہے",
+ "nav-research-description": "ایتھریئم کی بہتری میں استعمال ہونے والے طریقے",
+ "nav-research-label": "تحقیق اور ترقی",
+ "nav-roadmap-description": "ایک ایسا راستہ جو ایتھریئم کے لیے زیادہ توسیع پذیری، سکیورٹی اور پائیداری کو فروغ دیتا ہے",
+ "nav-roadmap-future-description": "ایتھریئم کو ایک مضبوط اور غیر مرکزی نیٹ ورک کی حیثیت سے مستحکم بنانا",
+ "nav-roadmap-future-label": "مستقبل کا ثبوت",
+ "nav-roadmap-label": "روڈ میپ",
+ "nav-roadmap-scaling-description": "ٹرانزیکشن کے اخراجات اور رفتار کو مزید کم کرنے کے لیے نیٹ ورک کی اپ ڈیٹس",
+ "nav-roadmap-security-description": "اس بات کو یقینی بنانا کہ ایتھریئم مستقبل میں ہر قسم کے حملوں کے خلاف مزاحم رہے",
+ "nav-roadmap-security-label": "بہتر کردہ سکیورٹی",
+ "nav-roadmap-ux-description": "ایتھریئم کے استعمال کو آسان بنانے کی ضرورت ہے",
+ "nav-run-a-node-description": "نیٹ ورک کو محفوظ بنانے میں مدد کرتے ہوئے مکمل طور پر خود مختار بنیں",
+ "nav-security-description": "کرپٹو کرنسی استعمال کرتے وقت بہترین حکمت عملیاں سیکھیں",
+ "nav-smart-contracts-description": "ایتھریئم ایکو سسٹم کے بنیادی بلڈنگ بلاکس",
+ "nav-stablecoins-description": "اسٹیبل کوائنز وہ ایتھریئم ٹوکنز ہیں جنہیں ایک مقررہ قیمت پر برقرار رکھنے کے لیے ڈیزائن کیا جاتا ہے",
+ "nav-stake-description": "ایتھریئم کو محفوظ بنانے کے عوض انعامات حاصل کریں",
+ "nav-stake-label": "اسٹیک کرنا",
+ "nav-staking-home-description": "اسٹیکنگ کے مختلف اختیارات کا ایک جائزہ",
+ "nav-staking-pool-description": "دوسروں کے ساتھ شامل ہوتے ہوئے ETH کی کسی بھی رقم کے ساتھ اسٹیک کریں اور انعامات حاصل کریں",
+ "nav-staking-pool-label": "پُولڈ اسٹیکنگ",
+ "nav-staking-saas-label": "سروس کے ساتھ اسٹیکنگ",
+ "nav-staking-solo-label": "سولواسٹیکنگ",
+ "nav-start-building-description": "نوآموز افراد کے لیے مفید معلومات",
+ "nav-translation-program-description": "تمام زبانوں میں ethereum.org کا ترجمہ کرنے کی ایک اجتماعی کاوش",
+ "nav-tutorials-description": "کمیونٹی ٹیوٹوریلز کی ایک منتخب شدہ فہرست",
+ "nav-use-cases-description": "ایتھریئم کے استعمال کے مختلف تصورات دریافت کریں",
+ "nav-what-is-ether-description": "ایتھریئم ایپس کی کرنسی",
+ "nav-what-is-ethereum-description": "جانیں کہ ایتھریئم کی انفرادیت کا کیا راز ہے",
+ "nav-what-is-web3-label": "Web3 کیا ہے؟",
+ "nav-what-is-web3-description": "قوانین کا تعین کرنے والی مرکزی اجارہ داریوں کا متبادل",
+ "nav-whitepaper-description": "ایتھریئم کا اصل وائٹ پیپر 2014 میں Vitalik Buterin نے لکھا تھا",
+ "nav-zkp-description": "ایک ایسا طریقہ جس سے کسی بیان کو ازخود ظاہر کیے بغیر اس بیان کی درستگی کی توثیق کی جا سکتی ہے",
+ "nft-page": "NFTs - نان فنجیبل ٹوکنز",
"nfts": "NFTs",
"no": "نہیں",
"on-this-page": "اس صفحے پر",
"open-research": "ریسرچ کھولیں",
+ "page-developers-aria-label": "ڈویلپرز کا مینو",
+ "page-index-meta-title": "ہوم",
"page-last-updated": "صفحہ آخری بار اپ ڈیٹ کیا گیا",
+ "participate-menu": "حصہ لینے کا مینو",
+ "pbs": "تجویز کنندہ بلڈر کی علیحدگی",
+ "pools": "پُولڈ اسٹیکنگ",
"privacy-policy": "رازداری کی پالیسی",
"private-ethereum": "پرائیویٹ Ethereum",
+ "product-disclaimer": "مصنوعات اور خدمات ایتھریم کمیونٹی کے لیے ایک سہولت کے طور پر درج ہیں۔ کسی پروڈکٹ یا سروس کی شمولیت ethereum.org ویب سائٹ ٹیم، یا Ethereum Foundation کی طرف سے تصدیق کی نمائندگی نہیں کرتی ہے۔",
+ "quizzes-title": "کوئز ہب",
+ "quizzes": "کوئزز",
"refresh": "براہ کرم صفحہ ریفریش کریں۔",
"return-home": "ہوم پر واپس جائیں",
+ "roadmap": "ایتھریم روڈ میپ",
+ "research": "تحقیق",
+ "research-menu": "تحقیق کا مینو",
+ "resources": "ترجمے کے ذرائع",
"run-a-node": "نوڈ چلائیں",
"rollup-component-website": "ویب سائٹ",
"rollup-component-developer-docs": "ڈویلپر دستاویزات",
"rollup-component-technology-and-risk-summary": "ٹیکنالوجی اور خطرے کا خلاصہ",
+ "saas": "بطور سروس اسٹیکنگ",
"search": "تلاش کریں",
+ "search-ethereum-org": "ethereum.org تلاش کریں",
+ "secret-leader-election": "خفیہ لیڈر الیکشن",
"search-box-blank-state-text": "تلاش کریں!",
"search-eth-address": "یہ Ethereum ایڈریس کی طرح لگتا ہے۔ ہم ایڈریسز کا مخصوص ڈیٹا فراہم نہیں کرتے ہیں۔ بلاک ایکسپلورر پر اسے تلاش کرنے کی کوشش کریں، جیسے",
"search-no-results": "آپ کی تلاش کا کوئی نتیجہ نہیں",
+ "security": "سیکورٹی",
+ "single-slot-finality": "واحد-سلاٹ فنیلٹی",
+ "statelessness": "غیر حیثیتی",
"see-contributors": "شراکت داران دیکھیں",
"set-up-local-env": "مقامی ماحول قائم کریں",
"sharding": "شارڈنگ",
"show-all": "سب دکھائیں",
"show-less": "کم دکھائیں",
"site-description": "Ethereum پیسوں اور نئی قسم کی ایپلیکیشنز کے لیے ایک غیر مرکزی عالمی پلیٹ فارم ہے۔ Ethereum پر، آپ پیسے کو کنٹرول کرنے والا کوڈ لکھ سکتے، اور دنیا بھر میں کہیں سے بھی قابل رسائی ایپلیکیشنز بنا سکتے ہیں۔",
- "site-title": "ethereum.org",
"skip-to-main-content": "اہم مواد پر جائیں",
"smart-contracts": "اسمارٹ معاہدات",
"stablecoins": "اسٹیبل کوائنز",
"staking": "اسٹیکنگ",
+ "start-here": "یہاں شروع کریں",
"solo": "سولواسٹیکنگ",
- "saas": "بطور سروس اسٹیکنگ",
- "pools": "پُولڈ اسٹیکنگ",
- "withdrawals": "اسٹیکنگ نکلوانا",
+ "support": "معاونت",
"terms-of-use": "استعمال کی شرائط",
"translation-banner-body-new": "آپ یہ صفحہ انگریزی میں دیکھ رہے ہیں کیونکہ ہم نے ابھی تک اس کا ترجمہ نہیں کیا۔ اس مواد کا ترجمہ کرنے میں ہماری مدد کریں۔",
"translation-banner-body-update": "اس صفحہ کا ایک نیا ورژن ہے لیکن یہ ابھی صرف انگریزی میں ہے۔ تازہ ترین ورژن کا ترجمہ کرنے میں ہماری مدد کریں۔",
@@ -144,23 +296,23 @@
"translation-banner-no-bugs-title": "یہاں کوئی نقائص نہیں!",
"translation-banner-no-bugs-content": "اس صفحے کا ترجمہ نہیں کیا جا رہا۔ ہم نے جان بوجھ کر اس صفحے کو ابھی انگریزی میں چھوڑ دیا ہے۔",
"translation-banner-no-bugs-dont-show-again": "دوبارہ نہ دکھائیں",
+ "translation-program": "ترجمے کا پروگرام",
"try-using-search": "مطلوبہ چیز پانے کے لیے تلاش کرنے کی کوشش کریں یا",
"tutorials": "ٹیوٹوریلز",
+ "up": "اوپر",
+ "use": "استعمال",
"use-ethereum": "Ethereum استعمال کریں",
"use-ethereum-menu": "Ethereum مینو استعمال کریں",
+ "use-menu": "استعمال کا مینو",
+ "verkle-trees": "ورکل ٹریز",
"wallets": "والیٹس",
"we-couldnt-find-that-page": "ہم وہ صفحہ تلاش نہیں کر سکے",
"web3": "Web3 کیا ہے؟",
"web3-title": "Web3",
"website-last-updated": "ویب سائٹ آخری بار اپ ڈیٹ کی گئی",
"what-is-ether": "ایتھر (ETH) کیا ہے؟",
- "what-is-ethereum": "Ethereum کیا ہے؟",
- "defi-page": "غیر مرکزی مالیات (DeFi)",
- "dao-page": "غیر مرکزی خودمختار تنظیمیں (DAOs)",
- "nft-page": "نان فنجیبل ٹوکنز (NFTs)",
- "decentralized-social-networks": "غیر مرکزی سوشل نیٹ ورکس",
- "decentralized-identity": "غیر مرکزی شناخت",
+ "what-is-ethereum": "What is Ethereum?",
+ "withdrawals": "اسٹیکنگ نکلوانا",
"yes": "جی ہاں",
- "zero-knowledge-proofs": "بغیر معلومات کے ثبوت",
- "page-index-meta-title": "ہوم"
+ "zero-knowledge-proofs": "بغیر معلومات کے ثبوت"
}
diff --git a/src/intl/ur/page-languages.json b/src/intl/ur/page-languages.json
index e4f014e1328..2c9ae70869f 100644
--- a/src/intl/ur/page-languages.json
+++ b/src/intl/ur/page-languages.json
@@ -1,4 +1,11 @@
{
+ "page-languages-want-more-link": "ترجمہ پروگرام",
+ "page-languages-filter-label": "فہرست کو فلٹر کریں",
+ "page-languages-filter-placeholder": "فلٹر کرنے کے لیے ٹائپ کریں",
+ "page-languages-browser-default": "براؤزر کا ڈیفالٹ",
+ "page-languages-translated": "ترجمہ شدہ",
+ "page-languages-words": "الفاظ",
+ "page-languages-recruit-community": "ethereum.org کا ترجمہ کرنے میں ہماری مدد کریں۔",
"language-ar": "عربی",
"language-az": "آذربائیجانی",
"language-bg": "بلغاریائی",
diff --git a/src/intl/ur/page-stablecoins.json b/src/intl/ur/page-stablecoins.json
index 467e401f027..60d8664495a 100644
--- a/src/intl/ur/page-stablecoins.json
+++ b/src/intl/ur/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao لوگو",
"matcha-logo": "Matcha لوگو",
"oasis-logo": "Oasis لوگو",
- "uniswap-logo": "Uniswap لوگو"
+ "uniswap-logo": "Uniswap لوگو",
+ "page-stablecoins-category-dashboard-and-education": "Панель управління та освіта"
}
diff --git a/src/intl/uz/common.json b/src/intl/uz/common.json
index 070b7be26b2..5744bf2d01b 100644
--- a/src/intl/uz/common.json
+++ b/src/intl/uz/common.json
@@ -1,30 +1,70 @@
{
"about-ethereum-org": "ethereum.org haqida",
"about-us": "Biz haqimizda",
+ "adding-desci-projects": "Desci loyihalarini qo'shish",
+ "adding-developer-tools": "Dasturchi vositalarini qo'shish",
+ "adding-exchanges": "Birjalarni qo'shish",
+ "adding-glossary-terms": "Glossariy atamalarni qo'shish",
+ "adding-staking-products": "Pul tikish mahsulotlarini qo'shish",
+ "adding-wallets": "Hamyonlarni qo'shish",
+ "account-abstraction": "Hisob abstraksiyasi",
+ "acknowledgements": "Minnatdorchilik",
"aria-toggle-search-button": "Qidiruv tugmasini almashtirish",
"aria-toggle-menu-button": "Menyu tugmasini almashtirish",
"beacon-chain": "Beacon Chain",
"bridges": "Blokcheyn ko'priklar",
+ "bug-bounty": "Xatolar mo'lligi",
+ "build": "Qurish",
+ "build-menu": "Qurish menyusi",
+ "clear": "Tozalash",
"close": "Yopish",
"community": "Hamjamiyat",
"community-hub": "Hamjamiyat markazi",
"community-menu": "Hamjamiyat menyusi",
"contact": "Aloqa",
+ "content-buckets": "Kontent Idishlari",
+ "content-resources": "Kontent resurslari",
+ "content-standardization": "Kontentni standartlashtirish",
"contributing": "Hissa qo‘shish",
"contributors": "Hissa qoʻshganlar",
"contributors-thanks": "Bu sahifada hissa qoʻshganlarning barchasiga rahmat!",
"cookie-policy": "Cookie siyosati",
"copied": "Nusxa olindi",
"copy": "Nusxa olish",
+ "danksharding": "Danksharding",
+ "dao-page": "DAO - Markazlashmagan avtonom tashkilotlar",
"dark-mode": "Tungi",
"data-provided-by": "Ma'lumotlar manbai:",
- "decentralized-applications-dapps": "Markazlashtirilmagan ilovalar (dapps)",
- "decentralized-science": "Decentralized science (DeSci)",
+ "decentralized-applications-dapps": "Dapps - Markazlashtirilmagan ilovalar",
+ "decentralized-identity": "Markazlashmagan identifikatsiya",
+ "decentralized-social-networks": "Markazlashmagan ijtimoiy tarmoqlar",
+ "decentralized-science": "DeSci - Markazlashmagan ilm",
+ "description": "Nav elementi uchun tavsif",
+ "defi-page": "DeFi - Markazlashmagan moliya",
+ "design": "Dizayn",
+ "design-principles": "Dizayn Tamoyillari",
"devcon": "Devcon",
"developers": "Ishlab chiquvchilar",
"developers-home": "Dasturchilar bosh sahifasi",
"docs": "Docs",
+ "docsearch-to-select": "Tanlash uchun",
+ "docsearch-to-navigate": "Kezish uchun",
+ "docsearch-to-close": "Yopish uchun",
+ "docsearch-search-by": "Qidiruv asosi",
+ "docsearch-start-recent-searches-title": "Oxirgi",
+ "docsearch-start-no-recent-searches": "Oxirgi qidiruvlar yoʻq",
+ "docsearch-start-save-recent-search": "Bu qidiruvni saqlash",
+ "docsearch-start-remove-recent-search": "Bu qidiruvni tarixdan olib tashlash",
+ "docsearch-start-favorite-searches": "Saralangan",
+ "docsearch-start-remove-favorite-search": "Bu qidiruvni saralanganlardan olib tashlash",
+ "docsearch-no-results-text": "Bunga natija topilmadi",
+ "docsearch-no-results-suggested-query": "Buni qidirishga urining",
+ "docsearch-no-results-missing": "Bu soʻrov natija berishiga ishonasizmi?",
+ "docsearch-no-results-missing-link": "Bizga xabar bering.",
+ "docsearch-error-title": "Natijalarni olish imkonsiz",
+ "docsearch-error-help": "Internetga ulanishni tekshirishingiz mumkin.",
"documentation": "Hujjatnoma",
+ "down": "Pastga",
"ecosystem": "Ekotizim",
"edit-page": "Sahifani tahrirlash",
"ef-blog": "Ethereum Foundation Blogi",
@@ -34,10 +74,11 @@
"enterprise-menu": "Korxona menyusi",
"esp": "Ekotizimni qo'llab-quvvatlash dasturi",
"eth-current-price": "Joriy ETH narxi (USD)",
+ "ethereum-basics": "Ethereum asoslari",
"ethereum-bug-bounty": "Ethereum xatolarini topishni dastaklash dasturi",
"consensus-when-shipping": "Qachon yuboriladi?",
"ethereum-upgrades": "Ethereum yangilanishlari",
- "ethereum-brand-assets": "Ethereum brendi aktivlari",
+ "ethereum-brand-assets": "Ethereum brendining resurslari",
"ethereum-online": "Onlayn hamjamiyatlar",
"ethereum-events": "Ethereum voqealari",
"ethereum-foundation": "Ethereum Foundation",
@@ -45,6 +86,8 @@
"ethereum-glossary": "Ethereum lug'ati",
"ethereum-governance": "Ethereum boshqaruvi",
"ethereum-logo": "Ethereum logotipi",
+ "ethereum-roadmap": "Ethereum yoʻl xaritasi",
+ "ethereum-protocol": "Etereum protokoli",
"ethereum-security": "Ethereum xavfsizligi va firibgarlikning oldini olish",
"ethereum-support": "Ethereum yordam xizmati",
"ethereum-wallets": "Ethereum Hamyonlar",
@@ -55,19 +98,26 @@
"feedback-card-prompt-tutorial": "Qoʻllanma foydali boʻldimi?",
"feedback-widget-thank-you-title": "Fikr-mulohazangiz uchun rahmat!",
"feedback-widget-thank-you-subtitle": "Bir qancha savollarga javob berib, bu sahifani yanada yaxshilang.",
- "feedback-widget-thank-you-subtitle-ext": "Sizga yordam kerak boʻlsa, Discord sahifamiz orqali hamjamiyatimiz bilan aloqaga chiqing.",
+ "feedback-widget-thank-you-subtitle-ext": "Agar sizga yordam kerak boʻlsa, bizning Discord orqali hamjamiyat bilan bogʻlanishingiz mumkin.",
"feedback-widget-thank-you-timing": "2–3 daq",
"feedback-widget-thank-you-cta": "Qisqa soʻrovnomani ochish",
"find-wallet": "Hamyonni topish",
+ "future-proofing": "Kelajakka tayyorlik",
"get-eth": "ETH olish",
"get-involved": "Ishtirok etish",
"get-started": "Boshlang",
"grants": "Grantlar",
"grant-programs": "Ekotizim grant dasturlari",
- "guides-and-resources": "Hamjamiyat qoʻllanmalari va resurslari",
+ "guides": "Qoʻllanmalar",
+ "guides-hub": "Qo'llanmalar",
"history-of-ethereum": "Ethereum tarixi",
"home": "Bosh sahifa",
"how-ethereum-works": "Ethereum qanday ishlaydi",
+ "how-to-create-an-ethereum-account": "Ethereum hisobini qanday \"yaratish\" mumkin",
+ "how-to-revoke-token-access": "Kripto mablagʻlaringizga aqlli shartnoma kirishini qanday bekor qilish mumkin",
+ "how-to-swap-tokens": "Tokenlarni qanday almashtirish mumkin",
+ "how-to-use-a-bridge": "Tokenlarni 2-qatlamga qanday ulash mumkin",
+ "how-to-use-a-wallet": "Hamyonni qanday ishlatish mumkin",
"image": "rasm",
"in-this-section": "Bu bo'limda",
"individuals": "Jismoniy shaxslar",
@@ -81,6 +131,7 @@
"layer-2": "Qatlam 2",
"learn": "O'rganish",
"learn-by-coding": "Kodlash orqali bilib oling",
+ "learn-hub": "Oʻrganish markazi",
"learn-menu": "Oʻrganish menyusi",
"learn-more": "Ko'proq ma'lumot olish",
"less": "Kamroq",
@@ -89,42 +140,160 @@
"loading": "Yuklanmoqda...",
"loading-error": "Yuklashda xatolik.",
"loading-error-refresh": "Xatolik yuz berdi, yangilang.",
+ "loading-error-try-again-later": "Ma'lumotlarni yuklash imkonsiz. Yana bir harakat qilib ko'ring.",
"logo": "logotip",
"mainnet-ethereum": "Mainnet Ethereum",
- "more": "Yana",
- "nav-developers": "Ishlab chiquvchilar",
+ "merge": "Birlashtirish",
+ "more": "Ko'proq",
+ "nav-about-description": "Ethereum jamiyati uchun ochiq kodli jamoatchilik loyihasi",
+ "nav-advanced-description": "Murakkabroq mavzularni oʻrganing",
+ "nav-advanced-label": "Kengaytirilgan",
+ "nav-basics-description": "Ethereum asoslarini tushuning",
+ "nav-basics-label": "Asoslar",
+ "nav-bridges-description": "Web3 asosiy L1 blokcheynlari va L2 masshtablash yechimlari ekotizimiga aylandi.",
+ "nav-builders-home-description": "Ethereum quruvchilarining qoʻllanmasi – quruvchilardan quruvchilar uchun",
+ "nav-builders-home-label": "Quruvchi bosh sahifasi",
+ "nav-contribute-description": "Agar yordam bermoqchi boʻlsangiz, sizga bu yoʻl koʻrsatadi",
+ "nav-contribute-label": "Ethereum.org saytiga hissa qoʻshing",
+ "nav-dao-description": "Markazlashgan idoraga ega boʻlmagan aʼzolarga tegishli jamoalar",
+ "nav-dapps-description": "Ethereum ishlatadigan ilovalarning boy ekotizimini kashf eting",
+ "nav-defi-description": "Anʼanaviy moliya bozoriga global, ochiq muqobil",
+ "nav-desci-description": "Hozirgi ilmiy tizimga global, ochiq muqobil",
+ "nav-desoc-description": "Ijtimoiy aloqa va kontent yaratish uchun blokcheynga asoslangan platformalar",
"nav-developers-docs": "Dasturchilar uchun hujjatlar",
+ "nav-developers": "Ishlab chiquvchilar",
+ "nav-did-description": "Noyob markazlashmagan identifikatorlaringizni chiqaring va ularga egalik qiling",
+ "nav-docs-description": "Ethereumni tushunish va qurishga yordam beradigan hujjatlar",
+ "nav-docs-design-description": "Noyob web3 dizayn muammolari, eng yaxshi amaliyotlar va foydalanuvchi tadqiqotlari tushunchalarining tavsifi",
+ "nav-docs-design-label": "UX/UI dizayn asoslari",
+ "nav-docs-foundation-description": "Ethereumda ishlab chiqish uchun asosiy asoslar",
+ "nav-docs-foundation-label": "Asosiy mavzular",
+ "nav-docs-overview-description": "Dasturchi hujjatlari uchun bosh sahifa",
+ "nav-docs-stack-description": "Ethereum stekining barcha tafsilotlarini tushuning",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Yangi xususiyatlar yoki jarayonlarni belgilaydigan standartlar",
+ "nav-eip-label": "EIP - Ethereumni yaxshilash takliflari",
+ "nav-emerging-description": "Ethereumdan boshqa sohalarda foydalanishni bilib oling",
+ "nav-enterprise-description": "Ethereum uchun biznes ilovalar",
+ "nav-ethereum-org-description": "Bu veb-sayt hamjamiyat tomonidan yaratilgan – bizga qoʻshiling va hissa qoʻshing",
+ "nav-ethereum-wallets-description": "Ethereum hisobingiz bilan ishlash uchun ilova",
+ "nav-events-description": "Markazsizlashtirish va har kim uchun ishtirok etish erkinligi",
+ "nav-events-irl-description": "Har oyda yuz beradigan katta Ethereum yuzma-yuz va onlayn tadbirlari",
+ "nav-events-label": "Jamoalar va tadbirlar",
+ "nav-events-online-description": "Bu onlayn hamjamiyatlarda yuz minglab Ethereum ishqibozlari jamlangan",
+ "nav-find-wallet-description": "Hamyonlar kripto ishlatish imkonini beradi",
+ "nav-find-wallet-label": "Hamyoningizni tanlang",
+ "nav-gas-fees-description": "ETH tranzaksiya toʻlovlari qanday hisoblanadi",
+ "nav-get-eth-description": "Ethereum ilovalaridan foydalanish uchun sizga efir (ETH) kerak",
+ "nav-get-started-description": "Ethereumdan foydalanish uchun birinchi qadamlaringiz",
+ "nav-governance-description": " Ethereum protokolini yangilash bilan bogʻliq jarayon",
+ "nav-governance-label": "Boshqaruv",
+ "nav-grants-description": "Hamjamiyatimiz tomonidan grant moliyalashtirish dasturlarini taqdim etuvchi loyihalar boʻyicha tuzilgan roʻyxat",
+ "nav-guide-create-account-description": "Har kim xohlagan vaqtda, hamyon ilovasi bilan bepul Ethereum hisobini yaratishi mumkin",
+ "nav-guide-create-account-label": "Ethereum hisobini qanday yaratish mumkin",
+ "nav-guide-revoke-access-description": "Ethereum ekotizimidagi smart shartnomalar va ilovalar bilan ishlashda xavfsiz qoling",
+ "nav-guide-revoke-access-label": "Qanday qilib smart shartnomaga kirish ruxsatini bekor qilish mumkin",
+ "nav-guide-use-wallet-description": "Hamyonning barcha asosiy funksiyalarini qanday boshqarishni bilib oling",
+ "nav-guide-use-wallet-label": "Hamyonni qanday ishlatish mumkin",
+ "nav-guides-description": "Ishni boshlashga yordam beradigan amaliy koʻrsatmalar",
+ "nav-guides-label": "Yoʻriqnomalar",
+ "nav-history-description": "Barcha asosiy yoʻnalishlar va yangilanishlar xronologiyasi",
+ "nav-history-label": "Ethereumning texnik tarixi",
+ "nav-layer-2-description": "Ethereum uchun arzonroq va tezroq bitimlar",
+ "nav-learn-by-coding-description": "Ethereum bilan tajriba qilishga yordam beradigan vositalar",
+ "nav-local-env-description": "Ethereum ishlab chiqish stekini tanlang va sozlang",
+ "nav-mainnet-description": "Enterprise blokcheyn ilovalari ommaviy Ethereum Mainnetʼda qurilishi mumkin",
+ "nav-nft-description": "Ethereumga asoslangan aktiv sifatida noyob narsalarni koʻrsatish usuli",
+ "nav-open-research-description": "Ethereumning asosiy kuchli tomonlaridan biri uning faol tadqiqot hamjamiyatidir",
+ "nav-open-research-label": "Ochiq tadqiqot",
+ "nav-overview-description": "Ethereum saboqlariga oid hamma narsa",
+ "nav-participate-overview-description": "Qanday ishtirok etish haqida axborot",
"nav-primary": "Asosiy",
+ "nav-quizzes-description": "Ethereum va kriptovalyutalarni qanchalik yaxshi tushunganingizni bilib oling",
+ "nav-quizzes-label": "Bilimingizni sinab koʻring",
+ "nav-refi-description": "Muqobil iqtisodiy tizim regenerativ tamoyillarga asoslanadi",
+ "nav-research-description": "Ethereumni yaxshilash uchun ishlatiladigan jarayonlar",
+ "nav-research-label": "Izlanish va rivojlanish",
+ "nav-roadmap-description": "Ethereum uchun koʻproq miqyoslilik, xavfsizlik va barqarorlikka yoʻl",
+ "nav-roadmap-future-description": "Ethereumni mustahkam va markazlashmagan tarmoq sifatida mustahkamlash",
+ "nav-roadmap-future-label": "Kelajakka tayyorlik",
+ "nav-roadmap-label": "Yoʻl xaritasi",
+ "nav-roadmap-scaling-description": "Tranzaksiya xarajatlari va tezligini yanada kamaytirish uchun tarmoq yangilanishi",
+ "nav-roadmap-security-description": "Ethereum kelajakdagi barcha turdagi hujumlarga chidamli boʻlishiga ishonch hosil qilish",
+ "nav-roadmap-security-label": "Takomillashgan xavfsizlik",
+ "nav-roadmap-ux-description": "Ethereumdan foydalanishni soddalashtirish kerak",
+ "nav-run-a-node-description": "Tarmoq xavfsizligini taʼminlashda toʻliq suveren boʻling",
+ "nav-security-description": "Kriptovalyutadan foydalanishning eng yaxshi amaliyotlarini bilib oling",
+ "nav-smart-contracts-description": "Ethereum ekotizimining asosiy qurilish bloklari",
+ "nav-stablecoins-description": "Stablecoins – bu belgilangan qiymatda qolish uchun moʻljallangan Ethereum tokenlari",
+ "nav-stake-description": "Ethereumni himoya qilganingiz uchun mukofot oling",
+ "nav-stake-label": "Manfaat",
+ "nav-staking-home-description": "Ishtirok etish uchun turli xil variantlarning umumiy koʻrinishi",
+ "nav-staking-pool-description": "Boshqalar bilan kuchlarni birlashtirib, istalgan miqdordagi ETH bilan stavka oling va mukofot oling",
+ "nav-staking-pool-label": "Birlashtirilgan steyking",
+ "nav-staking-saas-label": "Steyking xizmat sifatida",
+ "nav-staking-solo-label": "Yakka steyking",
+ "nav-start-building-description": "Yangi qoʻshilganlar uchun foydali maʼlumotlar",
+ "nav-translation-program-description": "Ethereum.org saytini barcha tillarga tarjima qilishda hamkorlik",
+ "nav-tutorials-description": "Hamjamiyat qoʻllanmalari tanlangan roʻyxati",
+ "nav-use-cases-description": "Ethereumdan foydalanish uchun turli gʻoyalarni kashf eting",
+ "nav-what-is-ether-description": "Ethereum ilovalarining valyutasi",
+ "nav-what-is-ethereum-description": "Ethereumni nima maxsus qilishini tushuning",
+ "nav-what-is-web3-label": "Web3 nima?",
+ "nav-what-is-web3-description": "Qoidalarni belgilovchi markazlashgan monopoliyalarga muqobil",
+ "nav-whitepaper-description": "Asl Ethereum bayonnomasi 2014-yilda Vitalik Buterin tomonidan yozilgan",
+ "nav-zkp-description": "Bayonotning oʻzini oshkor qilmasdan, uning toʻgʻriligini isbotlash usuli",
+ "nft-page": "NFT - Unikal tokenlar",
+ "nfts": "NFTlar",
"no": "Yo'q",
"on-this-page": "Bu sahifada",
"open-research": "Ochiq tadqiqot",
+ "page-developers-aria-label": "Dasturchilar menyusi",
+ "page-index-meta-title": "Bosh sahifa",
"page-last-updated": "Sahifa oxirgi marta yangilandi",
+ "participate-menu": "Ishtirok menyusi",
+ "pbs": "Maslahatchi-tuzuvchini ajratish",
+ "pools": "Birlashtirilgan steyking",
"privacy-policy": "Maxfiylik Siyosati",
"private-ethereum": "Xususiy Ethereum",
+ "product-disclaimer": "Mahsulotlar va xizmatlar Ethereum hamjamiyati uchun qulaylik maqsadida keltirilgan. Mahsulot yoki xizmatning kiritilishiethereum.org veb-sayti jamoasi yoki Ethereum Foundation tomonidan tasdiqlanishini bildirmaydi.",
+ "quizzes-title": "Viktorina markazi",
+ "quizzes": "Viktorinalar",
"refresh": "Sahifani yangilang.",
"return-home": "bosh sahifaga qaytish",
+ "roadmap": "Ethereum yoʻl xaritasi",
+ "research": "Tadqiqot",
+ "research-menu": "Tadqiqot menyusi",
+ "resources": "Tarjima resurslari",
"run-a-node": "Tugunni ishga tushiring",
"rollup-component-website": "Veb-sayt",
"rollup-component-developer-docs": "Dasturchilar uchun hujjatlar",
"rollup-component-technology-and-risk-summary": "Xatarlar xulosasi va texnologiyalar",
+ "scaling": "Scaling",
+ "saas": "Steyking xizmat sifatida",
"search": "Qidiruv",
+ "search-ethereum-org": "Ethereum.org qidirish",
+ "secret-leader-election": "Yashirin yetakchi saylovi",
"search-box-blank-state-text": "Qidiring!",
"search-eth-address": "Bu Ethereum manziliga o'xshaydi. Biz manzillarga xos ma'lumotlarni taqdim etmaymiz. Bu kabi blok explorerdan qidirib ko'ring",
"search-no-results": "Qidiruv natija bermadi",
+ "security": "Xavfsizlik",
+ "single-slot-finality": "Bir slotli yakun",
+ "statelessness": "Fuqarosizlik",
"see-contributors": "Hissadorlarni ko'ring",
- "set-up-local-env": "Mahalliy muhitni sozlash",
+ "set-up-local-env": "Mahalliy muhitni o'rnating",
"sharding": "Sharding",
"show-all": "Hammasi",
"show-less": "Kamroq",
"site-description": "Ethereum - bu pul va yangi turdagi dasturlar uchun global, markazlashmagan platforma. Ethereum-da siz pulni boshqaradigan kod yozishingiz va dunyoning istalgan nuqtasida mavjud bo'lgan dasturlarni yaratishingiz mumkin.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Asosiy tarkibga o'tish",
"smart-contracts": "Aqlli shartnomalar",
"stablecoins": "Stablecoins",
+ "stake-eth": "ETH ulushi",
"staking": "Steyking",
+ "start-here": "Shu yerdan boshlang",
"solo": "Yakka steyking",
- "saas": "Steyking xizmat sifatida",
- "pools": "Birlashtirilgan steyking",
+ "support": "Qo'llab-quvvatlash",
"terms-of-use": "Foydalanish shartlari",
"translation-banner-body-new": "Sahifani ingliz tilida ko'rmoqdasiz, chunki hali tarjima qilmaganmiz. Bu kontentni tarjima qilishda yordam bering.",
"translation-banner-body-update": "Bu sahifaning yangi versiyasi mavjud, ammo hozirda faqat ingliz tilida. Oxirgi versiyasini tarjima qilishda yordam bering.",
@@ -135,22 +304,23 @@
"translation-banner-no-bugs-title": "Xatolar topilmadi!",
"translation-banner-no-bugs-content": "Bu sahifa hozir tarjima qilinmaydi. Hozircha bu sahifani inglizchada qoldiramiz.",
"translation-banner-no-bugs-dont-show-again": "Koʻrsatilmasin",
+ "translation-program": "Tarjima dasturi",
"try-using-search": "Izlayotganingizni topish uchun qidiruvdan foydalaning yoki",
"tutorials": "Darsliklar",
+ "up": "Tepaga",
+ "use": "Foydalanish",
"use-ethereum": "Ethereum-dan foydalaning",
"use-ethereum-menu": "Ethereum ishlatish menyusi",
+ "use-menu": "Foydalanish menyusi",
+ "user-experience": "Foydalanuvchi tajribasi",
+ "verkle-trees": "Verkle tarmoqlari",
"wallets": "Hamyonlar",
"we-couldnt-find-that-page": "Bu sahifa topilmadi",
"web3": "Web3 nima?",
"website-last-updated": "Sahifa oxirgi marta yangilandi",
- "what-is-ether": "Ether (ETH) nima?",
+ "what-is-ether": "Ether (ETH) bu nima?",
"what-is-ethereum": "Ethereum bu nima?",
- "defi-page": "Markazlashmagan moliya (DeFi)",
- "dao-page": "Markazlashmagan avtonom tashkilotlar (DAO)",
- "nft-page": "Unikal tokenlar (NFT)",
- "decentralized-social-networks": "Markazlashmagan ijtimoiy tarmoqlar",
- "decentralized-identity": "Markazlashmagan identifikatsiya",
+ "withdrawals": "Staking yechib olish",
"yes": "Ha",
- "zero-knowledge-proofs": "Zero-knowledge proofs",
- "page-index-meta-title": "Bosh sahifa"
+ "zero-knowledge-proofs": "Nol bilim bilan isbotlashlar"
}
diff --git a/src/intl/uz/page-languages.json b/src/intl/uz/page-languages.json
index e5add898008..c357125373a 100644
--- a/src/intl/uz/page-languages.json
+++ b/src/intl/uz/page-languages.json
@@ -1,4 +1,12 @@
{
+ "page-languages-h1": "Til Yordami",
+ "page-languages-want-more-link": "Tarjima dasturi",
+ "page-languages-filter-label": "Filtr roʻyxati",
+ "page-languages-filter-placeholder": "Filtrlash uchun yozing",
+ "page-languages-browser-default": "Brauzer standarti",
+ "page-languages-translated": "tarjima qilingan",
+ "page-languages-words": "soʻzlar",
+ "page-languages-recruit-community": "Bizga ethereum.org tarjimasiga yordam bering.",
"language-ar": "Arab",
"language-az": "Ozarbayjon",
"language-bg": "Bolgar",
diff --git a/src/intl/uz/page-stablecoins.json b/src/intl/uz/page-stablecoins.json
index 0ccbb55e11e..d93a2eed41b 100644
--- a/src/intl/uz/page-stablecoins.json
+++ b/src/intl/uz/page-stablecoins.json
@@ -15,5 +15,6 @@
"makerdao-logo": "MakerDao logotipi",
"matcha-logo": "Matcha logotipi",
"oasis-logo": "Oasis logotipi",
- "uniswap-logo": "Uniswap logotipi"
+ "uniswap-logo": "Uniswap logotipi",
+ "page-stablecoins-category-dashboard-and-education": "Boshqarish paneli va ta'lim"
}
diff --git a/src/intl/vi/common.json b/src/intl/vi/common.json
index 6aedca8c844..17f50efa5e3 100644
--- a/src/intl/vi/common.json
+++ b/src/intl/vi/common.json
@@ -1,17 +1,29 @@
{
- "account-abstraction": "Tóm tắt tài khoản",
"about-ethereum-org": "Giới thiệu về ethereum.org",
"about-us": "Giới thiệu về chúng tôi",
+ "adding-desci-projects": "Thêm dự án Desci",
+ "adding-developer-tools": "Thêm công cụ nhà phát triển",
+ "adding-exchanges": "Thêm sàn giao dịch",
+ "adding-glossary-terms": "Thêm thuật ngữ chú giải",
+ "adding-staking-products": "Thêm sản phẩm staking",
+ "adding-wallets": "Thêm ví",
+ "account-abstraction": "Tóm tắt tài khoản",
+ "acknowledgements": "Lời cảm ơn",
"aria-toggle-search-button": "Nút Kích hoạt tìm kiếm",
"aria-toggle-menu-button": "Điều hướng menu",
"beacon-chain": "Chuỗi Beacon",
"bridges": "Các cầu nối chuỗi khối",
+ "bug-bounty": "Tiền thưởng phát hiện lỗi",
+ "build": "Phát triển",
+ "build-menu": "Menu Phát triển",
"clear": "Xóa",
"close": "Đóng",
"community": "Cộng đồng",
"community-hub": "Diễn đàn cộng đồng",
"community-menu": "Menu Cộng đồng",
"contact": "Liên hệ",
+ "content-buckets": "Danh mục nội dung",
+ "content-resources": "Tài nguyên nội dung",
"content-standardization": "Chuẩn hóa nội dung",
"contributing": "Đang đóng góp",
"contributors": "Người đóng góp",
@@ -20,14 +32,17 @@
"copied": "Đã sao chép",
"copy": "Sao chép",
"danksharding": "Danksharding",
- "dao-page": "Tổ chức tự trị phi tập trung (DAO)",
+ "dao-page": "DAO - Tổ chức tự trị phi tập trung",
"dark-mode": "Chế độ tối",
"data-provided-by": "Nguồn dữ liệu:",
- "decentralized-applications-dapps": "Ứng dụng phi tập trung (dapps)",
+ "decentralized-applications-dapps": "Dapps - Ứng dụng phi tập trung",
"decentralized-identity": "Nhận dạng phi tập trung",
"decentralized-social-networks": "Mạng xã hội phi tập trung",
- "decentralized-science": "Ngành khoa học phi tập trung (DeSci)",
- "defi-page": "Tài chính phi tập trung (DeFi)",
+ "decentralized-science": "DeSci - Ngành khoa học phi tập trung",
+ "description": "Mô tả mục điều hướng",
+ "defi-page": "DeFi - Tài chính phi tập trung",
+ "design": "Thiết kế",
+ "design-principles": "Nguyên tắc thiết kế",
"devcon": "Hội nghị các nhà phát triển",
"developers": "Nhà phát triển",
"developers-home": "Trang chủ dành cho nhà phát triển",
@@ -51,7 +66,7 @@
"documentation": "Tài liệu tham khảo",
"down": "Xuống",
"ecosystem": "Hệ sinh thái",
- "edit-page": "Trang chỉnh sửa",
+ "edit-page": "Trang chỉnh sữa",
"ef-blog": "Blog về Nền tảng Ethereum",
"eips": "Đề xuất cải tiến Ethereum",
"energy-consumption": "Tiêu thụ năng lượng của Ethereum",
@@ -88,17 +103,16 @@
"feedback-widget-thank-you-cta": "Tạo khảo sát ngắn",
"find-wallet": "Tìm ví",
"future-proofing": "Đáp ứng nhu cầu trong tương lai",
- "get-eth": "Tải ETH",
+ "get-eth": "Nhận ETH",
"get-involved": "Tham gia",
"get-started": "Bắt đầu",
"grants": "Các khoản tài trợ",
"grant-programs": "Các chương trình tài trợ cho hệ sinh thái",
"guides": "Hướng dẫn",
- "guides-hub": "Trung tâm hướng dẫn",
+ "guides-hub": "Hướng dẫn sử dụng",
"history-of-ethereum": "Lịch sử Ethereum",
"home": "Trang chủ",
"how-ethereum-works": "Cách hoạt động của Ethereum",
- "how-to-register-an-ethereum-account": "Cách \"đăng kí\" một tài khoản Ethereum",
"how-to-revoke-token-access": "Cách thu hồi quyền đã kí từ các hợp đồng thông minh đối với tài sản crypto của bạn",
"how-to-swap-tokens": "Cách để hoán đổi token",
"how-to-use-a-bridge": "Cách để chuyển thể token sang lớp 2",
@@ -115,11 +129,11 @@
"last-edit": "Lần chỉnh sửa gần nhất",
"layer-2": "Lớp 2",
"learn": "Tìm hiểu",
- "learn-by-coding": "Học lập trình",
+ "learn-by-coding": "Tìm hiểu bằng cách mã hoá",
"learn-hub": "Trung tâm Học tập",
"learn-menu": "Menu Tìm hiểu",
"learn-more": "Tìm hiểu thêm",
- "less": "Ẩn bớt",
+ "less": "Ít hơn",
"light-mode": "Chế độ sáng",
"listing-policy-disclaimer": "Tất cả sản phẩm trên trang này đều không được thẩm định chính thức và chỉ được cung cấp vì mục đích thông tin. Nếu bạn muốn thêm sản phẩm hoặc phản hồi về chính sách, hãy tạo phiếu sự cố trên GitHub.",
"loading": "Đang tải...",
@@ -128,11 +142,113 @@
"loading-error-try-again-later": "Không thể tải dữ liệu. Hãy thử lại sau.",
"logo": "logo",
"mainnet-ethereum": "Ethereum Mạng chính",
- "more": "Xem thêm",
- "nav-developers": "Nhà phát triển",
+ "merge": "Gộp",
+ "more": "Thêm",
+ "nav-about-description": "Một dự án mã nguồn mở công khai dành cho cộng đồng Ethereum",
+ "nav-advanced-description": "Tìm hiểu các chủ đề phức tạp hơn",
+ "nav-advanced-label": "Nâng cao",
+ "nav-basics-description": "Tìm hiểu các nguyên tắc cơ bản của Ethereum",
+ "nav-basics-label": "Nguyên tắc cơ bản",
+ "nav-bridges-description": "Web3 đã phát triển thành một hệ sinh thái gồm các chuỗi khối L1 chính và các giải pháp mở rộng quy mô L2",
+ "nav-builders-home-description": "Sổ tay hướng dẫn dành cho nhà phát triển về Ethereum—bởi các nhà phát triển, dành cho các nhà phát triển",
+ "nav-builders-home-label": "Trang chủ của Nhà phát triển",
+ "nav-contribute-description": "Nếu bạn muốn giúp đỡ thì tài liệu này sẽ hướng dẫn cho bạn",
+ "nav-contribute-label": "Đóng góp cho ethereum.org",
+ "nav-dao-description": "Các cộng đồng được sở hữu bởi thành viên mà không cần sự lãnh đạo tập trung",
+ "nav-dapps-description": "Khám phá hệ sinh thái ứng dụng phong phú sử dụng Ethereum",
+ "nav-defi-description": "Một lựa chọn mở toàn cầu thay thế cho thị trường tài chính truyền thống",
+ "nav-desci-description": "Một lựa chọn mở toàn cầu thay thế cho hệ thống khoa học hiện tại",
+ "nav-desoc-description": "Các nền tảng dựa trên chuỗi khối cho việc tương tác xã hội và sáng tạo nội dung",
"nav-developers-docs": "Tài liệu dành cho nhà phát triển",
+ "nav-developers": "Nhà phát triển",
+ "nav-did-description": "Phát hành và sở hữu mã định danh phi tập trung của riêng bạn",
+ "nav-docs-description": "Tài liệu giúp bạn hiểu và phát triển với Ethereum",
+ "nav-docs-design-description": "Mô tả các thách thức thiết kế web3 riêng, các phương pháp hay nhất và thông tin chi tiết từ nghiên cứu người dùng",
+ "nav-docs-design-label": "Nguyên tắc cơ bản về thiết kế UX/UI",
+ "nav-docs-foundation-description": "Các nguyên tắc cơ bản cốt lõi để phát triển trên Ethereum",
+ "nav-docs-foundation-label": "Các chủ đề chính",
+ "nav-docs-overview-description": "Ngôi nhà dành cho tài liệu nhà phát triển của bạn",
+ "nav-docs-stack-description": "Tìm hiểu tất cả chi tiết của hệ thống Ethereum",
+ "nav-docs-stack-label": "Ethereum stack",
+ "nav-eip-description": "Các tiêu chuẩn xác định các tính năng hoặc quy trình mới",
+ "nav-eip-label": "EIP - Đề xuất cải tiến Ethereum",
+ "nav-emerging-description": "Tìm hiểu các trường hợp sử dụng Ethereum khác mới hơn",
+ "nav-enterprise-description": "Các ứng dụng kinh doanh cho Ethereum",
+ "nav-ethereum-org-description": "Trang web này hướng tới cộng đồng—hãy tham gia và đóng góp cùng chúng tôi",
+ "nav-ethereum-wallets-description": "Một ứng dụng để tương tác với tài khoản Ethereum của bạn",
+ "nav-events-description": "Phi tập trung và cho phép mọi người tự do tham gia",
+ "nav-events-irl-description": "Hằng tháng có các sự kiện Ethereum lớn trực tiếp và trực tuyến",
+ "nav-events-label": "Cộng đồng và sự kiện",
+ "nav-events-online-description": "Hàng trăm ngàn người đam mê Ethereum trong các cộng đồng trực tuyến này",
+ "nav-find-wallet-description": "Ví cho phép bạn sử dụng tiền điện tử",
+ "nav-find-wallet-label": "Chọn ví",
+ "nav-gas-fees-description": "Phí giao dịch ETH được tính như thế nào",
+ "nav-gas-fees-label": "Phí gas",
+ "nav-get-eth-description": "Bạn cần ether (ETH) để sử dụng các ứng dụng Ethereum",
+ "nav-get-started-description": "Những bước đầu tiên để sử dụng Ethereum",
+ "nav-governance-description": "Quy trình bao gồm việc nâng cấp giao thức Ethereum",
+ "nav-governance-label": "Quản trị",
+ "nav-grants-description": "Một danh sách được cộng đồng của chúng tôi lựa chọn về các dự án cung cấp các chương trình tài trợ",
+ "nav-guide-create-account-description": "Mọi người đều có thể tạo tài khoản Ethereum vào bất kỳ thời điểm nào, miễn phí thông qua một ứng dụng ví",
+ "nav-guide-create-account-label": "Cách tạo tài khoản Ethereum",
+ "nav-guide-revoke-access-description": "Giữ an toàn khi tương tác với các hợp đồng và ứng dụng thông minh trong hệ sinh thái Ethereum",
+ "nav-guide-revoke-access-label": "Cách thu hồi quyền truy cập hợp đồng thông minh",
+ "nav-guide-use-wallet-description": "Tìm hiểu cách vận hành tất cả các chức năng cơ bản của ví",
+ "nav-guide-use-wallet-label": "Cách để sử dụng ví",
+ "nav-guides-description": "Hướng dẫn từng bước thực tế để giúp bạn bắt đầu",
+ "nav-guides-label": "Hướng dẫn sử dụng",
+ "nav-history-description": "Dòng thời gian của tất cả thông tin và cập nhật chính",
+ "nav-history-label": "Lịch sử kỹ thuật của Ethereum",
+ "nav-layer-2-description": "Giao dịch Ethereum rẻ hơn và nhanh hơn",
+ "nav-learn-by-coding-description": "Các công cụ giúp bạn thử nghiệm Ethereum",
+ "nav-local-env-description": "Chọn và thiết lập hệ thống phát triển Ethereum của bạn",
+ "nav-mainnet-description": "Các ứng dụng chuỗi khối doanh nghiệp có thể được xây dựng trên Mạng chính Ethereum công cộng",
+ "nav-nft-description": "Một cách để đại diện cho bất kỳ thứ gì độc nhất dưới dạng tài sản dựa trên Ethereum",
+ "nav-open-research-description": "Một trong những thế mạnh chính của Ethereum là cộng đồng nghiên cứu tích cực",
+ "nav-open-research-label": "Nghiên cứu mở",
+ "nav-overview-description": "Tất cả thông tin về giáo dục Ethereum",
+ "nav-overview-label": "Tổng quan",
+ "nav-participate-overview-description": "Tổng quan về cách tham gia",
"nav-primary": "Chính",
- "nft-page": "Non-Fungible Token (NFT)",
+ "nav-private-description": "Tài nguyên dành cho nhà phát triển cho doanh nghiệp tư nhân Ethereum",
+ "nav-quizzes-description": "Tìm hiểu xem bạn hiểu rõ về Ethereum và tiền điện tử đến mức nào",
+ "nav-quizzes-label": "Kiểm tra kiến thức của bạn",
+ "nav-refi-description": "Một hệ thống kinh tế thay thế được xây dựng trên các nguyên tắc tái tạo",
+ "nav-research-description": "Quy trình được sử dụng để cải thiện Ethereum",
+ "nav-research-label": "Nghiên cứu và phát triển",
+ "nav-roadmap-description": "Lộ trình tăng cường khả năng mở rộng, bảo mật và bền vững hơn cho Ethereum",
+ "nav-roadmap-future-description": "Củng cố Ethereum như một mạng lưới mạnh mẽ và phi tập trung",
+ "nav-roadmap-future-label": "Đáp ứng nhu cầu trong tương lai",
+ "nav-roadmap-label": "Lộ trình",
+ "nav-roadmap-scaling-description": "Cập nhật mạng để giảm thêm chi phí và tốc độ giao dịch",
+ "nav-roadmap-security-description": "Đảm bảo Ethereum luôn bền bỉ trước mọi hình thức tấn công trong tương lai",
+ "nav-roadmap-security-label": "Cải thiện an ninh",
+ "nav-roadmap-ux-description": "Việc sử dụng Ethereum cần được đơn giản hóa",
+ "nav-run-a-node-description": "Trở nên hoàn toàn độc lập mà vẫn đảm bảo an ninh mạng",
+ "nav-security-description": "Tìm hiểu các phương pháp hay nhất khi sử dụng tiền mã hóa",
+ "nav-smart-contracts-description": "Các khối xây dựng cơ bản của hệ sinh thái Ethereum",
+ "nav-stablecoins-description": "Stablecoin là token Ethereum được thiết kế để duy trì ở một giá trị cố định",
+ "nav-stake-description": "Kiếm phần thưởng khi bảo mật Ethereum",
+ "nav-stake-label": "Đặt cược",
+ "nav-staking-home-description": "Tổng quan về các tùy chọn đặt cược khác nhau",
+ "nav-staking-home-label": "Trang chủ ký gửi",
+ "nav-staking-pool-description": "Đặt cược và nhận thưởng với số lượng ETH bất kỳ bằng cách tham gia cùng những người khác",
+ "nav-staking-pool-label": "Đặt cọc chung",
+ "nav-staking-saas-description": "Các nhà khai thác nút bên thứ ba xử lý hoạt động của ứng dụng khách trình xác thực của bạn",
+ "nav-staking-saas-label": "Đặt cược như một dịch vụ",
+ "nav-staking-solo-description": "Chạy phần cứng tại nhà và tự mình thêm vào tính bảo mật và phân quyền của mạng Ethereum",
+ "nav-staking-solo-label": "Đặt cọc riêng",
+ "nav-start-building-description": "Thông tin hữu ích cho người mới bắt đầu",
+ "nav-translation-program-description": "Một nỗ lực hợp tác để dịch ethereum.org sang tất cả các ngôn ngữ",
+ "nav-tutorials-description": "Danh sách các hướng dẫn cộng đồng được lựa chọn",
+ "nav-use-cases-description": "Khám phá những ý tưởng sử dụng Ethereum đa dạng",
+ "nav-what-is-ether-description": "Tiền tệ của ứng dụng Ethereum",
+ "nav-what-is-ethereum-description": "Tìm hiểu điều gì làm cho Ethereum trở nên đặc biệt",
+ "nav-what-is-web3-label": "Web3 là gì?",
+ "nav-what-is-web3-description": "Một giải pháp thay thế cho việc tập trung ủy quyền để đưa ra các quy tắc",
+ "nav-whitepaper-description": "Sách trắng Ethereum ban đầu được viết bởi Vitalik Buterin vào năm 2014",
+ "nav-zkp-description": "Một cách để chứng minh tính hợp lệ của một tuyên bố mà không tiết lộ chính tuyên bố đó",
+ "nft-page": "NFT - Non-Fungible Token",
"nfts": "Các NFT",
"no": "Không",
"on-this-page": "Trên trang này",
@@ -140,6 +256,8 @@
"page-developers-aria-label": "Menu của nhà phát triển",
"page-index-meta-title": "Trang chủ",
"page-last-updated": "Trang cập nhật mới nhất",
+ "participate": "Tham gia",
+ "participate-menu": "Menu Tham gia",
"pbs": "Phân tách Bên xây dựng-đề xuất",
"pools": "Đặt cọc chung",
"privacy-policy": "Chính sách quyền riêng tư",
@@ -150,8 +268,10 @@
"refresh": "Vui lòng tải lại trang.",
"return-home": "Trở về trang chủ",
"roadmap": "Lộ trình Ethereum",
+ "research": "Nghiên cứu",
+ "research-menu": "Menu Nghiên cứu",
"resources": "Tài nguyên dịch thuật",
- "regenerative-finance": "Tài chính tái tạo (ReFi)",
+ "regenerative-finance": "ReFi - Tài chính tái tạo",
"run-a-node": "Vận hành một nút",
"rollup-component-website": "Trang web",
"rollup-component-developer-docs": "Tài liệu dành cho nhà phát triển",
@@ -164,6 +284,7 @@
"search-box-blank-state-text": "Tìm kiếm nào!",
"search-eth-address": "Đây giống như một địa chỉ Ethereum. Chúng tôi không cung cấp dữ liệu cho những địa chỉ này. Thử tìm kiếm trên một trình duyệt khối như",
"search-no-results": "Không tìm thấy kết quả cho tìm kiếm của bạn",
+ "security": "Bảo mật",
"single-slot-finality": "Khối cuối ở vị trí đơn nhất",
"statelessness": "Phi trạng thái",
"see-contributors": "Xem những người đóng góp",
@@ -172,7 +293,6 @@
"show-all": "Hiện tất cả",
"show-less": "Ẩn bớt",
"site-description": "Ethereum là một nền tảng toàn cầu, phi tập trung dành cho các ứng dụng về tài chính và các loại ứng dụng mới. Trên Ethereum, bạn có thể viết mã kiểm soát tài chính và xây dựng các ứng dụng có thể truy cập được từ bất cứ đâu trên thế giới.",
- "site-title": "ethereum.org",
"skip-to-main-content": "Nhảy đến nội dung chính",
"smart-contracts": "Hợp đồng thông minh",
"stablecoins": "Stablecoin",
@@ -181,6 +301,7 @@
"start-here": "Bắt đầu ở đây",
"style-guide": "Mẫu thiết kế",
"solo": "Đặt cọc riêng",
+ "support": "Hỗ Trợ",
"terms-of-use": "Điều khoản sử dụng",
"translation-banner-body-new": "Bạn đang xem trang này bằng tiếng Anh vì chúng tôi chưa dịch trang này. Hãy giúp chúng tôi dịch nội dung này.",
"translation-banner-body-update": "Đã có phiên bản mới của trang này nhưng chỉ hiển thị tiếng Anh. Hãy giúp chúng tôi dịch phiên bản mới nhất.",
@@ -191,11 +312,14 @@
"translation-banner-no-bugs-title": "Không có con bọ nào ở đây!",
"translation-banner-no-bugs-content": "Trang này chưa được dịch. Hiện chúng tôi chủ đích cung cấp trang này bằng Tiếng Anh.",
"translation-banner-no-bugs-dont-show-again": "Không hiển thị lại",
+ "translation-program": "Chương trình dịch thuật",
"try-using-search": "Hãy sử dụng công cụ tìm kiếm để tìm những gì bạn cần",
"tutorials": "Hướng dẫn",
"up": "Lên",
+ "use": "Sử dụng",
"use-ethereum": "Sử dụng Ethereum",
"use-ethereum-menu": "Sử dụng menu Ethereum",
+ "use-menu": "Menu Sử dụng",
"user-experience": "Kinh nghiệm của người dùng",
"verkle-trees": "Cây Verkle",
"wallets": "Ví",
@@ -203,7 +327,7 @@
"web3": "Web3 là gì?",
"web3-title": "Web3",
"website-last-updated": "Trang cập nhật mới nhất",
- "what-is-ether": "Ether (ETH) là gì?",
+ "what-is-ether": "ether (ETH) là gì?",
"what-is-ethereum": "Ethereum là gì?",
"withdrawals": "Rút tài sản đặt cược",
"yes": "Có",
diff --git a/src/intl/vi/page-dapps.json b/src/intl/vi/page-dapps.json
index a00712c57b7..facdb27c8e4 100644
--- a/src/intl/vi/page-dapps.json
+++ b/src/intl/vi/page-dapps.json
@@ -85,7 +85,6 @@
"page-dapps-dapp-description-sablier": "Chuyển tiền trong thời gian thực.",
"page-dapps-dapp-description-superrare": "Mua trực tiếp các tác phẩm nghệ thuật số từ nghệ sĩ hoặc trên thị trường thứ cấp.",
"page-dapps-dapp-description-token-sets": "Các chiến lược đầu tư tái cân bằng tự động cho tiền mã hoá.",
- "page-dapps-dapp-description-tornado-cash": "Gửi các giao dịch ẩn danh trên Ethereum.",
"page-dapps-dapp-description-uniswap": "Chỉ cần hoán đổi token hoặc phân phối token dưới dạng % phần thưởng.",
"page-dapps-dapp-description-dexguru": "Cổng giao dịch không qua trung gian cho các nhà giao dịch tài chính phi tập trung (DeFi)",
"page-dapps-dapp-description-synthetix": "Synthetix là một giao thức dùng cho việc phát hành và giao dịch tài sản tổng hợp",
@@ -200,7 +199,6 @@
"page-dapps-technology-description": "Các ứng dụng này tập trung vào việc phân tán các công cụ dành cho nhà phát triển, tích hợp hệ thống kinh tế tiền mã hoá vào công nghệ hiện tại và thiết lập thị trường cho hoạt động phát triển mã nguồn mở.",
"page-dapps-technology-title": "Công nghệ phi tập trung",
"page-dapps-token-sets-logo-alt": "Logo của Token Sets",
- "page-dapps-tornado-cash-logo-alt": "Logo của Tornado cash",
"page-dapps-uniswap-logo-alt": "Logo của Uniswap",
"page-dapps-wallet-callout-button": "Tìm ví",
"page-dapps-wallet-callout-description": "Ví cũng là ứng dụng phi tập trung (dapp). Tìm một ví dựa trên các tính năng phù hợp với bạn.",
diff --git a/src/intl/vi/page-languages.json b/src/intl/vi/page-languages.json
index 8414494e7bb..afd896b1683 100644
--- a/src/intl/vi/page-languages.json
+++ b/src/intl/vi/page-languages.json
@@ -11,11 +11,19 @@
"page-languages-want-more-header": "Bạn muốn tìm hiểu về ethereum.org bằng một ngôn ngữ khác?",
"page-languages-want-more-link": "Chương trình dịch thuật",
"page-languages-want-more-paragraph": "Dịch giả của ethereum.org luôn dịch các trang sang nhiều ngôn ngữ nhất có thể. Để tìm hiểu về những gì họ đang làm ngay bây giờ hoặc đăng ký để tham gia, hãy đọc",
- "page-languages-filter-placeholder": "Lọc",
+ "page-languages-filter-label": "Danh sách bộ lọc",
+ "page-languages-filter-placeholder": "Nhập để lọc",
+ "page-languages-browser-default": "Trình duyệt mặc định",
+ "page-languages-translated": "đã dịch",
+ "page-languages-words": "từ",
+ "page-languages-recruit-community": "Giúp chúng tôi dịch trang ethereum.org.",
+ "langauge-am": "Tiếng Amhara",
"language-ar": "Tiếng Ả Rập",
"language-az": "Tiếng Azerbaijani",
+ "langauge-be": "Tiếng Belarus",
"language-bg": "Tiếng Bulgary",
"language-bn": "Tiếng Bengal",
+ "language-bs": "Tiếng Nam Tư",
"language-ca": "Tiếng Catalan",
"language-cs": "Tiếng Séc",
"language-da": "Tiếng Đan Mạch",
@@ -32,6 +40,7 @@
"language-hi": "Tiếng Hindi",
"language-hr": "Tiếng Croatia",
"language-hu": "Tiếng Hungary",
+ "language-hy-am": "Tiếng Armenia",
"language-id": "Tiếng Indonesia",
"language-ig": "Tiếng Igbo",
"language-it": "Tiếng Ý",
@@ -58,8 +67,9 @@
"language-sl": "Tiếng Slovenia",
"language-sr": "Tiếng Serbia",
"language-sw": "Tiếng Swahili",
- "language-th": "Tiếng Thái",
"language-ta": "Tiếng Tamil",
+ "language-th": "Tiếng Thái",
+ "language-tk": "Tiếng Tuôc-men",
"language-tr": "Tiếng Thổ Nhĩ Kỳ",
"language-uk": "Tiếng Ukraina",
"language-ur": "Tiếng Urdu",
diff --git a/src/intl/vi/page-stablecoins.json b/src/intl/vi/page-stablecoins.json
index 0002ea09cf1..62625d029f4 100644
--- a/src/intl/vi/page-stablecoins.json
+++ b/src/intl/vi/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "Nguồn",
"page-stablecoins-bitcoin-pizza": "Phi vụ pizza Bitcoin đình đám",
"page-stablecoins-bitcoin-pizza-body": "Vào năm 2010, một người đã mua 2 chiếc pizza bằng 10.000 bitcoin. Vào thời điểm đó, chúng có giá trị ~$41 USD. Trong thị trường hiện tại, giá trị tương ứng lên đến hàng triệu đô-la. Có rất nhiều giao dịch đáng tiếc tương tự xảy ra trong lịch sử của Ethereum. Stablecoin giải quyết được vấn đề này, vì vậy bạn có thể vừa thưởng thức pizza, vừa bảo toàn ETH của mình.",
+ "page-stablecoins-category-dashboard-and-education": "Bảng điều khiển & Giáo dục",
"page-stablecoins-coin-price-change": "Biến động giá coin (30 ngày qua)",
"page-stablecoins-crypto-backed": "Được hỗ trợ bởi tiền mã hóa",
"page-stablecoins-crypto-backed-con-1": "Ít ổn định hơn so với các stablecoin được hỗ trợ bởi tiền pháp định.",
diff --git a/src/intl/zh-tw/common.json b/src/intl/zh-tw/common.json
index 74adfb3fba1..9a675fbb6eb 100644
--- a/src/intl/zh-tw/common.json
+++ b/src/intl/zh-tw/common.json
@@ -15,6 +15,9 @@
"aria-toggle-menu-button": "切換選單按鈕",
"beacon-chain": "信標鏈",
"bridges": "區塊鏈橋",
+ "bug-bounty": "漏洞懸賞",
+ "build": "建造",
+ "build-menu": "建造選單",
"clear": "清除",
"close": "關閉",
"community": "社群",
@@ -31,14 +34,15 @@
"copied": "已複製",
"copy": "複製",
"danksharding": "Danksharding",
- "dao-page": "去中心化自治組織 (DAO)",
+ "dao-page": "DAO - 去中心化自治組織",
"dark-mode": "深色模式",
"data-provided-by": "資料來源:",
- "decentralized-applications-dapps": "去中心化應用程式 (dapp)",
+ "decentralized-applications-dapps": "Dapp - 去中心化應用程式",
"decentralized-identity": "去中心化身分",
"decentralized-social-networks": "去中心化社群網路",
- "decentralized-science": "去中心化科研 (DeSci)",
- "defi-page": "去中心化金融 (DeFi)",
+ "decentralized-science": "DeSci - 去中心化科研",
+ "description": "導覽項目說明",
+ "defi-page": "DeFi - 去中心化金融",
"design": "設計",
"design-principles": "設計理念",
"devcon": "Devcon",
@@ -84,7 +88,7 @@
"ethereum-glossary": "以太坊詞彙表",
"ethereum-governance": "以太坊管理體系",
"ethereum-logo": "以太坊標誌",
- "ethereum-roadmap": "以太坊路線圖",
+ "ethereum-roadmap": "以太坊開發藍圖",
"ethereum-protocol": "以太坊協議",
"ethereum-security": "以太坊安全及詐騙預防",
"ethereum-support": "以太坊支援",
@@ -96,7 +100,7 @@
"feedback-card-prompt-tutorial": "這個使用教學對你有幫助嗎?",
"feedback-widget-thank-you-title": "感謝你提供意見回饋!",
"feedback-widget-thank-you-subtitle": "回答幾個問題,讓這個頁面更加完善。",
- "feedback-widget-thank-you-subtitle-ext": "如果需要協助,你可以前往我們的 Discord 聯繫社群。",
+ "feedback-widget-thank-you-subtitle-ext": "若你需要幫助,可透過我們的 Discord 聯繫社群。",
"feedback-widget-thank-you-timing": "2-3 分鐘",
"feedback-widget-thank-you-cta": "開啟小調查",
"find-wallet": "尋找錢包",
@@ -128,7 +132,7 @@
"last-edit": "最後編輯",
"layer-2": "第二層",
"learn": "學習",
- "learn-by-coding": "透過編碼學習",
+ "learn-by-coding": "透過編寫程式學習",
"learn-hub": "學習中心",
"learn-menu": "學習選單",
"learn-more": "了解更多",
@@ -143,10 +147,115 @@
"mainnet-ethereum": "以太坊主網路",
"merge": "合併",
"more": "更多",
- "nav-developers": "開發者",
+ "nav-about-description": "適用以太坊社群的公性開放原始碼專案",
+ "nav-advanced-description": "深入瞭解更複雜的主題",
+ "nav-advanced-label": "進階",
+ "nav-basics-description": "瞭解以太坊的基本知識",
+ "nav-basics-label": "基本資料",
+ "nav-bridges-description": "Web3 已經演變成 L1 區塊鏈和 L2 擴容解決方案的生態系統",
+ "nav-builders-home-description": "由建置者製作且供建置者使用的建置者以太坊手冊",
+ "nav-builders-home-label": "建置者的首頁",
+ "nav-contribute-description": "如果你想要提供協助,這個手冊可引導你",
+ "nav-contribute-label": "對 ethereum.org 網站作出貢獻",
+ "nav-dao-description": "由成員所擁有且無集中式控制的社群",
+ "nav-dapps-description": "使用以太坊探索豐富的應用程式生態系統",
+ "nav-defi-description": "傳統金融市場的全球開放性替代方案",
+ "nav-desci-description": "當前科學系統的全球開放性替代方案。",
+ "nav-desoc-description": "基於區塊鏈的平台,用於社交互動、内容建立。",
"nav-developers-docs": "開發者文件",
+ "nav-developers": "開發者",
+ "nav-did-description": "發佈並擁有你獨特的去中心化身分識別",
+ "nav-docs-description": "幫助你瞭解並使用以太坊來建造的文件",
+ "nav-docs-design-description": "獨特的 Web3 設計挑戰、最佳案例和使用研究洞見的說明",
+ "nav-docs-design-label": "UX/UI 設計基礎",
+ "nav-docs-foundation-description": "在以太坊上開發的核心基礎",
+ "nav-docs-foundation-label": "基礎主題",
+ "nav-docs-overview-description": "你的開發者文件首頁",
+ "nav-docs-stack-description": "瞭解所有關於以太坊技術堆棧的細節",
+ "nav-docs-stack-label": "以太坊技術堆棧",
+ "nav-eip-description": "規範新功能或流程的標準",
+ "nav-eip-label": "EIP - 以太坊改進提案",
+ "nav-emerging-description": "瞭解其他比較新的以太坊使用案例",
+ "nav-emerging-label": "新興使用案例",
+ "nav-enterprise-description": "以太坊的商業應用程式",
+ "nav-ethereum-org-description": "本網站由社群共同推動—請加入我們,一同作出貢獻",
+ "nav-ethereum-wallets-description": "與你的以太坊帳戶互動的應用程式",
+ "nav-events-description": "擁有去集中化及自由度,任何人皆可參與",
+ "nav-events-irl-description": "每月皆有可以親自參與及線上參與的主要以太坊事件",
+ "nav-events-label": "社群與事件",
+ "nav-events-online-description": "數以萬計的以太坊愛好者維護這些線上社群",
+ "nav-find-wallet-description": "錢包允許你使用加密貨幣",
+ "nav-find-wallet-label": "選擇你的錢包",
+ "nav-gas-fees-description": "ETH 交易費用的計算方式",
+ "nav-gas-fees-label": "燃料費",
+ "nav-get-eth-description": "你需要 Ether (ETH) 來使用以太坊應用程式",
+ "nav-get-started-description": "使用以太坊的前幾個步驟",
+ "nav-governance-description": "本流程會牽涉以太坊協定的升級",
+ "nav-governance-label": "治理",
+ "nav-grants-description": "我們的社群所提供的精選清單,其中列出提供撥款募資計畫的專案",
+ "nav-guide-create-account-description": "任何人都可以在任何時間,以錢包應用程式免費地建立以太坊帳戶",
+ "nav-guide-create-account-label": "如何建立一個以太坊帳戶",
+ "nav-guide-revoke-access-description": "在以太坊生態系統中,安全地與智能合約和應用程式互動",
+ "nav-guide-revoke-access-label": "如何撤銷智能合約的使用",
+ "nav-guide-use-wallet-description": "瞭解如何操作錢包所有的基本功能",
+ "nav-guide-use-wallet-label": "如何使用錢包",
+ "nav-guides-description": "實用的逐步指南可協助你開始使用",
+ "nav-guides-label": "使用指南",
+ "nav-history-description": "所有主要分叉與升級的時間表",
+ "nav-history-label": "以太坊的技術歷史沿革",
+ "nav-layer-2-description": "適用以太坊的更便宜且更快速的交易",
+ "nav-learn-by-coding-description": "協助你用以太坊進行實驗的工具",
+ "nav-local-env-description": "選擇並設定你的以太坊開發堆棧",
+ "nav-mainnet-description": "可以將企業區塊鏈應用程式建造於公開的以太坊主網",
+ "nav-nft-description": "一種用以太坊資產來呈現任何獨特事物的方式",
+ "nav-open-research-description": "以太坊的主要優勢之一是其活躍的研究社群",
+ "nav-open-research-label": "開放研究",
+ "nav-overview-description": "以太坊教育的一切",
+ "nav-overview-label": "概觀",
+ "nav-participate-overview-description": "參與方式概覽",
"nav-primary": "主要導覽",
- "nft-page": "非同質化代幣 (NFT)",
+ "nav-private-description": "私有企業用以太坊開發者資源",
+ "nav-quizzes-description": "瞭解你對以太坊和加密貨幣的理解有多少",
+ "nav-quizzes-label": "測試你的知識",
+ "nav-refi-description": "建立在再生原則上的替代性經濟體系",
+ "nav-research-description": "用來改進以太坊的流程",
+ "nav-research-label": "研究與開發",
+ "nav-roadmap-description": "以太坊實現更高可擴容性、安全性和永續性的路徑",
+ "nav-roadmap-future-description": "強化以太坊成為一個穩健且去集中式的網路",
+ "nav-roadmap-future-label": "防過時",
+ "nav-roadmap-label": "開發藍圖",
+ "nav-roadmap-scaling-description": "更新網路以進一步降低交易成本並加快速度",
+ "nav-roadmap-scaling-label": "更便宜的交易",
+ "nav-roadmap-security-description": "確保以太坊對未來所有類型的攻擊都能隨時靈活應變",
+ "nav-roadmap-security-label": "提高安全性",
+ "nav-roadmap-ux-description": "以太坊的使用必須簡化",
+ "nav-roadmap-ux-label": "更好的使用者體驗",
+ "nav-run-a-node-description": "掌握完全主權,同時協助網路安全",
+ "nav-security-description": "瞭解使用加密貨幣的最佳案例",
+ "nav-smart-contracts-description": "以太坊生態系統的基礎建立區塊",
+ "nav-stablecoins-description": "穩定幣是專為保持在固定價值的以太坊代幣",
+ "nav-stake-description": "保護以太坊的同時賺取酬勞",
+ "nav-stake-label": "質押",
+ "nav-staking-home-description": "質押的不同選項概覽",
+ "nav-staking-home-label": "質押首頁",
+ "nav-staking-pool-description": "與其他人一起質押任意數量的以太幣並獲得酬勞",
+ "nav-staking-pool-label": "聯合質押",
+ "nav-staking-saas-description": "第三方節點營運商負責處理你的驗證者用戶端的運作",
+ "nav-staking-saas-label": "以服務質押",
+ "nav-staking-solo-description": "執行家用硬體,親自貢獻於以太坊網路的安全和去中心化",
+ "nav-staking-solo-label": "單獨質押",
+ "nav-start-building-description": "新手的實用資訊",
+ "nav-translation-program-description": "將 ethereum.org 網站翻譯成所有語言的協同合作",
+ "nav-tutorials-description": "社群使用教學的精選清單",
+ "nav-use-cases-description": "發現使用以太坊的不同想法",
+ "nav-use-cases-label": "使用案例",
+ "nav-what-is-ether-description": "以太坊應用程式貨幣",
+ "nav-what-is-ethereum-description": "瞭解以太坊的特別之處",
+ "nav-what-is-web3-label": "什麼是 Web3?",
+ "nav-what-is-web3-description": "支配遊戲規則的集中式壟斷替代方案",
+ "nav-whitepaper-description": "Vitalik Buterin 於 2014 年撰寫的以太坊白皮書原版",
+ "nav-zkp-description": "能證明陳述有效、卻又無需揭示陳述本身的方式",
+ "nft-page": "NFT - 非同質化代幣",
"nfts": "非同質化代幣",
"no": "否",
"on-this-page": "在本頁面",
@@ -154,6 +263,8 @@
"page-developers-aria-label": "開發者選單",
"page-index-meta-title": "首頁",
"page-last-updated": "頁面上次更新",
+ "participate": "參與方式",
+ "participate-menu": "參與選單",
"pbs": "提交者-建置者分離",
"pools": "聯合質押",
"privacy-policy": "隱私條款",
@@ -164,13 +275,15 @@
"refresh": "請重新整理此頁面。",
"return-home": "返回首頁",
"roadmap": "以太坊開發藍圖",
+ "research": "研究",
+ "research-menu": "研究選單",
"resources": "翻譯資源",
- "regenerative-finance": "再生金融 (ReFi)",
- "run-a-node": "執行節點",
- "rollup-component-website": "網站",
+ "regenerative-finance": "ReFi - 再生金融",
+ "run-a-node": "運行節點",
+ "rollup-component-website": "官網",
"rollup-component-developer-docs": "開發者文件",
"rollup-component-technology-and-risk-summary": "技術和風險概要",
- "scaling": "擴張",
+ "scaling": "縮放",
"saas": "質押即服務",
"search": "搜尋",
"search-ethereum-org": "搜尋 ethereum.org",
@@ -187,7 +300,6 @@
"show-all": "顯示全部",
"show-less": "收起",
"site-description": "以太坊是一個全球化、去中心化平台,提供營利商機和新型應用程式。你可以在以太坊撰寫程式碼控制資金,並建立可從全球各地存取的應用程式。",
- "site-title": "ethereum.org",
"skip-to-main-content": "跳至主要内容",
"smart-contracts": "智慧型合約",
"stablecoins": "穩定幣",
@@ -211,9 +323,11 @@
"try-using-search": "請嘗試使用搜尋功能來尋找你要的資訊,或",
"tutorials": "教學",
"up": "上移",
+ "use": "使用",
"use-ethereum": "使用以太坊",
"use-ethereum-menu": "使用以太坊選單",
- "user-experience": "用戶體驗",
+ "use-menu": "使用選單",
+ "user-experience": "使用者體驗",
"verkle-trees": "沃克爾樹",
"wallets": "錢包",
"we-couldnt-find-that-page": "找不到該頁面",
diff --git a/src/intl/zh-tw/learn-quizzes.json b/src/intl/zh-tw/learn-quizzes.json
index d69f24d1b94..edaa2e89924 100644
--- a/src/intl/zh-tw/learn-quizzes.json
+++ b/src/intl/zh-tw/learn-quizzes.json
@@ -62,7 +62,7 @@
"a004-d-label": "超過十次",
"a004-explanation": "自上線以來,以太坊從未完全離線(停止出塊)。",
"a005-prompt": "電能消耗少於以太坊的有:",
- "a005-a-label": "淘金",
+ "a005-a-label": "開採金礦",
"a005-a-explanation": "開採金礦每年耗費約 131 太瓦時。以太坊每年耗費約 0.0026 太瓦時。",
"a005-b-label": "網飛",
"a005-b-explanation": "Netflix 每年耗費約 0.451 太瓦時。以太坊每年耗費約 0.0026 太瓦時。",
@@ -84,7 +84,7 @@
"b002-a-explanation": "首字母小寫的「bitcoin」是比特幣網路的原生加密貨幣。",
"b002-b-label": "以太幣",
"b002-b-explanation": "以太幣 (ETH) 是以太坊的原生加密貨幣。以太坊上所有交易費都以以太幣支付。",
- "b002-c-label": "美金",
+ "b002-c-label": "美元",
"b002-c-explanation": "在以太坊,不能使用美金(美元)或其他法定貨幣支付網路費用。",
"b002-d-label": "以太坊",
"b002-d-explanation": "以太坊是指網路,而以太坊的網路費用應以以太幣支付。",
@@ -95,8 +95,8 @@
"b003-b-explanation": "若質押者對網路做出可疑行為,將可能損失大量以太幣,這稱為「罰沒」。",
"b003-c-label": "質押者運行強大的電腦以展示工作量證明",
"b003-c-explanation": "質押者並不需要強大的硬體來質押他們的以太幣。合併後以太坊已停止使用工作量證明。",
- "b003-d-label": "質押者在被接受為驗證者前需經過身份驗證。",
- "b003-d-explanation": "在以太坊上質押無需許可且不需要身份驗證。",
+ "b003-d-label": "質押者在被接受為驗證者前需經過「認識客戶」驗證。",
+ "b003-d-explanation": "在以太坊上質押無需許可且不需要「認識客戶」驗證。",
"b004-prompt": "以太幣是有價值的,因為:",
"b004-a-label": "在以太坊上進行任何操作都需要以太幣",
"b004-a-explanation": "這個答案不完全正確,但它是以太幣有價值的原因之一。",
@@ -319,9 +319,9 @@
"h005-prompt": "以太坊共識層以前稱為:",
"h005-a-label": "工作量證明",
"h005-a-explanation": "工作量證明是合併前使用的共識機制。",
- "h005-b-label": "以太坊 2.0",
+ "h005-b-label": "以太坊 2",
"h005-b-explanation": "在重新命名為共識層前,它被稱為「以太坊 2」。",
- "h005-c-label": "Eth1",
+ "h005-c-label": "以太坊 1",
"h005-c-explanation": "以太坊 1 是原執行層,而非共識層的名稱。",
"h005-d-label": "質押",
"h005-d-explanation": "質押是指將以太幣存入智慧型合約以協助保護區塊鏈網路的安全。"
diff --git a/src/intl/zh-tw/page-dapps.json b/src/intl/zh-tw/page-dapps.json
index 770b79c61f4..01a72c2ee55 100644
--- a/src/intl/zh-tw/page-dapps.json
+++ b/src/intl/zh-tw/page-dapps.json
@@ -1,32 +1,48 @@
{
"page-dapps-1inch-logo-alt": "1inch 標誌",
- "page-dapps-dexguru-logo-alt": "DexGuru 標誌",
"page-dapps-aave-logo-alt": "Aave 標誌",
"page-dapps-add-button": "建議去中心化應用程式",
"page-dapps-add-title": "新增去中心化應用程式",
+ "page-dapps-ankr-logo-alt": "Ankr 標誌",
+ "page-dapps-api3-logo-alt": "API3 標誌",
+ "page-dapps-arweave-logo-alt": "ARweave 標誌",
"page-dapps-audius-logo-alt": "Audius 標誌",
"page-dapps-augur-logo-alt": "Augur 標誌",
"page-dapps-axie-infinity-logo-alt": "Axie Infinity 標誌",
"page-dapps-balancer-logo-alt": "Balancer 標誌",
"page-dapps-brave-logo-alt": "Brave 標誌",
+ "page-dapps-beginner-friendly-description": "以下是一些適合新手的去中心化應用程式。往下探索更多。",
+ "page-dapps-beginner-friendly-header": "適合新手",
"page-dapps-category-arts": "藝術與時尚",
"page-dapps-category-browsers": "瀏覽器",
+ "page-dapps-category-code-marketplaces": "程式碼市集",
"page-dapps-category-collectibles": "數位收藏品",
- "page-dapps-category-competitive": "競賽",
+ "page-dapps-category-competitive": "Web3 遊戲",
"page-dapps-category-computing": "開發人員工具",
- "page-dapps-category-dex": "交換代幣",
- "page-dapps-category-investments": "投資",
+ "page-dapps-category-dex": "交易所",
+ "page-dapps-category-investments": "投資基金",
"page-dapps-category-lending": "放款與借款",
"page-dapps-category-lottery": "群眾募資",
"page-dapps-category-marketplaces": "市場",
"page-dapps-category-music": "音樂",
"page-dapps-category-payments": "付款",
"page-dapps-category-insurance": "保險",
- "page-dapps-category-portfolios": "投資組合",
- "page-dapps-category-trading": "交易與預期市場",
+ "page-dapps-category-portfolios": "投資組合管理",
+ "page-dapps-category-trading": "預測市場",
"page-dapps-category-utilities": "工具",
"page-dapps-category-worlds": "虛擬世界",
+ "page-dapps-category-demand-aggregator": "需求匯總",
+ "page-dapps-category-derivatives": "衍生品",
+ "page-dapps-category-liquid-staking": "流動性質押",
+ "page-dapps-category-bridges": "跨鏈橋",
+ "page-dapps-category-experiences": "經驗分享",
+ "page-dapps-category-guilds": "收益工會",
+ "page-dapps-category-avatar": "虛擬形象",
"page-dapps-choose-category": "選擇類別",
+ "page-dapps-category-social": "社交媒體",
+ "page-dapps-category-content": "內容",
+ "page-dapps-category-messaging": "傳訊",
+ "page-dapps-category-identity": "身份",
"page-dapps-collectibles-benefits-1-description": "當藝術在以太坊上代幣化,所有權可以證明給所有人知道。你可以追蹤藝術作品從作者到目前持有人的旅程。可以避免偽造。",
"page-dapps-collectibles-benefits-1-title": "所有權是可證明的",
"page-dapps-collectibles-benefits-2-description": "直接購買串流音樂或藝術品,對藝術家來說是相當公平的方式。使用以太坊,便不需要有太多的中間媒介。即使需要中間媒介,費用也不會那麼高,因為這些平台不需要支付網路基礎建設的費用。",
@@ -41,10 +57,15 @@
"page-dapps-collectibles-description": "這些應用程式注重數位所有權,為創作者增加潛在收益,以及發明新的方式讓大家投資喜愛的創作者和他們創作的作品。",
"page-dapps-collectibles-title": "去中心化藝術品和收藏品",
"page-dapps-compound-logo-alt": "Compound 標誌",
+ "page-dapps-convex-logo-alt": "Convex 標誌",
"page-dapps-cryptopunks-logo-alt": "加密龐克標誌",
"page-dapps-cryptovoxels-logo-alt": "Cryptovoxels 標誌",
+ "page-dapps-cyberconnect-logo-alt": "CyberConnect 標誌",
"page-dapps-dapp-description-1inch": "藉由總計最佳價格來協助你避免過高的價格滑點。",
"page-dapps-dapp-description-aave": "將你的代幣借給他人以賺取利息,並可隨時取回代幣。",
+ "page-dapps-dapp-description-ankr": "一系列用來構建、獲利和遊戲等的 Web3 基礎設施產品,全部都在區塊鏈上。",
+ "page-dapps-dapp-description-api3": "第一方價格參考資料饋送源,可以讓 10 個(且持續增加)網路的去中心化應用程式連接到即時資產價格資料,包括加密貨幣和外匯價格。",
+ "page-dapps-dapp-description-arweave": "只需支付一次預付費用,即可永久且永續地儲存資料。",
"page-dapps-dapp-description-async-art": "建立、收集和交易 #ProgrammableArt ─ 這是種分成多個「層次」(Layer) 的數位藝術,你可使用 Layer 來影響整體影像。每個 Master 和 Layer 都是 ERC721 代幣。",
"page-dapps-dapp-description-audius": "去中心化串流服務平台。聽眾聆聽音樂等於為創作者創造收益,而非為品牌創造收益。",
"page-dapps-dapp-description-augur": "針對運動賽事、經濟和更多世界活動的結果下賭注。",
@@ -53,24 +74,34 @@
"page-dapps-dapp-description-brave": "跟他們一起瀏覽並支持你喜愛的創作者,並賺取代幣。",
"page-dapps-dapp-description-cent": "社交網路讓你能藉由上傳非同質化代幣賺取資金。",
"page-dapps-dapp-description-compound": "將你的代幣借給他人以賺取利息,並可隨時取回代幣。",
+ "page-dapps-dapp-description-convex": "Convex 允許 Curve 流動性提供者在不用鎖倉 CRV 的情況下,賺取交易手續費並領取增加的 CRV。",
"page-dapps-dapp-description-cryptopunks": "對龐克進行購買、競標和出價,這是以太坊上首批出現的代幣收藏品之一。",
"page-dapps-dapp-description-cryptovoxels": "在以太坊虛擬世界中,建立藝廊、開店和購買土地。",
+ "page-dapps-dapp-description-cyberconnect": "去中心化社交圖譜協定,幫助去中心化應用程式啟動網路效應並構建個人化社交體驗。",
"page-dapps-dapp-description-dark-forest": "在無垠、程序化生成、特定加密的宇宙中征服眾多行星。",
"page-dapps-dapp-description-decentraland": "在無盡探索的虛擬世界中收集、交易虛擬土地。",
"page-dapps-dapp-description-ens": "使用者友善的以太坊位址名稱,以及去中心化網站。",
"page-dapps-dapp-description-foundation": "投資獨一無二版本的數位藝術品,並與其他買家交易。",
"page-dapps-dapp-description-gitcoin": "改善開源軟體賺取加密貨幣。",
"page-dapps-dapp-description-gitcoin-grants": "為以太坊社群眾籌,放大貢獻",
+ "page-dapps-dapp-description-gm": "真正與創作者分享收益,集聊天、論壇和語音於一身的平台",
"page-dapps-dapp-description-gods-unchained": "策略集換式卡牌遊戲。透過遊戲賺取可在現實生活販售的卡牌。",
"page-dapps-dapp-description-golem": "取得共享電腦計算能力或租用你的個人資源。",
+ "page-dapps-dapp-description-graph": "用於查詢以太坊和星際檔案系統等網路的索引協定。",
+ "page-dapps-dapp-description-ipfs": "點對點的超媒體協定,旨在透過使網路可升級、有彈性且更加開放來保存和增長人類的知識。",
"page-dapps-dapp-description-radicle": "確保無須中介的點對點程式碼合作。",
+ "page-dapps-dapp-description-kyberswap": "以最佳匯率兌換和賺取收益。",
+ "page-dapps-dapp-description-lido": "簡化且安全的數位資產質押。",
"page-dapps-dapp-description-loopring": "為快速交易打造的點對點平台。",
"page-dapps-dapp-description-marble-cards": "以統一資源定位符為基礎創作並交易獨特數位卡牌。",
"page-dapps-dapp-description-matcha": "搜尋數家交易所幫助你找到最佳價格。",
+ "page-dapps-dapp-description-mirror": "以 Web3 為本的強大發佈平台 Mirror,突破網上寫作的界限",
+ "page-dapps-dapp-description-multichain": "終極的 web3 路由器。這是為任意跨鏈互動而開發的基礎設施。",
"page-dapps-dapp-description-nifty-gateway": "在區塊鏈上購入頂尖藝術家、運動員、樂團及創作者之作品。",
"page-dapps-dapp-description-oasis": "透過 Dai 交易、借貸與儲存,這是一種以太坊穩定幣。",
"page-dapps-dapp-description-opensea": "購入、販賣,探索及交易限量版商品。",
"page-dapps-dapp-description-opera": "藉由你的瀏覽器將加密貨幣傳送到商家、其他使用者及應用程式。",
+ "page-dapps-dapp-description-osuvox": "住在區塊鏈上的 3D 虛擬形象",
"page-dapps-dapp-description-poap": "收集非同質化代幣提供你參與虛擬或實體活動的證明。使用它們參與抽獎、投票、合作活動,或者只是炫耀。",
"page-dapps-dapp-description-polymarket": "根據結果下注。在資訊市場交易。",
"page-dapps-dapp-description-pooltogether": "不會輸的樂透。每星期開獎。",
@@ -82,13 +113,19 @@
"page-dapps-dapp-description-rotki": "尊重你隱私的開源投資組合追蹤、分析、管理,及稅金報告工具。",
"page-dapps-dapp-description-krystal": "一個能夠存取所有你最喜愛的去中心化金融服務的一站式平台。",
"page-dapps-dapp-description-rarible": "創作、販賣及購買代幣化收藏品。",
+ "page-dapps-dapp-description-rubic": "為使用者和去中心化應用程式而設的跨鏈技術聚合器。",
"page-dapps-dapp-description-sablier": "即時流通資金。",
+ "page-dapps-dapp-description-skiff": "端對端加密,讓你在電郵、日曆、文件和檔案上的通訊更自由。",
+ "page-dapps-dapp-description-spatial": "建立個人的虛擬形象和 3D 世界",
+ "page-dapps-dapp-description-spruce": "開源技術堆疊將身份和資料的控制權歸還到使用者手中。",
+ "page-dapps-dapp-description-status": "旨在實現訊息自由流通、保護私密和安全對話的權利,以及促進個人主權。",
"page-dapps-dapp-description-superrare": "直接從藝術家或二級市場購買數位藝術品。",
+ "page-dapps-dapp-description-synthetix": "Synthetix 是一個用於發行及交易合成資產的協議。",
"page-dapps-dapp-description-token-sets": "能自動調整資金的加密貨幣投資策略。",
"page-dapps-dapp-description-tornado-cash": "在以太坊傳送匿名交易。",
"page-dapps-dapp-description-uniswap": "輕鬆交換代幣或提供代幣賺取 % 獎勵。",
- "page-dapps-dapp-description-dexguru": "面向去中心化金融交易者的不受監護式交易終端",
- "page-dapps-dapp-description-synthetix": "Synthetix 是一個用於發行及交易合成資產的協議。",
+ "page-dapps-dapp-description-xmtp": "在區塊鏈帳戶之間傳送訊息,包括直接訊息、警報和公告等等。",
+ "page-dapps-dapp-description-yearn": "Yearn Finance 是一種收益聚合器,可讓個人、去中心化自治組織及其他協議存入數位資產並獲得收益。",
"page-dapps-docklink-dapps": "去中心化應用程式簡介",
"page-dapps-docklink-smart-contracts": "智慧型合約",
"page-dapps-dark-forest-logo-alt": "Dark Forest 標誌",
@@ -104,9 +141,7 @@
"page-dapps-desc": "找個以太坊應用程式試一試。",
"page-dapps-doge-img-alt": "插圖:狗狗使用電腦",
"page-dapps-editors-choice-dark-forest": "對抗其他玩家、征服星球,並嘗試以太坊最新擴張/隱私技術。也許你的對手已經對以太坊很熟悉。",
- "page-dapps-editors-choice-description": "一些 ethereum.org 團隊現在愛不釋手的一些去中心化應用程式。在下方探索更多去中心化應用程式。",
"page-dapps-editors-choice-foundation": "投資文化。向頂尖藝術家、音樂家及樂團,購買、交易,及販賣獨一無二的數位藝術品和時尚。",
- "page-dapps-editors-choice-header": "編輯推薦",
"page-dapps-editors-choice-pooltogether": "買張不會輸的樂透。每個星期整個票池產生的利息會傳送給幸運的贏家。你可以隨時取回你的貨幣。",
"page-dapps-editors-choice-uniswap": "輕鬆交換你的代幣。社群最喜歡的功能,讓你可以與全網路的人交易代幣。",
"page-dapps-ens-logo-alt": "以太坊名稱服務標誌",
@@ -156,8 +191,10 @@
"page-dapps-get-started-title": "開始使用",
"page-dapps-gitcoin-grants-logo-alt": "Gitcoin Grants 標誌",
"page-dapps-gitcoin-logo-alt": "Gitcoin 標誌",
+ "page-dapps-gm-logo-alt": "gm.xyz 標誌",
"page-dapps-gods-unchained-logo-alt": "Gods Unchained 標誌",
"page-dapps-golem-logo-alt": "Golem 標誌",
+ "page-dapps-graph-logo-alt": "Graph 標誌",
"page-dapps-radicle-logo-alt": "Radicle 標誌",
"page-dapps-hero-header": "以太坊運行工具及服務",
"page-dapps-hero-subtitle": "去中心化應用程式是蓬勃發展的應用程式,使用以太坊打破商業模型,或打造新的模型。",
@@ -165,10 +202,13 @@
"page-dapps-how-dapps-work-p2": "智慧型合約完全按照程式碼運作,類似所有人都能閱覽的線上規則。想像一下自動販賣機,如果你投入足夠金額並按下正確選擇,你就能取得想要的商品。就像自動販賣機,智慧型合約也能儲存資金,跟以太坊帳戶相似,這讓程式碼能在合約與交易之間做為媒介。",
"page-dapps-how-dapps-work-p3": "一旦去中心化應用程式部署到以太坊網路上,你就不能變更。去中心化應用程式由合約中寫入的邏輯管控,而非個人或公司,因此具去中心化特性。",
"page-dapps-how-dapps-work-title": "去中心化應用程式原理",
+ "page-dapps-ipfs-logo-alt": "IPFS 標誌",
+ "page-dapps-kyberswap-logo-alt": "KyberSwap 標誌",
"page-dapps-learn-callout-button": "開始建置",
"page-dapps-learn-callout-description": "我們的社群開發者入口網站有文件、工具以及框架,幫助你打造去中心化應用程式。",
"page-dapps-learn-callout-image-alt": "插圖:一隻手正在將樂高積木組成以太象徵。",
"page-dapps-learn-callout-title": "學習如何建立去中心化應用程式",
+ "page-dapps-lido-logo-alt": "Lido 標誌",
"page-dapps-loopring-logo-alt": "Loopring 標誌",
"page-dapps-magic-behind-dapps-description": "去中心化應用程式感覺像是一般的應用程式。但是在幕後它們有其特殊的特性,因為它們繼承以太坊所有的超能力。以下是去中心化應用程式與一般應用程式的不同之處。",
"page-dapps-magic-behind-dapps-link": "是什麼讓以太坊如此偉大?",
@@ -179,11 +219,23 @@
"page-dapps-marble-cards-logo-alt": "marble.cards 標誌",
"page-dapps-async-logo-alt": "Async 標誌",
"page-dapps-matcha-logo-alt": "Matcha 標誌",
+ "page-dapps-metaverse-benefits-title": "元宇宙",
+ "page-dapps-metaverse-benefits-description": "以太坊的哪些特點,讓元宇宙蓬勃發展?",
+ "page-dapps-metaverse-benefits-1-title": "非同質化代幣",
+ "page-dapps-metaverse-benefits-1-description": "使用者擁有的獨一無二遊戲內物品,可在支援相同標準的虛擬世界和市集中互通。",
+ "page-dapps-metaverse-benefits-2-title": "使用者擁有自己的社群",
+ "page-dapps-metaverse-benefits-2-description": "身份為使用者所擁有,他們擁有無限的機會,在多個虛擬世界中探索和創建社交網絡。",
+ "page-dapps-metaverse-button": "元宇宙",
+ "page-dapps-metaverse-title": "元宇宙",
+ "page-dapps-metaverse-description": "這些應用程式的使用者能夠自由參與虛擬世界。使用者可以建立個人網絡並獲得數位資產的所有權",
+ "page-dapps-mirror-logo-alt": "Mirror 標誌",
"page-dapps-mobile-options-header": "瀏覽其他類別",
+ "page-dapps-multichain-logo-alt": "Multichain 標誌",
"page-dapps-nifty-gateway-logo-alt": "Nifty Gateway 標誌",
"page-dapps-oasis-logo-alt": "Oasis 標誌",
"page-dapps-opensea-logo-alt": "OpenSea 標誌",
"page-dapps-opera-logo-alt": "Opera 標誌",
+ "page-dapps-osuvox-logo-alt": "OSUVOX 標誌",
"page-dapps-polymarket-logo-alt": "Polymarket 標誌",
"page-dapps-poap-logo-alt": "Proof of Attendance Protocol 標誌",
"page-dapps-pooltogether-logo-alt": "PoolTogether 標誌",
@@ -191,10 +243,18 @@
"page-dapps-ready-button": "開始",
"page-dapps-ready-description": "選一個去中心化應用程式試試看",
"page-dapps-ready-title": "準備好了嗎?",
+ "page-dapps-rubic-logo-alt": "Rubic 標誌",
"page-dapps-sablier-logo-alt": "Sablier 標誌",
"page-dapps-set-up-a-wallet-button": "尋找錢包",
"page-dapps-set-up-a-wallet-description": "錢包是你的去中心化應用程式「登入」憑證",
"page-dapps-set-up-a-wallet-title": "設定錢包",
+ "page-dapps-skiff-logo-alt": "Skiff 標誌",
+ "page-dapps-social-button": "社交",
+ "page-dapps-social-description": "這些應用程式專注於透過去中心化身份技術建立去中心化社交網路,讓數位身份及社交圖譜皆歸使用者所有。",
+ "page-dapps-social-title": "社交",
+ "page-dapps-spatial-logo-alt": "Spatial 標誌",
+ "page-dapps-spruce-logo-alt": "Spruce 標誌",
+ "page-dapps-status-logo-alt": "Status 標誌",
"page-dapps-superrare-logo-alt": "SuperRare 標誌",
"page-dapps-technology-button": "科技",
"page-dapps-technology-description": "這些應用程式著重於去中心化開發者工具,融入加密貨幣系統與現有科技,及打造開源開發市場。",
@@ -214,11 +274,17 @@
"page-dapps-more-on-nft-gaming-button": "更多關於代幣化遊戲物品",
"page-dapps-dapp-description-pwn": "由以太坊上的任何代幣或非同質化代幣支持的簡式貸款。",
"page-dapps-pwn-image-alt": "PWN 標誌",
- "page-dapps-dapp-description-yearn": "Yearn Finance 是一種收益聚合器,可讓個人、去中心化自治組織及其他協議存入數位資產並獲得收益。",
+ "page-dapps-xmtp-logo-alt": "XMTP 標誌",
+ "opage-dapps-yearn-logo-alt": "Yearn 標誌",
"page-dapps-yearn-image-alt": "Yearn 標誌",
- "page-dapps-dapp-description-convex": "Convex 允許 Curve 流動性提供者在不用鎖倉 CRV 的情況下,賺取交易手續費並領取增加的 CRV。",
"page-dapps-convex-image-alt": "Convex 標誌",
"foundation": "基金會",
"transaction-fees": "什麼是交易手續費?",
- "page-wallets-get-some": "取得一些以太幣"
+ "page-wallets-get-some": "取得一些以太幣",
+ "page-dapps-dapp-description-curve": "Curve 是一間專注於穩定幣的去中心化交易所",
+ "page-dapps-curve-image-alt": "Curve 標誌",
+ "page-dapps-dapp-description-dodo": "DODO 是鏈上流動性提供者,採用了主動做市商 (PMM) 演算法。",
+ "page-dapps-dodo-image-alt": "DODO 標誌",
+ "page-dapps-dapp-description-artblocks": "Art Blocks 致力於將引人入勝的當代生成式藝術的藝術品帶入生活中",
+ "page-dapps-artblocks-image-alt": "Art Blocks 標誌"
}
diff --git a/src/intl/zh-tw/page-developers-index.json b/src/intl/zh-tw/page-developers-index.json
index d1c8560efec..28b5620636c 100644
--- a/src/intl/zh-tw/page-developers-index.json
+++ b/src/intl/zh-tw/page-developers-index.json
@@ -7,7 +7,7 @@
"page-developers-accounts-link": "帳戶",
"page-developers-advanced": "進階",
"page-developers-api-desc": "使用程式庫與智慧型合約互動",
- "page-developers-api-link": "後端 API",
+ "page-developers-api-link": "後端應用程式介面",
"page-developers-block-desc": "新增至區塊鏈的異動批次",
"page-developers-block-explorers-desc": "取得 Ethereum 資料的入口",
"page-developers-block-explorers-link": "區塊瀏覽器",
@@ -15,7 +15,7 @@
"page-developers-browse-tutorials": "瀏覽教學課程",
"page-developers-choose-stack": "選擇你的堆疊",
"page-developers-contribute": "貢獻",
- "page-developers-dev-env-desc": "適合去中心化應用程式開發的 IDE",
+ "page-developers-dev-env-desc": "適合去中心化應用程式開發的整合開發環境",
"page-developers-dev-env-link": "開發環境",
"page-developers-discord": "加入 Discord 伺服器",
"page-developers-docs-introductions": "簡介",
@@ -27,12 +27,12 @@
"page-developers-frameworks-link": "開發架構",
"page-developers-fundamentals": "基礎",
"page-developers-gas-desc": "需要加強異動功能",
- "page-developers-gas-link": "Gas",
+ "page-developers-gas-link": "燃料",
"page-developers-get-started": "你想如何開始?",
"page-developers-improve-ethereum": "協助我們推出更完善的 ethereum.org",
"page-developers-improve-ethereum-desc": "如同 ethereum.org,這些文件是集社群之力完成的。如果看到任何錯誤或認為內容有改進空間,或想提供可協助 Ethereum 開發者的機會,請建立 PR。",
"page-developers-into-eth-desc": "區塊鏈和 Ethereum 簡介",
- "page-developers-intro-ether-desc": "加密貨幣及以太 (ETH) 簡介",
+ "page-developers-intro-ether-desc": "加密貨幣及以太幣簡介",
"page-developers-intro-dapps-desc": "去中心化應用程式簡介",
"page-developers-intro-dapps-link": "去中心化應用程式簡介",
"page-developers-intro-eth-link": "Ethereum 簡介",
@@ -60,7 +60,7 @@
"page-developers-node-clients-desc": "如何在網路中驗證區塊和異動",
"page-developers-node-clients-link": "節點和用戶端",
"page-developers-oracle-desc": "將鏈外資料傳入智慧型合約",
- "page-developers-oracles-link": "Oracles",
+ "page-developers-oracles-link": "預言機",
"page-developers-play-code": "程式碼大觀",
"page-developers-read-docs": "閱讀文件",
"page-developers-scaling-desc": "快速異動解決方案",
@@ -75,7 +75,7 @@
"page-developers-start": "開始實驗",
"page-developers-start-desc": "想先實驗再提問嗎?",
"page-developers-storage-desc": "如何處理去中心化應用程式存放區",
- "page-developers-storage-link": "存儲",
+ "page-developers-storage-link": "儲存",
"page-developers-subtitle": "Ethereum 建置者手冊。取之於建置者,用之於建置者。",
"page-developers-title-1": "Ethereum",
"page-developers-title-2": "開發者",
@@ -85,7 +85,7 @@
"page-developers-transactions-desc": "Ethereum 說明變更的方式",
"page-developers-transactions-link": "異動",
"page-developers-web3-desc": "開發的 web3 世界有何不同",
- "page-developers-web3-link": "Web2 vs Web3",
+ "page-developers-web3-link": "Web2 與 Web3",
"page-developers-networking-layer": "網路層",
"page-developers-networking-layer-link": "網路層",
"page-developers-networking-layer-desc": "以太坊網路層的簡介",
diff --git a/src/intl/zh-tw/page-eth.json b/src/intl/zh-tw/page-eth.json
index e09471b6a72..12940f5e18e 100644
--- a/src/intl/zh-tw/page-eth.json
+++ b/src/intl/zh-tw/page-eth.json
@@ -5,7 +5,7 @@
"page-eth-collectible-tokens": "可收藏代幣",
"page-eth-collectible-tokens-desc": "可以用來表示可收藏的遊戲道具、數位藝術品、或其他獨特資產的代幣,一般被人們稱為非同質性代幣 (NFT)。",
"page-eth-cryptography": "以密碼學保護",
- "page-eth-cryptography-desc": "網路貨幣雖然新,但是受可靠的加密技術所保護。它能保障你的錢包、以太幣 (ETH)、及交易。",
+ "page-eth-cryptography-desc": "網路貨幣雖然新,但是受可靠的加密技術所保護。它能保障你的錢包、以太幣及交易。",
"page-eth-currency-for-apps": "以太坊應用程式通用貨幣。",
"page-eth-currency-for-future": "屬於未來數位世界的貨幣",
"page-eth-description": "以太幣是加密貨幣,是類似比特幣的數位貨幣。如果你剛接觸加密貨幣,以下介紹以太幣與傳統貨幣的差別。",
diff --git a/src/intl/zh-tw/page-gas.json b/src/intl/zh-tw/page-gas.json
new file mode 100644
index 00000000000..088307b5769
--- /dev/null
+++ b/src/intl/zh-tw/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "以太坊上的燃料費:它們如何運作?",
+ "page-gas-meta-description": "瞭解以太坊上的燃料:它們如何運作以及如何節省燃料費",
+ "page-gas-hero-title": "燃料費",
+ "page-gas-hero-header": "網路費用",
+ "page-gas-hero-button-1-content": "什麼是燃料?",
+ "page-gas-hero-subtitle-1": "以太坊上的網路費用稱爲燃料。",
+ "page-gas-hero-subtitle-2": "燃料驅動以太坊運作。",
+ "page-gas-summary-title": "總結",
+ "page-gas-summary-item-1": "以太坊上的每一筆交易都需要支付一小筆處理費用",
+ "page-gas-summary-item-2": "這些費用被稱爲“燃料”費",
+ "page-gas-summary-item-3": "燃料費會根據網路壅塞情況而產生變化",
+ "page-gas-what-are-gas-fees-header": "什麽是燃料費?",
+ "page-gas-what-are-gas-fees-text-1": "想像人們可以在以太坊這個龐大的電腦網路裏執行發送訊息或運行程式等任務。猶如現實世界一樣,這些任務需要能量來完成操作。",
+ "page-gas-what-are-gas-fees-text-2": "在以太坊中,每個運算操作都有對應的「燃料」費用。你的燃料費為該交易的操作費用總和。當你發送交易或執行智慧型合約時,你需要支付燃料費以完成操作。",
+ "page-gas-how-do-i-pay-less-gas-header": "如何節省燃料?",
+ "page-gas-how-do-i-pay-less-gas-text": "儘管以太坊的高額費用有時候是無可避免的,但你可以采用以下策略來降低費用:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "安排你的交易時間",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "就如同在非高峰期旅行不那麼擁擠且更爲經濟實惠一樣,當北美地區處於夜間休息的時候使用以太坊通常會更為便宜。",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "等待燃料價格降低",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "以太坊的燃料價格根據網路壅塞情況以每十二秒上下波動。當燃料價格偏高時,等待幾分鐘再進行交易可能會大幅度降低你需要支付的費用。",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "使用二層網路",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "二層網路區塊鏈建立在以太坊上,費用更低且能處理更多的交易。對於沒必要在以太坊主網路上進行的交易來説,二層網路是節省費用的佳選。",
+ "page-gas-try-layer-2": "嘗試二層網路",
+ "page-gas-what-causes-high-gas-fees-header": "什麽原因導致高燃料費?",
+ "page-gas-what-causes-high-gas-fees-text-1": "每當以太坊上的運算量(燃料)超過特定閾值時,燃料費就會開始上升。燃料超過這個閾值越多,燃料費增加得越快。",
+ "page-gas-what-causes-high-gas-fees-text-2": "高額費用可能是由諸如受歡迎的去中心化應用程式或非同質化代幣、去中心化交易所上周期性增加的交易量,或者高峰時段使用者活動量過大等因素所引起。",
+ "page-gas-what-causes-high-gas-fees-text-3": "以太坊上的開發者應該在部署其智慧型合約之前注意優化合約的使用。如果許多人使用編寫不佳的智慧型合約,這將消耗更多燃料并可能無意中導致網路壅塞。",
+ "page-gas-want-to-dive-deeper": "想要更深入瞭解嗎?",
+ "page-gas-check-out-the-developer-docs": "查看開發者文件。",
+ "page-gas-attack-of-the-cryptokitties-header": "謎戀貓的衝擊",
+ "page-gas-attack-of-the-cryptokitties-text": "2017 年 11 月,大受歡迎的謎戀貓專案啓動。迅速增長的人氣導致了嚴重的網路壅塞和極高的燃料費用。謎戀貓所帶來的挑戰加劇了以太坊尋找擴容解決方案的緊迫性。",
+ "page-gas-why-do-we-need-gas-header": "爲什麽我們需要燃料?",
+ "page-gas-why-do-we-need-gas-text": "燃料是保持以太坊安全和處理交易的關鍵元素。燃料在多個方面起著作用:",
+ "page-gas-benefits-1-description": "燃料透過防止惡意行爲者利用欺詐活動壓垮網路來維持以太坊抵禦女巫攻擊。",
+ "page-gas-benefits-2-description": "由於執行運算需要消耗燃料,因此無論是意外還是惡意,在以太坊上頻繁進行昂貴的交易,從經濟角度上終將難以承受。",
+ "page-gas-benefits-3-description": "時時刻刻對執行運算設定一個硬性上限可防止以太坊不堪重負,有助於確保網路存取始終無障礙。",
+ "page-gas-how-is-gas-calculated-header": "如何計算燃料?",
+ "page-gas-advanced": "進階",
+ "page-gas-how-is-gas-calculated-text-1": "你支付的總燃料費由幾個部份組成:",
+ "page-gas-how-is-gas-calculated-item-1": "基本費用:網路設定的必須支付的交易費用",
+ "page-gas-how-is-gas-calculated-item-2": "優先費:爲了激勵節點營運商包含你的交易而支付的可選小費",
+ "page-gas-how-is-gas-calculated-item-3": "燃料使用單位*:記得我們説過燃料代表著執行的計算嗎?較爲複雜的操作(例如與智慧型合約的互動)比簡單的操作(如傳送交易)使用更多燃料。",
+ "page-gas-how-is-gas-calculated-list-item-1": "* 請參閲圖 1 以瞭解不同類型的交易使用多少燃料",
+ "page-gas-how-is-gas-calculated-text-2": "計算燃料費的公式是燃料使用單位 *(基本費用 + 優先費)。大多數錢包會計算燃料使用量并以更直觀的方式顯示。",
+ "page-gas-table-figure": "圖1:按交易類型所使用的燃料",
+ "page-gas-table-header-1": "交易類型",
+ "page-gas-table-header-2": "燃料使用單位",
+ "page-gas-table-item-1-transaction-type": "傳送以太幣",
+ "page-gas-table-item-2-transaction-type": "傳送 ERC-20 代幣",
+ "page-gas-table-item-3-transaction-type": "轉移非同質化代幣",
+ "page-gas-table-item-4-transaction-type": "在 Uniswap 進行兌換",
+ "page-gas-faq-header": "常見問題",
+ "page-gas-faq-question-1-q": "誰將獲得我在交易中支付的燃料費?",
+ "page-gas-faq-question-1-a-1": "燃料費中的主要部分,也就是基本費用會被協議銷毀(燒毀)。至於優先費用,假如包含在你的交易裏,則將支付給提出你的交易的驗證者。",
+ "page-gas-faq-question-1-a-2": "你可以在燃料開發者文件中瞭解該過程的詳細説明。",
+ "page-gas-faq-question-2-q": "我需要用以太幣支付燃料費用嗎?",
+ "page-gas-faq-question-2-a-1": "是的。以太坊上的所有燃料費都必須使用原生以太幣貨幣支付。",
+ "page-gas-faq-question-2-a-2": "有關以太幣的更多資訊",
+ "page-gas-faq-question-3-q": "什麽是 Gwei?",
+ "page-gas-faq-question-3-a-1": "在大多數錢包或燃料追蹤器中,你會看到燃料價格以「Gwei」來表示。",
+ "page-gas-faq-question-3-a-2": "Gwei 只是以太幣的一個較小單位,就像美元中的分,不同的是 1 以太幣等於 10 億 Gwei。每當論及極小量的以太幣時就體現出 Gwei 的用途。",
+ "page-gas-use-layer-2": "使用二層網路"
+}
diff --git a/src/intl/zh-tw/page-get-eth.json b/src/intl/zh-tw/page-get-eth.json
index 6f49aeba8f0..8b0d1073a16 100644
--- a/src/intl/zh-tw/page-get-eth.json
+++ b/src/intl/zh-tw/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "交易所是讓你使用傳統法定貨幣以購買加密數位貨幣的企業。它們將負責保管你的以太幣,直到你將以太幣發送至由你實際控制的錢包地址。",
"page-get-eth-checkout-dapps-btn": "查看去中心化應用程式",
"page-get-eth-community-safety": "社群安全議題文章",
- "page-get-eth-description": "以太坊和以太幣不被任何政府或組織所控制,而是去中心化的。這代表任何人均可使用以太幣。",
+ "page-get-eth-description": "去中心化的以太坊不受任何組織控制。",
"page-get-eth-dex": "去中心化交易所 (DEX)",
- "page-get-eth-dex-desc": "如果你希望握有更多控制權,透過點對點交易購買以太幣。透過去中心化交易所,你的資金就不受中心化公司的控制。",
+ "page-get-eth-dex-desc": "如果你希望握有更多控制權,請透過智慧型合約購買以太坊。透過去中心化交易所,你可以交易數位資產,資金就不受中心化公司控制。",
+ "page-get-eth-peers": "點對點接收以太幣",
+ "page-get-eth-peers-desc": "一但擁有以太坊帳戶,只需要分享地址就能開始點對點接收與傳送以太幣 (以及其他代幣)。",
+ "page-get-eth-staking": "質押酬勞",
+ "page-get-eth-staking-desc": "如果你已經有一些以太幣,可以透過執行驗證程式節點來賺取更多以太幣。你會因進行驗證工作獲得以太幣報酬。",
+ "page-get-eth-earn": "賺取以太幣",
+ "page-get-eth-earn-desc": "你可以透過為 DAO 或其他會支付加密貨幣的公司工作、贏得懸賞、找出軟體漏洞等方式賺取以太幣。",
+ "page-get-eth-daos-link-desc": "瞭解去中心化自治組織 (DAO)",
+ "page-get-eth-cex-link-desc": "查看交易所清單",
+ "page-get-eth-staking-link-desc": "深入瞭解質押",
"page-get-eth-dexs": "去中心化交易所 (DEX)",
"page-get-eth-dexs-desc": "去中心化交易所是用於交易以太幣或者其他代幣的開放自由市場,直接聯繫買賣雙方。",
"page-get-eth-dexs-desc-2": "它們並非藉由可信任的第三方保障交易的資金安全,而是透過程式碼。只有付款確定時,以太幣才會從賣方轉出。這樣的程式碼被稱為「智慧型合約」。",
- "page-get-eth-dexs-desc-3": "這代表與中心化的交易方案相比更不受地理限制。如果有人販賣你想要的商品,賣方也接受你可以使用的支付方式,那麼你就可以進行交易。去中心化交易所可以讓你購買以太幣的途徑包括:其他代幣、PayPal,甚至是親自用現金交易。",
+ "page-get-eth-dexs-desc-3": "這代表相較於中心化的交易方案更不受地理限制。如果有人販賣你想要的商品,賣方也接受你可以提供的支付方式,那麼你就可以進行交易。",
"page-get-eth-do-not-copy": "此為範例:請勿複製",
"page-get-eth-exchanges-disclaimer": "這些資訊是我們以人工收集,如果你發現錯誤,請發郵件給",
- "page-get-eth-exchanges-empty-state-text": "輸入你所在的國家或地區,查看用於交易以太幣的錢包或交易所列表",
+ "page-get-eth-exchanges-empty-state-text": "輸入你所居住的國家或地區,查看你可使用的錢包與交易所清單",
"page-get-eth-exchanges-except": "除此之外",
"page-get-eth-exchanges-header": "請問你居住於哪個國家或地區?",
"page-get-eth-exchanges-header-exchanges": "交易所",
"page-get-eth-exchanges-header-wallets": "錢包",
- "page-get-eth-exchanges-intro": "交易所與錢包對加密貨幣的販售地區有所限制。",
+ "page-get-eth-exchanges-intro": "交易所在銷售加密貨幣的地區都有一定的限制。這份是在各國加密貨幣服務的說明清單。納入此處並不代表推薦,請自行研究!",
"page-get-eth-exchanges-no-exchanges": "抱歉,就我們所知,尚未有任何交易所可以讓你在此國家或地區購買任何以太幣。如果你找到,可以發送郵件給",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "抱歉,就我們所知,尚未有任何交易所或錢包可以讓你在此國家購買以太幣。如果你找到,請通知我們",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "抱歉,就我們所知,尚未有任何交易所可以讓你在此國家或地區購買任何以太幣。如果你找到,可以發送郵件給",
"page-get-eth-exchanges-no-wallets": "抱歉,就我們所知,尚未有任何錢包讓你可以在此國家購買以太幣。如果你找到,可以發送郵件給",
"page-get-eth-exchanges-search": "輸入你的居住地...",
"page-get-eth-exchanges-success-exchange": "根據不同交易所的法規要求,你在交易所的註冊請求可能需要等待幾天才能通過。",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "取得以太幣主頁橫幅圖檔",
"page-get-eth-keep-it-safe": "讓你的以太幣保持安全",
"page-get-eth-meta-description": "如何根據你的居住地購買以太幣,以及如何管理的相關建議。",
- "page-get-eth-meta-title": "如何購買以太幣",
+ "page-get-eth-meta-title": "如何取得以太幣",
"page-get-eth-need-wallet": "你必須擁有錢包,才能使用去中心化交易所。",
"page-get-eth-new-to-eth": "剛開始接觸以太幣?這裡有一份入門指南。",
"page-get-eth-other-cryptos": "使用其他加密貨幣購買",
- "page-get-eth-protect-eth-desc": "如果你打算購買大量以太幣,你最好儲存在自己控制的錢包,而非交易所。因為交易所更可能遭受駭客攻擊。如果駭客取得存取權,你可能會遺失資金。所以,最好存儲在只有你自己擁有控制權的錢包。",
- "page-get-eth-protect-eth-in-wallet": "使用錢包保護你的以太幣",
+ "page-get-eth-protect-eth-desc": "以太坊的主要特點之一,就是可以透過管理自己的帳戶來掌控個人資產。這表示你毋須將資產託付給第三方,並且可以防止受託人不誠實行為、破產或被駭的風險,不過這也表示你需自行承擔保護個人資產安全的責任。",
+ "page-get-eth-protect-eth-in-wallet": "將以太幣保存在你自己的錢包裡",
"page-get-eth-search-by-country": "根據國家或地區搜尋",
- "page-get-eth-security": "然而,這也代表你必須認真維護資金安全。不要信任銀行代管你的以太幣,你只能相信自己。",
+ "page-get-eth-security": "這代表你必須正視資金安全。 有了以太幣,你並非依賴銀行或公司來保管資產,而是自行承擔這個責任。",
"page-get-eth-smart-contract-link": "了解更多關於智慧型合約的資訊",
"page-get-eth-swapping": "用你的代幣與他人交易以太幣,反之亦然。",
"page-get-eth-try-dex": "嘗試使用去中心化交易所",
"page-get-eth-use-your-eth": "使用你的以太幣",
"page-get-eth-use-your-eth-dapps": "現在,你已經持有了一些以太幣。你可以查看一些以太坊應用程式(去中心化應用程式)。去中心化應用程式涵蓋金融、社群媒體、遊戲,還有很多其他領域。",
"page-get-eth-wallet-instructions": "遵循錢包使用指南",
- "page-get-eth-wallet-instructions-lost": "如果你失去錢包的存取權,你會將無法取得資金。你的錢包應該要提供如何預防這種情況的指示。確保仔細跟從這些指示 – 在大多數情況,如果失去錢包存取權沒有人能幫助你。",
+ "page-get-eth-wallet-instructions-lost": "如果你失去帳戶存取權,將無法取回資金。你的錢包應該會提供防止這種情況發生的指示。請仔細遵循:在大多數情況下,若失去帳戶存取權,就沒有人能夠協助你取回。",
"page-get-eth-wallets": "錢包",
"page-get-eth-wallets-link": "更多關於錢包的說明",
"page-get-eth-wallets-purchasing": "某些錢包讓你可以透過簽帳卡/信用卡,銀行轉帳甚至 Apple Pay 購買加密貨幣。當然,這些方法具有地域限制。",
- "page-get-eth-warning": "這些去中心化交易所需要你持有一定的以太幣才能使用,因此不適合初學者。",
+ "page-get-eth-warning": "這些去中心化交易所需要擁有一些以太幣才可進行交易,可能不適合新手。這裡列出的只是範例,並非推薦。請務必自行做好研究!",
"page-get-eth-what-are-DEX's": "去中心化交易所是什麼?",
"page-get-eth-whats-eth-link": "以太幣是什麼?",
- "page-get-eth-where-to-buy-desc": "你可以通過交易所或者錢包直接購買以太幣。",
+ "page-get-eth-where-to-buy-desc": "你可以賺取以太坊,點對點接收或從交易所與應用程式購買。",
"page-get-eth-where-to-buy-desc-2": "搜索你的居住地有哪些可用服務。",
- "page-get-eth-where-to-buy-title": "哪裡可以購買以太幣",
+ "page-get-eth-where-to-buy-title": "哪裡可以取得以太幣",
"page-get-eth-your-address": "你的以太幣位址",
"page-get-eth-your-address-desc": "在你下載錢包時,為你建立一個公開的以太幣位址,如下圖為一範例:",
"page-get-eth-your-address-desc-3": "請將其想像為電子郵件地址,但是接收的是以太幣而非郵件。如果你想要將以太幣從交易所轉移到你的錢包,使用你的位址作為目的地。發送前請記得檢查!",
diff --git a/src/intl/zh-tw/page-languages.json b/src/intl/zh-tw/page-languages.json
index 6400fde3365..d0f9cc61808 100644
--- a/src/intl/zh-tw/page-languages.json
+++ b/src/intl/zh-tw/page-languages.json
@@ -12,39 +12,45 @@
"page-languages-want-more-link": "翻譯計畫",
"page-languages-want-more-paragraph": "ethereum.org 的譯者不斷地翻譯盡可能多種的語言頁面。想要查看他們目前的工作計畫或註冊成為他們的一員,請閱讀我們的",
"page-languages-filter-placeholder": "篩選條件",
+ "langauge-am": "阿姆哈拉文",
"language-ar": "阿拉伯文",
"language-az": "亞塞拜然文",
+ "langauge-be": "白俄羅斯文",
"language-bg": "保加利亞文",
"language-bn": "孟加拉文",
+ "language-bs": "波斯尼亞文",
"language-ca": "卡達隆尼亞文",
"language-cs": "捷克語",
"language-da": "丹麥文",
- "language-de": "德文",
+ "language-de": "德語",
"language-el": "希臘文",
"language-en": "英文",
"language-es": "西班牙語",
"language-fa": "波斯文",
"language-fi": "芬蘭文",
- "language-fr": "法文",
+ "language-fr": "法語",
"language-gl": "加里斯亞文",
"language-gu": "古吉拉特文",
"language-he": "希伯來文",
"language-hi": "印度文",
"language-hr": "克羅埃西亞文",
"language-hu": "匈牙利文",
+ "language-hy-am": "亞美尼亞文",
"language-id": "印尼文",
"language-ig": "伊布文",
- "language-it": "義大利文",
- "language-ja": "日文",
+ "language-it": "義大利語",
+ "language-ja": "日語",
"language-ka": "喬治亞文",
"language-kk": "哈薩克文",
"language-km": "高棉文",
+ "language-kn": "卡納達文",
"language-ko": "韓文",
"language-lt": "立陶宛文",
"language-ml": "馬來亞拉姆文",
"language-mr": "馬拉提文",
"language-ms": "馬來文",
"language-nb": "挪威文",
+ "language-ne-np": "尼泊爾文",
"language-nl": "荷蘭文",
"language-pcm": "奈及利亞皮欽文",
"language-fil": "菲律賓文",
@@ -52,19 +58,20 @@
"language-pt": "葡萄牙文",
"language-pt-br": "葡萄牙文(巴西)",
"language-ro": "羅馬尼亞文",
- "language-ru": "俄文",
+ "language-ru": "俄語",
"language-se": "瑞典文",
"language-sk": "斯洛伐克文",
"language-sl": "斯洛維尼亞文",
"language-sr": "塞爾維亞文",
"language-sw": "史瓦西里文",
- "language-th": "泰文",
"language-ta": "坦米爾文",
- "language-tr": "土耳其文",
+ "language-th": "泰文",
+ "language-tk": "土庫曼文",
+ "language-tr": "土耳其語",
"language-uk": "烏克蘭文",
"language-ur": "烏都文",
"language-uz": "烏茲別克文",
- "language-vi": "越南文",
+ "language-vi": "越南語",
"language-zh": "簡體中文",
"language-zh-tw": "繁體中文"
}
diff --git a/src/intl/zh-tw/page-layer-2.json b/src/intl/zh-tw/page-layer-2.json
index 942c05bf623..3b74c548b5f 100644
--- a/src/intl/zh-tw/page-layer-2.json
+++ b/src/intl/zh-tw/page-layer-2.json
@@ -16,7 +16,7 @@
"layer-2-what-is-layer-2-1": "二層網路 (L2) 為描述一系列特定的以太坊擴容解決方案的統稱。二層網路為一條擴展以太坊,並承襲以太坊安全性保證的獨立區塊鏈。",
"layer-2-what-is-layer-2-2": "現在讓我們再深入一點。為此,我們得先解釋一層網路 (L1)。",
"layer-2-what-is-layer-1-title": "什麼是一層網路?",
- "layer-2-what-is-layer-1-1": "一層網路是區塊鏈的底層。以太坊與比特幣皆屬於一層網路的區塊鏈,因為它們是整個網路的基石,讓各式各樣的二層網路得以建立在它們之上。二層網路項目的例子包括以太坊上的「卷軸」和基於比特幣的閃電網路。這些二層網路項目上的所有使用者交易活動最終都可以傳輸回一層網路區塊鏈。",
+ "layer-2-what-is-layer-1-1": "一層網路是區塊鏈的底層。以太坊與比特幣皆屬於一層網路的區塊鏈,因為它們是整個網路的基石,讓各式各樣的二層網路得以建立在它們之上。二層網路專案的例子包括以太坊上的「卷軸」和基於比特幣的閃電網路。這些二層網路專案上的所有使用者交易活動最終都可以傳輸回一層網路區塊鏈。",
"layer-2-what-is-layer-1-2": "以太坊還充當二層網路的資料可用層。二層網路方案會將他們的交易資料發佈到以太坊上,依賴以太坊實現資料可用性。這些資料可以用來確認二層網路的狀態,或對二層網路上的交易提出爭議。",
"layer-2-what-is-layer-1-list-title": "以太坊作為一層網路還包括:",
"layer-2-what-is-layer-1-list-1": "節點操作者網路用於維護和驗證網路",
@@ -47,7 +47,7 @@
"layer-2-rollups-2": "卷軸交易會在一層網路以外執行,但交易資料會提交到一層網路。透過將交易資料提交至一層網路,卷軸繼承了以太坊的安全性。這是因為一旦資料上傳至一層網路,要還原卷軸交易就得還原整個以太坊。目前有兩種不同的卷軸:樂觀卷軸與零知識卷軸 - 它們的主要差異就在於將此交易資料提交至一層網路的方式。",
"layer-2-optimistic-rollups-title": "樂觀卷軸",
"layer-2-optimistic-rollups-description": "樂觀卷軸之所以「樂觀」是因為其假定交易皆有效,但可以在必要時提出質疑。如果懷疑某交易無效,便會進行錯誤性證明,驗證是否發生無效交易。",
- "layer-2-optimistic-rollups-childSentance": "關於樂觀卷軸的更多資訊",
+ "layer-2-optimistic-rollups-childSentance": "更多樂觀卷軸相關資訊",
"layer-2-zk-rollups-title": "零知識證明卷軸",
"layer-2-zk-rollups-description": "零知識證明卷軸使用有效性證明,其交易在鏈下計算,然後將壓縮後的資料提供給以太坊主網作為有效性證明。",
"layer-2-zk-rollups-childSentance": "關於零知識證明卷軸的更多資訊",
@@ -99,7 +99,7 @@
"layer-2-faq-question-2-description-1": "樂觀和零知識證明卷軸均可以將數百筆交易綑綁(或稱「打包」)為一層網路上的單筆交易。打包交易於一層網路之外執行,但交易資料會發布到一層網路。",
"layer-2-faq-question-2-description-2": "主要區別在於將哪些資料發佈到一層網路以及如何驗證資料。有效性證明(用於零知識證明卷軸)在鏈外運行計算並發布證明,而錯誤性證明(用於樂觀卷軸)僅在懷疑存在錯誤且必須檢查錯誤時才在鏈上運行計算。",
"layer-2-faq-question-2-description-3": "目前,大部分零知識證明卷軸是特定於應用程式的,而樂觀卷軸則基本上可以被廣泛應用。",
- "layer-2-more-info-on-optimistic-rollups": "關於樂觀卷軸的更多資訊",
+ "layer-2-more-info-on-optimistic-rollups": "更多樂觀卷軸相關資訊",
"layer-2-more-info-on-zk-rollups": "關於零知識卷軸的更多資訊",
"layer-2-faq-question-4-title": "二層網路的風險是什麼?",
"layer-2-faq-question-4-description-1": "與在以太坊主網上持有資產和直接交易相比,二層網路計畫有著額外的風險。例如,定序器可能出現故障,那你就得等待其恢復正常才能夠存取資金。",
@@ -123,6 +123,7 @@
"zksync-description": "zkSync 是由 Matter Labs 推出的以使用者為中心的零知識證明卷軸平台。它是一種以太坊擴容解決方案,已在以太坊主網上線。它支援付款、交換代幣和鑄造非同質化代幣。",
"zkspace-description": "ZKSpace 平台由三個主要部分所組成:使用零知識證明卷軸技術建立的二層網路自動化做市商去中心化交易所(名為 ZKSwap);名為 ZKSquare 的支付服務;以及名為 ZKSea 的非同質化代幣交易市場。",
"aztec-description": "Aztec 網路是第一個在以太坊上的私有零知識證明卷軸,使去中心化應用程式能存取隱私和擴張。",
+ "starknet-description": "Starknet 是一個驗證卷軸二層網路。它不僅提供高流量、低燃料成本,并且保持了以太坊一層網路的安全等級。",
"layer-2-note": "備註:",
"layer-2-ecosystem-portal": "生態系統相關入口網站",
"layer-2-token-lists": "代幣清單",
diff --git a/src/intl/zh-tw/page-learn.json b/src/intl/zh-tw/page-learn.json
index e53df8c1009..53bc8ce6b30 100644
--- a/src/intl/zh-tw/page-learn.json
+++ b/src/intl/zh-tw/page-learn.json
@@ -3,7 +3,7 @@
"toc-what-is-crypto-ethereum": "什麼是以太坊?",
"toc-how-do-i-use-ethereum": "我應如何使用以太坊?",
"toc-what-is-ethereum-used-for": "以太坊的用途是什麼?",
- "toc-strengthen-the-ethereum-network": "強化以太坊網絡",
+ "toc-strengthen-the-ethereum-network": "強化以太坊網路",
"toc-learn-about-the-ethereum-protocol": "了解以太坊協議",
"toc-learn-about-the-ethereum-community": "了解以太坊社群",
"toc-books-and-podcasts": "書與播客",
@@ -11,7 +11,7 @@
"hero-subtitle": "你進入以太坊世界的學習指南,協助你理解以太坊的工作原理以及如何參與。本頁面包含了技術與非技術文章、指南和相關資源。",
"hero-button-lets-get-started": "開始吧",
"what-is-crypto-1": "你可能有聽過加密貨幣、區塊鏈跟比特幣。下方連結可以幫助你學習這些概念,並了解它們與以太坊的關聯性。",
- "what-is-crypto-2": "加密貨幣(如比特幣)使任何人都可以轉帳至全世界。以太坊也可以做到這點,而同時,以太坊還可以執行程式碼,讓人們可以創造應用程式和機構。以太坊既有韌性又有彈性,任何電腦程式都能在以太坊上執行。了解詳細資訊及如何加入:",
+ "what-is-crypto-2": "加密貨幣(如比特幣)讓任何人都可以轉帳至全世界。以太坊也可以,它還能運行程式碼,使人們建立應用程式和組織。它兼具彈性與靈活性:任何電腦程式都可在以太坊上運行。了解更多詳細資訊以及如何開始:",
"what-is-ethereum-card-title": "Ethereum 是什麼呢?",
"what-is-ethereum-card-description": "如果你初來乍到,請從了解以太坊的重要性開始。",
"what-is-ethereum-card-image-alt": "插圖:一人窺視象徵以太坊的市集。",
diff --git a/src/intl/zh-tw/page-roadmap-vision.json b/src/intl/zh-tw/page-roadmap-vision.json
index b36dbd54a71..6b5c3ef97c9 100644
--- a/src/intl/zh-tw/page-roadmap-vision.json
+++ b/src/intl/zh-tw/page-roadmap-vision.json
@@ -15,7 +15,7 @@
"page-roadmap-vision-scalability": "可擴容性",
"page-roadmap-vision-scalability-desc": "以太坊需要在不增加網路節點大小的情況下,提高每秒處理的交易量。節點是儲存和運行區塊鏈的重要網路參與者。增加節點大小不切實際,因為只有擁有強大且昂貴電腦的人才能做到這一點。若要擴容,以太坊每秒需要處理更多的交易以及更多的節點。更多節點意味著更高的安全性。",
"page-roadmap-vision-scalability-desc-3": "二層網路卷軸透過將交易移至鏈下並僅將摘要資料發佈到以太坊來實現以太坊擴容。這種批次處理方式增加了以太坊的吞吐量,並大幅降低了使用者的成本。",
- "page-roadmap-vision-scalability-desc-4": "卷軸需要一層網路上的低成本儲存空間,讓使用者的交易盡可能便宜。這將以附加到以太坊區塊的二進制大對象的形式提供。最終,許多二進制大對象將附加到以太坊區塊上,為許多卷軸提供廉價的儲存空間。",
+ "page-roadmap-vision-scalability-desc-4": "卷軸需要一層網路上的低成本儲存空間,讓使用者的交易盡可能便宜。這將以附加到以太坊區塊的二進位大型物件的形式提供。最終,許多二進位大型物件將附加到以太坊區塊上,為許多卷軸提供廉價的儲存空間。",
"page-roadmap-vision-security": "安全性",
"page-roadmap-vision-security-desc": "計劃中的升級可提高以太坊對協同攻擊的安全性。",
"page-roadmap-vision-security-desc-3": "在權益證明中,額外的安全性來自於針對攻擊的更強大加密經濟抑制措施。這是因為,在權益證明中,保護網路安全的驗證者必須將大量以太幣質押到協定中。若他們嘗試攻擊網路,協定可以自動銷毀其以太幣。",
@@ -37,31 +37,31 @@
"page-roadmap-vision-title-2": "硬碟空間",
"page-roadmap-vision-title-3": "太多能源",
"page-roadmap-vision-trilemma-cardtext-1": "以太坊升級將使以太坊具可擴容性、安全性和去中心化性。質押降低了參與門檻並限制了規模經濟,建立了一個更大、更去中心化的網路。",
- "page-roadmap-vision-trilemma-cardtext-2": "安全且去中心化的區塊鏈網路要求每個節點驗證鏈處理的每筆交易。這項龐大的工作量限制了在任何給定時間可以發生的交易數量。去中心化和安全性反映當今的以太坊鏈。",
+ "page-roadmap-vision-trilemma-cardtext-2": "安全且去中心化的區塊鏈網路要求每個節點驗證鏈處理的每筆交易。這項龐大的工作量限制了在任何給定時間可以進行的交易數量。去中心化和安全性體現了當今的以太坊鏈。",
"page-roadmap-vision-trilemma-cardtext-3": "去中心化網路透過橫跨全節點傳送交易資訊運作 -- 全網路必須知道任何狀態變化。在去中心化網路中提升每秒交易量會帶來安全風險,因為交易越多,延遲越長,資訊傳輸時受到攻擊的可能性就越高。",
"page-roadmap-vision-trilemma-cardtext-4": "增加以太坊節點的規模和處理能力能夠以安全的方式提高每秒的交易量,但硬體需求將限制誰可以做到這一點 - 這威脅到去中心化。希望分片和權益證明能夠讓以太坊透過增加節點數量(而不是節點大小)來實現擴容。",
"page-roadmap-vision-trilemma-h2": "去中心化擴容之挑戰",
"page-roadmap-vision-trilemma-modal-tip": "點擊下面圓圈可以更好地理解去中心化擴容的問題",
"page-roadmap-vision-trilemma-p": "解決以太坊問題的一個簡單方法是使其更加中心化。但去中心化太重要了。正是去中心化賦予了以太坊中立性、抗審查性、開放性、資料所有權和近乎牢不可破的安全性。",
"page-roadmap-vision-trilemma-p-1": "以太坊的願景是提高可擴容性和安全性,同時保持去中心化。要實現這三個特質是一個稱為可擴容性三難困境的問題。",
- "page-roadmap-vision-trilemma-p-2": "以太坊的升級致力於解決這個三難問題,但是面臨很大的挑戰。",
- "page-roadmap-vision-trilemma-press-button": "點擊三角按鈕來瞭解去中心化擴容之難題。",
+ "page-roadmap-vision-trilemma-p-2": "以太坊升級致力於解決這個三難問題,但是面臨很大的挑戰。",
+ "page-roadmap-vision-trilemma-press-button": "點擊三角形上的按鈕來更好地瞭解去中心化擴容之難題。",
"page-roadmap-vision-trilemma-text-1": "去中心化",
"page-roadmap-vision-trilemma-text-2": "安全性",
"page-roadmap-vision-trilemma-text-3": "可擴容性",
- "page-roadmap-vision-trilemma-title-1": "探索可擴容性三角難題",
+ "page-roadmap-vision-trilemma-title-1": "探索可擴容性三難困境",
"page-roadmap-vision-trilemma-title-2": "以太坊升級及去中心化擴容",
"page-roadmap-vision-trilemma-title-3": "安全性及去中心化",
"page-roadmap-vision-trilemma-title-4": "去中心化及可擴容性",
- "page-roadmap-vision-trilemma-title-5": "可擴容及安全性",
+ "page-roadmap-vision-trilemma-title-5": "可擴容性及安全性",
"page-roadmap-vision-understanding": "瞭解以太坊願景",
"page-roadmap-vision-upgrade-needs": "升級的必要性",
- "page-roadmap-vision-upgrade-needs-desc": "2015 年推出的以太坊協定取得了令人難以置信的成功。但以太坊社群始終預計,需要進行一些關鍵升級才能釋放以太坊的全部潛力。",
- "page-roadmap-vision-upgrade-needs-desc-2": "高需求正在推高交易費用,使得以太坊對一般使用者來說變得昂貴。執行以太坊用戶端所需的硬碟空間以非常快的速率增加。",
- "page-roadmap-vision-upgrade-needs-desc-3": "以太坊的一系列升級將解決這些難題和其他問題。這套升級的初始代號為「寧靜」和「Eth2」,自 2014 年以來就已經成為一個研究和開發的活躍領域。",
+ "page-roadmap-vision-upgrade-needs-desc": "2015 年推出的以太坊協定取得了令人難以置信的成功。但以太坊社群始終期望,需要進行一些關鍵升級才能釋放以太坊的全部潛力。",
+ "page-roadmap-vision-upgrade-needs-desc-2": "高需求正在推高交易費,使得以太坊對一般使用者來說變得昂貴。執行以太坊用戶端所需的硬碟空間飛速增長。",
+ "page-roadmap-vision-upgrade-needs-desc-3": "以太坊的一系列升級將解決這些難題和其他問題。這一系列升級的初始代號為「寧靜」和「以太坊 2」,自 2014 年以來就已經成為研究和開發的活躍領域。",
"page-roadmap-vision-upgrade-needs-desc-5": "既然這項技術已經成熟,這些升級將重新建構以太坊,使其更具可擴容性、安全性和永續性,使現有使用者的生活變得更好並吸引新使用者。這一切都不會改變以太坊去中心化的核心價值。",
"page-roadmap-vision-upgrade-needs-desc-6": "這意味著實現以太坊的可擴容性並非一蹴而就之事。改進會隨著時間的推移逐步實現。",
- "page-roadmap-vision-upgrade-needs-serenity": "檢視 2015 年的一篇探討「寧靜」的部落格",
+ "page-roadmap-vision-upgrade-needs-serenity": "檢視 2015 年的一篇探討「寧靜」的部落格文章",
"ethereum": "Ethereum",
- "page-roadmap-vision-danksharding": "有關分片的更多資訊"
+ "page-roadmap-vision-danksharding": "更多分片相關資訊"
}
diff --git a/src/intl/zh-tw/page-run-a-node.json b/src/intl/zh-tw/page-run-a-node.json
index ab53553afae..9c5c0450be6 100644
--- a/src/intl/zh-tw/page-run-a-node.json
+++ b/src/intl/zh-tw/page-run-a-node.json
@@ -5,8 +5,8 @@
"page-run-a-node-build-your-own-min-ram": "4 到 8 GB 隨機存取記憶體",
"page-run-a-node-build-your-own-ram-note-1": "查看有關權益質押的注意事項",
"page-run-a-node-build-your-own-ram-note-2": "查看對於樹莓派設備的注意事項",
- "page-run-a-node-build-your-own-min-ssd": "2 TB 固態硬盤",
- "page-run-a-node-build-your-own-ssd-note": "需要固態硬盤滿足寫入速度。",
+ "page-run-a-node-build-your-own-min-ssd": "2 TB 固態硬碟",
+ "page-run-a-node-build-your-own-ssd-note": "需要固態硬碟滿足寫入速度。",
"page-run-a-node-build-your-own-recommended": "推薦配置",
"page-run-a-node-build-your-own-nuc": "第 7 代或更高版本的英特爾 NUC",
"page-run-a-node-build-your-own-nuc-small": "x86 處理器",
diff --git a/src/intl/zh-tw/page-stablecoins.json b/src/intl/zh-tw/page-stablecoins.json
index ef7abd62c16..01a8b17d725 100644
--- a/src/intl/zh-tw/page-stablecoins.json
+++ b/src/intl/zh-tw/page-stablecoins.json
@@ -128,6 +128,7 @@
"page-stablecoins-stablecoins-table-type-fiat-backed": "法定貨幣",
"page-stablecoins-stablecoins-table-type-precious-metals-backed": "貴金屬",
"page-stablecoins-table-error": "無法載入穩定幣,請嘗試更新頁面。",
+ "page-stablecoins-table-loading": "正在載入穩定幣資料...",
"page-stablecoins-title": "穩定幣",
"page-stablecoins-top-coins": "依據市值之穩定幣排名",
"page-stablecoins-top-coins-intro": "市值為",
diff --git a/src/intl/zh-tw/page-staking-deposit-contract.json b/src/intl/zh-tw/page-staking-deposit-contract.json
index 26d18214d4a..734b704c2a9 100644
--- a/src/intl/zh-tw/page-staking-deposit-contract.json
+++ b/src/intl/zh-tw/page-staking-deposit-contract.json
@@ -3,7 +3,7 @@
"page-staking-deposit-contract-address-caption": "我們添加一些空格使得這個地址更容易閱讀",
"page-staking-deposit-contract-address-check-btn": "查看存款合約地址",
"page-staking-deposit-contract-checkbox1": "我已使用啟動面板來設定我的以太坊驗證者。",
- "page-staking-deposit-contract-checkbox2": "我明白,我需要使用啟動面板來進行質押。簡單地向這個地址轉賬無法奏效。",
+ "page-staking-deposit-contract-checkbox2": "我明白,我需要使用啟動面板來進行質押。簡單地向這個地址轉帳無法奏效。",
"page-staking-deposit-contract-checkbox3": "我將向其他來源核對存款合約地址。",
"page-staking-deposit-contract-confirm-address": "確認展示地址",
"page-staking-deposit-contract-copied": "已複製地址",
@@ -16,13 +16,13 @@
"page-staking-deposit-contract-meta-title": "以太坊質押存款合約地址",
"page-staking-deposit-contract-read-aloud": "大聲讀出地址",
"page-staking-deposit-contract-reveal-address-btn": "展示地址",
- "page-staking-deposit-contract-staking": "若要質押你的以太幣,你必須使用專屬的啟動面板產品並遵循指示。直接發送以太幣到此頁面上的地址,將不會使你成爲一個質押者,反而會導致交易失敗。",
+ "page-staking-deposit-contract-staking": "若要質押你的以太幣,你必須使用專屬的啟動面板產品並遵循指示。直接發送以太幣到此頁面上的地址,這並不會使你成爲一個質押者,反而會導致交易失敗。",
"page-staking-deposit-contract-staking-check": "檢查這些來源",
"page-staking-deposit-contract-staking-check-desc": "我們預計其中有很多的虛假地址和詐騙事件。為了安全起見,請按照此頁面上的地址核對你所使用的質押合約地址。我們建議你也使用其他可信來源進行複查。",
"page-staking-deposit-contract-staking-more-link": "更多質押相關訊息",
"page-staking-deposit-contract-stop-reading": "停止閲讀",
"page-staking-deposit-contract-subtitle": "這是以太坊質押合約的地址。質押時,使用此頁面確認你正向正確的地址發送資金。",
"page-staking-deposit-contract-warning": "仔細檢查每個字元。",
- "page-staking-deposit-contract-warning-2": "向此地址發送資金將不會起作用,不會使你成為一個質押者。你必須遵循啟動面板的指示。",
+ "page-staking-deposit-contract-warning-2": "向此地址發送資金將不會起作用,並不會使你成為一個質押者。你必須遵循啟動面板的指示。",
"page-staking-deposit-contract-title": "查看存款合約地址"
}
diff --git a/src/intl/zh-tw/page-staking.json b/src/intl/zh-tw/page-staking.json
index dda278085d5..fb748c664eb 100644
--- a/src/intl/zh-tw/page-staking.json
+++ b/src/intl/zh-tw/page-staking.json
@@ -1,32 +1,32 @@
{
"comp-withdrawal-comparison-current-title": "當前質押者",
- "comp-withdrawal-comparison-current-li-1": "一些使用者可能在最初設置質押存款時提供了提款地址—這些用戶不需要進行其他操作",
- "comp-withdrawal-comparison-current-li-2": "大多數質押者在初次存款時沒有提供提款地址,因此需要更新其提款憑據。質押啟動面板提供了有關如何執行此操作的說明",
- "comp-withdrawal-comparison-current-p": "可以在此處輸入驗證者索引號,查看是否仍需要更新你的憑據(可以在你的客戶端日誌中找到):",
+ "comp-withdrawal-comparison-current-li-1": "一些使用者可能在最初設置質押存款時提供了提款地址—這些使用者不需要進行其他操作",
+ "comp-withdrawal-comparison-current-li-2": "大多數質押者在初次存款時沒有提供提款地址,因此需要更新其提款憑證。質押啟動面板提供了有關如何執行此操作的說明",
+ "comp-withdrawal-comparison-current-p": "可以在此處輸入驗證者索引號,查看是否仍需要更新你的憑證(可以在你的用戶端日誌中找到):",
"comp-withdrawal-comparison-new-title": "新質押者(尚未存入)",
- "comp-withdrawal-comparison-new-li-1": "默認情況下,希望自動啟用酬勞支付和提款功能的新質押者應在使用質押存款命令列介面工具生成驗證者金鑰時,提供他們控制的以太坊提款地址",
+ "comp-withdrawal-comparison-new-li-1": "預設情況下,希望自動啟用酬勞支付和提款功能的新質押者應在使用質押存款命令列介面工具生成驗證者金鑰時,提供他們控制的以太坊提款地址",
"comp-withdrawal-comparison-new-li-2": "雖然並非必須,但如果在存款時如此操作,以後在解鎖資金時便無需更新這些金鑰",
"comp-withdrawal-comparison-new-p": "質押啟動面板將指導你完成質押引導流程。",
- "comp-withdrawal-comparison-new-link": "訪問質押啟動面板",
+ "comp-withdrawal-comparison-new-link": "造訪質押啟動面板",
"comp-withdrawal-credentials-placeholder": "驗證者索引",
- "comp-withdrawal-credentials-error": "糟糕!請核查驗證者索引號後重試。",
- "comp-withdrawal-credentials-upgraded-1": "驗證者索引 {{validatorIndex}} 已準備好開始接收酬勞!",
+ "comp-withdrawal-credentials-error": "糟糕!請核查驗證者索引號後再重試。",
+ "comp-withdrawal-credentials-upgraded-1": "驗證者索引 {{validatorIndex}} 已準備開始接收酬勞!",
"comp-withdrawal-credentials-upgraded-2": "鏈接至執行地址的提款憑證:",
"comp-withdrawal-credentials-not-upgraded-1": "我們需要升級此驗證者。",
"comp-withdrawal-credentials-not-upgraded-1-testnet": "我們需要升級此 Goerli 測試網驗證者。",
"comp-withdrawal-credentials-not-upgraded-2": "程式升級說明現已發佈於質押啟動面板",
"comp-withdrawal-credentials-verify-mainnet": "主網中驗證",
"comp-withdrawal-credentials-verify-goerli": "Goerli 中驗證",
- "page-staking-withdrawals-when": "已發布!",
+ "page-staking-withdrawals-when": "已上線!",
"page-staking-image-alt": "質押啟動面板的 Rhino 吉祥物圖像。",
"page-staking-benefits-1-title": "賺取酬勞",
"page-staking-benefits-1-description": "有助於網路達成共識的行為將被給予酬勞。你將因爲運行軟體而獲得酬勞,此軟體將交易正確地分批到新區塊中並檢查其他驗證者的工作,因爲這會使得區塊鏈保持安全運作。",
"page-staking-benefits-2-title": "提高安全性",
"page-staking-benefits-2-description": "隨著更多的以太幣被質押,網路會變得更強大,因為需要更多的以太幣才能控制大部分網路。為了攻擊網路,你需要控制大多數驗證者,這意味著你需要控制系統中的大部分以太幣,那真的太多了!",
"page-staking-benefits-3-title": "提高可持續性",
- "page-staking-benefits-3-description": "質押者無須進行耗能的工作量證明計算,就可以參加網路保護工作,意味著質押節點可以極低的能耗,於較普通的硬體裏運行。",
+ "page-staking-benefits-3-description": "質押者無須進行耗能的工作量證明計算,就可以參加網路保護工作,意味著質押節點可以極低的能耗,於較普通的硬體運行。",
"page-staking-benefits-3-link": "更多關於以太坊能源消耗的資訊",
- "page-staking-description": "質押是指存入 32 個以太幣使驗證者軟體啟動的行為。作為驗證者,你將負責儲存資料、處理交易以及向區塊鏈添加新區塊。這將為所有人保證以太坊的安全,並在此過程中為你賺取新的以太幣。",
+ "page-staking-description": "質押是指存入 32 個以太幣使驗證者軟體啟動的行為。作為驗證者,你將負責儲存資料、處理交易,並向區塊鏈添加新區塊。這將為所有人保證以太坊的安全,並在此過程中為你賺取新的以太幣。",
"page-staking-hero-title": "如何質押你的以太幣",
"page-staking-hero-header": "保護以太坊的同時賺取酬勞",
"page-staking-hero-subtitle": "質押是以太坊生態系統的公共財產。任何擁有任意數量以太幣的使用者都可以幫助保護網路安全並在此過程中賺取酬勞。",
@@ -64,8 +64,8 @@
"page-staking-hierarchy-saas-pill-2": "你的驗證者金鑰",
"page-staking-hierarchy-saas-pill-3": "委托節點運作",
"page-staking-hierarchy-saas-p1": "如果你不想或不喜歡處理硬體,但仍想質押你的 32 個以太幣,質押即服務方案允許你在獲得原生區塊酬勞的同時委派困難的部分。",
- "page-staking-hierarchy-saas-p2": "這些選項通常會引導你建立一組驗證者憑證,將你的簽名金輪上傳到這些憑證,並存入你的 32 個以太幣。這允許服務代表你進行驗證。",
- "page-staking-hierarchy-saas-p3": "這種質押方法需要對服務提供商有一定程度的信任。為了限制對方的風險,提取以太幣的金輪通常由你自己保管。",
+ "page-staking-hierarchy-saas-p2": "這些選項通常會引導你建立一組驗證者憑證,將你的簽名金鑰上傳到這些憑證,並存入你的 32 個以太幣。這允許服務代表你進行驗證。",
+ "page-staking-hierarchy-saas-p3": "這種質押方法需要對服務提供商有一定程度的信任。為了限制對方的風險,提取以太幣的金鑰通常由你自己保管。",
"page-staking-hierarchy-pools-pill-1": "質押任意數量",
"page-staking-hierarchy-pools-pill-2": "賺取酬勞",
"page-staking-hierarchy-pools-pill-3": "簡化程序",
@@ -79,14 +79,14 @@
"page-staking-hierarchy-cex-pill-2": "最高信任假設",
"page-staking-hierarchy-cex-p1": "如果你不想在自己的錢包中持有以太幣,許多中心化交易所可以提供質押服務。中心化交易所可以作為備用方案,只需花費你極少的監督或精力,就能讓你從持有的以太幣中賺取一些收益。",
"page-staking-hierarchy-cex-p2": "這裡需要權衡的是,中心化提供商將大量的以太幣匯集成質押礦池,以此來運行大量的驗證者節點。這對網路及其使用者來說可能是危險的,因為它形成了一個大型的集中目標和故障點,使得網路更容易受到攻擊、產生漏洞。",
- "page-staking-hierarchy-cex-p3": "如果你不願意持有自己的金輪,那也沒關係。有這些方案供你選擇。同時,請考慮查看我們的錢包頁面,開始學習如何真正保障自己的資金安全。當你準備好後,回到此頁面,嘗試所提供的自行保管聯合質押服務,提高你的質押水平。",
- "page-staking-hierarchy-subtext": "你可能已經注意到,參與以太坊質押的方式有很多種。這些方案針對廣泛的使用者,最終每個方案都是獨一無二的,並且在風險、酬勞和信任假設方面各不相同。有些比其他的更去中心化、更久經考驗和/或風險更大。我們提供了有關該領域熱門方案的一些資訊,但在向任何位置發送以太幣之前,一定要自己做研究。",
- "page-staking-comparison-solo-saas": "即使有了質押即服務提供商,你仍然需要存入 32 個以太幣,但不必運行硬體設備。在通常情況下,你擁有驗證者金輪的存取權限,但同時也需分享你的簽名金輪,讓營運商能夠代表你的驗證者行動。這將引入在你運行自己的硬體設備時不存在的信任層,而且與你在家中單獨質押不同,節點的地理位置分佈對質押即服務沒有太大的助益。如果你不願意操作硬體設備,但仍希望質押 32 個以太幣,那麼使用質押即服務可能是一個不錯的選擇。",
+ "page-staking-hierarchy-cex-p3": "如果你不願意持有自己的金鑰,那也沒關係。有這些方案供你選擇。同時,請考慮查看我們的錢包頁面,開始學習如何真正保障自己的資金安全。當你準備好後,回到此頁面,嘗試所提供的自行保管聯合質押服務,提高你的質押水平。",
+ "page-staking-hierarchy-subtext": "你可能已經注意到,參與以太坊質押的方式有很多種。這些方案針對廣泛的使用者,最終每個方案都是獨一無二的,並且在風險、酬勞和信任假設方面各不相同。有些比其他的更去中心化、更久經考驗且/或風險更大。我們提供了有關該領域熱門方案的一些資訊,但在向任何位置發送以太幣之前,一定要自己做研究。",
+ "page-staking-comparison-solo-saas": "即使有了質押即服務提供商,你仍然需要存入 32 個以太幣,但不必運行硬體設備。在通常情況下,你擁有驗證者金鑰的存取權限,但同時也需分享你的簽名金鑰,讓營運商能夠代表你的驗證者行動。這將引入在你運行自己的硬體設備時不存在的信任層,而且與你在家中單獨質押不同,節點的地理位置分佈對質押即服務沒有太大的助益。如果你不願意操作硬體設備,但仍希望質押 32 個以太幣,那麼使用質押即服務可能是一個不錯的選擇。",
"page-staking-comparison-solo-pools": "單獨質押比使用質押池服務複雜許多,但享有全部以太幣酬勞,並且可以完全掌握驗證者節點的設定和安全性。聯合質押的門檻較低。使用者可以質押少量以太幣,不需要生成驗證者金鑰,且除了標準的網路連接外,不需要額外的硬體設備。流動性代幣允許質押在協議層級生效之前退出質押。如果你對這些功能感興趣,那麼聯合質押可能是一個不錯的選擇。",
- "page-staking-comparison-saas-solo": "相似之處包含擁有自己的驗證者金輪而不必募集資金,但若使用質押即服務,你必須信任第三方,而第三方可能會採取惡意行為,或成為攻擊和監管的目標。如果你擔心這些信任假設或中心化風險,那麼享有質押自主權的最佳標準方式就是單獨質押。",
+ "page-staking-comparison-saas-solo": "相似之處包含擁有自己的驗證者金鑰而不必募集資金,但若使用質押即服務,你必須信任第三方,而第三方可能會採取惡意行為,或成為攻擊和監管的目標。如果你擔心這些信任假設或中心化風險,那麼享有質押自主權的最佳標準方式就是單獨質押。",
"page-staking-comparison-saas-pools": "這與通常需要依賴他人來運行驗證者用戶端是相似的,但與質押即服務不同的是,聯合質押允許你以小額以太幣參與。如果你希望用少於 32 個以太幣進行質押,請考慮查看這些内容。",
- "page-staking-comparison-pools-solo": "與單獨質押相比,聯合質押的進入門檻要低得多,但是將所有節點運作委託給第三方會帶來額外的風險和費用。單獨質押賦予了選擇質押設定的完全自主權和控制權。質押者永遠不必交出他們的金輪,並且可以在沒有中間商抽成的情況下獲得完整的酬勞。",
- "page-staking-comparison-pools-saas": "兩者的相似之處在於質押者不需自行執行驗證者軟體,但與聯合質押方案不同的是,質押即服務需要存入完整的 32 個以太幣才能啓動驗證者節點。質押酬勞會累積給質押者,但通常使用該服務需要按月付費或進行其他質押。如果你更偏好自己擁有驗證者金輪,並期望至少質押 32 個以太幣,那麼使用質押即服務可能是一個不錯的選擇。",
+ "page-staking-comparison-pools-solo": "與單獨質押相比,聯合質押的進入門檻要低得多,但是將所有節點運作委託給第三方會帶來額外的風險和費用。單獨質押賦予了選擇質押設定的完全自主權和控制權。質押者永遠不必交出他們的金鑰,並且可以在沒有中間商抽成的情況下獲得完整的酬勞。",
+ "page-staking-comparison-pools-saas": "兩者的相似之處在於質押者不需自行執行驗證者軟體,但與聯合質押方案不同的是,質押即服務需要存入完整的 32 個以太幣才能啓動驗證者節點。質押酬勞會累積給質押者,但通常使用該服務需要按月付費或進行其他質押。如果你更偏好自己擁有驗證者金鑰,並期望至少質押 32 個以太幣,那麼使用質押即服務可能是一個不錯的選擇。",
"page-staking-considerations-solo-1-title": "開放原始碼",
"page-staking-considerations-solo-1-description": "基本程式碼為 100% 開放原始碼,可供大眾分叉和使用",
"page-staking-considerations-solo-1-warning": "封閉原始碼",
@@ -103,7 +103,7 @@
"page-staking-considerations-solo-4-caution": "活躍時間大於六個月",
"page-staking-considerations-solo-4-warning": "最新發佈",
"page-staking-considerations-solo-5-title": "去信任",
- "page-staking-considerations-solo-5-description": "驗證者金輪在驗證者生命週期的任何時間點都沒有委託給任何其他人。所涉及的任何智慧型合約都沒有後門,不依賴於特殊執行權限。",
+ "page-staking-considerations-solo-5-description": "驗證者金鑰在驗證者生命週期的任何時間點都沒有委託給任何其他人。所涉及的任何智慧型合約都沒有後門,不依賴於特殊執行權限。",
"page-staking-considerations-solo-5-warning": "受信任",
"page-staking-considerations-solo-6-title": "無許可",
"page-staking-considerations-solo-6-description": "使用者無需任何特殊權限即可使用該軟體或服務來運作驗證者節點",
@@ -114,14 +114,14 @@
"page-staking-considerations-solo-7-valid": "輕易切換用戶端",
"page-staking-considerations-solo-7-warning": "局限於一個主流用戶端",
"page-staking-considerations-solo-8-title": "自我保管",
- "page-staking-considerations-solo-8-description": "使用者保留對任何驗證者憑證的保管權,包括簽署和提款金輪。",
+ "page-staking-considerations-solo-8-description": "使用者保留對任何驗證者憑證的保管權,包括簽署和提款金鑰。",
"page-staking-considerations-solo-8-warning": "第三方保管",
"page-staking-considerations-solo-9-title": "經濟實惠",
- "page-staking-considerations-solo-9-description": "使用者可以透過質押少於 32 個以太幣,並利用來自他人的聯合資金,來運作驗證者節點。",
+ "page-staking-considerations-solo-9-description": "使用者可以用少於 32 個以太幣進行質押,並利用來自他人的聯合資金,藉此運作驗證者節點。",
"page-staking-considerations-solo-9-valid": "少於 32 個以太幣",
"page-staking-considerations-solo-9-warning": "32 個以太幣",
"page-staking-considerations-saas-4-description": "在指定的時間段內,服務已經公開並被大眾使用",
- "page-staking-considerations-saas-6-description": "使用者無需任何特殊權限、帳戶註冊也無需了解你的客戶,即可參與服務",
+ "page-staking-considerations-saas-6-description": "使用者無需任何特殊權限、帳戶註冊或「認識客戶」驗證,即可參與服務",
"page-staking-considerations-saas-6-valid": "任何人都可以加入",
"page-staking-considerations-saas-6-warning": "需要許可",
"page-staking-considerations-saas-7-title": "執行多元性",
@@ -136,7 +136,7 @@
"page-staking-considerations-saas-8-warning": "超過 50%",
"page-staking-considerations-pools-5-description": "服務不需要信任任何人來保管你的金鑰或分配酬勞",
"page-staking-considerations-pools-6-title": "無許可節點",
- "page-staking-considerations-pools-6-description": "服務允許任何人在無許可的情況下作為礦池的節點营运商加入",
+ "page-staking-considerations-pools-6-description": "服務允許任何人在無許可的情況下作為礦池的節點營運商加入",
"page-staking-considerations-pools-7-description": "服務使用主流執行用戶端執行的驗證者不得超過其匯總數量的 50%",
"page-staking-considerations-pools-8-title": "流動性代幣",
"page-staking-considerations-pools-8-description": "提供可交易的流動性代幣來代表你質押的以太幣,保存在你自己的錢包中",
@@ -146,7 +146,7 @@
"page-staking-how-solo-works-item-1": "獲取一些硬體設備:你需要執行節點來進行質押",
"page-staking-how-solo-works-item-2": "同步一個執行層用戶端",
"page-staking-how-solo-works-item-3": "同步一個共識層用戶端",
- "page-staking-how-solo-works-item-4": "產生你的金輪並載入到你的驗證者用戶端",
+ "page-staking-how-solo-works-item-4": "產生你的金鑰並載入到你的驗證者用戶端",
"page-staking-how-solo-works-item-5": "監控和維護你的節點",
"page-staking-launchpad-widget-testnet-label": "Goerli 測試網",
"page-staking-launchpad-widget-testnet-start": "開始在 Goerli 測試網上進行質押",
@@ -163,8 +163,8 @@
"page-staking-stats-box-metric-1": "以太幣質押總額",
"page-staking-stats-box-metric-2": "全體驗證者",
"page-staking-stats-box-metric-3": "目前年利率",
- "page-staking-stats-box-metric-1-tooltip": "信標鏈上的質押以太幣總值,不包含超過 32 以太幣的餘額",
- "page-staking-stats-box-metric-2-tooltip": "當前在信標鏈激活的驗證者帳戶數量",
+ "page-staking-stats-box-metric-1-tooltip": "信標鏈上的質押以太幣總值,不包含超過 32 個以太幣的餘額",
+ "page-staking-stats-box-metric-2-tooltip": "當前在信標鏈啟動的驗證者帳戶數量",
"page-staking-stats-box-metric-3-tooltip": "在過去 24 小時中,每個驗證者的平均按年計財務回報率",
"page-staking-section-comparison-subtitle": "沒有一個解決方案可以適用所有質押,每一個質押都是獨一無二的。這裡我們將比較不同質押方式下產生的一些風險、酬勞和要求。",
"page-staking-section-comparison-rewards-title": "酬勞",
@@ -181,20 +181,20 @@
"page-staking-section-comparison-solo-risks-li2": "離線會有懲罰,需要花費以太幣",
"page-staking-section-comparison-solo-risks-li3": "惡意行為可能導致大量的以太幣被「罰沒」並被強制驅逐出區塊鏈網路",
"page-staking-section-comparison-saas-risks-li1": "風險等同於單獨質押的風險,再加上對方服務提供商帶來的風險",
- "page-staking-section-comparison-saas-risks-li2": "將你的簽名金輪使用權委託給可能行惡意行為的其他人",
+ "page-staking-section-comparison-saas-risks-li2": "將你的簽名金鑰使用權委託給可能做出惡意行為的其他人",
"page-staking-section-comparison-pools-risks-li1": "風險因使用的方法而有所不同",
"page-staking-section-comparison-pools-risks-li2": "一般來說,風險由交易對方、智慧型合約和執行風險共同組成。",
"page-staking-section-comparison-requirements-title": "要求",
"page-staking-section-comparison-solo-requirements-li1": "你必須存入 32 個以太幣",
"page-staking-section-comparison-solo-requirements-li2": "在連接到網際網路時,維護運行以太坊執行用戶端和共識用戶端的硬體設備",
"page-staking-section-comparison-solo-requirements-li3": "質押啓動面板將引導你完成整個流程和硬體設備要求",
- "page-staking-section-comparison-saas-requirements-li1": "存入 32 個以太幣並在幫助下產生你的金輪",
- "page-staking-section-comparison-saas-requirements-li2": "安全地儲存你的金輪",
+ "page-staking-section-comparison-saas-requirements-li1": "存入 32 個以太幣並在幫助下產生你的金鑰",
+ "page-staking-section-comparison-saas-requirements-li2": "安全地儲存你的金鑰",
"page-staking-section-comparison-saas-requirements-li3": "其他服務已妥善處理,但特定服務將有所不同",
"page-staking-section-comparison-pools-requirements-li1": "非常低的以太幣要求,有些專案僅需 0.01 個以太幣",
"page-staking-section-comparison-pools-requirements-li2": "直接從你的錢包存入到不同的聯合質押平台,或簡單地交易其中一種質押流動性代幣",
"page-staking-faq-1-question": "什麼是驗證者?",
- "page-staking-faq-1-answer": "驗證者是一個存在於以太坊上並參與以太坊協定共識的虛擬實體。驗證者由資金餘額、公鑰和其他屬性表示。驗證者用戶端是一個軟體,它透過持有和使用驗證者的私鑰,來代表驗證者本身執行操作。單個驗證者用戶端可以持有多個金輪對,控制多個驗證者。",
+ "page-staking-faq-1-answer": "驗證者是一個存在於以太坊上並參與以太坊協定共識的虛擬實體。驗證者由資金餘額、公鑰和其他屬性表示。驗證者用戶端是一個軟體,它透過持有和使用驗證者的私密金鑰,來代表驗證者本身執行操作。單個驗證者用戶端可以持有多個金鑰對,控制多個驗證者。",
"page-staking-faq-2-question": "為何我需要質押資金呢?",
"page-staking-faq-2-answer": "驗證者有能力為網路提交和證明區塊。為了防止不誠實行為,使用者必須將他們的資金進行質押。這允許協定懲罰惡意行為者。質押是讓你保持誠實的一種方式,因為你的行為會產生財務後果。",
"page-staking-faq-3-question": "我可以購買「以太坊 2」嗎?",
@@ -202,16 +202,16 @@
"page-staking-faq-3-answer-p2": "有一些衍生代幣/行情指示器可以代表質押的以太幣(即 Rocket Pool 的 rETH、Lido 的 stETH、Coinbase 的 ETH2 等)。詳細了解質押礦池",
"page-staking-faq-4-question": "質押已經開始運行了嗎?",
"page-staking-faq-4-answer-p1": "對,質押自 2020 年 12 月 1 日已經上線",
- "page-staking-faq-4-answer-p2": "這意味著目前用戶可以進行質押以存入他們的以太幣、執行驗證者用戶端並開始賺取酬勞。",
+ "page-staking-faq-4-answer-p2": "這意味著目前使用者可以進行質押以存入他們的以太幣、執行驗證者用戶端並開始賺取酬勞。",
"page-staking-faq-4-answer-p3": "上海/卡佩拉升級已於 2023 年 4 月 12 日完成,可實現質押提款,並結束質押流動的循環狀態。",
"page-staking-faq-5-question": "何時可以提取我的質押以太幣?",
"page-staking-faq-5-answer-p1": "現在即可!質押者可自由地按意願從驗證者餘額中提取他們的酬勞和/或本金。",
- "page-staking-faq-5-answer-p2": "在提交區塊時,質押者還可以獲得以費用和最大可提取价值形式發放的酬勞,他們可通過設定費用接收地址立即獲得這一些酬勞。",
+ "page-staking-faq-5-answer-p2": "在提交區塊時,質押者還可以獲得以費用和最大可提取價值形式發放的酬勞,他們可通過設定費用接收地址立即獲得這一些酬勞。",
"page-staking-faq-5-answer-link": "更多關於提取質押代幣的資訊",
"page-staking-further-reading-1-link": "為何採用權益證明(2020 年 11 月)",
"page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin",
"page-staking-further-reading-2-link": "寧靜設計原理",
- "page-staking-further-reading-3-link": "權益證明常見問答集(2017 年 12 月)",
+ "page-staking-further-reading-3-link": "權益證明常見問題(2017 年 12 月)",
"page-staking-further-reading-4-link": "以太坊 2.0 新聞",
"page-staking-further-reading-4-author": "Ben Edgington",
"page-staking-further-reading-5-link": "第 33 號最終版,以太坊共識層(2022 年 1 月)",
@@ -231,7 +231,7 @@
"page-staking-meta-description": "以太坊質押概覽:風險、酬勞、要求以及如何執行。",
"page-staking-meta-title": "以太坊質押",
"page-staking-withdrawals-important-notices": "重要通知",
- "page-staking-withdrawals-important-notices-desc": "現在尚未提供提款服務,如欲瞭解更多,請閲讀以太坊 2 融合及融合後階段的常見問題。",
+ "page-staking-withdrawals-important-notices-desc": "現在尚未提供提款服務,如欲瞭解更多,請閲讀以太坊 2 合併及合併後階段的常見問題。",
"page-upgrades-merge-btn": "合併案的相關細節",
- "subscribe-to-ef-blog": "訂閱以太坊基金會博客,接收最新協議公告的電子郵件通知。"
+ "subscribe-to-ef-blog": "訂閱以太坊基金會部落格,接收最新協議公告的電子郵件通知。"
}
diff --git a/src/intl/zh-tw/page-upgrades-get-involved.json b/src/intl/zh-tw/page-upgrades-get-involved.json
index db4a0ce1d0c..f3b83251abe 100644
--- a/src/intl/zh-tw/page-upgrades-get-involved.json
+++ b/src/intl/zh-tw/page-upgrades-get-involved.json
@@ -3,36 +3,36 @@
"page-upgrades-get-involved-btn-2": "更多權益質押相關資訊",
"page-upgrades-get-involved-btn-3": "尋找錯誤",
"page-upgrades-get-involved-bug": "錯誤可能包括:",
- "page-upgrades-get-involved-bug-hunting": "前往搜尋錯誤",
+ "page-upgrades-get-involved-bug-hunting": "前往偵錯",
"page-upgrades-get-involved-bug-hunting-desc": "尋找並報告共識層升級規範或用戶端本身的錯誤。最高可以贏取 50,000 美元並在排行榜上佔據一席之地。",
- "page-upgrades-get-involved-bug-li": "規範非合規問題",
+ "page-upgrades-get-involved-bug-li": "規範不合規問題",
"page-upgrades-get-involved-bug-li-2": "最終性致命錯誤",
"page-upgrades-get-involved-bug-li-3": "阻斷服務 (DOS) 媒介",
"page-upgrades-get-involved-bug-li-4": "和更多...",
- "page-upgrades-get-involved-desc-1": "運行用戶端意味著你將積極使用以太坊。你的用戶端可幫助追蹤交易並檢查新區塊。",
+ "page-upgrades-get-involved-desc-1": "執行用戶端意味著你將積極使用以太坊。你的用戶端可幫助追蹤交易並檢查新區塊。",
"page-upgrades-get-involved-desc-2": "如果你有以太幣,可以將其質押以成為驗證者並幫助保護網路安全。驗證者可以賺取以太幣獎勵。",
- "page-upgrades-get-involved-desc-3": "加入社群測試工作!在以太坊升級發佈之前幫助進行測試、尋找錯誤並賺取獎勵。",
+ "page-upgrades-get-involved-desc-3": "加入社群測試工作!在以太坊升級上線之前幫助進行測試、尋找錯誤並贏取獎勵。",
"page-upgrades-get-involved-ethresearch-1": "分片",
"page-upgrades-get-involved-ethresearch-2": "合併",
"page-upgrades-get-involved-ethresearch-3": "分片化執行",
"page-upgrades-get-involved-ethresearch-4": "所有研究主題",
"page-upgrades-get-involved-how": "你想如何參與其中?",
- "page-upgrades-get-involved-how-desc": "更多的人運行用戶端、質押和搜尋錯誤永遠會讓以太坊社群獲益。",
+ "page-upgrades-get-involved-how-desc": "更多的人執行用戶端、質押和偵錯,會讓以太坊社群始終獲益。",
"page-upgrades-get-involved-join": "加入研究",
"page-upgrades-get-involved-join-desc": "就像以太坊的大多數事情一樣,很多研究都是公開的。這意味著你可以參與討論或者閱讀以太坊研究人員的意見。ethresear.ch 上提供有許多主題的相關資訊,包括共識升級、卷軸等。",
- "page-upgrades-get-involved-meta-description": "如何參與以太坊升級:運行節點、質押、搜尋錯誤等。",
- "page-upgrades-get-involved-run-clients": "運行用戶端對",
- "page-upgrades-get-involved-run-clients-desc": "「用戶端」是運行區塊鏈的軟體,在以太坊,全節點需要運行這樣一對用戶端:執行層用戶端和共識層用戶端。全節點可以檢查交易,如果還質押以太幣,則可以新建區塊。每個用戶端都有自己的特性,但總體上執行相同的功能,因此希望你盡可能減少用戶端數目,以保持用戶端池的多樣性和安全性。",
- "page-upgrades-get-involved-run-clients-desc-link": "有關用戶端多樣性的更多資訊。",
+ "page-upgrades-get-involved-meta-description": "如何參與以太坊升級:執行節點、質押、偵錯等。",
+ "page-upgrades-get-involved-run-clients": "執行用戶端對",
+ "page-upgrades-get-involved-run-clients-desc": "「用戶端」是執行區塊鏈的軟體,在以太坊,全節點需要執行這樣一對用戶端:執行層用戶端和共識層用戶端。全節點可以檢查交易,如果還質押以太幣,則可以新建區塊。每個用戶端都有自己的特性,但總體上執行相同的功能,因此我們希望你盡可能選擇非主流用戶端,以保持用戶端池的多樣性和安全性。",
+ "page-upgrades-get-involved-run-clients-desc-link": "更多用戶端多樣性相關資訊。",
"page-upgrades-get-involved-run-clients-execution": "執行層用戶端",
- "page-upgrades-get-involved-run-clients-execution-desc": "這些用戶端以前被稱為「Eth1」用户端,但這個術語已被棄用,取而代之的是「執行層」用户端。",
+ "page-upgrades-get-involved-run-clients-execution-desc": "這些用戶端以前稱為「以太坊 1.0」用户端,但這個術語已被棄用,取而代之的是「執行層」用户端。",
"page-upgrades-get-involved-run-clients-consensus": "共識層用戶端",
- "page-upgrades-get-involved-run-clients-consensus-desc": "這些用戶端以前被稱為「Eth2」用户端,但這個術語已被棄用,取而代之的是「共識層」用户端。",
+ "page-upgrades-get-involved-run-clients-consensus-desc": "這些用戶端以前稱為「以太坊 2.0」用户端,但這個術語已被棄用,取而代之的是「共識層」用户端。",
"page-upgrades-get-involved-stake": "質押你的以太幣",
"page-upgrades-get-involved-stake-desc": "你可以質押以太幣以幫助保護信標鏈安全。",
"page-upgrades-get-involved-stake-eth": "質押以太幣",
"page-upgrades-get-involved-subtitle": "以下是你可以為以太坊和未來升級相關工作提供幫助的所有方法。",
- "page-upgrades-get-involved-title-1": "运行用户端",
+ "page-upgrades-get-involved-title-1": "執行用户端",
"page-upgrades-get-involved-title-2": "質押你的以太幣",
"page-upgrades-get-involved-title-3": "尋找錯誤",
"page-upgrades-get-involved-written-c-sharp": "用 C# 編寫",
@@ -43,5 +43,5 @@
"page-upgrades-get-involved-written-rust": "用 Rust 編寫",
"page-upgrades-get-involved": "參與以太坊升級",
"page-upgrades-get-involved-2": "加入我們",
- "page-upgrades-bug-bounty-leaderboard-points": "積點"
+ "page-upgrades-bug-bounty-leaderboard-points": "積分"
}
diff --git a/src/intl/zh-tw/page-upgrades-index.json b/src/intl/zh-tw/page-upgrades-index.json
index 9631fc1fef1..9dcb311a261 100644
--- a/src/intl/zh-tw/page-upgrades-index.json
+++ b/src/intl/zh-tw/page-upgrades-index.json
@@ -8,8 +8,8 @@
"consensus-client-nimbus-logo-alt": "Nimbus 標誌",
"consensus-client-prysm-logo-alt": "Prysm 標誌",
"consensus-client-teku-logo-alt": "Teku 標誌",
- "page-upgrades-answer-1": "信標鏈在合併中被用作升級以太坊主網的工具。",
- "page-upgrades-answer-2": "透過合併,以太坊進行了有史以來最重大的升級,從工作量證明過渡到新的權益證明共識層。",
+ "page-upgrades-answer-1": "在以太坊合併中,將使用信標鏈來升級以太坊主網。",
+ "page-upgrades-answer-2": "透過合併,以太坊進行了自誕生以來最重大的升級,從工作量證明過渡到新的權益證明共識層。",
"page-upgrades-answer-4": "信標鏈被用於開發以太坊如今使用的權益證明共識。它與以太坊主網分開運行,因此開發者可以在使用它來協調實際活動之前,單獨觀察共識機制。",
"page-upgrade-article-author-status": "狀態",
"page-upgrade-article-author-ethmerge": "Ethmerge",
@@ -25,9 +25,9 @@
"page-upgrade-article-title-sharding-consensus": "分片共識",
"page-upgrade-article-title-sharding-is-great": "為什麼分片是好事:揭密技術特性",
"page-upgrade-article-title-rollup-roadmap": "以卷軸為中心的開發藍圖",
- "page-upgrade-article-title-hitchhikers-guide-to-ethereum": "以太坊搭便車指南",
- "page-upgrade-article-title-eip-4844": "EIP-4844:分片二進制大對象交易 (Proto-Danksharding)",
- "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding 常見問題解答",
+ "page-upgrade-article-title-hitchhikers-guide-to-ethereum": "The Hitchhikers Guide To Ethereum",
+ "page-upgrade-article-title-eip-4844": "EIP-4844:分片二進位大型物件交易 (Proto-Danksharding)",
+ "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding 常見問題",
"page-upgrade-article-title-sharding-das": "分片及資料可用性採樣 (DAS) 詳解",
"page-upgrade-article-title-ethmerge": "Ethmerge",
"page-upgrade-article-title-merge-is-coming": "合併即將開始",
@@ -37,17 +37,17 @@
"page-upgrade-article-title-consensus-layer-specs": "共識層規範",
"page-upgrade-article-title-engine-api-specs": "引擎應用程式介面規範",
"page-upgrades-beacon-chain-date": "信標鏈於 2020 年 12 月 1 日上線",
- "page-upgrades-beacon-chain-desc": "信標鏈為以太坊帶來了質押,並為未來的升級奠定了基礎。它會協調新的權益證明以太坊。",
+ "page-upgrades-beacon-chain-desc": "信標鏈為以太坊帶來了質押功能,並為未來的升級奠定了基礎。它會協調新的權益證明以太坊。",
"page-upgrades-beacon-chain-estimate": "信標鏈已上線",
- "page-upgrades-beacon-chain-title": "信標鏈(Beacon Chain)",
+ "page-upgrades-beacon-chain-title": "信標鏈",
"page-upgrades-bug-bounty": "檢視漏洞懸賞計劃",
- "page-upgrades-clients": "查看共識用戶端(以前稱為「以太坊 2」用戶端)",
+ "page-upgrades-clients": "查看共識使用者端(以前稱為「以太坊 2」使用者端)",
"page-staking-deposit-contract-title": "查看存款合約地址",
"page-upgrades-dive": "深入瞭解願景",
"page-upgrades-dive-desc": "我們如何讓以太坊更具可擴容性、安全性和永續性?同時保持以太坊去中心化的核心理念。",
- "page-upgrades-docking": "融合",
+ "page-upgrades-docking": "合併",
"page-upgrades-merge-answer-1": "合併指 2022 年 9 月 15 日以太坊過渡到權益證明共識機制之時,信標鏈與主網合併,正式棄用以太坊上的工作量證明,並將以太坊的能耗降低了大約 99.95%。",
- "page-upgrades-merge-btn": "更多關於合併的資訊",
+ "page-upgrades-merge-btn": "合併案的相關細節",
"page-upgrades-merge-desc": "以太坊主網與權益證明信標鏈合併,標誌著能源密集型挖礦的結束。",
"page-upgrades-merge-estimate": "合併已完成",
"page-upgrades-merge-mainnet": "什麼是主網?",
@@ -67,15 +67,15 @@
"page-upgrades-index-staking-step-1-desc": "若要在以太坊上質押,你需要使用啟動面板,系統將引導你完成整個流程。",
"page-upgrades-index-staking-step-2": "2. 確認質押地址",
"page-upgrades-index-staking-step-2-btn": "確認存款合約地址",
- "page-upgrades-index-staking-step-2-desc": "質押以太代幣之前,請確保檢查並確保你的地址正確。必須先瀏覽啟動面板,再執行此操作。",
- "page-upgrades-index-staking-sustainability": "更具永續性",
+ "page-upgrades-index-staking-step-2-desc": "質押以太幣之前,請檢查確保你的地址正確。必須先瀏覽啟動面板,再執行此操作。",
+ "page-upgrades-index-staking-sustainability": "提高可持續性",
"page-upgrades-meta-desc": "以太坊升級概覽以及希望實現的願景。",
"page-upgrades-meta-title": "以太坊升級(以前稱為「以太坊 2」)",
"page-upgrades-proof-stake-link": "更多權益證明相關資訊",
"page-upgrades-question-1-title": "升級將於何時上線?",
"page-upgrades-question-1-desc": "以太坊正在逐步升級;上線日期不同,升級亦有所不同。",
"page-upgrades-question-2-title": "信標鏈是單獨的區塊鏈嗎?",
- "page-upgrades-question-2-desc": "是的。信標鏈是用於升級以太坊主網的平行權益證明區塊鏈的名稱。現在只有一個區塊鏈,由原始的以太坊區塊鏈和信標鏈合併而成。",
+ "page-upgrades-question-2-desc": "是的。信標鏈是用於升級以太坊主網的平行權益證明區塊鏈的名稱。現在只有一條區塊鏈,由原始的以太坊區塊鏈和信標鏈合併而成。",
"page-upgrades-question-3-answer-2a": "合併對去中心化應用程式開發者的影響微乎其微,他們仍以相同的方式與以太坊互動。",
"page-upgrades-question-3-answer-2a-link": "合併和去中心化應用程式開發者",
"page-upgrades-question-3-answer-2b": "分片計劃仍在製定當中,但設計時會考慮二層網路卷軸。",
@@ -86,32 +86,32 @@
"page-upgrades-question-4-answer-1": "目前,每當你發送交易或使用去中心化應用程式時,都在使用執行層,也稱為主網。",
"page-upgrades-question-4-answer-3": "自合併以來,驗證者透過權益證明來保護整個網路的安全。",
"page-upgrades-question-4-answer-6": "只要願意質押以太幣,任何人都能成為驗證者。",
- "page-upgrades-question-4-answer-7": "更多權益質押相關訊息",
+ "page-upgrades-question-4-answer-7": "更多權益質押相關資訊",
"page-upgrades-question-4-title": "什麼是執行層?",
- "page-upgrades-question-4-desc": "合併之前,以太坊區塊鏈有時稱為「以太坊 1」。該術語已被逐步淘汰,取而代之的是「執行層」。",
- "page-upgrades-question-5-answer-1": "若要成為網路上的驗證者,你需要質押 32 以太幣。如果沒有那麼多,或者不願意質押那麼多,可以加入質押池。這些池可以減少你需要質押的數量並賺取總獎勵的一小部分。",
+ "page-upgrades-question-4-desc": "合併之前,以太坊區塊鏈有時稱為以太坊 1.0。該術語已被逐步淘汰,取而代之的是「執行層」。",
+ "page-upgrades-question-5-answer-1": "若要成為網路上的驗證者,你需要質押 32 個以太幣。如果沒有那麼多,或者不願意質押那麼多,可以加入質押池。這些池可以減少你需要質押的數量並賺取總獎勵的一小部分。",
"page-upgrades-question-5-desc": "你將需要使用質押啟動面板或加入質押池。",
"page-upgrades-question-5-title": "我該如何質押?",
"page-upgrades-question-6-answer-3": "以太坊基金會的 Danny Ryan 會定期更新社群:",
"page-upgrades-question-6-answer-4": "ConsenSys 的 Ben Edgington 提供一份關於以太坊升級的每週通訊:",
"page-upgrades-question-6-answer-5": "你還可以在 ethresear.ch 加入有關以太坊研發的討論。",
"page-upgrades-question-6-title": "我需要對我的去中心化應用程式做什麼?",
- "page-upgrades-question-6-desc": "儘管有一些值得注意的微小變化,但合併經過特別設計,已將對去中心化應用程式開發者的影響減至最小。",
- "page-upgrades-question-6-answer-1": "熟悉合併前以太坊的去中心化應用程式開發者應該瞭解一些變化,包括區塊結構和時序、一些作業變化、鏈上隨機性來源以及時期最終確定的概念。",
+ "page-upgrades-question-6-desc": "儘管有一些值得注意的微小變化,但合併經過特別設計,以對去中心化應用程式開發者的影響減至最小。",
+ "page-upgrades-question-6-answer-1": "熟悉合併前以太坊的去中心化應用程式開發者應該瞭解一些變化,包括區塊結構和時序、一些作業碼變化、鏈上隨機性來源以及時期最終確定的概念。",
"page-upgrades-question-6-answer-1-link": "合併如何影響以太坊的應用程式層",
"page-upgrades-question-6-answer-2": "應用程式幾乎完全不受影響。",
"page-upgrades-question-7-desc": "來自整個社群的多個不同團隊正在努力處理各種以太坊升級。",
"page-upgrades-question-7-lighthouse": "Lighthouse",
- "page-upgrades-question-7-lighthouse-lang": "(Rust 實作)",
+ "page-upgrades-question-7-lighthouse-lang": "(Rust 實作)",
"page-upgrades-question-7-lodestar": "Lodestar",
- "page-upgrades-question-7-lodestar-lang": "(JavaScript 實作)",
+ "page-upgrades-question-7-lodestar-lang": "(JavaScript 實作)",
"page-upgrades-question-7-nimbus": "Nimbus",
- "page-upgrades-question-7-nimbus-lang": "(Nim 實作)",
+ "page-upgrades-question-7-nimbus-lang": "(Nim 實作)",
"page-upgrades-question-7-prysm": "Prysm",
- "page-upgrades-question-7-prysm-lang": "(Go 實作)",
+ "page-upgrades-question-7-prysm-lang": "(Go 實作)",
"page-upgrades-question-7-teams": "以太坊共識用戶端團隊:",
"page-upgrades-question-7-teku": "Teku",
- "page-upgrades-question-7-teku-lang": "(Java 實作)",
+ "page-upgrades-question-7-teku-lang": "(Java 實作)",
"page-upgrades-question-7-title": "誰在建置以太坊升級?",
"page-upgrades-question-7-clients": "瞭解更多以太坊用戶端相關資訊",
"page-upgrades-question-8-answer-1": "以太坊升級將幫助以太坊以去中心化方式擴容,同時保持安全性並提高永續性。",
@@ -122,11 +122,11 @@
"page-upgrades-question-8-desc": "我們現今使用的以太坊需要為終端使用者和網路參與者提供更好的體驗。",
"page-upgrades-question-8-title": "為什麼需要升級?",
"page-upgrades-question-9-answer-1": "你能發揮的最積極作用就是質押以太幣。",
- "page-upgrades-question-9-answer-2": "你可能還想運行第二個用戶端以幫助提高用戶端多樣性。",
+ "page-upgrades-question-9-answer-2": "你可能還想運行第二種用戶端以幫助提高用戶端多樣性。",
"page-upgrades-question-9-answer-3": "如果你更懂技術,可以幫助發現新用戶端中的漏洞。",
"page-upgrades-question-9-answer-4": "你還可以在 ethresear.ch 上與以太坊研究人員開展技術討論。",
"page-upgrades-question-9-desc": "不必精通技術即可做出貢獻。社群需要具備各種技能之人才做出貢獻。",
- "page-upgrades-question-9-stake-eth": "質押以太(ETH)",
+ "page-upgrades-question-9-stake-eth": "質押以太幣",
"page-upgrades-question-9-title": "我該如何為以太坊升級做出貢獻?",
"page-upgrades-question-9-more": "尋找更多參與以太坊的一般方法",
"page-upgrades-question-10-title": "什麼是「以太坊 2 階段」?",
@@ -140,18 +140,18 @@
"page-upgrades-question-10-answer-6": "階段 1.5 最初計劃在分片實作之後進行,主網將作為最後一個分片新增至信標鏈。然而,隨著卷軸技術的進步,以太坊社群反而加快了從工作量證明的過渡。",
"page-upgrades-question-10-answer-7": "階段 2 的計劃一直是深入研究和討論的焦點。隨著合併的到來以及二層網路解決方案的進步,目標已轉變為提供更簡化的資料分片形式,從而最大限度地提高卷軸效率。目前二層網路能夠擴展交易執行,而分片將允許以廉價且可擴容的方式在一層網路上儲存此資料的證明。",
"page-upgrades-question-10-answer-8": "更多以卷軸為中心的開發藍圖的相關資訊",
- "page-upgrades-question-11-title": "我可以購買以太坊 2 代幣嗎?",
- "page-upgrades-question-11-desc": "不行。沒有以太坊 2 代幣,合併後你的以太幣也沒有變更。",
- "page-upgrades-question-11-answer-1": "以太坊 2 品牌重塑背後的驅動力之一是一種常見的誤解,即以太幣持有者需要在合併或任何其他升級後將其以太幣遷移到「以太坊 2.0」。這不是真的,從來都不是。",
+ "page-upgrades-question-11-title": "我可以購買「以太坊 2」代幣嗎?",
+ "page-upgrades-question-11-desc": "不行。沒有「以太坊 2」代幣,合併後你的以太幣也沒有變更。",
+ "page-upgrades-question-11-answer-1": "「以太坊 2」品牌重塑背後的驅動力之一是一種常見的誤解,即以太幣持有者需要在合併或任何其他升級後將其以太幣遷移到「以太坊 2.0」。事實並非如此,也從未如此。",
"page-upgrades-question-11-answer-2": "這種混淆經常會被詐騙者利用。",
"page-upgrades-question-title": "常見問題",
- "page-upgrades-question3-answer-1": "以太幣持有者不需要做任何事情。你的以太幣不需要更改或升級。幾乎肯定,會有騙局告訴你事實並非如此,所以要小心。",
+ "page-upgrades-question3-answer-1": "以太幣持有者不需要做任何事情。不需要更改或升級你的以太幣。要小心,肯定會有騙局告訴你需要更改或升級以太幣。",
"page-upgrades-scalable": "更具可擴容性",
- "page-upgrades-scalable-desc": "以太坊每秒需要支援數千筆交易,以使應用程式使用起來更快速、更便宜。",
+ "page-upgrades-scalable-desc": "以太坊每秒需要能夠支援數千筆交易,以使應用程式使用起來更快速、更便宜。",
"page-upgrades-secure": "更加安全",
- "page-upgrades-secure-desc": "以太坊需要更加安全。隨著以太坊的不斷普及,協定的安全性需要進一步提升,以抵禦各種形式的攻擊。",
- "page-upgrades-shard-date": "在 2023 年至 2024 年的某個時間,分片將在合併後分多個階段進行。",
- "page-upgrades-shard-desc": "Danksharding 可擴展以太坊儲存資料的能力,並與二層網路協調以擴展吞吐量並降低網路費用。Danksharding 將分多個階段推出,從 ProtoDanksharding 開始。",
+ "page-upgrades-secure-desc": "以太坊需要更加安全。隨著以太坊的不斷普及,需要進一步提升協定的安全性,以抵禦各種形式的攻擊。",
+ "page-upgrades-shard-date": "在 2023 年至 2024 年的某個時間,將在合併後分多個階段進行分片。",
+ "page-upgrades-shard-desc": "Danksharding 可擴展以太坊儲存資料的能力,並與二層網路協調以擴展吞吐量並降低網路費用。Danksharding 將分多個階段推出,首先推出的是 ProtoDanksharding。",
"page-upgrades-shard-estimate": "預計時間:2023-2024 年",
"page-upgrades-shard-lower": "更多分片相關更多資訊",
"page-upgrades-shard-title": "分片",
@@ -163,7 +163,7 @@
"page-upgrades-the-upgrades": "以太坊升級",
"page-upgrades-the-upgrades-desc": "以太坊升級旨在提高網路的可擴容性、安全性和永續性。以太坊已於最近在安全性和永續性方面進行一些重大升級,未來還會有更多升級,尤其是在可擴容性方面。",
"page-upgrades-unofficial-roadmap": "這不是正式的開發藍圖。這是我們根據現有資訊看待正在發生的事情的方式。但這就是技術,事情可以瞬間改變。因此,請不要將此視為承諾。",
- "page-upgrades-upgrade-desc": "我們知道和喜愛的以太坊,更可擴容、更安全、更永續...",
+ "page-upgrades-upgrade-desc": "依舊是我們瞭解和喜愛的以太坊,只是更加可擴容、更安全、更永續...",
"page-upgrades-upgrades": "以太坊升級",
"page-upgrades-upgrades-aria-label": "以太坊升級選單",
"page-upgrades-upgrades-beacon-chain": "信標鏈(Beacon Chain)",
@@ -174,31 +174,31 @@
"page-roadmap-vision": "願景",
"page-roadmap-vision-btn": "更多以太坊願景相關資訊",
"page-roadmap-vision-desc": "為了將以太坊帶入主流並服務全人類,我們必須使以太坊更具可擴容性、安全性和永續性。",
- "page-upgrades-what-happened-to-eth2-title": "「以太坊 2」怎麼了?",
- "page-upgrades-what-happened-to-eth2-1": "「以太坊 2」一詞在合併之前被廣泛使用,但正在逐步淘汰,取而代之的是更精確的術語。",
+ "page-upgrades-what-happened-to-eth2-title": "「以太坊 2.0」怎麼了?",
+ "page-upgrades-what-happened-to-eth2-1": "「以太坊 2.0」一詞在合併之前被廣泛使用,但正在逐步淘汰,取而代之的是更精確的術語。",
"page-upgrades-what-happened-to-eth2-1-more": "更多合併相關資訊。",
- "page-upgrades-what-happened-to-eth2-2": "自從合併「以太坊 1」和「以太坊 2」後,不再有兩條不同的以太坊區塊鏈;只有一個以太坊。",
- "page-upgrades-what-happened-to-eth2-3": "為了避免混淆,社群更新了這些術語:",
- "page-upgrades-what-happened-to-eth2-3-1": "「以太坊 1」現在是「執行層」,負責處理交易和執行。",
- "page-upgrades-what-happened-to-eth2-3-2": "「以太坊 2」現在是「共識層」,負責處理權益證明共識。",
- "page-upgrades-what-happened-to-eth2-4": "這些術語更新僅變更命名規則;不會改變以太坊的目標或開發藍圖。",
- "page-upgrades-what-happened-to-eth2-5": "瞭解更多「以太坊 2」重新命名的相關資訊",
- "page-upgrades-why-cant-we-just-use-eth2-title": "為什麼我們不能只使用以太坊 2?",
+ "page-upgrades-what-happened-to-eth2-2": "自從合併「以太坊 1.0」和「以太坊 2.0」後,不再有兩條不同的以太坊區塊鏈;只有一個以太坊。",
+ "page-upgrades-what-happened-to-eth2-3": "為了減少混亂,社區更新了這些條款:",
+ "page-upgrades-what-happened-to-eth2-3-1": "「以太坊 1.0」現在是處理交易和執行的「執行層」。",
+ "page-upgrades-what-happened-to-eth2-3-2": "「以太坊 2.0」現在是處理權益證明共識的「共識層」。",
+ "page-upgrades-what-happened-to-eth2-4": "這些術語更新只是改變了命名慣例;這並沒有改變以太坊的目標或開發藍圖。",
+ "page-upgrades-what-happened-to-eth2-5": "瞭解更多關於「以太坊 2.0」重命名的資訊",
+ "page-upgrades-why-cant-we-just-use-eth2-title": "為什麼我們不直接使用「以太坊 2」?",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "心理模式",
- "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "以太坊 2品牌的一個主要問題是,它為以太坊的新使用者建立了一種破碎的心理模式。他們直覺地認為以太坊 1 在前,以太坊 2在後。或者一旦 以太坊 2 存在,以太坊 1 就不再存在。這些都不是真的。刪除以太坊 2 術語之後,我們可以讓所有未來的使用者免於陷入這種令人困惑的心理模式。",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "「以太坊 2.0」品牌的一個主要問題是,它為以太坊的新使用者建立了一種錯誤的思維模式。他們會直覺地認為「以太坊 1.0」在前,「以太坊 2.0」在後。或者一旦「以太坊 2.0」存在,「以太坊 1.0」就不再存在。這些想法都是不對的。刪除「以太坊 2.0」術語之後,我們可以讓所有未來的使用者免於陷入這種令人困惑的思維模式。",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "包容性",
- "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "隨著以太坊開發藍圖的演進,以太坊 2.0 已經不能準確表述以太坊的開發藍圖。謹慎準確地選擇用詞可以讓以太坊上的內容被最廣泛的受眾理解。",
+ "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "隨著以太坊開發藍圖的演進,「以太坊 2.0」已經不能準確表述以太坊的開發藍圖。謹慎準確地選擇用詞可以讓最廣泛的受眾理解以太坊上的內容。",
"page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "防範詐騙",
- "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "不幸的是,惡意行為者試圖使用以太坊 2 這一誤稱來欺騙使用者,告訴他們將以太幣換成「以太坊 2」代幣,或者他們必須在以太坊 2 升級之前以某種方式遷移以太幣。我們希望更新後的術語能夠清晰地消除這種騙局,並有助於使生態系統更加安全。",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "不幸的是,惡意行為者試圖使用「以太坊 2.0」這一誤稱來欺騙使用者,告訴他們將以太幣換成「以太坊 2.0」代幣,或者他們必須在「以太坊 2.0」升級之前以某種方式遷移以太幣。我們希望更新後的術語能夠清晰闡明涵義,來消除這種騙局,並有助於使生態系統更加安全。",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "質押清晰度",
- "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "有些質押業者也用「以太坊 2」代碼代表質押在信標鏈上的以太幣。鑑於這些服務的使用者實際上並未收到「以太坊 2」代幣,這會造成潛在的混亂。不存在「以太坊 2」代幣;它僅代表他們在該特定提供者的質押中所佔的份額。",
+ "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "有些質押業者也用「以太坊 2.0」代碼代表質押在信標鏈上的以太幣。鑑於這些服務的使用者實際上並未收到「以太坊 2.0」代幣,這會造成潛在的混亂。不存在「以太坊 2.0」代幣;它僅代表他們在該特定提供者的質押中所佔的份額。",
"page-upgrades-what-to-do": "你需要做什麼?",
"page-upgrades-what-to-do-desc": "如果你是去中心化應用程式使用者或以太幣持有者,無需執行任何操作。如果你是開發者或想開始質押,現今可以透過多種方式參與其中。",
"page-upgrades-whats-next": "什麼是以太坊升級?",
"page-upgrades-whats-next-desc": "以太坊開發藍圖涉及相互關聯的協定升級,這將使網路更具可擴容性、更安全、更永續。這些升級由來自以太坊生態系統的多個團隊所建置。",
"page-upgrades-whats-next-history": "瞭解之前的以太坊升級",
"page-upgrades-whats-ethereum": "等等,以太坊是什麼?",
- "page-upgrades-whats-new": "以太坊的下一步是什麼?",
+ "page-upgrades-whats-new": "以太坊的下一步動作是什麼?",
"page-upgrades-security-link": "更多安全和防範詐騙相關資訊",
"page-staking-deposit-contract-staking-more-link": "更多權益質押相關資訊",
"docs-nav-proof-of-stake": "權益證明",
diff --git a/src/intl/zh-tw/page-upgrades.json b/src/intl/zh-tw/page-upgrades.json
index bc0b94e21b8..8da9195b3cd 100644
--- a/src/intl/zh-tw/page-upgrades.json
+++ b/src/intl/zh-tw/page-upgrades.json
@@ -1,24 +1,24 @@
{
"page-upgrades-merge-infographic-el": "以太坊狀態:交易、應用程式、合約、餘額",
- "page-upgrades-merge-infographic-alt-text": "信息圖:說明從工作量證明過渡到權益證明期間,信標鏈如何合併到以太坊的執行層。",
- "page-upgrades-beacon-date": "已發佈!",
+ "page-upgrades-merge-infographic-alt-text": "資訊圖表:說明從工作量證明過渡到權益證明期間,信標鏈如何合併到以太坊的執行層。",
+ "page-upgrades-beacon-date": "已上線!",
"page-upgrades-merge-date": "2022 年 9 月",
"page-upgrades-shards-date": "~2023 年",
"page-upgrades-pbs": "不在近期 - 預計在 2024/25 年",
- "page-upgrades-post-merge-banner-tutorial-ood": "合併後,此使用教學將不再適用,可能無法使用。若想繼續幫忙修改,請先在 github 上提交 PR。",
- "page-upgrades-post-merge-banner-governance-ood": "合併後,此頁面上的有些內容將不再適用。若想繼續幫忙修改,請先在 github 上提交 PR。",
+ "page-upgrades-post-merge-banner-tutorial-ood": "合併後,此使用教學將不再適用,可能無法使用。若想繼續做出貢獻,請先在 github 上提交提取要求。",
+ "page-upgrades-post-merge-banner-governance-ood": "合併後,此頁面上的有些內容將不再適用。若想繼續做出貢獻,請先在 github 上提交提取要求。",
"page-upgrades-upgrades-guide": "以太坊升級指南",
"page-upgrades-upgrades-docking": "合併",
"page-upgrades-shard-title": "分片",
"page-upgrades-upgrades-beacon-chain": "信標鏈",
- "consensus-beaconscan-title": "信標掃描",
+ "consensus-beaconscan-title": "beaconscan",
"consensus-beaconscan-in-title": "beaconcha.in",
"consensus-beaconcha-in-desc": "開放原始碼信標鏈總管",
"consensus-beaconscan-desc": "共識層信標鏈總管 - Etherscan",
"consensus-become-staker": "成為質押者",
"consensus-become-staker-desc": "質押現可使用!若想質押以太幣來協助保護網路安全,請先確保自己知悉相關風險。",
"consensus-explore": "探索資料",
- "consensus-run-beacon-chain": "運行共識用戶端",
+ "consensus-run-beacon-chain": "執行共識用戶端",
"consensus-run-beacon-chain-desc": "以太坊需要大量用戶端協助運作。請為以太坊的共同利益一起努力!",
"read-more": "閱讀更多資訊"
}
diff --git a/src/intl/zh-tw/page-wallets-find-wallet.json b/src/intl/zh-tw/page-wallets-find-wallet.json
index 753d110b0e6..7053fc26db7 100644
--- a/src/intl/zh-tw/page-wallets-find-wallet.json
+++ b/src/intl/zh-tw/page-wallets-find-wallet.json
@@ -18,12 +18,12 @@
"page-find-wallet-hardware-wallet-support-desc": "可連結至硬體錢包以增強安全性的錢包",
"page-find-wallet-walletconnect": "WalletConnect",
"page-find-wallet-walletconnect-desc": "支援 WalletConnect 以連結至去中心化應用程式的錢包",
- "page-find-wallet-rpc-importing": "遠端程式呼叫協定匯入",
- "page-find-wallet-rpc-importing-desc": "支援自訂遠端程式呼叫協定端點,以連結至不同節點或網路的錢包",
+ "page-find-wallet-rpc-importing": "遠端程序呼叫協定匯入",
+ "page-find-wallet-rpc-importing-desc": "支援自訂遠端程序呼叫協定端點,以連結至不同節點或網路的錢包",
"page-find-wallet-nft-support": "支援非同質化代幣",
"page-find-wallet-nft-support-desc": "支援檢視非同質化代幣並與之互動的錢包",
"page-find-wallet-connect-to-dapps": "連結至去中心化應用程式",
- "page-find-wallet-connect-to-dapps-desc": "連結至建於以太坊網絡上的應用程式的錢包",
+ "page-find-wallet-connect-to-dapps-desc": "連結至建於以太坊網路上的應用程式的錢包",
"page-find-wallet-staking": "權益質押",
"page-find-wallet-staking-desc": "從錢包中直接質押以太幣",
"page-find-wallet-swaps": "交換",
@@ -81,7 +81,7 @@
"page-find-wallet-feature-filters": "功能篩選條件",
"page-find-wallet-footnote-1": "本頁面所列錢包並非官方認可,僅供用於參考用途。",
"page-find-wallet-footnote-2": "錢包說明由錢包專案本身提供。",
- "page-find-wallet-footnote-3": "我们根據我们上架政策中的標準將產品添加到本頁面。如果你想讓我們添加錢包,請在 GitHub 中提出問題。",
+ "page-find-wallet-footnote-3": "我們根據上市政策中的標準將產品新增到本頁面。如果你希望我們新增錢包,請在 GitHub 中提出問題。",
"page-find-wallet-mobile": "行動裝置",
"page-find-wallet-mobile-desc": "有行動裝置應用程式的錢包",
"page-find-wallet-desktop": "桌上型電腦",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "有瀏覽器擴充功能的錢包",
"page-find-wallet-device": "裝置",
"page-find-choose-to-compare": "選擇比較對象",
- "page-find-wallet-choose-features": "選擇功能"
+ "page-find-wallet-choose-features": "選擇功能",
+ "page-find-wallet-reset-filters": "重置篩選器"
}
diff --git a/src/intl/zh-tw/page-what-is-ethereum.json b/src/intl/zh-tw/page-what-is-ethereum.json
index 513b35007f4..1a1fedb3ca6 100644
--- a/src/intl/zh-tw/page-what-is-ethereum.json
+++ b/src/intl/zh-tw/page-what-is-ethereum.json
@@ -12,7 +12,7 @@
"page-what-is-ethereum-commerce-card": "商業保障",
"page-what-is-ethereum-commerce-card-desc": "顧客有安全、內建的保證,所有資金只在你同意的情況才會轉手。同樣的,開發者可以確定規則不會改變他們。",
"page-what-is-ethereum-composable-card": "可組合產品",
- "page-what-is-ethereum-composable-card-desc": "所有應用程式都建立在同一條區塊鏈上,有著共同的全域狀態,這意味著它們可以在彼此的基礎上開發(如同樂高積木一樣)。因此,可以提供更佳的產品和體驗以及更可靠的保障,確保沒有人可以移除應用程式所依賴的任何工具。",
+ "page-what-is-ethereum-composable-card-desc": "所有應用程式都建立在同一條區塊鏈上,有著共同的全域狀態,這意味著它們可以在彼此的基礎上開發(如同樂高積木一樣)。因此,可以提供更佳的產品和體驗以及更可靠的保障,確保沒有人可以移除應用程式所依賴的任何工具。",
"page-what-is-ethereum-community": "以太坊社群",
"page-what-is-ethereum-desc": "數位未來的基礎",
"page-what-is-ethereum-explore": "探索以太坊",
@@ -65,7 +65,7 @@
"page-what-is-ethereum-explore-applications": "探索應用程式",
"page-what-is-ethereum-learn-defi": "了解去中心化金融 (DeFi)",
"page-what-is-ethereum-who-runs-ethereum-title": "誰在運行以太坊?",
- "page-what-is-ethereum-who-runs-ethereum-desc-1": "以太坊不受任何特定實體控制。只要有相互連接並按照以太坊協議運行軟體的電腦,並且這些電腦能持續新增區塊到以太坊區塊鏈上,以太坊就會存在。其中每一臺電腦都稱為「節點」。節點可以由任何人運行,但要參與保護網路,你必須質押以太幣(以太坊的原生代幣)。任何人只要擁有 32 個以太幣都可以運行節點而無需許可。",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "以太坊不受任何特定實體控制。只要有相互連接並按照以太坊協議運行軟體的電腦,並且這些電腦能持續新增區塊到以太坊區塊鏈上,以太坊就會存在。其中每一臺電腦都稱為「節點」。節點可以由任何人運行,但要參與保護網路,你必須質押以太幣(以太坊的原生代幣)。任何人只要擁有 32 個以太幣都可以運行節點而無需許可。",
"page-what-is-ethereum-who-runs-ethereum-desc-2": "甚至以太坊的原始程式碼也不是由單個實體生成的。任何人都可以提議對協議進行改動並討論升級。有一些以太坊協議的實作由獨立組織用多種程式語言完成。它們通常建立在開放的基礎上,並鼓勵來自社群的貢獻。",
"page-what-is-ethereum-run-a-node": "運行一個節點",
"page-what-is-ethereum-smart-contract-title": "什麼是智慧型合約?",
@@ -84,7 +84,7 @@
"page-what-is-ethereum-more-on-energy-consumption": "更多關於能源消耗的資訊",
"page-what-is-ethereum-energy-consumption-chart-legend": "年度能源消耗 (TWh/年)",
"energy-consumption-chart-global-data-centers-label": "全球資料中心",
- "energy-consumption-gold-mining-cbeci-label": "淘金",
+ "energy-consumption-gold-mining-cbeci-label": "開採金礦",
"energy-consumption-chart-btc-pow-label": "比特幣工作量證明",
"energy-consumption-chart-netflix-label": "網飛",
"energy-consumption-chart-eth-pow-label": "以太幣工作量證明",
diff --git a/src/intl/zh/common.json b/src/intl/zh/common.json
index 995b26658b2..589a6f67750 100644
--- a/src/intl/zh/common.json
+++ b/src/intl/zh/common.json
@@ -11,10 +11,13 @@
"adding-wallets": "添加钱包",
"account-abstraction": "帐户抽象",
"acknowledgements": "致谢",
- "aria-toggle-search-button": "切换搜索按钮",
- "aria-toggle-menu-button": "切换菜单按钮",
+ "aria-toggle-search-button": "切换搜索键",
+ "aria-toggle-menu-button": "切换菜单键",
"beacon-chain": "信标链",
"bridges": "区块链桥",
+ "bug-bounty": "漏洞悬赏",
+ "build": "构建",
+ "build-menu": "“构建”菜单",
"clear": "明确",
"close": "关闭",
"community": "社区",
@@ -26,25 +29,26 @@
"content-standardization": "内容标准化",
"contributing": "参与贡献",
"contributors": "贡献者",
- "contributors-thanks": "所有对本页有贡献的人- 谢谢!",
- "cookie-policy": "Cookie 政策",
+ "contributors-thanks": "感谢对本页做出贡献的每一个人!",
+ "cookie-policy": "缓存政策",
"copied": "已复制",
"copy": "复制",
"danksharding": "Danksharding",
- "dao-page": "去中心化自治组织 (DAO)",
+ "dao-page": "DAO - 去中心化自治组织",
"dark-mode": "深色模式",
"data-provided-by": "数据来源:",
- "decentralized-applications-dapps": "去中心化应用程序 (dapps)",
+ "decentralized-applications-dapps": "Dapps - 去中心化应用",
"decentralized-identity": "去中心化身份",
"decentralized-social-networks": "去中心化社交网络",
- "decentralized-science": "去中心化科学 (DeSci)",
- "defi-page": "去中心化金融 (DeFi)",
+ "decentralized-science": "DeSci - 去中心化科学",
+ "description": "导航项说明",
+ "defi-page": "DeFi - 去中心化金融",
"design": "设计",
"design-principles": "设计原则",
"devcon": "Devcon",
"developers": "开发者",
"developers-home": "开发者主页",
- "docs": "相关文档",
+ "docs": "文档",
"docsearch-to-select": "选择",
"docsearch-to-navigate": "导航",
"docsearch-to-close": "关闭",
@@ -65,8 +69,8 @@
"down": "向下",
"ecosystem": "生态系统",
"edit-page": "编辑页面",
- "ef-blog": "以太坊基金会博客",
- "eips": "以太坊改进提案",
+ "ef-blog": "以太坊基金会的博客",
+ "eips": "以太坊改进提案 (Eip)",
"energy-consumption": "以太坊能源消耗",
"enterprise": "企业级应用",
"enterprise-menu": "企业菜单",
@@ -107,7 +111,7 @@
"grants": "资助",
"grant-programs": "生态系统资助计划",
"guides": "指南",
- "guides-hub": "指南中心",
+ "guides-hub": "操作方法指南",
"history-of-ethereum": "以太坊的历史",
"home": "首页",
"how-ethereum-works": "以太坊如何运作",
@@ -125,7 +129,7 @@
"language-support": "语言支持",
"languages": "语言",
"last-24-hrs": "最近24小时",
- "last-edit": "上次编辑",
+ "last-edit": "上次修改时间",
"layer-2": "二层网络",
"learn": "学习",
"learn-by-coding": "通过编码来学习",
@@ -134,7 +138,7 @@
"learn-more": "了解更多",
"less": "更少",
"light-mode": "明亮模式",
- "listing-policy-disclaimer": "本页所列产品并非官方认可,仅供参考。如果你想添加产品或对策略提供反馈,请在GitHub中提出问题。",
+ "listing-policy-disclaimer": "本页所列产品并非官方认可,仅供参考。如果您想添加产品或对策略提供反馈,请在GitHub中提出问题。",
"loading": "加载中...",
"loading-error": "加载错误。",
"loading-error-refresh": "错误,请刷新。",
@@ -143,10 +147,115 @@
"mainnet-ethereum": "主网以太坊",
"merge": "合并",
"more": "更多",
- "nav-developers": "开发者",
+ "nav-about-description": "以太坊社区的公开、开源项目",
+ "nav-advanced-description": "了解更高深的主题",
+ "nav-advanced-label": "高级",
+ "nav-basics-description": "了解以太坊基础知识",
+ "nav-basics-label": "基础知识",
+ "nav-bridges-description": "Web3 已发展成主要由一层网络区块链和二层网络扩容解决方案组成的生态系统",
+ "nav-builders-home-description": "以太坊构建者手册 — 由构建者编写,为构建者所用",
+ "nav-builders-home-label": "构建者首页",
+ "nav-contribute-description": "如需帮助,这里为您提供指南",
+ "nav-contribute-label": "为 ethereum.org 做贡献",
+ "nav-dao-description": "成员共同拥有的社区,不存在集中管理机构",
+ "nav-dapps-description": "借助以太坊,探索丰富多姿的应用程序生态系统",
+ "nav-defi-description": "传统金融市场的全球化、开放性替代方案",
+ "nav-desci-description": "当前科学体系的全球化、开放性替代方案",
+ "nav-desoc-description": "基于区块链的社交互动与内容创作平台",
"nav-developers-docs": "开发者文档",
+ "nav-developers": "开发者",
+ "nav-did-description": "发布并掌控自己独有的去中心化身份标识",
+ "nav-docs-description": "帮助你了解以太坊并在其上进行构建的文档",
+ "nav-docs-design-description": "别具一格的 Web3 设计挑战相关说明、最佳做法及用户研究洞察",
+ "nav-docs-design-label": "用户体验/用户界面设计基础",
+ "nav-docs-foundation-description": "以太坊开发核心基础知识",
+ "nav-docs-foundation-label": "基础主题",
+ "nav-docs-overview-description": "开发者文档首页",
+ "nav-docs-stack-description": "了解以太坊堆栈全部细节",
+ "nav-docs-stack-label": "以太坊堆栈",
+ "nav-eip-description": "详细规定新功能或新流程的标准",
+ "nav-eip-label": "EIP - 以太坊改进提案",
+ "nav-emerging-description": "学习其他以太坊新用例",
+ "nav-emerging-label": "新出现的用例",
+ "nav-enterprise-description": "以太坊的商业应用程序",
+ "nav-ethereum-org-description": "本网站由社区驱动 — 加入我们,做出贡献",
+ "nav-ethereum-wallets-description": "与以太坊帐户进行互动的应用程序",
+ "nav-events-description": "去中心化并且人人都可以自由参与",
+ "nav-events-irl-description": "每个月,以太坊都举办重大现场活动和线上活动",
+ "nav-events-label": "社区与活动",
+ "nav-events-online-description": "成千上万的以太坊爱好者是这些在线社区的缔造者",
+ "nav-find-wallet-description": "钱包让你得以使用加密货币",
+ "nav-find-wallet-label": "选择钱包",
+ "nav-gas-fees-description": "以太币交易费如何计算",
+ "nav-gas-fees-label": "燃料费",
+ "nav-get-eth-description": "要使用以太坊应用程序,需要使用以太币 (ETH)",
+ "nav-get-started-description": "使用以太坊的第一步",
+ "nav-governance-description": "该流程涉及升级以太坊协议",
+ "nav-governance-label": "治理",
+ "nav-grants-description": "社区提供的精选项目清单,这些项目提供了资助计划",
+ "nav-guide-create-account-description": "任何人都可以使用钱包应用程序,随时免费创建以太坊帐户",
+ "nav-guide-create-account-label": "如何创建以太坊帐户",
+ "nav-guide-revoke-access-description": "在以太坊生态系统中,与智能合约及应用程序互动时保障安全",
+ "nav-guide-revoke-access-label": "如何撤销智能合约的访问权限",
+ "nav-guide-use-wallet-description": "了解如何执行钱包的所有基础功能",
+ "nav-guide-use-wallet-label": "如何使用钱包",
+ "nav-guides-description": "可帮助初学者入门的实用分步指南",
+ "nav-guides-label": "操作方法指南",
+ "nav-history-description": "所有重大分叉和更新的时间线",
+ "nav-history-label": "以太坊技术史",
+ "nav-layer-2-description": "以太坊上的交易更经济、更快捷",
+ "nav-learn-by-coding-description": "可帮助用户尝试以太坊的工具",
+ "nav-local-env-description": "选择并设置以太坊开发栈",
+ "nav-mainnet-description": "企业级区块链应用程序可以在公共以太坊主网上构建",
+ "nav-nft-description": "一种用以太坊资产表示任何独特事物的方法",
+ "nav-open-research-description": "以太坊的一项主要优势就是它有一个活跃的研究社区",
+ "nav-open-research-label": "开放研究",
+ "nav-overview-description": "以太坊教育大全",
+ "nav-overview-label": "概述",
+ "nav-participate-overview-description": "参与方法概述",
"nav-primary": "主导航",
- "nft-page": "非同质化代币 (NFT)",
+ "nav-private-description": "企业级私有以太坊开发者资源",
+ "nav-quizzes-description": "了解你对以太坊和加密货币的了解程度",
+ "nav-quizzes-label": "检验掌握的知识",
+ "nav-refi-description": "一种基于再生原理的替代经济体系",
+ "nav-research-description": "以太坊改进流程",
+ "nav-research-label": "研究与开发",
+ "nav-roadmap-description": "提高以太坊可扩展性、安全性和可持续性的途径",
+ "nav-roadmap-future-description": "强化以太坊,使之成为一个稳固、去中心化的网络",
+ "nav-roadmap-future-label": "面向未来",
+ "nav-roadmap-label": "路线图",
+ "nav-roadmap-scaling-description": "网络更新,可进一步降低交易费并提升交易速度",
+ "nav-roadmap-scaling-label": "交易费用更低",
+ "nav-roadmap-security-description": "确保以太坊具备复原能力,能够抵御未来的各类攻击",
+ "nav-roadmap-security-label": "安全性增强",
+ "nav-roadmap-ux-description": "以太坊的用法需要简化",
+ "nav-roadmap-ux-label": "改善用户体验",
+ "nav-run-a-node-description": "实现完全自主权,同时帮助保护网络安全",
+ "nav-security-description": "了解加密货币使用方面的最佳做法",
+ "nav-smart-contracts-description": "以太坊生态系统之基石",
+ "nav-stablecoins-description": "稳定币是价值固定不变的以太坊代币",
+ "nav-stake-description": "保护以太坊安全同时赚取奖励",
+ "nav-stake-label": "质押",
+ "nav-staking-home-description": "各种质押方案概述",
+ "nav-staking-home-label": "质押首页",
+ "nav-staking-pool-description": "通过联合其他人质押任意数量的以太币并获得奖励",
+ "nav-staking-pool-label": "联合质押",
+ "nav-staking-saas-description": "第三方节点运营商负责你的验证者客户端的操作",
+ "nav-staking-saas-label": "通过服务质押",
+ "nav-staking-solo-description": "运行家用硬件并自行加入以太坊网络的安全和去中心化",
+ "nav-staking-solo-label": "单独质押",
+ "nav-start-building-description": "新手实用信息",
+ "nav-translation-program-description": "一项将以太坊翻译成所有语言的协作计划",
+ "nav-tutorials-description": "社区教程精选清单",
+ "nav-use-cases-description": "发现和以太坊使用方法相关的各种理念",
+ "nav-use-cases-label": "用例",
+ "nav-what-is-ether-description": "以太坊应用程序中的货币",
+ "nav-what-is-ethereum-description": "理解以太坊的独特之处",
+ "nav-what-is-web3-label": "什么是 Web3?",
+ "nav-what-is-web3-description": "一种制定规则的集中垄断机构的替代机制",
+ "nav-whitepaper-description": "最初的以太坊白皮书由 Vitalik Buterin 在 2014 年撰写",
+ "nav-zkp-description": "在不披露声明本身的情况下,证明声明有效性的一种方法",
+ "nft-page": "NFT - 非同质化代币",
"nfts": "非同质化代币",
"no": "否",
"on-this-page": "在本页面",
@@ -154,16 +263,20 @@
"page-developers-aria-label": "开发者菜单",
"page-index-meta-title": "首页",
"page-last-updated": "页面最后更新",
+ "participate": "参与",
+ "participate-menu": "“参与”菜单",
"pbs": "提议者-构建者分离",
"pools": "联合质押",
"privacy-policy": "隐私政策",
- "private-ethereum": "私人以太坊",
+ "private-ethereum": "私密以太坊",
"product-disclaimer": "列举产品和服务是为了方便以太坊社区。但列举任何产品或服务并不表示 ethereum.org 网站团队或以太坊基金会认可它们。",
"quizzes-title": "测试中心",
"quizzes": "测试",
"refresh": "请刷新页面。",
"return-home": "返回首页",
"roadmap": "以太坊路线图",
+ "research": "研究",
+ "research-menu": "“研究”菜单",
"resources": "翻译资源",
"regenerative-finance": "再生金融(ReFi)",
"run-a-node": "运行节点",
@@ -211,8 +324,10 @@
"try-using-search": "请尝试使用搜索来查找相关内容,或者",
"tutorials": "教程",
"up": "向上",
+ "use": "用法",
"use-ethereum": "使用以太坊",
"use-ethereum-menu": "使用以太坊菜单",
+ "use-menu": "“用法”菜单",
"user-experience": "用户体验",
"verkle-trees": "沃克尔树",
"wallets": "钱包",
diff --git a/src/intl/zh/page-dapps.json b/src/intl/zh/page-dapps.json
index cc261ae2428..fe473485db3 100644
--- a/src/intl/zh/page-dapps.json
+++ b/src/intl/zh/page-dapps.json
@@ -115,14 +115,12 @@
"page-dapps-dapp-description-rarible": "创建、出售和购买代币化的收藏品。",
"page-dapps-dapp-description-rubic": "面向用户和去中心化应用程序的跨链技术聚合器。",
"page-dapps-dapp-description-sablier": "实时流转资金。",
- "page-dapps-dapp-description-skiff": "端到端加密电子邮件、日历、文档和文件,让你能够自由交流。",
"page-dapps-dapp-description-spatial": "创建自己的自定义头像和 3D 世界",
"page-dapps-dapp-description-spruce": "开源堆栈将身份和数据控制权交还给用户。",
"page-dapps-dapp-description-status": "旨在实现信息的自由流动,保护进行私密安全对话的权利,并促进个人主权。",
"page-dapps-dapp-description-superrare": "直接从艺术家或在二级市场购买数字艺术作品。",
"page-dapps-dapp-description-synthetix": "Synthetix 是一个用于发行和交易合成资产的协议",
"page-dapps-dapp-description-token-sets": "自动再平衡的加密投资策略。",
- "page-dapps-dapp-description-tornado-cash": "在以太坊上发送匿名交易。",
"page-dapps-dapp-description-uniswap": "简单地交换代币或提供代币换取%的奖励。",
"page-dapps-dapp-description-xmtp": "在区块链帐户之间发送消息,包括私信、警报、公告等。",
"page-dapps-dapp-description-yearn": "Yearn Finance 是一个收益聚合器。它为个人、DAO 和其他协议提供了一种存入数字资产并获得收益的方式。",
@@ -248,7 +246,6 @@
"page-dapps-set-up-a-wallet-button": "查找钱包",
"page-dapps-set-up-a-wallet-description": "一个钱包地址是你“登录”去中心化应用程序的凭证",
"page-dapps-set-up-a-wallet-title": "创建一个钱包",
- "page-dapps-skiff-logo-alt": "Skiff 徽标",
"page-dapps-social-button": "社交",
"page-dapps-social-description": "这些应用程序专注于利用去中心化身份技术创建去中心化社交网络,其中数字身份和社交图谱由用户拥有。",
"page-dapps-social-title": "社交",
@@ -260,7 +257,6 @@
"page-dapps-technology-description": "这些应用侧重于开发者工具的去中心化,将加密经济系统纳入现有技术,并为开发开放源码的开发工作创建市场。",
"page-dapps-technology-title": "去中心化技术",
"page-dapps-token-sets-logo-alt": "Token Sets徽标",
- "page-dapps-tornado-cash-logo-alt": "Tornado cash徽标",
"page-dapps-uniswap-logo-alt": "Uniswap徽标",
"page-dapps-wallet-callout-button": "查找钱包",
"page-dapps-wallet-callout-description": "钱包同样也是去中心化应用程序,根据功能最适合你的原则选择一个钱包。",
diff --git a/src/intl/zh/page-gas.json b/src/intl/zh/page-gas.json
new file mode 100644
index 00000000000..1d5494ac24b
--- /dev/null
+++ b/src/intl/zh/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "以太坊的燃料费:如何运作?",
+ "page-gas-meta-description": "了解以太坊的燃料:如何运作并支付较少的燃料费",
+ "page-gas-hero-title": "燃料费",
+ "page-gas-hero-header": "网络费用",
+ "page-gas-hero-button-1-content": "什么是燃料?",
+ "page-gas-hero-subtitle-1": "以太坊上的网络费用称为燃料。",
+ "page-gas-hero-subtitle-2": "燃料为以太坊提供动力。",
+ "page-gas-summary-title": "概览",
+ "page-gas-summary-item-1": "以太坊上的每一笔交易都需要支付少量处理费用",
+ "page-gas-summary-item-2": "这类费用称为“燃料”费",
+ "page-gas-summary-item-3": "燃料费随网络拥塞状况变化",
+ "page-gas-what-are-gas-fees-header": "什么是燃料费?",
+ "page-gas-what-are-gas-fees-text-1": "可以把以太坊看成一个大型计算机网络,人们可以在以太坊上进行发送信息或运行程序等任务。正如现实世界中一样,完成这些任务需要能量。",
+ "page-gas-what-are-gas-fees-text-2": "在以太坊中,每个计算操作都设定有“燃料”价格。燃料费是指在交易中所执行操作的总费用。发送交易或运行智能合约时,需要支付燃料费才能处理。",
+ "page-gas-how-do-i-pay-less-gas-header": "如何支付较少燃料费?",
+ "page-gas-how-do-i-pay-less-gas-text": "尽管以太坊上较高的燃料费有时无法避免,但你可以应用以下策略减少费用:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "安排交易时间",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "就像错峰出行不太拥堵且更实惠一样,在北美睡眠时间使用以太坊往往更优惠。",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "等待费用下降",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "根据以太坊的拥塞程度,燃料价格每 12 秒上下波动一次。燃料价格高时,只需在交易前等待几分钟可能会看到支付的费用显著下降。",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "使用二层网络",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "二层网络链在以太坊上构建,费用更低且处理的交易更多。对于无需在以太坊主网进行的交易,它们是节省费用的不错选择。",
+ "page-gas-try-layer-2": "尝试二层网络",
+ "page-gas-what-causes-high-gas-fees-header": "是什么造成了高昂的燃料费?",
+ "page-gas-what-causes-high-gas-fees-text-1": "只要以太坊上的计算量(燃料)超过一个特定阈值,燃料费就开始上涨。超过阈值的燃料越多,燃料费增加越快。",
+ "page-gas-what-causes-high-gas-fees-text-2": "较高的费用可能由以下因素造成:热门去中心化应用程序或非同质化代币、去中心化交易所周期性增加的交易量,或者高峰时段的海量用户活动等。",
+ "page-gas-what-causes-high-gas-fees-text-3": "在部署前,以太坊上的开发者应谨慎优化其智能合约的用法。如果许多人都在使用一个编写拙劣的智能合约,将消耗更多燃料并可能无意中造成网络拥塞。",
+ "page-gas-want-to-dive-deeper": "还想深入探索?",
+ "page-gas-check-out-the-developer-docs": "查看开发者文档。",
+ "page-gas-attack-of-the-cryptokitties-header": "谜恋猫攻击",
+ "page-gas-attack-of-the-cryptokitties-text": "2017 年 11 月,人气项目谜恋猫启动。该项目人气暴涨,造成了严重网络拥塞和极高的燃料费。谜恋猫带来的挑战加剧了寻找以太坊扩容解决方案的紧迫性。",
+ "page-gas-why-do-we-need-gas-header": "为何需要燃料?",
+ "page-gas-why-do-we-need-gas-text": "燃料是保障以太坊安全和处理交易的关键要素。燃料在许多方面发挥作用:",
+ "page-gas-benefits-1-description": "燃料可帮助以太坊防范女巫攻击,阻止恶意行为者通过欺诈活动压垮网络。",
+ "page-gas-benefits-2-description": "因为计算耗费燃料,通过进行昂贵的交易,无意间或恶意对以太坊进行垃圾邮件攻击在经济上都是不值得的。",
+ "page-gas-benefits-3-description": "对任何时间可执行的计算量设定硬性限制可避免以太坊被压垮,有助于确保网络始终可访问。",
+ "page-gas-how-is-gas-calculated-header": "如何计算燃料?",
+ "page-gas-advanced": "高级",
+ "page-gas-how-is-gas-calculated-text-1": "支付的总燃料费由以下几部分组成:",
+ "page-gas-how-is-gas-calculated-item-1": "基础费:由网络设定,必须支付才能进行交易",
+ "page-gas-how-is-gas-calculated-item-2": "优先费:可选择支付的小费,目的是激励节点运营者添加你的交易",
+ "page-gas-how-is-gas-calculated-item-3": "使用的燃料单位*:记得我们说过燃料代表计算吗?复杂操作(例如与智能合约交互)比简单操作(例如发送交易)使用更多燃料。",
+ "page-gas-how-is-gas-calculated-list-item-1": "* 查看图 1 了解不同类型的交易使用多少燃料",
+ "page-gas-how-is-gas-calculated-text-2": "燃料费计算公式:使用的燃料单位 *(基础费 + 优先费)。大多数钱包计算燃料用量并以更直观的方式显示。",
+ "page-gas-table-figure": "图1:交易类型使用的燃料",
+ "page-gas-table-header-1": "交易类型",
+ "page-gas-table-header-2": "使用的燃料单位",
+ "page-gas-table-item-1-transaction-type": "发送以太币",
+ "page-gas-table-item-2-transaction-type": "发送 ERC-20 代币",
+ "page-gas-table-item-3-transaction-type": "转移和非同质化代币",
+ "page-gas-table-item-4-transaction-type": "在 Uniswap 兑换代币",
+ "page-gas-faq-header": "常见问题",
+ "page-gas-faq-question-1-q": "谁获得了我的交易的燃料费?",
+ "page-gas-faq-question-1-a-1": "大部分燃料费(基础费)被协议销毁(烧毁)。如果交易中包含优先费,会交给提出你的交易的验证者。",
+ "page-gas-faq-question-1-a-2": "可以在燃料开发者文档中阅读此过程的详细描述。",
+ "page-gas-faq-question-2-q": "我是否需要用以太币支付燃料费用?",
+ "page-gas-faq-question-2-a-1": "是的。以太坊上的所有燃料费都必须用原生货币以太币支付。",
+ "page-gas-faq-question-2-a-2": "有关以太币的更多信息",
+ "page-gas-faq-question-3-q": "什么是 gwei?",
+ "page-gas-faq-question-3-a-1": "在大多数钱包或燃料追踪器中,你将看到燃料价格用“gwei”计量。",
+ "page-gas-faq-question-3-a-2": "Gwei 只是较小的以太币计量单位,像是美分与美元的关系,区别是 1 以太币等于 10 亿 gwei。在涉及极少量以太币时,Gwei 很有用。",
+ "page-gas-use-layer-2": "使用二层网络"
+}
diff --git a/src/intl/zh/page-languages.json b/src/intl/zh/page-languages.json
index 969a861c5c4..053354765d9 100644
--- a/src/intl/zh/page-languages.json
+++ b/src/intl/zh/page-languages.json
@@ -11,7 +11,12 @@
"page-languages-want-more-header": "想用不同的语言查看ethereum.org吗?",
"page-languages-want-more-link": "翻译计划",
"page-languages-want-more-paragraph": "ethereum.org的翻译者总是以尽可能多的语言进行翻译。 要看看他们正在做什么或注册加入他们,请阅读我们的",
- "page-languages-filter-placeholder": "筛选",
+ "page-languages-filter-label": "筛选列表",
+ "page-languages-filter-placeholder": "输入筛选条件",
+ "page-languages-browser-default": "浏览器默认设置",
+ "page-languages-translated": "已翻译",
+ "page-languages-words": "字数",
+ "page-languages-recruit-community": "帮助我们翻译 ethereum.org。",
"langauge-am": "阿姆哈拉语",
"language-ar": "阿拉伯语",
"language-az": "阿塞拜疆语",
@@ -50,6 +55,7 @@
"language-mr": "马拉地语",
"language-ms": "马来语",
"language-nb": "挪威语",
+ "language-ne-np": "尼泊尔语",
"language-nl": "荷兰语",
"language-pcm": "尼日利亚皮钦语",
"language-fil": "菲律宾语",
diff --git a/src/intl/zh/page-stablecoins.json b/src/intl/zh/page-stablecoins.json
index 8742bd0e3f8..a2a4bdeeab0 100644
--- a/src/intl/zh/page-stablecoins.json
+++ b/src/intl/zh/page-stablecoins.json
@@ -63,6 +63,7 @@
"page-stablecoins-bank-apy-source-link": "来源",
"page-stablecoins-bitcoin-pizza": "臭名昭著的比特币比萨",
"page-stablecoins-bitcoin-pizza-body": "2010年,有人用10000枚比特币购买了2个比萨,在当时,这些比特币价值 $41美元。而在现在,那就是百万美元。在以太坊的历史上还有很多类似令人懊悔的交易。稳定币可以解决这个问题,因此你可以一边手握ETH,一边享用你的披萨。",
+ "page-stablecoins-category-dashboard-and-education": "仪表板和教育",
"page-stablecoins-coin-price-change": "币价波动(最近30天)",
"page-stablecoins-crypto-backed": "由加密货币支撑",
"page-stablecoins-crypto-backed-con-1": "不如法币支撑的稳定币稳定。",
diff --git a/src/intl/zh/page-what-is-ethereum.json b/src/intl/zh/page-what-is-ethereum.json
index 0abdbaa51ad..702b4ca8031 100644
--- a/src/intl/zh/page-what-is-ethereum.json
+++ b/src/intl/zh/page-what-is-ethereum.json
@@ -84,7 +84,7 @@
"page-what-is-ethereum-more-on-energy-consumption": "更多关于能源消耗的信息",
"page-what-is-ethereum-energy-consumption-chart-legend": "年能源消耗量,单位为亿千瓦时/年",
"energy-consumption-chart-global-data-centers-label": "全球数据中心",
- "energy-consumption-gold-mining-cbeci-label": "黄金开采",
+ "energy-consumption-gold-mining-cbeci-label": "开采金矿",
"energy-consumption-chart-btc-pow-label": "比特币工作量证明",
"energy-consumption-chart-netflix-label": "Netflix",
"energy-consumption-chart-eth-pow-label": "以太坊工作量证明",
diff --git a/src/layouts/RootLayout.tsx b/src/layouts/RootLayout.tsx
index 00c6ec18dec..7dd5d89d3ff 100644
--- a/src/layouts/RootLayout.tsx
+++ b/src/layouts/RootLayout.tsx
@@ -26,10 +26,10 @@ export const RootLayout = ({
}: Root) => {
const { locale, asPath } = useRouter()
- const CONTRIBUTING = "/contributing"
+ const CONTRIBUTING = "/contributing/"
const isUntranslatedContributingPage =
asPath.includes(CONTRIBUTING) &&
- !(asPath.endsWith(CONTRIBUTING) || asPath.includes("/translation-program"))
+ !(asPath.endsWith(CONTRIBUTING) || asPath.includes("/translation-program/"))
const isLegal =
isUntranslatedContributingPage ||
@@ -50,7 +50,7 @@ export const RootLayout = ({
-
+
{
- const { locale } = useRouter()
+ const { locale, asPath } = useRouter()
const absoluteEditPath = getEditPath(slug)
return (
+
-
+
{slug === "/guides/" ? (
= [
image: WaffleImage,
},
{
- id: "kurtosis",
- url: "https://www.kurtosis.com/",
- githubUrl: "https://github.com/kurtosis-tech/kurtosis",
+ id: "Kurtosis Ethereum Package",
+ url: "https://github.com/kurtosis-tech/ethereum-package",
+ githubUrl: "https://github.com/kurtosis-tech/ethereum-package",
background: "#000000",
- name: "Kurtosis",
+ name: "Kurtosis Ethereum Package",
description:
"page-developers-local-environment:page-local-environment-kurtosis-desc",
alt: "page-developers-local-environment:page-local-environment-kurtosis-logo-alt",
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 5caae99081f..e00dbb8f8ab 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -1,5 +1,7 @@
import { ReportsModel } from "@crowdin/crowdin-api-client"
+import { NavSectionKey } from "@/components/Nav/types"
+
import i18nConfig from "../../i18n.config.json"
export const OLD_CONTENT_DIR = "src/content"
@@ -11,6 +13,7 @@ export const INTL_JSON_DIR = "src/intl"
// i18n
export const DEFAULT_LOCALE = "en"
+export const FAKE_LOCALE = "default"
// Sorted list of supported locales codes, defined in `i18n.config.json`
const BUILD_LOCALES = process.env.BUILD_LOCALES
export const LOCALES_CODES = BUILD_LOCALES
@@ -23,6 +26,7 @@ export const DISCORD_PATH = "/discord/"
export const EDIT_CONTENT_URL = `https://github.com/ethereum/ethereum-org-website/tree/dev/`
export const MAIN_CONTENT_ID = "main-content"
export const WEBSITE_EMAIL = "website@ethereum.org"
+export const DEFAULT_OG_IMAGE = "/home/hero.png"
// Config
export const CONTENT_IMAGES_MAX_WIDTH = 800
@@ -70,3 +74,16 @@ export const ETHERSCAN_API_URL = "https://api.etherscan.io"
export const NAV_BAR_PX_HEIGHT = "75px"
export const FROM_QUERY = "from"
+
+/**
+ * Navigation
+ */
+
+// Determines the order of sections in the menu
+export const SECTION_LABELS: NavSectionKey[] = [
+ "learn",
+ "use",
+ "build",
+ "participate",
+ "research",
+]
diff --git a/src/lib/types.ts b/src/lib/types.ts
index d0603ec24a6..62d10203798 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -59,10 +59,13 @@ export type Layout = keyof LayoutMappingType
export type Lang =
| "en"
+ | "am"
| "ar"
| "az"
+ | "be"
| "bg"
| "bn"
+ | "bs"
| "ca"
| "cs"
| "da"
@@ -71,6 +74,7 @@ export type Lang =
| "es"
| "fa"
| "fi"
+ | "fil"
| "fr"
| "gl"
| "gu"
@@ -78,6 +82,7 @@ export type Lang =
| "hi"
| "hr"
| "hu"
+ | "hy-am"
| "id"
| "ig"
| "it"
@@ -85,13 +90,15 @@ export type Lang =
| "ka"
| "kk"
| "km"
+ | "kn"
| "ko"
| "lt"
| "ml"
| "mr"
| "ms"
- | "nl"
| "nb"
+ | "ne-np"
+ | "nl"
| "pcm"
| "ph"
| "pl"
@@ -106,6 +113,7 @@ export type Lang =
| "sw"
| "ta"
| "th"
+ | "tk"
| "tr"
| "uk"
| "ur"
@@ -155,7 +163,8 @@ export type RawQuestion = {
export type QuestionBank = Record
export type QuestionKey = keyof typeof allQuestionData
-export type AnswerKey = typeof allQuestionData[QuestionKey]["answers"][number]["id"]
+export type AnswerKey =
+ (typeof allQuestionData)[QuestionKey]["answers"][number]["id"]
export type Question = RawQuestion & {
id: QuestionKey
@@ -192,7 +201,10 @@ export type QuizKey = keyof typeof allQuizData
type HasScoredPerfect = boolean
type QuestionsCorrect = number
-export type CompletedQuizzes = Record
+export type CompletedQuizzes = Record<
+ QuizKey,
+ [HasScoredPerfect, QuestionsCorrect]
+>
export type UserStats = {
score: number
@@ -237,6 +249,73 @@ export type LocaleContributions = {
data: FileContributorData[]
}
+// Crowdin translation progress
+export type ProjectProgressData = {
+ languageId: string
+ words: {
+ total: number
+ approved: number
+ }
+}
+
+export type LocaleDisplayInfo = {
+ localeOption: string
+ sourceName: string
+ targetName: string
+ englishName: string
+ approvalProgress: number
+ wordsApproved: number
+ isBrowserDefault?: boolean
+}
+
+type TranslatedStats = {
+ tmMatch: number
+ default: number
+ total: number
+}
+
+export type AllTimeData = {
+ name: string
+ url: string
+ unit: string
+ dateRange: {
+ from: string
+ to: string
+ }
+ currency: string
+ mode: string
+ totalCosts: number
+ totalTMSavings: number
+ totalPreTranslated: number
+ data: Array<{
+ user: {
+ id: number
+ username: string
+ fullName: string
+ userRole: string
+ avatarUrl: string
+ preTranslated: number
+ totalCosts: number
+ }
+ languages: Array<{
+ language: {
+ id: string
+ name: string
+ userRole: string
+ tmSavings: number
+ preTranslate: number
+ totalCosts: number
+ }
+ translated: TranslatedStats
+ targetTranslated: TranslatedStats
+ translatedByMt: TranslatedStats
+ approved: TranslatedStats
+ translationCosts: TranslatedStats
+ approvalCosts: TranslatedStats
+ }>
+ }>
+}
+
// GitHub contributors
export type Commit = {
commit: {
@@ -275,8 +354,8 @@ export type ToCNodeEntry = {
export type TocNodeType =
| ToCNodeEntry
| {
- items: TocNodeType[]
- }
+ items: TocNodeType[]
+ }
export type ToCItem = {
title: string
@@ -342,12 +421,12 @@ export type TimestampedData = {
export type MetricDataValue =
| {
- error: string
- }
+ error: string
+ }
| {
- data: Data
- value: Value
- }
+ data: Data
+ value: Value
+ }
export type EtherscanNodeResponse = {
result: {
@@ -412,51 +491,3 @@ export type CommunityConference = {
startDate: string
endDate: string
}
-
-type TranslatedStats = {
- tmMatch: number
- default: number
- total: number
-}
-
-export type AllTimeData = {
- name: string
- url: string
- unit: string
- dateRange: {
- from: string
- to: string
- }
- currency: string
- mode: string
- totalCosts: number
- totalTMSavings: number
- totalPreTranslated: number
- data: Array<{
- user: {
- id: number
- username: string
- fullName: string
- userRole: string
- avatarUrl: string
- preTranslated: number
- totalCosts: number
- }
- languages: Array<{
- language: {
- id: string
- name: string
- userRole: string
- tmSavings: number
- preTranslate: number
- totalCosts: number
- }
- translated: TranslatedStats
- targetTranslated: TranslatedStats
- translatedByMt: TranslatedStats
- approved: TranslatedStats
- translationCosts: TranslatedStats
- approvalCosts: TranslatedStats
- }>
- }>
-}
diff --git a/src/lib/utils/i18n.ts b/src/lib/utils/i18n.ts
index e4a9fb51039..ff645f556f0 100644
--- a/src/lib/utils/i18n.ts
+++ b/src/lib/utils/i18n.ts
@@ -7,7 +7,7 @@ import { DEFAULT_LOCALE, TRANSLATED_IMAGES_DIR } from "../constants"
export const getFallbackEnglishPath = (path: string) => {
const splittedPath = path.split("translations/")
- return join(splittedPath[0], splittedPath[1].split("/").slice(1).join("/"))
+ return join(splittedPath[0], ...splittedPath[1].split("/").slice(1))
}
// If content is in english, remove en/ prefix so filepath can be read correctly
diff --git a/src/lib/utils/md.ts b/src/lib/utils/md.ts
index 5ddf9221d59..2f28356ea84 100644
--- a/src/lib/utils/md.ts
+++ b/src/lib/utils/md.ts
@@ -234,7 +234,6 @@ const getPostSlugs = (dir: string, files: string[] = []) => {
"/contributing/translation-program/translatathon",
"/contributing/translation-program/translators-guide",
"/cookie-policy",
- "/deprecated-software",
"/eips",
"/energy-consumption",
"/enterprise",
diff --git a/src/lib/utils/metadata.ts b/src/lib/utils/metadata.ts
new file mode 100644
index 00000000000..9b9463817c7
--- /dev/null
+++ b/src/lib/utils/metadata.ts
@@ -0,0 +1,27 @@
+import { DEFAULT_OG_IMAGE } from "@/lib/constants"
+
+/**
+ * List of default og images for different sections
+ */
+const imageForSlug = [
+ { section: "developers", image: "/heroes/developers-hub-hero.jpg" },
+ { section: "roadmap", image: "/heroes/roadmap-hub-hero.jpg" },
+ { section: "guides", image: "/heroes/guides-hub-hero.jpg" },
+ { section: "community", image: "/heroes/community-hero.png" },
+ { section: "staking", image: "/upgrades/upgrade_rhino.png" },
+] as const
+
+/**
+ * Get the default OG image for a page based on the slug
+ * @param slug - the slug of the page
+ * @returns relative path of image
+ */
+export const getOgImage = (slug: string[]): string => {
+ let result = DEFAULT_OG_IMAGE
+ for (const item of imageForSlug) {
+ if (slug.includes(item.section)) {
+ result = item.image
+ }
+ }
+ return result
+}
diff --git a/src/lib/utils/translations.ts b/src/lib/utils/translations.ts
index f9179a68c55..3e0e194e969 100644
--- a/src/lib/utils/translations.ts
+++ b/src/lib/utils/translations.ts
@@ -1,6 +1,8 @@
import { Lang, Languages } from "@/lib/types"
-import { DEFAULT_LOCALE } from "@/lib/constants"
+import * as url from "@/lib/utils/url"
+
+import { DEFAULT_LOCALE, FAKE_LOCALE } from "@/lib/constants"
import i18nConfig from "../../../i18n.config.json"
@@ -12,12 +14,17 @@ export const languages: Languages = i18nConfig.reduce((result, config) => {
export const isLangRightToLeft = (lang: Lang): boolean => {
const langConfig = i18nConfig.filter((language) => language.code === lang)
- if (!langConfig.length)
- throw new Error("Language code not found in isLangRightToLeft")
+ if (!langConfig.length) {
+ return false
+ }
return langConfig[0].langDir === "rtl"
}
+export const filterRealLocales = (locales: string[] | undefined) => {
+ return locales?.filter((locale) => locale !== FAKE_LOCALE) || []
+}
+
// Overwrites the default Persian numbering of the Farsi language to use Hindu-Arabic numerals (0-9)
// Context: https://github.com/ethereum/ethereum-org-website/pull/5490#pullrequestreview-892596553
export const getLocaleForNumberFormat = (locale: Lang): Lang =>
@@ -31,7 +38,7 @@ export const getRequiredNamespacesForPage = (
path: string,
layout?: string | undefined
) => {
- const baseNamespaces = ["common"]
+ const baseNamespaces = ["common", "page-languages"]
const requiredNamespacesForPath = getRequiredNamespacesForPath(path)
const requiredNamespacesForLayout = getRequiredNamespacesForLayout(layout)
@@ -43,11 +50,13 @@ export const getRequiredNamespacesForPage = (
]
}
-const getRequiredNamespacesForPath = (path: string) => {
+const getRequiredNamespacesForPath = (relativePath: string) => {
+ const path = url.addSlashes(relativePath)
+
let primaryNamespace: string | undefined // the primary namespace for the page
let requiredNamespaces: string[] = [] // any additional namespaces required for the page
- if (path === "assets") {
+ if (path === "/assets/") {
primaryNamespace = "page-assets"
}
@@ -55,153 +64,138 @@ const getRequiredNamespacesForPath = (path: string) => {
primaryNamespace = "page-index"
}
- if (path === "/contributing/translation-program/acknowledgements") {
+ if (path === "/contributing/translation-program/acknowledgements/") {
primaryNamespace = "page-contributing-translation-program-acknowledgements"
}
- if (path === "/contributing/translation-program/contributors") {
+ if (path === "/contributing/translation-program/contributors/") {
primaryNamespace = "page-contributing-translation-program-contributors"
- requiredNamespaces = [
- ...requiredNamespaces,
- "page-languages",
- ]
}
- if (path.startsWith("/community")) {
+ if (path.startsWith("/community/")) {
primaryNamespace = "page-community"
}
- if (path.startsWith("/dapps")) {
+ if (path.startsWith("/dapps/")) {
primaryNamespace = "page-dapps"
}
- if (path.startsWith("/energy-consumption")) {
+ if (path.startsWith("/energy-consumption/")) {
primaryNamespace = "page-what-is-ethereum"
- requiredNamespaces = [
- ...requiredNamespaces,
- "page-about",
- ]
+ requiredNamespaces = [...requiredNamespaces, "page-about"]
}
- if (path.startsWith("/eth")) {
+ if (path.startsWith("/eth/")) {
primaryNamespace = "page-eth"
}
- if (path.startsWith("/glossary") || path.startsWith("/dapps")) {
+ if (path.startsWith("/glossary/") || path.startsWith("/dapps/")) {
requiredNamespaces = [...requiredNamespaces, "glossary"]
}
- if (path.startsWith("/history")) {
+ if (path.startsWith("/history/")) {
primaryNamespace = "page-history"
}
- if (path.startsWith("/stablecoins")) {
+ if (path.startsWith("/stablecoins/")) {
primaryNamespace = "page-stablecoins"
}
- if (path.startsWith("/staking")) {
+ if (path.startsWith("/staking/")) {
primaryNamespace = "page-staking"
}
- if (path.startsWith("/staking/deposit-contract")) {
+ if (path.startsWith("/staking/deposit-contract/")) {
primaryNamespace = "page-staking-deposit-contract"
}
- if (path.startsWith("/developers")) {
+ if (path.startsWith("/developers/")) {
primaryNamespace = "page-developers-index"
}
- if (path.startsWith("/learn")) {
+ if (path.startsWith("/learn/")) {
primaryNamespace = "page-learn"
}
- if (path.startsWith("/developers/local-environment")) {
+ if (path.startsWith("/developers/local-environment/")) {
primaryNamespace = "page-developers-local-environment"
}
- if (path.startsWith("/developers/learning-tools")) {
+ if (path.startsWith("/developers/learning-tools/")) {
primaryNamespace = "page-developers-learning-tools"
}
- if (path.startsWith("/developers/tutorials")) {
+ if (path.startsWith("/developers/tutorials/")) {
primaryNamespace = "page-developers-tutorials"
}
- if (path.startsWith("/developers/docs/scaling")) {
+ if (path.startsWith("/developers/docs/scaling/")) {
requiredNamespaces = [...requiredNamespaces, "page-layer-2"]
}
- if (path === "get-eth") {
+ if (path === "/get-eth/") {
primaryNamespace = "page-get-eth"
}
- if (path.startsWith("/languages")) {
- primaryNamespace = "page-languages"
- }
-
- if (path.startsWith("/roadmap/vision")) {
+ if (path.startsWith("/roadmap/vision/")) {
primaryNamespace = "page-roadmap-vision"
- requiredNamespaces = [
- ...requiredNamespaces,
- "page-upgrades-index",
- ]
+ requiredNamespaces = [...requiredNamespaces, "page-upgrades-index"]
}
- if (path.startsWith("/gas")) {
+ if (path.startsWith("/gas/")) {
primaryNamespace = "page-gas"
- requiredNamespaces = [...requiredNamespaces, "page-gas"]
+ requiredNamespaces = [...requiredNamespaces, "page-gas", "page-community"]
}
- if (path.startsWith("/what-is-ethereum")) {
+ if (path.startsWith("/what-is-ethereum/")) {
primaryNamespace = "page-what-is-ethereum"
}
- if (path === "bug-bounty") {
+ if (path === "/bug-bounty/") {
primaryNamespace = "page-bug-bounty"
}
- if (path.startsWith("/run-a-node")) {
+ if (path.startsWith("/run-a-node/")) {
primaryNamespace = "page-run-a-node"
}
- if (path.startsWith("/wallets")) {
+ if (path.startsWith("/wallets/")) {
primaryNamespace = "page-wallets"
requiredNamespaces = [...requiredNamespaces, "glossary"]
}
- if (path.startsWith("/wallets/find-wallet")) {
+ if (path.startsWith("/wallets/find-wallet/")) {
primaryNamespace = "page-wallets-find-wallet"
- requiredNamespaces = [
- ...requiredNamespaces,
- "page-wallets",
- ]
+ requiredNamespaces = [...requiredNamespaces, "page-wallets"]
}
- if (path.startsWith("/layer-2")) {
+ if (path.startsWith("/layer-2/")) {
primaryNamespace = "page-layer-2"
}
// Quizzes
// Note: Add any URL paths that have quizzes here
if (
- path.startsWith("/eth") ||
- path.startsWith("/layer-2") ||
- path.startsWith("/nft") ||
- path.startsWith("/roadmap/merge") ||
- path.startsWith("/roadmap/scaling") ||
- path.startsWith("/run-a-node") ||
- path.startsWith("/security") ||
- path.startsWith("/staking/solo") ||
- path.startsWith("/wallets") ||
- path.startsWith("/web3") ||
- path.startsWith("/what-is-ethereum") ||
- path.startsWith("/quizzes")
+ path.startsWith("/eth/") ||
+ path.startsWith("/layer-2/") ||
+ path.startsWith("/nft/") ||
+ path.startsWith("/roadmap/merge/") ||
+ path.startsWith("/roadmap/scaling/") ||
+ path.startsWith("/run-a-node/") ||
+ path.startsWith("/security/") ||
+ path.startsWith("/staking/solo/") ||
+ path.startsWith("/wallets/") ||
+ path.startsWith("/web3/") ||
+ path.startsWith("/what-is-ethereum/") ||
+ path.startsWith("/quizzes/")
) {
requiredNamespaces = [...requiredNamespaces, "learn-quizzes"]
}
// Ensures that the primary namespace is always the first item in the array
- return primaryNamespace ? [primaryNamespace, ...requiredNamespaces] : [...requiredNamespaces]
+ return primaryNamespace
+ ? [primaryNamespace, ...requiredNamespaces]
+ : [...requiredNamespaces]
}
const getRequiredNamespacesForLayout = (layout?: string) => {
diff --git a/src/lib/utils/url.ts b/src/lib/utils/url.ts
index 6e063ae14a9..201a06aca2f 100644
--- a/src/lib/utils/url.ts
+++ b/src/lib/utils/url.ts
@@ -1,4 +1,11 @@
-import { DISCORD_PATH, MAIN_CONTENT_ID } from "@/lib/constants"
+import { join } from "path"
+
+import {
+ DEFAULT_LOCALE,
+ DISCORD_PATH,
+ MAIN_CONTENT_ID,
+ SITE_URL,
+} from "@/lib/constants"
export const isDiscordInvite = (href: string): boolean =>
href.includes(DISCORD_PATH) && !href.includes("http")
@@ -25,13 +32,17 @@ export const isHrefActive = (
href: string,
pathname: string,
isPartiallyActive?: boolean
-) => {
- // remove any potential trailing slash to compare the paths correctly
- const cleanHref = href.replace(/\/+$/, "")
+) => (isPartiallyActive ? pathname.startsWith(href) : pathname === href)
+
+export const isHash = (href: string): boolean => href.startsWith("#")
- return isPartiallyActive
- ? pathname.startsWith(cleanHref)
- : pathname === cleanHref
+// remove any query params or hashes from the path
+export const cleanPath = (path: string): string => path.replace(/[$#].+$/, "")
+
+export const addSlashes = (href: string): string => {
+ if (isExternal(href)) return href
+ return join("/", href, "/")
}
-export const isHash = (href: string): boolean => href.startsWith("#")
+export const getFullUrl = (locale: string | undefined, path: string) =>
+ addSlashes(new URL(join(locale || DEFAULT_LOCALE, path), SITE_URL).href)
diff --git a/src/middleware.ts b/src/middleware.ts
new file mode 100644
index 00000000000..655802b3fb2
--- /dev/null
+++ b/src/middleware.ts
@@ -0,0 +1,46 @@
+import { NextRequest, NextResponse } from "next/server"
+
+import { DEFAULT_LOCALE, FAKE_LOCALE, LOCALES_CODES } from "./lib/constants"
+
+const PUBLIC_FILE = /\.(.*)$/
+
+function detectLocale(acceptLanguage: string | null) {
+ if (!acceptLanguage) {
+ return DEFAULT_LOCALE
+ }
+
+ // it comes in the format of `en-US,en;q=0.9,de;q=0.8`
+ const locales = acceptLanguage.split(",")
+
+ const locale = locales
+ .map((localeWeight) => localeWeight.split(";")[0].trim())
+ .find((locale) => {
+ return LOCALES_CODES.includes(locale)
+ })
+
+ return locale
+}
+
+// Middleware required to always display the locale prefix in the URL. It
+// redirects to the default locale if the locale is not present in the URL
+export async function middleware(req: NextRequest) {
+ if (
+ req.nextUrl.pathname.startsWith("/_next") ||
+ req.nextUrl.pathname.includes("/api/") ||
+ PUBLIC_FILE.test(req.nextUrl.pathname)
+ ) {
+ return
+ }
+
+ if (req.nextUrl.locale === FAKE_LOCALE) {
+ // Apparently `localeDetection` does not work when using the faked locale
+ // hack. So, detect the locale manually
+ const localeDetected = detectLocale(req.headers.get("accept-language"))
+ const locale = localeDetected || DEFAULT_LOCALE
+
+ return NextResponse.redirect(
+ new URL(`/${locale}${req.nextUrl.pathname}`, req.url),
+ { status: 301 }
+ )
+ }
+}
diff --git a/src/pages/[...slug].tsx b/src/pages/[...slug].tsx
index 449e0a18299..d55909ae792 100644
--- a/src/pages/[...slug].tsx
+++ b/src/pages/[...slug].tsx
@@ -32,7 +32,10 @@ import { getLastDeployDate } from "@/lib/utils/getLastDeployDate"
import { getLastModifiedDate } from "@/lib/utils/gh"
import { getContent, getContentBySlug } from "@/lib/utils/md"
import { remapTableOfContents } from "@/lib/utils/toc"
-import { getRequiredNamespacesForPage } from "@/lib/utils/translations"
+import {
+ filterRealLocales,
+ getRequiredNamespacesForPage,
+} from "@/lib/utils/translations"
import {
docsComponents,
@@ -82,7 +85,7 @@ export const getStaticPaths = (({ locales }) => {
const contentFiles = getContent("/")
// Generate page paths for each supported locale
- const paths = locales!.flatMap((locale) =>
+ const paths = filterRealLocales(locales).flatMap((locale) =>
contentFiles.map((file) => ({
params: {
// Splitting nested paths to generate proper slug
diff --git a/src/pages/assets.tsx b/src/pages/assets.tsx
index bf05cc2fbe5..85f713fe9bb 100644
--- a/src/pages/assets.tsx
+++ b/src/pages/assets.tsx
@@ -120,7 +120,7 @@ const H3 = (props: ChildOnlyProp) => (
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("assets")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
diff --git a/src/pages/bug-bounty.tsx b/src/pages/bug-bounty.tsx
index 3a2bd9de162..e6a75d3d3d0 100644
--- a/src/pages/bug-bounty.tsx
+++ b/src/pages/bug-bounty.tsx
@@ -5,6 +5,7 @@ import { serverSideTranslations } from "next-i18next/serverSideTranslations"
import {
Box,
Center,
+ Heading,
ListItem,
UnorderedList,
useColorModeValue,
@@ -103,18 +104,21 @@ const Subtitle = (props: ChildOnlyProp) => (
const SloganGradient = (props: ChildOnlyProp) => (
- {props.children}
+
+ {props.children}
+
)
@@ -328,7 +332,7 @@ const sortBountyHuntersFn = (a: BountyHuntersArg, b: BountyHuntersArg) => {
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("bug-bounty")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -470,7 +474,7 @@ const BugBountiesPage = () => {
{t("page-upgrades-bug-bounty-submit")}
-
+
{t("page-upgrades-bug-bounty-rules")}
diff --git a/src/pages/community.tsx b/src/pages/community.tsx
index 4a3530cd39e..6a35d7cf857 100644
--- a/src/pages/community.tsx
+++ b/src/pages/community.tsx
@@ -44,7 +44,7 @@ import whatIsEthereumImg from "@/public/what-is-ethereum.png"
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/community")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -338,7 +338,11 @@ const CommunityPage = () => {
{t("page-community-find-a-job")}
-
+
{t("page-community-explore-grants")}
@@ -382,6 +386,7 @@ const CommunityPage = () => {
{t("page-community-contribute-secondary-button")}
diff --git a/src/pages/contributing/translation-program/acknowledgements.tsx b/src/pages/contributing/translation-program/acknowledgements.tsx
index 3b36816a4b0..f05b85a9452 100644
--- a/src/pages/contributing/translation-program/acknowledgements.tsx
+++ b/src/pages/contributing/translation-program/acknowledgements.tsx
@@ -53,7 +53,7 @@ export const getStaticProps = (async ({ locale }) => {
"/contributing/translation-program/acknowledgements"
)
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
return {
props: {
diff --git a/src/pages/contributing/translation-program/contributors.tsx b/src/pages/contributing/translation-program/contributors.tsx
index c300cc2d1d0..6b3b22e8409 100644
--- a/src/pages/contributing/translation-program/contributors.tsx
+++ b/src/pages/contributing/translation-program/contributors.tsx
@@ -42,7 +42,7 @@ export const getStaticProps = (async ({ locale }) => {
"/contributing/translation-program/contributors"
)
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
return {
props: {
diff --git a/src/pages/dapps.tsx b/src/pages/dapps.tsx
index 3f9ae06589c..4b3d44a87a4 100644
--- a/src/pages/dapps.tsx
+++ b/src/pages/dapps.tsx
@@ -101,7 +101,6 @@ import rotki from "@/public/dapps/rotki.png"
import rubic from "@/public/dapps/rubic.png"
import sablier from "@/public/dapps/sablier.png"
import set from "@/public/dapps/set.png"
-import skiff from "@/public/dapps/skiff.png"
import spatial from "@/public/dapps/spatial.png"
import spruce from "@/public/dapps/spruce.png"
import dai from "@/public/dapps/stabledai.png"
@@ -116,7 +115,6 @@ import zapper from "@/public/dapps/zapper.png"
import zerion from "@/public/dapps/zerion.png"
import developers from "@/public/developers-eth-blocks.png" // Handled inside Callout => height=200
import doge from "@/public/doge-computer.png" // HERO, full? 624px
-import ogImage from "@/public/doge-computer.png" // PageMetadata, src only
import oneinch from "@/public/exchanges/1inch.png"
import magicians from "@/public/magicians.png"
import wallet from "@/public/wallet.png" // width=300
@@ -434,7 +432,7 @@ interface Categories {
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/dapps")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -1139,13 +1137,6 @@ const DappsPage = () => {
image: xmtp,
alt: t("page-dapps-xmtp-logo-alt"),
},
- {
- title: "Skiff",
- description: t("page-dapps-dapp-description-skiff"),
- link: "https://skiff.com/",
- image: skiff,
- alt: t("page-dapps-skiff-logo-alt"),
- },
]
const identity = [
@@ -1342,8 +1333,8 @@ const DappsPage = () => {
diff --git a/src/pages/developers/index.tsx b/src/pages/developers/index.tsx
index 997b84e9829..d2f51051382 100644
--- a/src/pages/developers/index.tsx
+++ b/src/pages/developers/index.tsx
@@ -139,7 +139,7 @@ const StyledCallout = chakra(Callout, {
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/developers")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
diff --git a/src/pages/developers/learning-tools.tsx b/src/pages/developers/learning-tools.tsx
index b1fc5557892..145a44a5b6c 100644
--- a/src/pages/developers/learning-tools.tsx
+++ b/src/pages/developers/learning-tools.tsx
@@ -122,7 +122,7 @@ export const getStaticProps = (async ({ locale }) => {
"/developers/learning-tools"
)
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
diff --git a/src/pages/developers/local-environment.tsx b/src/pages/developers/local-environment.tsx
index 4e235a973d5..9e681a55466 100644
--- a/src/pages/developers/local-environment.tsx
+++ b/src/pages/developers/local-environment.tsx
@@ -65,7 +65,7 @@ export const getStaticProps = (async ({ locale }) => {
"/developers/local-environment"
)
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const frameworksListData = await cachedFetchLocalEnvironmentFrameworkData()
diff --git a/src/pages/developers/tutorials.tsx b/src/pages/developers/tutorials.tsx
index fafe8ab3bc2..51e29a4ecb3 100644
--- a/src/pages/developers/tutorials.tsx
+++ b/src/pages/developers/tutorials.tsx
@@ -84,7 +84,7 @@ export const getStaticProps = (async ({ locale }) => {
"/developers/tutorials"
)
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -217,6 +217,7 @@ const TutorialPage = ({
)}
/>
) => (
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/eth")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -385,7 +384,7 @@ const EthPage = () => {
diff --git a/src/pages/gas.tsx b/src/pages/gas.tsx
index d6f7bcdc742..593f75ffbfe 100644
--- a/src/pages/gas.tsx
+++ b/src/pages/gas.tsx
@@ -100,7 +100,7 @@ const H3 = (props: HeadingProps) => (
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/gas")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
diff --git a/src/pages/get-eth.tsx b/src/pages/get-eth.tsx
index 85bc5dd915a..4bf759cfcd6 100644
--- a/src/pages/get-eth.tsx
+++ b/src/pages/get-eth.tsx
@@ -109,7 +109,7 @@ type Props = BasePageProps & {
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("get-eth")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDataUpdateDate = getLastModifiedDateByPath(
"src/data/exchangesByCountry.ts"
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index a7af8529a0c..f3b0787e79b 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -412,7 +412,7 @@ const HomePage = ({
-
+
@@ -491,7 +491,7 @@ const HomePage = ({
-
+
@@ -530,7 +530,7 @@ const HomePage = ({
-
+
@@ -626,6 +626,7 @@ const HomePage = ({
to="https://github.com/ethereum/ethereum-org-website"
leftIcon={}
variant="outline"
+ isSecondary
>
GitHub
diff --git a/src/pages/layer-2.tsx b/src/pages/layer-2.tsx
index 3d4c0ee8f14..2c33dd5f125 100644
--- a/src/pages/layer-2.tsx
+++ b/src/pages/layer-2.tsx
@@ -51,6 +51,7 @@ import DogeImage from "@/public/doge-computer.png"
import EthHomeImage from "@/public/eth-home-icon.png"
import HeroImage from "@/public/heroes/layer-2-hub-hero.jpg"
import DebankImage from "@/public/layer-2/debank.png"
+import growthepieImage from "@/public/layer-2/growthepie.png"
import L2BEATImage from "@/public/layer-2/l2beat.jpg"
import OptimisticRollupImage from "@/public/layer-2/optimistic_rollup.png"
import RollupImage from "@/public/layer-2/rollup-2.png"
@@ -112,7 +113,7 @@ export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/layer-2")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
return {
props: {
@@ -200,6 +201,13 @@ const Layer2Page = () => {
image: L2BEATImage,
alt: "L2BEAT",
},
+ {
+ title: "growthepie",
+ description: t("layer-2-tools-growthepie-description"),
+ link: "https://growthepie.xyz",
+ image: growthepieImage,
+ alt: "growthepie",
+ },
{
title: "L2 Fees",
description: t("layer-2-tools-l2fees-description"),
@@ -245,6 +253,7 @@ const Layer2Page = () => {
{/* Hero Section */}
diff --git a/src/pages/learn.tsx b/src/pages/learn.tsx
index 83fd312afc7..fea21c31888 100644
--- a/src/pages/learn.tsx
+++ b/src/pages/learn.tsx
@@ -131,7 +131,7 @@ const H3 = ({ children, ...props }: HeadingProps) => (
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/learn")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -213,6 +213,7 @@ const LearnPage = () => {
diff --git a/src/pages/quizzes.tsx b/src/pages/quizzes.tsx
index 404ec82e36a..5d52582ddde 100644
--- a/src/pages/quizzes.tsx
+++ b/src/pages/quizzes.tsx
@@ -17,7 +17,6 @@ import QuizzesList from "@/components/Quiz/QuizzesList"
import QuizzesModal from "@/components/Quiz/QuizzesModal"
import QuizzesStats from "@/components/Quiz/QuizzesStats"
import { useLocalQuizData } from "@/components/Quiz/useLocalQuizData"
-import Translation from "@/components/Translation"
import { existsNamespace } from "@/lib/utils/existsNamespace"
import { getLastDeployDate } from "@/lib/utils/getLastDeployDate"
@@ -40,7 +39,7 @@ const handleGHAdd = () =>
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/quizzes")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -56,7 +55,7 @@ export const getStaticProps = (async ({ locale }) => {
const QuizzesHubPage: NextPage<
InferGetStaticPropsType
> = () => {
- const { t } = useTranslation()
+ const { t } = useTranslation("learn-quizzes")
const [userStats, updateUserStats] = useLocalQuizData()
const [quizStatus, setQuizStatus] = useState("neutral")
@@ -77,11 +76,12 @@ const QuizzesHubPage: NextPage<
@@ -98,14 +98,14 @@ const QuizzesHubPage: NextPage<
@@ -120,11 +120,11 @@ const QuizzesHubPage: NextPage<
>
-
+ {t("want-more-quizzes")}
-
+ {t("contribute")}
-
+ {t("add-quiz")}
diff --git a/src/pages/roadmap/vision.tsx b/src/pages/roadmap/vision.tsx
index 18e3c952228..589f9e177bb 100644
--- a/src/pages/roadmap/vision.tsx
+++ b/src/pages/roadmap/vision.tsx
@@ -119,7 +119,7 @@ const TrilemmaContent = (props: ChildOnlyProp) => (
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/roadmap/vision")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
diff --git a/src/pages/run-a-node.tsx b/src/pages/run-a-node.tsx
index cce35ee3dc3..6909efdc027 100644
--- a/src/pages/run-a-node.tsx
+++ b/src/pages/run-a-node.tsx
@@ -331,7 +331,7 @@ type RunANodeCard = {
export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/run-a-node")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
const lastDeployDate = getLastDeployDate()
@@ -446,6 +446,7 @@ const RunANodePage = () => {
@@ -802,7 +803,7 @@ const RunANodePage = () => {
>
{t("page-run-a-node-community-link-1")}
-
+
{t("page-run-a-node-community-link-2")}
diff --git a/src/pages/stablecoins.tsx b/src/pages/stablecoins.tsx
index f7e28079fbe..569ab7b1fd5 100644
--- a/src/pages/stablecoins.tsx
+++ b/src/pages/stablecoins.tsx
@@ -94,7 +94,7 @@ export const getStaticProps = (async ({ locale }) => {
const requiredNamespaces = getRequiredNamespacesForPage("/stablecoins")
- const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[1])
+ const contentNotTranslated = !existsNamespace(locale!, requiredNamespaces[2])
let marketsHasError = false
let markets: Market[] = []
@@ -291,6 +291,7 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
{
title: t("page-stablecoins-algorithmic"),
description: t("page-stablecoins-algorithmic-description"),
+ disclaimer: t("page-stablecoins-algorithmic-disclaimer"),
emoji: ":chart_with_downwards_trend:",
pros: [
t("page-stablecoins-algorithmic-pro-1"),
@@ -403,6 +404,7 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
@@ -521,7 +523,8 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
{t("page-stablecoins-dai-banner-learn-button")}
@@ -563,7 +566,7 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
{t("page-stablecoins-usdc-banner-swap-button")}
@@ -572,6 +575,7 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
{t("page-stablecoins-usdc-banner-learn-button")}
@@ -597,6 +601,9 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
+
+ {t("page-stablecoins-algorithmic-disclaimer")}
+
{t("page-stablecoins-top-coins-intro")}{" "}
{t("page-stablecoins-top-coins-intro-code")}
@@ -640,7 +647,12 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
{t("page-stablecoins-explore-dapps")}
-
+
{t("page-stablecoins-more-defi-button")}
@@ -705,20 +717,21 @@ const StablecoinsPage = ({ markets, marketsHasError }) => {
/>
))}
-
-